Machine Vision Status TCP Server

Dependencies:   C12832 EthernetInterface mbed-rtos mbed ConfigFile

Committer:
dwini
Date:
Thu Mar 05 15:32:22 2015 +0000
Revision:
2:a8eebf64cd3e
Parent:
1:8efef658d90b
Child:
3:254a2671a8e3
Refactored message receival and added partial message timeout mechanism.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dwini 1:8efef658d90b 1 #include "EthernetInterface.h"
dwini 1:8efef658d90b 2
dwini 1:8efef658d90b 3 #ifndef TCP_DAEMON_HEADER
dwini 1:8efef658d90b 4 #define TCP_DAEMON_HEADER
dwini 1:8efef658d90b 5
dwini 2:a8eebf64cd3e 6 #include "mbed.h"
dwini 2:a8eebf64cd3e 7
dwini 1:8efef658d90b 8 #define MAX_BACKLOG 1
dwini 1:8efef658d90b 9
dwini 1:8efef658d90b 10 namespace MachineVision{
dwini 1:8efef658d90b 11
dwini 1:8efef658d90b 12 class TcpDaemon{
dwini 1:8efef658d90b 13 public:
dwini 1:8efef658d90b 14 const static int BUFFER_SIZE = 512;
dwini 2:a8eebf64cd3e 15 const static int TCP_TIMEOUT = 250;
dwini 2:a8eebf64cd3e 16 const static int MAX_READ_TIMEOUTS = 10; // Maximum number of times to retry to read for rest of message
dwini 1:8efef658d90b 17
dwini 1:8efef658d90b 18 private:
dwini 1:8efef658d90b 19 int server_port;
dwini 1:8efef658d90b 20 TCPSocketServer server;
dwini 1:8efef658d90b 21 TCPSocketConnection client;
dwini 1:8efef658d90b 22
dwini 1:8efef658d90b 23 char buffer[BUFFER_SIZE+1];
dwini 1:8efef658d90b 24 bool keepListening;
dwini 2:a8eebf64cd3e 25
dwini 2:a8eebf64cd3e 26 DigitalOut receive_led;
dwini 1:8efef658d90b 27
dwini 1:8efef658d90b 28 public:
dwini 1:8efef658d90b 29 /*
dwini 1:8efef658d90b 30 * TcpDaemon constructor
dwini 1:8efef658d90b 31 *
dwini 1:8efef658d90b 32 * @server_port the port the daemon will be listening on
dwini 1:8efef658d90b 33 */
dwini 2:a8eebf64cd3e 34 TcpDaemon(int server_port, PinName receive_led_pin);
dwini 1:8efef658d90b 35
dwini 1:8efef658d90b 36 /*
dwini 1:8efef658d90b 37 * Make the daemon start listening for incoming connections
dwini 1:8efef658d90b 38 */
dwini 1:8efef658d90b 39 void startListening();
dwini 1:8efef658d90b 40
dwini 1:8efef658d90b 41 private:
dwini 1:8efef658d90b 42 /*
dwini 1:8efef658d90b 43 * Bind to server socket
dwini 1:8efef658d90b 44 *
dwini 1:8efef658d90b 45 * @return true on success
dwini 1:8efef658d90b 46 */
dwini 1:8efef658d90b 47 bool bindSocket();
dwini 1:8efef658d90b 48
dwini 1:8efef658d90b 49 /*
dwini 1:8efef658d90b 50 * Listen for incoming connections
dwini 1:8efef658d90b 51 */
dwini 1:8efef658d90b 52 void doListen();
dwini 1:8efef658d90b 53 };
dwini 1:8efef658d90b 54 }
dwini 1:8efef658d90b 55
dwini 1:8efef658d90b 56 #endif