From 47f8df8df9787fb6b5a233d580db076d3c1e56a9 Mon Sep 17 00:00:00 2001 From: Henrik Ekblad Date: Wed, 17 Feb 2016 10:01:26 +0100 Subject: [PATCH 1/3] Allow sending multiple commands in one serial transmission E.g. "1;2;1;0;2;1\n1;11;1;0;2;1\n1;1;1;0;2;0\n1;2;1;0;2;0\n" --- libraries/MySensors/core/MyGatewayTransportSerial.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/MySensors/core/MyGatewayTransportSerial.cpp b/libraries/MySensors/core/MyGatewayTransportSerial.cpp index ee8299b..f1d1701 100644 --- a/libraries/MySensors/core/MyGatewayTransportSerial.cpp +++ b/libraries/MySensors/core/MyGatewayTransportSerial.cpp @@ -54,6 +54,7 @@ bool gatewayTransportAvailable() { if (inChar == '\n') { _serialInputString[_serialInputPos] = 0; available = true; + return true; } else { // add it to the inputString: _serialInputString[_serialInputPos] = inChar; From c7efee31dd33bc00dc1bd091dabb042f873e483e Mon Sep 17 00:00:00 2001 From: Henrik Ekblad Date: Thu, 18 Feb 2016 17:02:21 +0100 Subject: [PATCH 2/3] Fix protocol parse and validity check back --- .../MySensors/core/MyGatewayTransportSerial.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/libraries/MySensors/core/MyGatewayTransportSerial.cpp b/libraries/MySensors/core/MyGatewayTransportSerial.cpp index f1d1701..c67f1a9 100644 --- a/libraries/MySensors/core/MyGatewayTransportSerial.cpp +++ b/libraries/MySensors/core/MyGatewayTransportSerial.cpp @@ -43,18 +43,18 @@ bool gatewayTransportInit() { bool gatewayTransportAvailable() { - bool available = false; - while (MY_SERIALDEVICE.available()) { // get the new byte: char inChar = (char) MY_SERIALDEVICE.read(); // if the incoming character is a newline, set a flag // so the main loop can do something about it: - if (_serialInputPos < MY_GATEWAY_MAX_RECEIVE_LENGTH - 1 && !available) { + if (_serialInputPos < MY_GATEWAY_MAX_RECEIVE_LENGTH - 1) { if (inChar == '\n') { _serialInputString[_serialInputPos] = 0; - available = true; - return true; + bool ok = protocolParse(_serialMsg, _serialInputString); + if (ok) + _serialInputPos = 0; + return ok; } else { // add it to the inputString: _serialInputString[_serialInputPos] = inChar; @@ -65,12 +65,7 @@ bool gatewayTransportAvailable() { _serialInputPos = 0; } } - if (available) { - // Parse message and return parse result - available = protocolParse(_serialMsg, _serialInputString); - _serialInputPos = 0; - } - return available; + return false; } MyMessage & gatewayTransportReceive() { From ce6915a2c71d7d3427306c08fb5b40841801a455 Mon Sep 17 00:00:00 2001 From: Henrik Ekblad Date: Sat, 20 Feb 2016 11:19:05 +0100 Subject: [PATCH 3/3] Reset message buffer every time a newline is found --- libraries/MySensors/core/MyGatewayTransportSerial.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libraries/MySensors/core/MyGatewayTransportSerial.cpp b/libraries/MySensors/core/MyGatewayTransportSerial.cpp index c67f1a9..85bb6a3 100644 --- a/libraries/MySensors/core/MyGatewayTransportSerial.cpp +++ b/libraries/MySensors/core/MyGatewayTransportSerial.cpp @@ -52,8 +52,7 @@ bool gatewayTransportAvailable() { if (inChar == '\n') { _serialInputString[_serialInputPos] = 0; bool ok = protocolParse(_serialMsg, _serialInputString); - if (ok) - _serialInputPos = 0; + _serialInputPos = 0; return ok; } else { // add it to the inputString: