From b35c765251c7ac49f5487ffa450d9d46d66b7308 Mon Sep 17 00:00:00 2001 From: Ric Sapasap Date: Sat, 14 Jan 2023 08:02:41 +0800 Subject: [PATCH 1/2] Fix docstring typo Signed-off-by: Ric Sapasap --- adafruit_fona/adafruit_fona.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_fona/adafruit_fona.py b/adafruit_fona/adafruit_fona.py index 5ac2b39..a7efae4 100644 --- a/adafruit_fona/adafruit_fona.py +++ b/adafruit_fona/adafruit_fona.py @@ -71,7 +71,7 @@ class FONA: """CircuitPython FONA module interface. :param ~busio.UART uart: FONA UART connection. - :param ~digitalio.DigitalInOut rdt: FONA RST pin. + :param ~digitalio.DigitalInOut rst: FONA RST pin. :param ~digitalio.DigitalInOut ri: Optional FONA Ring Interrupt (RI) pin. :param bool debug: Enable debugging output. """ From da576d5e22efaf3fe3f1ce6f505dd420c122f255 Mon Sep 17 00:00:00 2001 From: Ric Sapasap Date: Sat, 14 Jan 2023 08:50:58 +0800 Subject: [PATCH 2/2] Fix enabling GPS for non-gps modules Signed-off-by: Ric Sapasap --- adafruit_fona/adafruit_fona.py | 15 +++++++++++---- adafruit_fona/adafruit_fona_network.py | 22 ++++++++++++++++++---- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/adafruit_fona/adafruit_fona.py b/adafruit_fona/adafruit_fona.py index a7efae4..1f244c7 100644 --- a/adafruit_fona/adafruit_fona.py +++ b/adafruit_fona/adafruit_fona.py @@ -56,6 +56,7 @@ # FONA Versions FONA_800_L = const(0x01) FONA_800_H = const(0x6) +FONA_800_C = const(0x7) FONA_808_V1 = const(0x2) FONA_808_V2 = const(0x3) FONA_3G_A = const(0x4) @@ -147,14 +148,20 @@ def _init_fona(self) -> bool: self._fona_type = FONA_3G_A elif self._buf.find(b"SIMCOM_SIM5320E") != -1: self._fona_type = FONA_3G_E - - if self._fona_type == FONA_800_L: - # determine if SIM800H + elif self._buf.find(b"SIM800") != -1: self._uart_write(b"AT+GMM\r\n") self._read_line(multiline=True) if self._buf.find(b"SIM800H") != -1: self._fona_type = FONA_800_H + elif self._buf.find(b"SIM800L") != -1: + self._fona_type = FONA_800_L + elif self._buf.find(b"SIM800C") != -1: + self._fona_type = FONA_800_C + + if self._debug and self._fona_type == 0: + print(f"Unsupported module: {self._buf}") + return True def factory_reset(self) -> bool: @@ -366,7 +373,7 @@ def gps(self) -> int: # Instead just look for a fix and if found assume it's a 3D fix. self._get_reply(b"AT+CGNSINF") - if not b"+CGNSINF: " in self._buf: + if b"+CGNSINF: " not in self._buf: return False status = int(self._buf[10:11].decode("utf-8")) diff --git a/adafruit_fona/adafruit_fona_network.py b/adafruit_fona/adafruit_fona_network.py index f60fa56..5d71985 100755 --- a/adafruit_fona/adafruit_fona_network.py +++ b/adafruit_fona/adafruit_fona_network.py @@ -41,11 +41,18 @@ def __init__( self._iface = fona self._apn = apn self._network_connected = False - self._network_type = NET_CDMA + self._network_type = NET_GSM + self._has_gps = False - if not self._iface.version == 0x4 or self._iface.version == 0x5: - self._network_type = NET_GSM + # These are numbers defined in adafruit_fona FONA versions + # For some reason, we can't import them from the adafruit_fona file + + if self._iface.version in (0x4, 0x5): + self._network_type = NET_CDMA + + if self._iface.version in (0x2, 0x3, 0x4, 0x5): self._iface.gps = True + self._has_gps = True def __enter__(self) -> "CELLULAR": return self @@ -72,7 +79,14 @@ def iccid(self) -> str: def is_attached(self) -> bool: """Returns if the modem is attached to the network.""" if self._network_type == NET_GSM: - if self._iface.gps == 3 and self._iface.network_status == 1: + if ( + self._has_gps + and self._iface.gps == 3 + and self._iface.network_status == 1 + ): + return True + + if not self._has_gps and self._iface.network_status == 1: return True else: # Attach CDMA network if self._iface.ue_system_info == 1 and self._iface.network_status == 1: