A Bit funky still

Dependencies:   EthernetInterface mbed-rtos mbed

Files at this revision

API Documentation at this revision

Comitter:
ipv1
Date:
Wed Apr 20 09:47:18 2016 +0000
Parent:
0:337d7fbe5920
Commit message:
take two

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Apr 20 08:57:07 2016 +0000
+++ b/main.cpp	Wed Apr 20 09:47:18 2016 +0000
@@ -3,31 +3,22 @@
 
 #define ECHO_SERVER_PORT   7
 
+DigitalOut heartbeatLed(LED_GREEN);
+DigitalOut myled(LED_RED);
 
-int main (void) 
-{
-    DigitalOut myled(LED1);
-    printf("Wait a second...\r\n");
-    //uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 
-    static const char*          mbedIp       = "192.168.64.232";  //IP
-    static const char*          mbedMask     = "255.255.255.0";  // Mask
-    static const char*          mbedGateway  = "192.168.64.1";    //Gateway
- 
-    EthernetInterface eth;
-    eth.init(mbedIp, mbedMask, mbedGateway); //Use DHCP
-    eth.connect();
-    //printf("Server IP Address is %s\r\n", eth.getIPAddress());
+void server_thread(void const* arg) {
     
     TCPSocketServer server;
+    
+    server.set_blocking (true);
     server.bind(ECHO_SERVER_PORT);
-    server.listen();
-    
+    server.listen(1);    
     while (true) 
     {
         //printf("Wait for new connection...\r\n");
         TCPSocketConnection client;
         server.accept(client);
-        client.set_blocking(false, 15000); // Timeout after (1.5)s
+        client.set_blocking(false, true); // Timeout after (1.5)s
         
         //printf("Connection from: %s\r\n", client.get_address());
         char buffer[256];
@@ -40,28 +31,39 @@
             }else{
                 myled=0;
             }
-            // print received message to terminal
-            //buffer[n] = '\0';
-            //printf("Received message from Client :'%s'\r\n",buffer);
-            
-            // reverse the message
-            //char temp;
-//            for(int f = 0, l = n-1; f<l; f++,l--){
-//                temp = buffer[f];
-//                buffer[f] = buffer[l];
-//                buffer[l] = temp;
-//                }
+
             sprintf(buffer, "Hi Alisha.How are u?");
-            // print reversed message to terminal
-            //printf("Sending message to Client: '%s'\r\n",buffer);
-            
-            // Echo received message back to client
             client.send_all(buffer, n);
             if (n <= 0) break;
-        }
-        
+        }        
         client.close();
     }
+}
+
+
+int main (void) 
+{
+    
+    //printf("Wait a second...\r\n");
+    //uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x00, 0x01, 0x02}; 
+    static const char*          mbedIp       = "192.168.64.232";  //IP
+    static const char*          mbedMask     = "255.255.255.0";  // Mask
+    static const char*          mbedGateway  = "192.168.64.1";    //Gateway
+ 
+    EthernetInterface eth;
+    eth.init(mbedIp, mbedMask, mbedGateway); //Use DHCP
+    eth.connect();
+    //printf("Server IP Address is %s\r\n", eth.getIPAddress());
+    
+    Thread server(&server_thread);
+    
+    while(true){
+      Thread::wait(1000);
+      // Heartbeat.
+      // The board systematically crashes after a low number of sends from a client,
+      // e.g. ~10 times 1000 bytes, ~2-3 times 10000 bytes, etc.
+      heartbeatLed = !heartbeatLed;
+    }   
     
 }
 
--- a/mbed-rtos.lib	Wed Apr 20 08:57:07 2016 +0000
+++ b/mbed-rtos.lib	Wed Apr 20 09:47:18 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed-rtos/#aaa1b2c7c64c
+http://mbed.org/users/mbed_official/code/mbed-rtos/#bdd541595fc5