33"""
44
55from core .utils .status import Status
6- from core .utils .helpers import get_parameter , get_desired_data_from_response
6+ from core .utils .helpers import get_parameter , extract_messages
77
88class MQTT :
99 """
@@ -546,43 +546,6 @@ def publish_message(self, payload, topic=None, qos=1, retain=0, message_id=1, ci
546546 return result
547547 return {"response" : "Missing parameter" , "status" : Status .ERROR }
548548
549- def check_messages (self , cid = 0 ):
550- """
551- Function for receiving MQTT messages.
552-
553- Parameters
554- ----------
555- cid : int
556- MQTT Client ID (range 0:5) (default=0)
557-
558- Returns
559- -------
560- (status, modem_response, buffer_indexes) : tuple
561- status : int
562- Status of the command.
563- modem_response : str
564- Response of the modem.
565- buffer_indexes : list
566- List of indexes of the received messages.
567- """
568- buffer_indexes = []
569- result = self .atcom .send_at_comm ("AT+QMTRECV?" ,"+QMTRECV:" )
570-
571- if result ["status" ] == Status .SUCCESS :
572- prefix = f"+QMTRECV: { cid } ,"
573- buffer = get_desired_data_from_response (
574- result ["response" ],
575- prefix ,
576- separator = "," ,
577- data_index = [0 ,1 ,2 ,3 ,4 ]
578- ) or []
579-
580- for index in buffer :
581- if index != "" or index is not None :
582- buffer_indexes .append (int (index ))
583-
584- result ["buffer_indexes" ] = buffer_indexes
585- return result
586549
587550 def read_messages (self , cid = 0 ):
588551 """
@@ -600,25 +563,15 @@ def read_messages(self, cid=0):
600563 Status of the command.
601564 modem_response : str
602565 Response of the modem.
603- messages : list ["client_idx,message_id, topic,payload_len, payload", ... ]
566+ messages : list ["client_idx,topic,payload"]
604567 List of messages.
605568 """
606569 messages = []
607-
608- result = self .check_messages (cid )
609- buffer_indexes = result ["buffer_indexes" ] or []
570+ result = self .atcom .send_at_comm ("AT+QMTRECV?" ,"+QMTRECV:" )
610571
611572 if result ["status" ] == Status .SUCCESS :
612- for index in buffer_indexes :
613- if buffer_indexes [index ] == 1 :
614- result = self .atcom .send_at_comm (f'AT+QMTRECV={ cid } ,{ index } ' ,"OK" )
615- if result ["status" ] == Status .SUCCESS :
616- messages .append (result ["response" ])
617-
618- result .pop ("buffer_indexes" )
619- result ["messages" ] = messages
620- return result
621- else :
622- result .pop ("buffer_indexes" )
623- result ["messages" ] = messages
624- return result
573+ prefix = f"+QMTRECV: { cid } ,"
574+ messages = extract_messages (result ["response" ], prefix )
575+
576+ result ["messages" ] = messages
577+ return result
0 commit comments