4 Commits
2 changed files with 36 additions and 30 deletions
+8 -2
View File
@@ -485,6 +485,7 @@ void _TF_FN TF_AcceptChar(TinyFrame *tf, unsigned char c)
} }
#endif #endif
//@formatter:off
switch (tf->state) { switch (tf->state) {
case TFState_SOF: case TFState_SOF:
if (c == TF_SOF_BYTE) { if (c == TF_SOF_BYTE) {
@@ -536,6 +537,7 @@ void _TF_FN TF_AcceptChar(TinyFrame *tf, unsigned char c)
} }
if (tf->len == 0) { if (tf->len == 0) {
// if the message has no body, we're done.
TF_HandleReceivedMessage(tf); TF_HandleReceivedMessage(tf);
TF_ResetParser(tf); TF_ResetParser(tf);
break; break;
@@ -547,7 +549,7 @@ void _TF_FN TF_AcceptChar(TinyFrame *tf, unsigned char c)
CKSUM_RESET(tf->cksum); // Start collecting the payload CKSUM_RESET(tf->cksum); // Start collecting the payload
if (tf->len >= TF_MAX_PAYLOAD_RX) { if (tf->len > TF_MAX_PAYLOAD_RX) {
// ERROR - frame too long. Consume, but do not store. // ERROR - frame too long. Consume, but do not store.
tf->discard_data = true; tf->discard_data = true;
} }
@@ -588,6 +590,7 @@ void _TF_FN TF_AcceptChar(TinyFrame *tf, unsigned char c)
} }
break; break;
} }
//@formatter:on
// we get here after finishing HEAD, if no data are to be received - handle and clear // we get here after finishing HEAD, if no data are to be received - handle and clear
if (tf->len == 0 && tf->state == TFState_DATA) { if (tf->len == 0 && tf->state == TFState_DATA) {
@@ -771,6 +774,8 @@ static bool _TF_FN TF_SendFrame(TinyFrame *tf, TF_Msg *msg, TF_Listener listener
} }
} }
// Checksum only if message had a body
if (msg->len > 0) {
// Flush if checksum wouldn't fit in the buffer // Flush if checksum wouldn't fit in the buffer
if (TF_SENDBUF_LEN - len < sizeof(TF_CKSUM)) { if (TF_SENDBUF_LEN - len < sizeof(TF_CKSUM)) {
TF_WriteImpl(tf, (const uint8_t *) tf->sendbuf, len); TF_WriteImpl(tf, (const uint8_t *) tf->sendbuf, len);
@@ -779,8 +784,9 @@ static bool _TF_FN TF_SendFrame(TinyFrame *tf, TF_Msg *msg, TF_Listener listener
// Add checksum, flush what remains to be sent // Add checksum, flush what remains to be sent
len += TF_ComposeTail(tf->sendbuf + len, &cksum); len += TF_ComposeTail(tf->sendbuf + len, &cksum);
TF_WriteImpl(tf, (const uint8_t *) tf->sendbuf, len); }
TF_WriteImpl(tf, (const uint8_t *) tf->sendbuf, len);
TF_ReleaseTx(tf); TF_ReleaseTx(tf);
return true; return true;
+1 -1
View File
@@ -10,7 +10,7 @@
* Upstream URL: https://github.com/MightyPork/TinyFrame * Upstream URL: https://github.com/MightyPork/TinyFrame
*/ */
#define TF_VERSION "2.0.2" #define TF_VERSION "2.0.4"
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
#include <stdint.h> // for uint8_t etc #include <stdint.h> // for uint8_t etc