Machine Vision Status TCP Server

Dependencies:   C12832 EthernetInterface mbed-rtos mbed ConfigFile

Committer:
dwini
Date:
Wed Mar 11 10:26:35 2015 +0000
Revision:
4:339a85b66476
Parent:
3:254a2671a8e3
Child:
5:7a32c081a3fa
Add ability of external triggering.

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