embkernel
 All Classes Functions Variables Typedefs Groups Pages
Comm.cpp
1 //------------------------------------------------------------------------------
2 //This file is part of embKernel.
3 //See license.txt for the full license governing this code.
4 //------------------------------------------------------------------------------
5 
6 #include "Comm.hpp"
7 #include "Hw.hpp"
8 
9 Comm::Comm(int priority, size_t stackSize) :
10  mTask(priority, "Comm", stackSize, *this) {
11 
12 }
13 
14 Comm::~Comm() {
15 
16 }
17 
18 void Comm::run() {
19  while (true) {
20  mSocket.listen(54000);
21  mSocket.accept(Rtos::TICK_INFINITE);
22  while (mSocket.isConnected()) {
23  LibPktHandler::PKT* pkt;
24  LibPktHandler::RESULT result = mPktHandler.recvPkt(mSocket, &pkt, RTOS_CFG_TRACE_BUFFER_SIZE / 2);
25  if (result == LibPktHandler::RES_SUCCESS) {
26  switch (pkt->hdr.cmd) {
27  case CMD_GET_LEDS: {
28  uint8_t buffer[4];
29  buffer[0] = Hw::sLed1;
30  buffer[1] = Hw::sLed2;
31  buffer[2] = Hw::sLed3;
32  buffer[3] = Hw::sLed4;
33  mPktHandler.sendPkt(mSocket, CMD_GET_LEDS, sizeof(buffer), buffer);
34  break;
35  }
36  case CMD_SET_LEDS: {
37  Hw::sLed1 = pkt->data[0];
38  Hw::sLed2 = pkt->data[1];
39  Hw::sLed3 = pkt->data[2];
40  Hw::sLed4 = pkt->data[3];
41  mPktHandler.sendPkt(mSocket, CMD_SET_LEDS, 4, pkt->data);
42  break;
43  }
44  default:
45  break;
46  }
47  mPktHandler.freePkt(&pkt);
48  }
49  }
50  mPktHandler.reset();
51  mSocket.close();
52 
53  }
54 }