|
|
@ -1,6 +1,8 @@ |
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
#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
|
|
|
@ -243,6 +245,7 @@ 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; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -372,6 +375,13 @@ static void _TF_FN TF_HandleReceivedMessage(TinyFrame *tf) |
|
|
|
if (res == TF_RENEW) { |
|
|
|
if (res == TF_RENEW) { |
|
|
|
renew_id_listener(ilst); |
|
|
|
renew_id_listener(ilst); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (res == TF_CLOSE) { |
|
|
|
|
|
|
|
// Set userdata to NULL to avoid calling user for cleanup
|
|
|
|
|
|
|
|
ilst->userdata = NULL; |
|
|
|
|
|
|
|
ilst->userdata2 = NULL; |
|
|
|
|
|
|
|
cleanup_id_listener(tf, i, ilst); |
|
|
|
|
|
|
|
} |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -389,8 +399,12 @@ static void _TF_FN TF_HandleReceivedMessage(TinyFrame *tf) |
|
|
|
res = tlst->fn(tf, &msg); |
|
|
|
res = tlst->fn(tf, &msg); |
|
|
|
|
|
|
|
|
|
|
|
if (res != TF_NEXT) { |
|
|
|
if (res != TF_NEXT) { |
|
|
|
// if it's TF_CLOSE, we assume user already cleaned up userdata
|
|
|
|
// type listeners don't have userdata.
|
|
|
|
// TF_RENEW doesn't make sense here because type listeners don't expire
|
|
|
|
// TF_RENEW doesn't make sense here because type listeners don't expire = same as TF_STAY
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (res == TF_CLOSE) { |
|
|
|
|
|
|
|
cleanup_type_listener(tf, i, tlst); |
|
|
|
|
|
|
|
} |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -404,8 +418,16 @@ static void _TF_FN TF_HandleReceivedMessage(TinyFrame *tf) |
|
|
|
res = glst->fn(tf, &msg); |
|
|
|
res = glst->fn(tf, &msg); |
|
|
|
|
|
|
|
|
|
|
|
if (res != TF_NEXT) { |
|
|
|
if (res != TF_NEXT) { |
|
|
|
// if it's TF_CLOSE, we assume user already cleaned up userdata
|
|
|
|
// generic listeners don't have userdata.
|
|
|
|
// TF_RENEW doesn't make sense here because generic listeners don't expire
|
|
|
|
// TF_RENEW doesn't make sense here because generic listeners don't expire = same as TF_STAY
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// note: It's not expected that user will have multiple generic listeners, or
|
|
|
|
|
|
|
|
// ever actually remove them. They're most useful as default callbacks if no other listener
|
|
|
|
|
|
|
|
// handled the message.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (res == TF_CLOSE) { |
|
|
|
|
|
|
|
cleanup_generic_listener(tf, i, glst); |
|
|
|
|
|
|
|
} |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|