Machine Vision Status TCP Server

Dependencies:   C12832 EthernetInterface mbed-rtos mbed ConfigFile

Committer:
dwini
Date:
Sun Jun 14 10:45:10 2015 +0000
Revision:
7:23c8d34000eb
Parent:
5:7a32c081a3fa
Child:
8:845dfadaa70d
Add simple PLC status indicator and some minor changes.

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