Add re-entrancy support / multiple instances (#9)

* done with changes but now segfaulting

* fixed the bug

* fix some bad indents

* some cleanings

* updated readme
This commit is contained in:
2017-12-14 00:28:06 +01:00
committed by GitHub
parent 77f60e1876
commit db0ae30f41
14 changed files with 1274 additions and 1171 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
CFILES=../demo.c ../utils.c ../../TinyFrame.c
INCLDIRS=-I. -I.. -I../..
CFLAGS=-O0 -ggdb --std=gnu99 -Wno-main -Wall -Wextra $(CFILES) $(INCLDIRS)
CFLAGS=-O0 -ggdb --std=gnu99 -Wno-main -Wall -Wno-unused -Wextra $(CFILES) $(INCLDIRS)
build: master.bin slave.bin
+15 -15
View File
@@ -5,31 +5,31 @@
#include <stdio.h>
#include "../demo.h"
TF_Result testIdListener(TF_Msg *msg)
TF_Result testIdListener(TinyFrame *tf, TF_Msg *msg)
{
printf("testIdListener()\n");
dumpFrameInfo(msg);
return TF_CLOSE;
printf("testIdListener()\n");
dumpFrameInfo(msg);
return TF_CLOSE;
}
TF_Result testGenericListener(TF_Msg *msg)
TF_Result testGenericListener(TinyFrame *tf, TF_Msg *msg)
{
printf("testGenericListener()\n");
dumpFrameInfo(msg);
return TF_STAY;
printf("testGenericListener()\n");
dumpFrameInfo(msg);
return TF_STAY;
}
int main(void)
{
TF_Init(TF_MASTER);
TF_AddGenericListener(testGenericListener);
demo_tf = TF_Init(TF_MASTER);
TF_AddGenericListener(demo_tf, testGenericListener);
demo_init(TF_MASTER);
demo_init(TF_MASTER);
TF_SendSimple(1, (pu8)"Ahoj", 5);
TF_SendSimple(1, (pu8)"Hello", 6);
TF_SendSimple(demo_tf, 1, (pu8) "Ahoj", 5);
TF_SendSimple(demo_tf, 1, (pu8) "Hello", 6);
TF_QuerySimple(2, (pu8)"Query!", 6, testIdListener, 0, NULL);
TF_QuerySimple(demo_tf, 2, (pu8) "Query!", 6, testIdListener, 0);
demo_sleep();
demo_sleep();
}
+22 -23
View File
@@ -4,39 +4,38 @@
#include <stdio.h>
#include "../demo.h"
#include <memory.h>
TF_Result helloListener(TF_Msg *msg)
TF_Result helloListener(TinyFrame *tf, TF_Msg *msg)
{
printf("helloListener()\n");
dumpFrameInfo(msg);
return TF_STAY;
printf("helloListener()\n");
dumpFrameInfo(msg);
return TF_STAY;
}
TF_Result replyListener(TF_Msg *msg)
TF_Result replyListener(TinyFrame *tf, TF_Msg *msg)
{
printf("replyListener()\n");
dumpFrameInfo(msg);
msg->data = (const uint8_t *) "response to query";
msg->len = (TF_LEN) strlen((const char *) msg->data);
TF_Respond(msg);
printf("replyListener()\n");
dumpFrameInfo(msg);
msg->data = (const uint8_t *) "response to query";
msg->len = (TF_LEN) strlen((const char *) msg->data);
TF_Respond(tf, msg);
// unsolicited reply - will not be handled by the ID listener, which is already gone
msg->data = (const uint8_t *) "SPAM";
msg->len = 5;
TF_Respond(msg);
// unsolicited reply - will not be handled by the ID listener, which is already gone
msg->data = (const uint8_t *) "SPAM";
msg->len = 5;
TF_Respond(tf, msg);
// unrelated message
TF_SendSimple(77, (const uint8_t *) "NAZDAR", 7);
return TF_STAY;
// unrelated message
TF_SendSimple(tf, 77, (const uint8_t *) "NAZDAR", 7);
return TF_STAY;
}
int main(void)
{
TF_Init(TF_SLAVE);
TF_AddTypeListener(1, helloListener);
TF_AddTypeListener(2, replyListener);
demo_tf = TF_Init(TF_SLAVE);
TF_AddTypeListener(demo_tf, 1, helloListener);
TF_AddTypeListener(demo_tf, 2, replyListener);
demo_init(TF_SLAVE);
demo_sleep();
demo_init(TF_SLAVE);
demo_sleep();
}