IOT_GRZYBKI / Mbed 2 deprecated WIFI_BOARD

Dependencies:   mbed cantcoap WIFI_BOARD

Dependents:   WIFI_BOARD

Revision:
6:0ab34e2cd5dc
Parent:
5:aad8eafb8702
--- a/main.cpp	Fri Jan 25 02:05:17 2019 +0000
+++ b/main.cpp	Fri Jan 25 03:59:26 2019 +0000
@@ -13,7 +13,7 @@
 //Number of retransmissions
 #define RETRANSMISSION 10
 //Timeout in ms
-#define TIMEOUT 2000
+#define TIMEOUT 3000
 
 //Length of PUT (data) response
 #define PUT_ANS_LEN 5
@@ -47,28 +47,51 @@
     read_finished = 1;
 }
 
+int super_reading_implementation(uint8_t* rx_buff, int len) {
+    Timer t;
+    t.start();
+    int ak_len = 0;
+    while(t.read_ms() < TIMEOUT && ak_len < len) {
+        while(!wifi.readable() && t.read_ms() < TIMEOUT) {}
+        if(wifi.readable())
+            rx_buff[ak_len++] = wifi.getc();
+        else {
+            t.stop();
+            return ak_len;
+        }
+    }
+    t.stop();
+    return ak_len;
+}
+
 CoapPDU* read(uint8_t* rx_buff, int len) {
     int ret;
     PCDBG("Reading");
-    read_finished = 0;
-    Timer t;
-    t.start();
-    while(!wifi.readable() && t.read_ms() < TIMEOUT) {}
-    if(wifi.readable()) 
-        //ret = wifi.read(rx_buff, len, event_callback_t(&read_cb));
-        wifi.gets((char*)rx_buff, len + 1);
-    else {
-        t.stop();
-        return NULL;
-    }
+   // read_finished = 0;
+//    Timer t;
+//    t.start();
+//    while(!wifi.readable() && t.read_ms() < TIMEOUT) {}
+//    if(wifi.readable()) 
+//        //ret = wifi.read(rx_buff, len, event_callback_t(&read_cb));
+//        wifi.gets((char*)rx_buff, len + 1);
+//    else {
+//        t.stop();
+//        return NULL;
+//    }
+    ret = super_reading_implementation(rx_buff, len);
+    
     PCDBG("Started reading");
     //t.reset();
     //t.start();
     //while(read_finished == 0 && t.read_ms() < TIMEOUT) {}
     //while(read_finished == 0) {}
-    t.stop();
-    PCDBG("Finished Reading, ret = %d, read_finished = %d, time = %d", ret, read_finished, t.read_ms())
+    //t.stop();
+    PCDBG("Finished Reading, ret = %d", ret)
     HEXDBG(rx_buff, len);
+    if(ret < len) {
+        PCDBG("Too little bits");
+        return NULL;
+    }
     //if(read_finished != 1) {
 //        wifi.abort_read();
 //        read_finished = 0;