Skip to content

Commit 77db2dc

Browse files
author
brentru
committed
read_sms rets as a tuple, sender and msg
1 parent e8188e5 commit 77db2dc

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

adafruit_fona/adafruit_fona.py

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -543,43 +543,50 @@ def num_sms(self, sim_storage=True):
543543

544544
# ask how many SMS are stored
545545
if sim_storage:
546-
if self._send_parse_reply(b"AT+CPMS?", FONA_SMS_STORAGE_SIM + b",", idx=1):
547-
return self._buf
546+
if not self._send_parse_reply(b"AT+CPMS?", FONA_SMS_STORAGE_SIM + b",", idx=1):
547+
return False
548548
else:
549-
if self._send_parse_reply(b"AT+CPMS?", FONA_SMS_STORAGE_INTERNAL + b",", idx=1):
550-
return self._buf
551-
if self._send_parse_reply(b"AT+CPMS?", b"\"SM\",", idx=1):
552-
return self._buf
553-
if self._send_parse_reply(b"AT+CPMS?", b"\"SM_P\",", idx=1):
554-
return self._buf
555-
return False
549+
if not self._send_parse_reply(b"AT+CPMS?", FONA_SMS_STORAGE_INTERNAL + b",", idx=1):
550+
return False
551+
if not self._send_parse_reply(b"AT+CPMS?", b"\"SM\",", idx=1):
552+
return False
553+
if not self._send_parse_reply(b"AT+CPMS?", b"\"SM_P\",", idx=1):
554+
return False
555+
556+
self._uart.reset_input_buffer()
557+
return self._buf
556558

557559
def read_sms(self, sms_slot=None):
558-
"""Reads SMS messages from FONA device.
560+
"""Reads and parses SMS messages from FONA device. Returns the SMS
561+
(sender, data) as a tuple.
559562
If no sms_slot is selected, read_sms returns all sms messages on the device.
560563
:param int sms_slot: SMS memory slot number.
561564
562565
"""
566+
self._read_line()
567+
563568
# text mode
564569
if not self._send_check_reply(b"AT+CMGF=1", reply=REPLY_OK):
565570
return False
566571

567572
if not self._send_check_reply(b"AT+CSDH=1", reply=REPLY_OK):
568573
return False
569574

570-
# TODO: Add this back
571-
#if sms_slot is None:
572-
# self.uart_write(b"AT+CMGL=\"ALL\"" + b"\r\n")
573-
# self._read_line()
574-
# return True
575-
576575
self.uart_write(b"AT+CMGR=" + str(sms_slot).encode() + b"\r\n")
577576
self._read_line(1000)
577+
resp = self._buf
578+
579+
# get sender
580+
if not self._parse_reply(b"+CMGR:", idx=1):
581+
return False
582+
sender = self._buf
578583

579584
# get sms length
585+
self._buf = resp
580586
if not self._parse_reply(b"+CMGR:", idx=11):
581587
return False
582588
sms_len = self._buf
589+
583590
# rsize shared buf
584591
self._buf = bytearray(sms_len)
585592
# read into buffer
@@ -588,7 +595,7 @@ def read_sms(self, sms_slot=None):
588595
self._uart.reset_input_buffer()
589596

590597

591-
return bytes(self._buf).decode()
598+
return sender, bytes(self._buf).decode()
592599

593600

594601
### Socket API (TCP, UDP) ###

0 commit comments

Comments
 (0)