As it turns out, I forgot to uncomment lines detaching the GW threads, so that as they are cancelled they can automatically call clean up handlers.
This also fixes related bug, where messages sent to the board after the gw was activated and deactivated, are delivered once gw is activated again. (Unless the whole board was reset in the meantime.)
return 1;\r
}\r
\r
-// pthread_detach(CAN_B_to_A_thread);\r
-// pthread_detach(CAN_A_to_B_thread);\r
+ /* detach is needed so that the threads call clean up handlers automatically. */\r
+ pthread_detach(CAN_B_to_A_thread);\r
+ pthread_detach(CAN_A_to_B_thread);\r
\r
/* Threads are started and running at this point. */\r
return 0;\r
printf("Attempting to stop thread 1\n");\r
res = pthread_cancel(CAN_A_to_B_thread);\r
if (res != 0){\r
- printf("Failed./n");\r
+ printf("Failed.\n");\r
/* Not sure what to do with error here, will have to figure out later. */\r
}\r
printf("Attempting to stop thread 2\n");\r
res = pthread_cancel(CAN_B_to_A_thread);\r
if (res != 0){\r
- printf("Failed./n");\r
+ printf("Failed.\n");\r
/* Not sure what to do with error here, will have to figure out later. */\r
}\r
sleep(1);\r