Machine Vision Status TCP Server
Dependencies: C12832 EthernetInterface mbed-rtos mbed ConfigFile
TcpDaemon.h@5:7a32c081a3fa, 2015-03-11 (annotated)
- 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?
User | Revision | Line number | New 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 |