Machine Vision Status TCP Server

Dependencies:   C12832 EthernetInterface mbed-rtos mbed ConfigFile

Committer:
dwini
Date:
Wed Mar 11 12:11:23 2015 +0000
Revision:
5:7a32c081a3fa
Parent:
4:339a85b66476
Child:
7:23c8d34000eb
Add status indication using RGB leds

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dwini 1:8efef658d90b 1 #ifndef TCP_DAEMON_HEADER
dwini 1:8efef658d90b 2 #define TCP_DAEMON_HEADER
dwini 1:8efef658d90b 3
dwini 2:a8eebf64cd3e 4 #include "mbed.h"
dwini 4:339a85b66476 5 #include "EthernetInterface.h"
dwini 4:339a85b66476 6 #include "ExternalTrigger.h"
dwini 5:7a32c081a3fa 7 #include "StatusIndicator.h"
dwini 2:a8eebf64cd3e 8
dwini 1:8efef658d90b 9 #define MAX_BACKLOG 1
dwini 4:339a85b66476 10 #define TRIGGER_MSG "TRIGGER\r\n"
dwini 1:8efef658d90b 11
dwini 5:7a32c081a3fa 12 #define STR_FAIL "FAIL\r\n"
dwini 5:7a32c081a3fa 13 #define STR_OK "OK\r\n"
dwini 5:7a32c081a3fa 14 #define STR_CLEAR "CLEAR\r\n"
dwini 5:7a32c081a3fa 15
dwini 1:8efef658d90b 16 namespace MachineVision{
dwini 1:8efef658d90b 17
dwini 1:8efef658d90b 18 class TcpDaemon{
dwini 1:8efef658d90b 19 public:
dwini 1:8efef658d90b 20 const static int BUFFER_SIZE = 512;
dwini 2:a8eebf64cd3e 21 const static int TCP_TIMEOUT = 250;
dwini 3:254a2671a8e3 22 const static int TCP_ACCEPT_TIMEOUT = 500;
dwini 2:a8eebf64cd3e 23 const static int MAX_READ_TIMEOUTS = 10; // Maximum number of times to retry to read for rest of message
dwini 4:339a85b66476 24
dwini 1:8efef658d90b 25 private:
dwini 1:8efef658d90b 26 int server_port;
dwini 1:8efef658d90b 27 TCPSocketServer server;
dwini 1:8efef658d90b 28 TCPSocketConnection client;
dwini 1:8efef658d90b 29
dwini 1:8efef658d90b 30 char buffer[BUFFER_SIZE+1];
dwini 1:8efef658d90b 31 bool keepListening;
dwini 2:a8eebf64cd3e 32
dwini 3:254a2671a8e3 33 DigitalOut accept_led;
dwini 2:a8eebf64cd3e 34 DigitalOut receive_led;
dwini 4:339a85b66476 35
dwini 4:339a85b66476 36 ExternalTrigger trigger;
dwini 5:7a32c081a3fa 37
dwini 5:7a32c081a3fa 38 // Status Indicator
dwini 5:7a32c081a3fa 39 StatusIndicator * status_indicator;
dwini 1:8efef658d90b 40
dwini 1:8efef658d90b 41 public:
dwini 1:8efef658d90b 42 /*
dwini 1:8efef658d90b 43 * TcpDaemon constructor
dwini 1:8efef658d90b 44 *
dwini 1:8efef658d90b 45 * @server_port the port the daemon will be listening on
dwini 1:8efef658d90b 46 */
dwini 5:7a32c081a3fa 47 TcpDaemon(int server_port, PinName accept_led_pin, PinName receive_led_pin, PinName trigger_pin, StatusIndicator * indicator);
dwini 1:8efef658d90b 48
dwini 1:8efef658d90b 49 /*
dwini 1:8efef658d90b 50 * Make the daemon start listening for incoming connections
dwini 1:8efef658d90b 51 */
dwini 1:8efef658d90b 52 void startListening();
dwini 1:8efef658d90b 53
dwini 1:8efef658d90b 54 private:
dwini 1:8efef658d90b 55 /*
dwini 1:8efef658d90b 56 * Bind to server socket
dwini 1:8efef658d90b 57 *
dwini 1:8efef658d90b 58 * @return true on success
dwini 1:8efef658d90b 59 */
dwini 1:8efef658d90b 60 bool bindSocket();
dwini 1:8efef658d90b 61
dwini 1:8efef658d90b 62 /*
dwini 1:8efef658d90b 63 * Listen for incoming connections
dwini 1:8efef658d90b 64 */
dwini 1:8efef658d90b 65 void doListen();
dwini 4:339a85b66476 66
dwini 4:339a85b66476 67 void checkTrigger(void);
dwini 1:8efef658d90b 68 };
dwini 1:8efef658d90b 69 }
dwini 1:8efef658d90b 70
dwini 1:8efef658d90b 71 #endif