From 4ce7275086ddf96226bcc820c7d88912b5b0edbf Mon Sep 17 00:00:00 2001
From: Tea Age
Date: Fri, 21 Feb 2020 17:54:58 +0100
Subject: [PATCH] 1 sec read timeout & 0x60 for c & s
---
pkg/com/readPacket.go | 35 ++++++++++++++++++++++++-----------
1 file changed, 24 insertions(+), 11 deletions(-)
diff --git a/pkg/com/readPacket.go b/pkg/com/readPacket.go
index 4f54d206f..4d8aa8d9d 100644
--- a/pkg/com/readPacket.go
+++ b/pkg/com/readPacket.go
@@ -1,7 +1,5 @@
// Copyright 2020 Thomas.Hoehenleitner [at] seerose.net
-// All rights reserved.
-// Use of this source code is governed by a
-// license that can be found in the LICENSE file.
+// Use of this source code is governed by a license that can be found in the LICENSE file.
package com
@@ -13,23 +11,38 @@ import (
"github.com/tarm/serial"
)
-func readHeader(s *serial.Port) []byte {
- b := readAtLeastBytes(s, 8)
- for b[1] != 0x60 || // only one receiver now
- b[2] != 0x60 || // only one transmitter now
+var locAddr = byte(0x60) // local address
+var remAddr = byte(0x60) // remote address
+var toMs = 1000
+
+func readHeader(s *serial.Port) ([]byte, error) {
+ b, err := readAtLeastBytes(s, 8, toMs)
+ if nil != err {
+ return b, err
+ }
+ for b[1] != remAddr ||
+ b[2] != locAddr ||
b[0]^b[1]^b[2]^b[4]^b[5]^b[6]^b[7] != b[3] { // crc8 check
fmt.Println("discarding", b[0])
- b = append(b[1:], readAtLeastBytes(s, 1)...) // try to sync
+ x, err := readAtLeastBytes(s, 1, toMs)
+ if nil != err {
+ return b, err
+ }
+ b = append(b[1:], x...) // try to sync
}
//fmt.Print(b)
- return b
+ return b, nil
}
// ReadEndless expects a pointer to a filled COM port configuration
func ReadEndless(s *serial.Port, l id.List, color string) {
for {
- b := readHeader(s)
- if 0xeb == b[0] { // trice startbyte, no further data
+ b, err := readHeader(s)
+ if nil != err {
+ fmt.Println(err)
+ continue
+ }
+ if 0xeb == b[0] { // traceLog startbyte, no further data
err := emit.Trace(b, l, color)
if nil != err {
fmt.Println("trace.Log error", err, b)
|