|
|
@ -1,8 +1,6 @@ |
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
#include "TinyFrame.h" |
|
|
|
#include "TinyFrame.h" |
|
|
|
#include <malloc.h> |
|
|
|
#include <malloc.h> |
|
|
|
#include <stdio.h> |
|
|
|
|
|
|
|
#include <stdlib.h> |
|
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
// Compatibility with ESP8266 SDK
|
|
|
|
// Compatibility with ESP8266 SDK
|
|
|
@ -245,7 +243,6 @@ bool _TF_FN TF_AddIdListener(TinyFrame *tf, TF_Msg *msg, TF_Listener cb, TF_TICK |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
fprintf(stderr,"TF failed to add ID listener\n"); |
|
|
|
|
|
|
|
return false; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -375,8 +372,7 @@ static void _TF_FN TF_HandleReceivedMessage(TinyFrame *tf) |
|
|
|
if (res == TF_RENEW) { |
|
|
|
if (res == TF_RENEW) { |
|
|
|
renew_id_listener(ilst); |
|
|
|
renew_id_listener(ilst); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
else if (res == TF_CLOSE) { |
|
|
|
if (res == TF_CLOSE) { |
|
|
|
|
|
|
|
// Set userdata to NULL to avoid calling user for cleanup
|
|
|
|
// Set userdata to NULL to avoid calling user for cleanup
|
|
|
|
ilst->userdata = NULL; |
|
|
|
ilst->userdata = NULL; |
|
|
|
ilst->userdata2 = NULL; |
|
|
|
ilst->userdata2 = NULL; |
|
|
@ -489,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) { |
|
|
@ -540,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; |
|
|
@ -592,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) { |
|
|
@ -775,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); |
|
|
@ -783,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; |
|
|
|