move can logger and make it json
This commit is contained in:
parent
d70ae11b82
commit
43925d2a7d
33
frame.go
33
frame.go
|
@ -6,11 +6,6 @@
|
|||
// by writing "adapters" to various devices/formats (xbee, sqlite, network socket, socketcan)
|
||||
package gotelem
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Frame represents a protocol-agnostic CAN frame. The Id can be standard or extended,
|
||||
// but if it is extended, the Kind should be EFF.
|
||||
|
@ -64,31 +59,3 @@ type CanTransciever interface {
|
|||
CanSource
|
||||
}
|
||||
|
||||
// CanWriter
|
||||
type CanWriter struct {
|
||||
output *os.File
|
||||
}
|
||||
|
||||
// send writes the frame to the file.
|
||||
func (cw *CanWriter) Send(f *Frame) error {
|
||||
ts := time.Now().Unix()
|
||||
|
||||
_, err := fmt.Fprintf(cw.output, "%d %X %X\n", ts, f.Id, f.Data)
|
||||
return err
|
||||
}
|
||||
|
||||
func (cw *CanWriter) Close() error {
|
||||
return cw.output.Close()
|
||||
}
|
||||
|
||||
func OpenCanWriter(name string) (*CanWriter, error) {
|
||||
f, err := os.Create(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cw := &CanWriter{
|
||||
output: f,
|
||||
}
|
||||
return cw, nil
|
||||
}
|
||||
|
|
58
skylab_logger.go
Normal file
58
skylab_logger.go
Normal file
|
@ -0,0 +1,58 @@
|
|||
package gotelem
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/kschamplin/gotelem/skylab"
|
||||
)
|
||||
|
||||
// CanWriter
|
||||
type CanWriter struct {
|
||||
output *os.File
|
||||
cd candumpJSON
|
||||
jsonBuf []byte
|
||||
}
|
||||
|
||||
// send writes the frame to the file.
|
||||
func (cw *CanWriter) Send(f *Frame) (err error) {
|
||||
cw.cd.Timestamp = float64(time.Now().Unix())
|
||||
|
||||
cw.cd.Id = uint64(f.Id)
|
||||
|
||||
cw.cd.Data, err = skylab.FromCanFrame(f.Id, f.Data)
|
||||
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
out, err := json.Marshal(cw.cd)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
fmt.Fprintln(cw.output, string(out))
|
||||
return err
|
||||
}
|
||||
|
||||
func (cw *CanWriter) Close() error {
|
||||
return cw.output.Close()
|
||||
}
|
||||
|
||||
func OpenCanWriter(name string) (*CanWriter, error) {
|
||||
f, err := os.Create(name)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cw := &CanWriter{
|
||||
output: f,
|
||||
}
|
||||
return cw, nil
|
||||
}
|
||||
|
||||
type candumpJSON struct {
|
||||
Timestamp float64 `json:"ts"`
|
||||
Id uint64 `json:"id"`
|
||||
Data skylab.Packet `json:"data"`
|
||||
}
|
Loading…
Reference in a new issue