Minor refactor
This commit is contained in:
+8
-61
@@ -11,36 +11,11 @@ import (
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
const CAN_ID_071 = 0x071
|
||||
const CAN_ID_073 = 0x073
|
||||
const CAN_ID_074 = 0x074
|
||||
const CAN_ID_075 = 0x075
|
||||
const CAN_ID_021 = 0x021
|
||||
const CAN_ID_022 = 0x022
|
||||
const CAN_ID_023 = 0x023
|
||||
const CAN_ID_011 = 0x011
|
||||
const CAN_ID_014 = 0x014
|
||||
const CAN_ID_015 = 0x015
|
||||
const CAN_ID_016 = 0x016
|
||||
const CAN_ID_01A = 0x01A
|
||||
const CAN_ID_02A = 0x02A
|
||||
const CAN_ID_041 = 0x041
|
||||
const CAN_ID_042 = 0x042
|
||||
const CAN_ID_046 = 0x046
|
||||
const CAN_ID_047 = 0x047
|
||||
const CAN_ID_048 = 0x048
|
||||
const CAN_ID_049 = 0x049
|
||||
const CAN_ID_067 = 0x067
|
||||
const CAN_ID_068 = 0x068
|
||||
const CAN_ID_06C = 0x06C
|
||||
const CAN_ID_061 = 0x061
|
||||
const CAN_ID_062 = 0x062
|
||||
const CAN_ID_065 = 0x065
|
||||
const bufferSize = 100
|
||||
|
||||
type CanFrame struct {
|
||||
CanId uint32
|
||||
Payload []uint8
|
||||
Payload *[]uint8
|
||||
Date *time.Time
|
||||
}
|
||||
|
||||
@@ -83,9 +58,9 @@ func (sck *Socket) Bind(addr string, filter []unix.CanFilter) error {
|
||||
return unix.Bind(sck.dev.fd, sck.addr)
|
||||
}
|
||||
|
||||
// Recv receives data from the CAN socket.
|
||||
// Receive receives data from the CAN socket.
|
||||
// id is the CAN_frame id the data was originated from.
|
||||
func (sck *Socket) Recv() (id uint32, data []byte, err error) {
|
||||
func (sck *Socket) Receive() (id uint32, data *[]byte, err error) {
|
||||
var buf [frameSize]byte
|
||||
n, err := io.ReadFull(sck.dev, buf[:])
|
||||
if err != nil {
|
||||
@@ -99,9 +74,9 @@ func (sck *Socket) Recv() (id uint32, data []byte, err error) {
|
||||
id = binary.LittleEndian.Uint32(buf[:4])
|
||||
//TODO make correct switch betwin EFF and SFF
|
||||
id &= unix.CAN_EFF_MASK
|
||||
data = make([]byte, buf[4])
|
||||
copy(data, buf[8:])
|
||||
return id, data, nil
|
||||
payload := make([]byte, buf[4])
|
||||
copy(payload, buf[8:])
|
||||
return id, &payload, nil
|
||||
}
|
||||
|
||||
type device struct {
|
||||
@@ -126,35 +101,7 @@ type canframe struct {
|
||||
Data [8]byte
|
||||
}
|
||||
|
||||
func StartCan(canbus string) (<-chan *CanFrame, error) {
|
||||
|
||||
var filter []unix.CanFilter = []unix.CanFilter{
|
||||
{Id: CAN_ID_071, Mask: 0xFFF},
|
||||
{Id: CAN_ID_073, Mask: 0xFFF},
|
||||
{Id: CAN_ID_074, Mask: 0xFFF},
|
||||
{Id: CAN_ID_075, Mask: 0xFFF},
|
||||
{Id: CAN_ID_021, Mask: 0xFFF},
|
||||
{Id: CAN_ID_022, Mask: 0xFFF},
|
||||
{Id: CAN_ID_011, Mask: 0xFFF},
|
||||
{Id: CAN_ID_014, Mask: 0xFFF},
|
||||
{Id: CAN_ID_015, Mask: 0xFFF},
|
||||
{Id: CAN_ID_016, Mask: 0xFFF},
|
||||
{Id: CAN_ID_01A, Mask: 0xFFF},
|
||||
{Id: CAN_ID_023, Mask: 0xFFF},
|
||||
{Id: CAN_ID_02A, Mask: 0xFFF},
|
||||
{Id: CAN_ID_041, Mask: 0xFFF},
|
||||
{Id: CAN_ID_042, Mask: 0xFFF},
|
||||
{Id: CAN_ID_046, Mask: 0xFFF},
|
||||
{Id: CAN_ID_047, Mask: 0xFFF},
|
||||
{Id: CAN_ID_048, Mask: 0xFFF},
|
||||
{Id: CAN_ID_049, Mask: 0xFFF},
|
||||
{Id: CAN_ID_067, Mask: 0xFFF},
|
||||
{Id: CAN_ID_068, Mask: 0xFFF},
|
||||
{Id: CAN_ID_06C, Mask: 0xFFF},
|
||||
{Id: CAN_ID_061, Mask: 0xFFF},
|
||||
{Id: CAN_ID_062, Mask: 0xFFF},
|
||||
{Id: CAN_ID_065, Mask: 0xFFF},
|
||||
}
|
||||
func StartCan(canbus string, filter []unix.CanFilter) (<-chan *CanFrame, error) {
|
||||
|
||||
if socket, err := NewCan(); err == nil {
|
||||
|
||||
@@ -167,7 +114,7 @@ func StartCan(canbus string) (<-chan *CanFrame, error) {
|
||||
defer socket.Close()
|
||||
|
||||
for { //TODO implement stop
|
||||
if id, data, serr := socket.Recv(); serr == nil {
|
||||
if id, data, serr := socket.Receive(); serr == nil {
|
||||
var now = time.Now()
|
||||
canevents <- &CanFrame{
|
||||
Date: &now,
|
||||
|
||||
+1
-1
@@ -105,7 +105,7 @@ func fromString(text string) *CanFrame {
|
||||
return &CanFrame{
|
||||
Date: &now,
|
||||
CanId: uint32(canId),
|
||||
Payload: payload,
|
||||
Payload: &payload,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user