Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed cantcoap WIFI_BOARD
Diff: main.cpp
- 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;