Machine Vision Status TCP Server

Dependencies:   C12832 EthernetInterface mbed-rtos mbed ConfigFile

Committer:
dwini
Date:
Fri Mar 06 08:20:56 2015 +0000
Revision:
3:254a2671a8e3
Parent:
2:a8eebf64cd3e
Child:
4:339a85b66476
Change to non-blocking accept. Fix client disconnection bug.

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 3:254a2671a8e3 16 const static int TCP_ACCEPT_TIMEOUT = 500;
dwini 2:a8eebf64cd3e 17 const static int MAX_READ_TIMEOUTS = 10; // Maximum number of times to retry to read for rest of message
dwini 1:8efef658d90b 18
dwini 1:8efef658d90b 19 private:
dwini 1:8efef658d90b 20 int server_port;
dwini 1:8efef658d90b 21 TCPSocketServer server;
dwini 1:8efef658d90b 22 TCPSocketConnection client;
dwini 1:8efef658d90b 23
dwini 1:8efef658d90b 24 char buffer[BUFFER_SIZE+1];
dwini 1:8efef658d90b 25 bool keepListening;
dwini 2:a8eebf64cd3e 26
dwini 3:254a2671a8e3 27 DigitalOut accept_led;
dwini 2:a8eebf64cd3e 28 DigitalOut receive_led;
dwini 1:8efef658d90b 29
dwini 1:8efef658d90b 30 public:
dwini 1:8efef658d90b 31 /*
dwini 1:8efef658d90b 32 * TcpDaemon constructor
dwini 1:8efef658d90b 33 *
dwini 1:8efef658d90b 34 * @server_port the port the daemon will be listening on
dwini 1:8efef658d90b 35 */
dwini 3:254a2671a8e3 36 TcpDaemon(int server_port, PinName accept_led_pin, PinName receive_led_pin);
dwini 1:8efef658d90b 37
dwini 1:8efef658d90b 38 /*
dwini 1:8efef658d90b 39 * Make the daemon start listening for incoming connections
dwini 1:8efef658d90b 40 */
dwini 1:8efef658d90b 41 void startListening();
dwini 1:8efef658d90b 42
dwini 1:8efef658d90b 43 private:
dwini 1:8efef658d90b 44 /*
dwini 1:8efef658d90b 45 * Bind to server socket
dwini 1:8efef658d90b 46 *
dwini 1:8efef658d90b 47 * @return true on success
dwini 1:8efef658d90b 48 */
dwini 1:8efef658d90b 49 bool bindSocket();
dwini 1:8efef658d90b 50
dwini 1:8efef658d90b 51 /*
dwini 1:8efef658d90b 52 * Listen for incoming connections
dwini 1:8efef658d90b 53 */
dwini 1:8efef658d90b 54 void doListen();
dwini 1:8efef658d90b 55 };
dwini 1:8efef658d90b 56 }
dwini 1:8efef658d90b 57
dwini 1:8efef658d90b 58 #endif