For a PR

Fork of ublox-at-cellular-interface by u-blox

Files at this revision

API Documentation at this revision

Comitter:
amq
Date:
Thu Mar 01 21:32:25 2018 +0000
Parent:
13:39264b492ce7
Commit message:
Let handle_event() finish a full cycle before destruction

Changed in this revision

UbloxATCellularInterface.cpp Show annotated file Show diff for this revision Revisions of this file
UbloxATCellularInterface.h Show annotated file Show diff for this revision Revisions of this file
diff -r 39264b492ce7 -r 5f55453ef38f UbloxATCellularInterface.cpp
--- a/UbloxATCellularInterface.cpp	Wed Jan 10 09:44:24 2018 +0000
+++ b/UbloxATCellularInterface.cpp	Thu Mar 01 21:32:25 2018 +0000
@@ -40,7 +40,7 @@
     fhs.fh = _fh;
     fhs.events = POLLIN;
 
-    while (true) {
+    while (_run_event_thread) {
         count = poll(&fhs, 1, 1000);
         if (count > 0 && (fhs.revents & POLLIN)) {
             LOCK();
@@ -938,6 +938,8 @@
     _uname = NULL;
     _pwd = NULL;
     _connection_status_cb = NULL;
+    
+    _run_event_thread = true;
 
     // Initialise sockets storage
     memset(_sockets, 0, sizeof(_sockets));
@@ -969,6 +971,9 @@
 // Destructor.
 UbloxATCellularInterface::~UbloxATCellularInterface()
 {
+    _run_event_thread = false;
+    event_thread.join();
+    
     // Free _ip if it was ever allocated
     free(_ip);
 }
diff -r 39264b492ce7 -r 5f55453ef38f UbloxATCellularInterface.h
--- a/UbloxATCellularInterface.h	Wed Jan 10 09:44:24 2018 +0000
+++ b/UbloxATCellularInterface.h	Thu Mar 01 21:32:25 2018 +0000
@@ -609,6 +609,7 @@
     bool _sim_pin_change_pending;
     const char *_sim_pin_change_pending_new_pin_value;
     Thread event_thread;
+    bool _run_event_thread;
     void handle_event();
     SockCtrl * find_socket(int modem_handle = SOCKET_UNUSED);
     void clear_socket(SockCtrl * socket);