Improve logging and handle Victron reboot
This commit is contained in:
committed by
GitHub
parent
9471f0b5ac
commit
933c7cc307
@@ -43,6 +43,7 @@ const (
|
|||||||
const (
|
const (
|
||||||
infoFrameHeader = 0x20
|
infoFrameHeader = 0x20
|
||||||
frameHeader = 0xff
|
frameHeader = 0xff
|
||||||
|
bootupFrameHeader = 0x0
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -164,6 +165,7 @@ func (m *mk2Ser) readByte() byte {
|
|||||||
|
|
||||||
// Adds error to error slice.
|
// Adds error to error slice.
|
||||||
func (m *mk2Ser) addError(err error) {
|
func (m *mk2Ser) addError(err error) {
|
||||||
|
logrus.Errorf("Mk2 serial slice error: %q", err.Error())
|
||||||
if m.info.Errors == nil {
|
if m.info.Errors == nil {
|
||||||
m.info.Errors = make([]error, 0)
|
m.info.Errors = make([]error, 0)
|
||||||
}
|
}
|
||||||
@@ -183,9 +185,11 @@ func (m *mk2Ser) updateReport() {
|
|||||||
|
|
||||||
// Checks for valid frame and chooses decoding.
|
// Checks for valid frame and chooses decoding.
|
||||||
func (m *mk2Ser) handleFrame(l byte, frame []byte) {
|
func (m *mk2Ser) handleFrame(l byte, frame []byte) {
|
||||||
logrus.Debugf("frame %#v", frame)
|
logrus.Debugf("[handleFrame] frame %#v", frame)
|
||||||
if checkChecksum(l, frame[0], frame[1:]) {
|
if checkChecksum(l, frame[0], frame[1:]) {
|
||||||
switch frame[0] {
|
switch frame[0] {
|
||||||
|
case bootupFrameHeader:
|
||||||
|
m.setTarget()
|
||||||
case frameHeader:
|
case frameHeader:
|
||||||
switch frame[1] {
|
switch frame[1] {
|
||||||
case vFrame:
|
case vFrame:
|
||||||
@@ -196,10 +200,14 @@ func (m *mk2Ser) handleFrame(l byte, frame []byte) {
|
|||||||
m.scaleDecode(frame[2:])
|
m.scaleDecode(frame[2:])
|
||||||
case commandReadRAMResponse:
|
case commandReadRAMResponse:
|
||||||
m.stateDecode(frame[2:])
|
m.stateDecode(frame[2:])
|
||||||
|
default:
|
||||||
|
logrus.Warnf("[handleFrame] invalid winmonFrame %v", frame[2:])
|
||||||
}
|
}
|
||||||
|
|
||||||
case ledFrame:
|
case ledFrame:
|
||||||
m.ledDecode(frame[2:])
|
m.ledDecode(frame[2:])
|
||||||
|
default:
|
||||||
|
logrus.Warnf("[handleFrame] invalid frameHeader %v", frame[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
case infoFrameHeader:
|
case infoFrameHeader:
|
||||||
@@ -208,10 +216,14 @@ func (m *mk2Ser) handleFrame(l byte, frame []byte) {
|
|||||||
m.dcDecode(frame[1:])
|
m.dcDecode(frame[1:])
|
||||||
case acL1InfoFrame:
|
case acL1InfoFrame:
|
||||||
m.acDecode(frame[1:])
|
m.acDecode(frame[1:])
|
||||||
|
default:
|
||||||
|
logrus.Warnf("[handleFrame] invalid infoFrameHeader %v", frame[5])
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
logrus.Warnf("[handleFrame] Invalid frame %v", frame[0])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logrus.Errorf("Invalid incoming frame checksum: %x", frame)
|
logrus.Errorf("[handleFrame] Invalid incoming frame checksum: %x", frame)
|
||||||
m.frameLock = false
|
m.frameLock = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user