Minor refactor

fix/offline-timeouts
Terekhin Alexandr 2 years ago
parent 7679cc3ba9
commit d709c2107d
Signed by: didinst
GPG Key ID: D2EF94423C23BF12
  1. 69
      can/can.go
  2. 2
      can/input.go
  3. 31
      cli-mon.go
  4. 27
      yabl/const.go
  5. 52
      yabl/init.go
  6. 4
      yabl/protocol.go

@ -11,36 +11,11 @@ import (
"golang.org/x/sys/unix" "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 const bufferSize = 100
type CanFrame struct { type CanFrame struct {
CanId uint32 CanId uint32
Payload []uint8 Payload *[]uint8
Date *time.Time 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) 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. // 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 var buf [frameSize]byte
n, err := io.ReadFull(sck.dev, buf[:]) n, err := io.ReadFull(sck.dev, buf[:])
if err != nil { if err != nil {
@ -99,9 +74,9 @@ func (sck *Socket) Recv() (id uint32, data []byte, err error) {
id = binary.LittleEndian.Uint32(buf[:4]) id = binary.LittleEndian.Uint32(buf[:4])
//TODO make correct switch betwin EFF and SFF //TODO make correct switch betwin EFF and SFF
id &= unix.CAN_EFF_MASK id &= unix.CAN_EFF_MASK
data = make([]byte, buf[4]) payload := make([]byte, buf[4])
copy(data, buf[8:]) copy(payload, buf[8:])
return id, data, nil return id, &payload, nil
} }
type device struct { type device struct {
@ -126,35 +101,7 @@ type canframe struct {
Data [8]byte Data [8]byte
} }
func StartCan(canbus string) (<-chan *CanFrame, error) { func StartCan(canbus string, filter []unix.CanFilter) (<-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},
}
if socket, err := NewCan(); err == nil { if socket, err := NewCan(); err == nil {
@ -167,7 +114,7 @@ func StartCan(canbus string) (<-chan *CanFrame, error) {
defer socket.Close() defer socket.Close()
for { //TODO implement stop for { //TODO implement stop
if id, data, serr := socket.Recv(); serr == nil { if id, data, serr := socket.Receive(); serr == nil {
var now = time.Now() var now = time.Now()
canevents <- &CanFrame{ canevents <- &CanFrame{
Date: &now, Date: &now,

@ -105,7 +105,7 @@ func fromString(text string) *CanFrame {
return &CanFrame{ return &CanFrame{
Date: &now, Date: &now,
CanId: uint32(canId), CanId: uint32(canId),
Payload: payload, Payload: &payload,
} }
} }

@ -6,6 +6,7 @@ import (
"cli-mon/yabl" "cli-mon/yabl"
"flag" "flag"
"fmt" "fmt"
"golang.org/x/sys/unix"
"os" "os"
"time" "time"
) )
@ -25,8 +26,36 @@ func main() {
case len(*filename) > 0: case len(*filename) > 0:
frames = can.Readfile(filename) frames = can.Readfile(filename)
case len(*canbus) > 0: case len(*canbus) > 0:
filter := []unix.CanFilter{
{Id: yabl.CanIdContIntState, Mask: 0xFFF},
{Id: yabl.CanIdContIntErr, Mask: 0xFFF},
{Id: yabl.CanIdContIntForce, Mask: 0xFFF},
{Id: yabl.CanIdContIntDebug, Mask: 0xFFF},
{Id: yabl.CanIdPuPresentEnergy, Mask: 0xFFF},
{Id: yabl.CanIdPuPeriphery, Mask: 0xFFF},
{Id: yabl.CanIdCpuPresentEnergy, Mask: 0xFFF},
{Id: yabl.CanIdCpuPeriphery, Mask: 0xFFF},
{Id: yabl.CanIdCpuEnergySettings, Mask: 0xFFF},
{Id: yabl.CanIdCpuErrors, Mask: 0xFFF},
{Id: yabl.CanIdCpuDebug, Mask: 0xFFF},
{Id: yabl.CanIdPuErrors, Mask: 0xFFF},
{Id: yabl.CanIdPuDebug, Mask: 0xFFF},
{Id: yabl.CanIdSeccTargetEnergy, Mask: 0xFFF},
{Id: yabl.CanIdSeccErrors, Mask: 0xFFF},
{Id: yabl.CanIdLogicAuth, Mask: 0xFFF},
{Id: yabl.CanIdLogicEnergyMode, Mask: 0xFFF},
{Id: yabl.CanIdLogicErrors, Mask: 0xFFF},
{Id: yabl.CanIdLogicWorkingMode, Mask: 0xFFF},
{Id: yabl.CanIdPeripheryState, Mask: 0xFFF},
{Id: yabl.CanIdPeripheryInfo, Mask: 0xFFF},
{Id: yabl.CanIdPeripheryDebug, Mask: 0xFFF},
{Id: yabl.CanIdConverterPresentEnergy, Mask: 0xFFF},
{Id: yabl.CanIdConverterErrors, Mask: 0xFFF},
{Id: yabl.CanIdConverterDebug, Mask: 0xFFF},
}
var err error var err error
frames, err = can.StartCan(*canbus) frames, err = can.StartCan(*canbus, filter)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
return return

@ -9,6 +9,33 @@ const (
UNIT_ID_OFFSET = 12 UNIT_ID_OFFSET = 12
UNIT_ID_MASK = 0b111111111111 << UNIT_ID_OFFSET UNIT_ID_MASK = 0b111111111111 << UNIT_ID_OFFSET
ACTION_ID_MASK = 0b111111111111 ACTION_ID_MASK = 0b111111111111
CanIdContIntState = 0x071
CanIdContIntErr = 0x073
CanIdContIntForce = 0x074
CanIdContIntDebug = 0x075
CanIdPuPresentEnergy = 0x021
CanIdPuPeriphery = 0x022
CanIdPuErrors = 0x023
CanIdCpuPresentEnergy = 0x011
CanIdCpuPeriphery = 0x014
CanIdCpuEnergySettings = 0x015
CanIdCpuErrors = 0x016
CanIdCpuDebug = 0x01A
CanIdPuDebug = 0x02A
CanIdSeccTargetEnergy = 0x041
CanIdSeccErrors = 0x042
CanIdLogicAuth = 0x046
CanIdLogicEnergyMode = 0x047
CanIdLogicErrors = 0x048
CanIdLogicWorkingMode = 0x049
CanIdPeripheryState = 0x067
CanIdPeripheryInfo = 0x068
CanIdPeripheryDebug = 0x06C
CanIdConverterPresentEnergy = 0x061
CanIdConverterErrors = 0x062
CanIdConverterDebug = 0x065
BOARD_READY_OK BoardReadyType = 0 BOARD_READY_OK BoardReadyType = 0
BOARD_READY_INFO BoardReadyType = 1 BOARD_READY_INFO BoardReadyType = 1
BOARD_READY_WARNING BoardReadyType = 2 BOARD_READY_WARNING BoardReadyType = 2

@ -1,12 +1,10 @@
package yabl package yabl
import "cli-mon/can"
func (c *converter) initialize() { func (c *converter) initialize() {
c.protocolMap = make(map[key]action) c.protocolMap = make(map[key]action)
for i := uint(1); i <= CONNECTOR_COUNT; i++ { for i := uint(1); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_011, i} key := key{CanIdCpuPresentEnergy, i}
cpe := &CpuPresentEnergy{unit: 1} cpe := &CpuPresentEnergy{unit: 1}
c.cpuPresentEnergyArray[i] = cpe c.cpuPresentEnergyArray[i] = cpe
fields := []*field{ fields := []*field{
@ -23,7 +21,7 @@ func (c *converter) initialize() {
{length: 2, setter: c.cpuPeripheryInstance.setCircuitBreakerInput, name: FCircuitBreakerInput}, {length: 2, setter: c.cpuPeripheryInstance.setCircuitBreakerInput, name: FCircuitBreakerInput},
{length: 2, setter: c.cpuPeripheryInstance.setCircuitBreakerPowerCBInput, name: FCircuitBreakerPowerCBInput}, {length: 2, setter: c.cpuPeripheryInstance.setCircuitBreakerPowerCBInput, name: FCircuitBreakerPowerCBInput},
} }
c.protocolMap[key{can.CAN_ID_014, 0}] = action{ c.protocolMap[key{CanIdCpuPeriphery, 0}] = action{
fields: fields, fields: fields,
interval: 1000, interval: 1000,
name: PCpuPeriphery, name: PCpuPeriphery,
@ -31,7 +29,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i <= CONNECTOR_COUNT; i++ { for i := uint(0); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_015, i} key := key{CanIdCpuEnergySettings, i}
ces := &CpuEnergySettings{unit: unit(i)} ces := &CpuEnergySettings{unit: unit(i)}
c.cpuEnergySettingsArray[i] = ces c.cpuEnergySettingsArray[i] = ces
fields := []*field{ fields := []*field{
@ -65,7 +63,7 @@ func (c *converter) initialize() {
{length: 2, setter: c.cpuErrorsInstance.setContactorInputError, name: FContactorInputError}, {length: 2, setter: c.cpuErrorsInstance.setContactorInputError, name: FContactorInputError},
{length: 2, setter: c.cpuErrorsInstance.setNotReadyPeriphery, name: FNotReadyPeriphery}, {length: 2, setter: c.cpuErrorsInstance.setNotReadyPeriphery, name: FNotReadyPeriphery},
} }
c.protocolMap[key{can.CAN_ID_016, 0}] = action{ c.protocolMap[key{CanIdCpuErrors, 0}] = action{
fields: fields, fields: fields,
interval: 1000, interval: 1000,
name: PCpuErrors, name: PCpuErrors,
@ -79,7 +77,7 @@ func (c *converter) initialize() {
{length: 3, setter: c.cpuDebugInstance.setDebugCircuitBreakerOn, name: FDebugCircuitBreakerOn}, {length: 3, setter: c.cpuDebugInstance.setDebugCircuitBreakerOn, name: FDebugCircuitBreakerOn},
{length: 3, setter: c.cpuDebugInstance.setDebugRedButtonSoftware, name: FDebugRedButtonSoftware}, {length: 3, setter: c.cpuDebugInstance.setDebugRedButtonSoftware, name: FDebugRedButtonSoftware},
} }
c.protocolMap[key{can.CAN_ID_01A, 0}] = action{ c.protocolMap[key{CanIdCpuDebug, 0}] = action{
fields: fields, fields: fields,
interval: 1000, interval: 1000,
name: PCpuDebug, name: PCpuDebug,
@ -87,7 +85,7 @@ func (c *converter) initialize() {
} }
for i := uint(1); i <= CONNECTOR_COUNT; i++ { for i := uint(1); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_021, i} key := key{CanIdPuPresentEnergy, i}
ppe := &PuPresentEnergy{unit: unit(i)} ppe := &PuPresentEnergy{unit: unit(i)}
c.puPresentEnergyArray[i] = ppe c.puPresentEnergyArray[i] = ppe
fields := []*field{ fields := []*field{
@ -100,7 +98,7 @@ func (c *converter) initialize() {
} }
for i := uint(1); i <= CONNECTOR_COUNT; i++ { for i := uint(1); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_022, i} key := key{CanIdPuPeriphery, i}
pp := &PuPeriphery{unit: unit(i)} pp := &PuPeriphery{unit: unit(i)}
c.puPeripheryArray[i] = pp c.puPeripheryArray[i] = pp
fields := []*field{ fields := []*field{
@ -117,7 +115,7 @@ func (c *converter) initialize() {
} }
for i := uint(1); i <= CONNECTOR_COUNT; i++ { for i := uint(1); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_023, i} key := key{CanIdPuErrors, i}
pe := &PuErrors{unit: 1} pe := &PuErrors{unit: 1}
c.puErrorsArray[i] = pe c.puErrorsArray[i] = pe
fields := []*field{ fields := []*field{
@ -142,7 +140,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i <= CONNECTOR_COUNT; i++ { for i := uint(0); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_02A, i} key := key{CanIdPuDebug, i}
pd := &PuDebug{unit: unit(i)} pd := &PuDebug{unit: unit(i)}
c.puDebugArray[i] = pd c.puDebugArray[i] = pd
fields = []*field{ fields = []*field{
@ -153,7 +151,7 @@ func (c *converter) initialize() {
} }
for i := uint(1); i <= CONNECTOR_COUNT; i++ { for i := uint(1); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_041, i} key := key{CanIdSeccTargetEnergy, i}
ste := &SeccTargetEnergy{unit: unit(i)} ste := &SeccTargetEnergy{unit: unit(i)}
c.seccTargetEnergyArray[i] = ste c.seccTargetEnergyArray[i] = ste
fields = []*field{ fields = []*field{
@ -166,7 +164,7 @@ func (c *converter) initialize() {
} }
for i := uint(1); i <= CONNECTOR_COUNT; i++ { for i := uint(1); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_042, i} key := key{CanIdSeccErrors, i}
se := &SeccErrors{unit: unit(i)} se := &SeccErrors{unit: unit(i)}
c.seccErrorsArray[i] = se c.seccErrorsArray[i] = se
fields = []*field{ fields = []*field{
@ -177,7 +175,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i <= CONNECTOR_COUNT; i++ { for i := uint(0); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_046, i} key := key{CanIdLogicAuth, i}
la := &LogicAuth{unit: unit(i)} la := &LogicAuth{unit: unit(i)}
c.logicAuthArray[i] = la c.logicAuthArray[i] = la
fields = []*field{ fields = []*field{
@ -188,7 +186,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i <= CONNECTOR_COUNT; i++ { for i := uint(0); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_047, i} key := key{CanIdLogicEnergyMode, i}
lem := &LogicEnergyMode{unit: unit(i)} lem := &LogicEnergyMode{unit: unit(i)}
c.logicEnergyMode[i] = lem c.logicEnergyMode[i] = lem
fields = []*field{ fields = []*field{
@ -205,7 +203,7 @@ func (c *converter) initialize() {
{length: 3, setter: c.logicErrorsInstance.setBoardReady, name: FBoardReady}, {length: 3, setter: c.logicErrorsInstance.setBoardReady, name: FBoardReady},
{length: 2, setter: c.logicErrorsInstance.setNotReadySettings, name: FNotReadySettings}, {length: 2, setter: c.logicErrorsInstance.setNotReadySettings, name: FNotReadySettings},
} }
c.protocolMap[key{can.CAN_ID_048, 0}] = action{ c.protocolMap[key{CanIdLogicErrors, 0}] = action{
fields: fields, fields: fields,
interval: 1000, interval: 1000,
name: PLogicErrors, name: PLogicErrors,
@ -213,7 +211,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i <= CONNECTOR_COUNT; i++ { for i := uint(0); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_049, i} key := key{CanIdLogicWorkingMode, i}
lwm := &LogicWorkingMode{unit: unit(i)} lwm := &LogicWorkingMode{unit: unit(i)}
c.logicWorkingMode[i] = lwm c.logicWorkingMode[i] = lwm
fields = []*field{ fields = []*field{
@ -229,7 +227,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i < CONTACTOR_MAX; i++ { for i := uint(0); i < CONTACTOR_MAX; i++ {
key := key{can.CAN_ID_071, i} key := key{CanIdContIntState, i}
cis := &ContactorInternalState{unit: unit(i)} cis := &ContactorInternalState{unit: unit(i)}
c.contactorInternalStateArray[i] = cis c.contactorInternalStateArray[i] = cis
fields = []*field{ fields = []*field{
@ -253,7 +251,7 @@ func (c *converter) initialize() {
{length: 2, setter: c.contactorInternalErrorsInstance.setDebug, name: FDebug}, {length: 2, setter: c.contactorInternalErrorsInstance.setDebug, name: FDebug},
{length: 5, setter: c.contactorInternalErrorsInstance.setPresentContactorMode, name: FPresentContactorMode}, {length: 5, setter: c.contactorInternalErrorsInstance.setPresentContactorMode, name: FPresentContactorMode},
} }
c.protocolMap[key{can.CAN_ID_073, 0}] = action{ c.protocolMap[key{CanIdContIntErr, 0}] = action{
fields: fields, fields: fields,
interval: 1000, interval: 1000,
name: PContactorInternalErrors, name: PContactorInternalErrors,
@ -265,7 +263,7 @@ func (c *converter) initialize() {
{length: 2, setter: c.contactorsInternalForce.setForceModeEnabled, name: FForceModeEnabled}, {length: 2, setter: c.contactorsInternalForce.setForceModeEnabled, name: FForceModeEnabled},
{length: 4, setter: c.contactorsInternalForce.setForceModeValue, name: FForceModeValue}, {length: 4, setter: c.contactorsInternalForce.setForceModeValue, name: FForceModeValue},
} }
c.protocolMap[key{can.CAN_ID_074, 0}] = action{ c.protocolMap[key{CanIdContIntForce, 0}] = action{
fields: fields, fields: fields,
interval: 1000, interval: 1000,
name: PContactorsInternalForce, name: PContactorsInternalForce,
@ -273,7 +271,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i < CONTACTOR_MAX; i++ { for i := uint(0); i < CONTACTOR_MAX; i++ {
key := key{can.CAN_ID_075, i} key := key{CanIdContIntDebug, i}
cid := &ContactorInternalDebug{unit: unit(i)} cid := &ContactorInternalDebug{unit: unit(i)}
c.contactorInternalDebugArray[i] = cid c.contactorInternalDebugArray[i] = cid
fields = []*field{ fields = []*field{
@ -284,7 +282,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i <= CONNECTOR_COUNT; i++ { for i := uint(0); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_067, i} key := key{CanIdPeripheryState, i}
ps := &PeripheryState{unit: unit(i)} ps := &PeripheryState{unit: unit(i)}
c.peripheryStateArray[i] = ps c.peripheryStateArray[i] = ps
fields = []*field{ fields = []*field{
@ -315,7 +313,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i <= CONNECTOR_COUNT; i++ { for i := uint(0); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_068, i} key := key{CanIdPeripheryInfo, i}
pi := &PeripheryInfo{unit: unit(i)} pi := &PeripheryInfo{unit: unit(i)}
c.peripheryInfoArray[i] = pi c.peripheryInfoArray[i] = pi
fields = []*field{ fields = []*field{
@ -329,7 +327,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i <= CONNECTOR_COUNT; i++ { for i := uint(0); i <= CONNECTOR_COUNT; i++ {
key := key{can.CAN_ID_06C, i} key := key{CanIdPeripheryDebug, i}
pd := &PeripheryDebug{unit: unit(i)} pd := &PeripheryDebug{unit: unit(i)}
c.peripheryDebugArray[i] = pd c.peripheryDebugArray[i] = pd
fields = []*field{ fields = []*field{
@ -342,7 +340,7 @@ func (c *converter) initialize() {
} }
for i := uint(1); i < CONVERTERS_MAX; i++ { for i := uint(1); i < CONVERTERS_MAX; i++ {
key := key{can.CAN_ID_061, i} key := key{CanIdConverterPresentEnergy, i}
cpe := &ConverterPresentEnergy{unit: unit(i)} cpe := &ConverterPresentEnergy{unit: unit(i)}
c.converterPresentEnergyArray[i] = cpe c.converterPresentEnergyArray[i] = cpe
fields = []*field{ fields = []*field{
@ -355,7 +353,7 @@ func (c *converter) initialize() {
} }
for i := uint(1); i < CONVERTERS_MAX; i++ { for i := uint(1); i < CONVERTERS_MAX; i++ {
key := key{can.CAN_ID_062, i} key := key{CanIdConverterErrors, i}
ce := &ConverterErrors{unit: unit(i)} ce := &ConverterErrors{unit: unit(i)}
c.converterErrorsArray[i] = ce c.converterErrorsArray[i] = ce
fields = []*field{ fields = []*field{
@ -381,7 +379,7 @@ func (c *converter) initialize() {
} }
for i := uint(0); i < CONVERTERS_MAX; i++ { for i := uint(0); i < CONVERTERS_MAX; i++ {
key := key{can.CAN_ID_065, i} key := key{CanIdConverterDebug, i}
cd := &ConverterDebug{unit: unit(i)} cd := &ConverterDebug{unit: unit(i)}
c.converterDebugArray[i] = cd c.converterDebugArray[i] = cd
fields = []*field{ fields = []*field{

@ -104,8 +104,8 @@ func (c *converter) EventsFromFrame(frame *can.CanFrame) ([]*Event, bool) {
return nil, false return nil, false
} }
func get(from uint8, size uint8, buffer []byte) (uint64, bool) { func get(from uint8, size uint8, buffer *[]byte) (uint64, bool) {
value := binary.LittleEndian.Uint64(buffer) value := binary.LittleEndian.Uint64(*buffer)
var mask uint64 = ^(ALL_BITS << size) var mask uint64 = ^(ALL_BITS << size)
mask = mask << from mask = mask << from

Loading…
Cancel
Save