Digi XBeeLib fixed for NonCopyable issue

Dependents:   XBeeZB_Receive_Data

Fork of XBeeLib by Digi International Inc.

This lib fixes NonCopyable<T> issues of Digi XBeeLib. Also, lib has been reworked in order to make it RTOS-aware, overcoming several others issues due to stdio Mutex operations.

Revision:
11:c49cf952d67d
Parent:
6:06522f3a6642
Child:
12:8dc9761210c1
--- a/XBee/XBee.cpp	Sat Mar 24 18:15:23 2018 +0000
+++ b/XBee/XBee.cpp	Sat Mar 24 19:50:19 2018 +0100
@@ -223,17 +223,20 @@
 
 RadioStatus XBee::wait_for_module_to_reset(volatile uint16_t *rst_cnt_p, uint16_t init_rst_cnt)
 {
-    Timer timer = Timer();
-    timer.start();
+    Timer* ptimer = new Timer();
+    ptimer->start();
 
-    while (*rst_cnt_p == init_rst_cnt && timer.read_ms() < RESET_TIMEOUT_MS) {
+    while (*rst_cnt_p == init_rst_cnt && ptimer->read_ms() < RESET_TIMEOUT_MS) {
         wait_ms(100);
     }
 
     if (*rst_cnt_p == init_rst_cnt) {
         digi_log(LogLevelWarning, "Reset Timeout\r\n");
+        delete ptimer;
         return Failure;
     }
+
+    delete ptimer;
     return Success;
 }
 
@@ -496,10 +499,10 @@
 ApiFrame * XBee::get_this_api_frame(uint8_t id, ApiFrame::ApiFrameType type,
                                           ApiFrame::ApiFrameType type2)
 {
-    Timer timer = Timer();
-    timer.start();
+    Timer* ptimer = new Timer();
+    ptimer->start();
 
-    while (timer.read_ms() < _timeout_ms) {
+    while (ptimer->read_ms() < _timeout_ms) {
         ApiFrame * frame = _framebuf_syncr.get_next_complete_frame();
         if (frame == NULL) {
             wait_ms(10);
@@ -520,11 +523,15 @@
         }
 
         /* frame found */
+        delete ptimer;
+
         return frame;
     }
 
     digi_log(LogLevelWarning, "Frame type: %02x, id: %02x, timeout\r\n", (uint8_t)type, id);
 
+    delete ptimer;
+
     return NULL;
 }