// // Created by MightyPork on 2017/12/22. // #include "platform.h" #include "comm/messages.h" #include "task_msg.h" volatile uint32_t msgQueHighWaterMark = 0; /** * Process data received from TinyFrame. * The queue holds received messages or parts of messages, * copied there by the USB thread. * * Since this is a separate thread that handles TF input and runs the listeners, * TF functions (send, respond) can be called immediately without the need for an * intermediate queued job. */ void TaskMessaging(const void * argument) { dbg("> Message queue task started!"); struct rx_que_item slot; while (1) { xQueueReceive(queRxDataHandle, &slot, osWaitForever); assert_param(slot.len>0 && slot.len<=64); // check the len is within bounds // We need thr scratch buffer for many unit command handlers TF_Accept(comm, slot.data, slot.len); #if USE_STACK_MONITOR uint32_t count; count = (uint32_t) uxQueueMessagesWaiting(queRxDataHandle); // this seems to return N+1, hence we don't add the +1 for the one just removed. msgQueHighWaterMark = MAX(msgQueHighWaterMark, count); #endif } }