Skip to content

Commit 5733bdf

Browse files
authored
Tear down PDP context after sending socket messages (#90)
* Tear down PDP context on socket close * don't expect timeout call, simplify close socket call
1 parent 3990905 commit 5733bdf

File tree

5 files changed

+25
-11
lines changed

5 files changed

+25
-11
lines changed

Hologram/Network/Modem/BG96.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def close_socket(self, socket_identifier=None):
7878
if ok != ModemResult.OK:
7979
self.logger.error('Failed to close socket')
8080
self.urc_state = Modem.SOCKET_CLOSED
81+
self._tear_down_pdp_context()
8182

8283
def write_socket(self, data):
8384
hexdata = binascii.hexlify(data)
@@ -184,6 +185,15 @@ def _set_up_pdp_context(self):
184185
else:
185186
self.logger.info('PDP context active')
186187

188+
def _tear_down_pdp_context(self):
189+
if not self._is_pdp_context_active(): return True
190+
self.logger.info('Tearing down PDP context')
191+
ok, _ = self.set('+QIACT', '0', timeout=30)
192+
if ok != ModemResult.OK:
193+
self.logger.error('PDP Context tear down failed')
194+
else:
195+
self.logger.info('PDP context deactivated')
196+
187197
@property
188198
def description(self):
189199
return 'Quectel BG96'

Hologram/Network/Modem/Modem.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -721,6 +721,15 @@ def _set_up_pdp_context(self):
721721
else:
722722
self.logger.info('PDP context active')
723723

724+
def _tear_down_pdp_context(self):
725+
if not self._is_pdp_context_active(): return True
726+
self.logger.info('Tearing down PDP context')
727+
ok, _ = self.set('+UPSDA', '0,4', timeout=30)
728+
if ok != ModemResult.OK:
729+
self.logger.error('PDP Context tear down failed')
730+
else:
731+
self.logger.info('PDP context deactivated')
732+
724733

725734
def __enforce_serial_port_open(self):
726735
if not (self.serial_port and self.serial_port.isOpen()):

Hologram/Network/Modem/NovaM.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,6 @@ def set_network_registration_status(self):
4848
def is_registered(self):
4949
return self.check_registered('+CEREG')
5050

51-
def close_socket(self, socket_identifier=None):
52-
53-
if socket_identifier is None:
54-
socket_identifier = self.socket_identifier
55-
56-
ok, r = self.set('+USOCL', "%s" % socket_identifier, timeout=40)
57-
if ok != ModemResult.OK:
58-
self.logger.error('Failed to close socket')
59-
6051
@property
6152
def description(self):
6253
modemtype = '(R410)' if self.is_r410 else '(R404)'

Hologram/Network/Modem/Nova_U201.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ def create_socket(self):
5050
self._set_up_pdp_context()
5151
super().create_socket()
5252

53+
def close_socket(self, socket_identifier=None):
54+
super().close_socket(socket_identifier)
55+
self._tear_down_pdp_context()
56+
5357
def is_registered(self):
5458
return self.check_registered('+CREG') or self.check_registered('+CGREG')
5559

tests/Modem/test_NovaM.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ def test_close_socket_no_args(mock_set, no_serial_port):
7373
mock_set.return_value = (0,0)
7474
mock_set.reset_mock()
7575
modem.close_socket()
76-
mock_set.assert_called_once_with('+USOCL', '0', timeout=40)
76+
mock_set.assert_called_once_with('+USOCL', '0')
7777

7878
@patch.object(NovaM, 'set')
7979
def test_close_socket_with_socket_identifier(mock_set, no_serial_port):
8080
modem = NovaM()
8181
mock_set.return_value = (0,0)
8282
mock_set.reset_mock()
8383
modem.close_socket(5)
84-
mock_set.assert_called_once_with('+USOCL', '5', timeout=40)
84+
mock_set.assert_called_once_with('+USOCL', '5')
8585

8686
@patch.object(NovaM, 'command')
8787
def test_set_network_registration_status(mock_command, no_serial_port):

0 commit comments

Comments
 (0)