Machine Vision Status TCP Server
Dependencies: C12832 EthernetInterface mbed-rtos mbed ConfigFile
Diff: TcpDaemon.cpp
- Revision:
- 3:254a2671a8e3
- Parent:
- 2:a8eebf64cd3e
- Child:
- 4:339a85b66476
--- a/TcpDaemon.cpp Thu Mar 05 15:32:22 2015 +0000 +++ b/TcpDaemon.cpp Fri Mar 06 08:20:56 2015 +0000 @@ -10,11 +10,12 @@ * * @server_port the port the daemon will be listening on */ - TcpDaemon::TcpDaemon(int server_port, PinName receive_led_pin) - : receive_led(receive_led_pin) { + TcpDaemon::TcpDaemon(int server_port, PinName accept_led_pin, PinName receive_led_pin) + : receive_led(receive_led_pin), accept_led(accept_led_pin) { this->server_port = server_port; this->keepListening = true; this->receive_led = 0; + this->accept_led = 0; } /* @@ -37,6 +38,7 @@ return false; } else { Log::d("Bind ok\r\n"); + server.set_blocking(false, TCP_ACCEPT_TIMEOUT); // Set tot non-blocking return true; } } @@ -52,13 +54,14 @@ return; } + Log::d("Listening for incoming connection ...\r\n"); while (this->keepListening) { - Log::d("Listening for incoming connection ...\r\n"); + + // Visual indication + accept_led = !accept_led; // Accept connection from an incoming client - if (server.accept(client) < 0) { - Log::w("Client accept failed\r\n"); - } else { + if (server.accept(client) >= 0) { Log::d("Client connected: %s\r\n", client.get_address()); // Set non-blocking @@ -95,15 +98,18 @@ } else if (total_read_size > 0) { // Increment i_read (max timeouts for message) i_read++; } - } while (total_read_size < BUFFER_SIZE && end == NULL && i_read < MAX_READ_TIMEOUTS); + } while (client.is_connected() && total_read_size < BUFFER_SIZE && end == NULL && i_read < MAX_READ_TIMEOUTS); - if (total_read_size > 0 && i_read < MAX_READ_TIMEOUTS) { - if (end == NULL) { + if (end == NULL) { + if (total_read_size >= BUFFER_SIZE) { Log::w("Buffer full\r\n"); - } else { - // Full string received, lets do our thing - Log::v("Received: %s\r\n", buffer); + } else if (i_read == MAX_READ_TIMEOUTS) { + Log::w("Partial message received. MAX_READ_TIMEOUTS reached.\r\n"); } + + } else { + // Full string received, lets do our thing + Log::v("Received: %s\r\n", buffer); } }