For a PR
Fork of ublox-at-cellular-interface by
Revision 14:5f55453ef38f, committed 2018-03-01
- 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);