6 #include "LibRtosTraceNet.hpp"
8 LibTraceRtosNet::LibTraceRtosNet(
int priority,
size_t stackSize, uint16_t port) :
9 mTask(priority,
"RTOS_TRACE", stackSize, *this) {
13 LibTraceRtosNet::~LibTraceRtosNet() {
16 void LibTraceRtosNet::run() {
18 mSocket.listen(mPort);
20 Rtos::clearTraceBuffer();
21 while (mSocket.isConnected()) {
22 LibPktHandler::PKT* pkt;
23 LibPktHandler::RESULT result = mPktHandler.recvPkt(mSocket, &pkt, RTOS_CFG_TRACE_BUFFER_SIZE / 2);
24 if (result == LibPktHandler::RES_SUCCESS) {
25 switch (pkt->hdr.cmd) {
26 case CMD_GET_TASK_NAME: {
28 mPktHandler.sendPkt(mSocket, CMD_GET_TASK_NAME, strlen(task->
getName()), task->
getName());
31 case GET_CLOCK_FREQUENCY: {
32 uint32_t frequency = RTOS_CFG_CPU_FREQUENCY;
33 mPktHandler.sendPkt(mSocket, GET_CLOCK_FREQUENCY, 4, &frequency);
36 case CMD_GET_TASK_STACK: {
39 param[0] = (uint32_t) task;
42 mPktHandler.sendPkt(mSocket, CMD_GET_TASK_STACK,
sizeof(param), param);
48 mPktHandler.freePkt(&pkt);
52 int count = Rtos::getTraceBuffer(&tag);
54 mPktHandler.sendPkt(mSocket, CMD_SEND_TRACE_TAGS, count *
sizeof(Rtos::TRACE_TAG), tag);
55 Rtos::releaseBuffer(count);