修复cat1 因为sms读取失败造成的无法通讯的问题 228/3 228/head 229/target/1
authorSnickerSun <snickersun@163.com>
Thu, 6 Jun 2024 09:42:44 +0000 (17:42 +0800)
committerSnickerSun <snickersun@163.com>
Thu, 6 Jun 2024 09:42:44 +0000 (17:42 +0800)
code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py

index 2d92683..b624a38 100644 (file)
@@ -59,6 +59,8 @@ def msg_cb(args):
     index = args[1]
     storage = args[2]
     sms_data = sms.getSaveLoc()
+    if sms_data == -1:
+        return
     sms_max = sms_data[0][2]
     if index != -1:
         eventMesh.publish("send_singal_data_toBle",index)
@@ -240,7 +242,7 @@ class Cat1Service:
         eventMesh.subscribe("delete_sms_event",self.delete_sms_event)
         eventMesh.subscribe("remove_all_sms_cb", self.remove_all_sms_cb)#
         eventMesh.subscribe("send_sms_max_to_Ble",self.send_sms_max_to_Ble)
-        eventMesh.subscribe("get_all_sms_data",self.get_all_sms_data)#获取所有的短信内容
+        eventMesh.subscribe("get_all_sms_data",self.get_all_sms_data) #获取所有的短信内容
         eventMesh.subscribe("send_singal_data_toBle",self.send_singal_data_toBle)
         eventMesh.subscribe("delete_sms_single_data",self.delete_sms_single_data)
 
@@ -264,7 +266,7 @@ class Cat1Service:
         sms_get = sms.getSaveLoc()
         if(sms_get != -1):
             sms_lacv = sms_get[0][0]
-            if sms_lacv != 'SM':#每次开机设置一下短信的存储位置
+            if sms_lacv != 'SM': #每次开机设置一下短信的存储位置
                 sms.setSaveLoc('SM', 'SM', 'SM')
         return None
 
@@ -360,7 +362,7 @@ class Cat1Service:
                 print("cmd error ret:{}".format(ret))
                 self.reply_cmd('09',"{}".format("at error"))
         
-        elif cmd == "10" or cmd == "12" or cmd == "14":#获取固件版本号或者获取BT保存的SIM卡的ICCID BLE那边是否开启电信入库功能
+        elif cmd == "10" or cmd == "12" or cmd == "14": #获取固件版本号或者获取BT保存的SIM卡的ICCID BLE那边是否开启电信入库功能
             if CHINA_TELECOM_DM_FUN_ENABLE == 1 :
                 if eventMesh.publish("get_dmp_change_mode") == 1:
                     self.telecom_recv_cmd(cmd,parm)
@@ -384,11 +386,11 @@ class Cat1Service:
                     self.china_mobile_recv_cmd(cmd,parm)
             else:
                 pass
-        elif cmd == "17":#用于CAT1恢复出厂需要清空数据的标识通用
+        elif cmd == "17": #用于CAT1恢复出厂需要清空数据的标识通用
             eventMesh.publish("set_factory_status",int(parm))
           
         
-    def telecom_recv_cmd(self,cmd,parm):#电信入库
+    def telecom_recv_cmd(self,cmd,parm): #电信入库
         if cmd == "10":
             self.software_version = str(parm)
             eventMesh.publish("set_dev_version",self.software_version)
@@ -399,12 +401,12 @@ class Cat1Service:
             pass
                 
         pass
-    def china_mobile_recv_cmd(self,cmd,parm):#移动入库相关指令
+    def china_mobile_recv_cmd(self,cmd,parm): #移动入库相关指令
         if cmd == "10":
             self.software_version = str(parm)
             eventMesh.publish("set_dev_version",self.software_version)
             print("software_version:{},{}".format(self.software_version,parm))
-        elif cmd == "16":#获取BLE mac地址
+        elif cmd == "16": #获取BLE mac地址
             eventMesh.publish("set_dev_mac",str(parm))
             print("parm:{}\r\n".format(parm))
                 
@@ -413,13 +415,13 @@ class Cat1Service:
         return self.factory_status
     def set_factory_status(self,event,msg):
         self.factory_status = int(msg)
-        if self.factory_status == 0:#只有为的时候才设置进去 1不再设置
+        if self.factory_status == 0: #只有为的时候才设置进去 1不再设置
             self.reply_cmd('17',"{}".format(1))
 
         
     def set_dmp_change_mode(self,event,msg):
         self.telecom_dmp_switch = msg
-    def delete_sms_single_data(self,event,msg):#删除单条信息
+    def delete_sms_single_data(self,event,msg): #删除单条信息
         sms.deleteMsg(int(msg))
 
     def get_dmp_change_mode(self,event,msg):
@@ -430,33 +432,38 @@ class Cat1Service:
         eventMesh.publish_async("remove_all_sms_cb","",1*1024)
     def remove_all_sms_cb(self, event, msg):
         print("remove_all_sms_cb\r\n")
-        msg_nums = sms.getMsgNums()#短信数量
+        msg_nums = sms.getMsgNums() #短信数量
         if msg_nums == -1:
             msg_nums = 0
         sms_data = sms.getSaveLoc()
-        sms_max = sms_data[0][2]#最大存储短信数量
+        print("{}\r\n".format(sms_data))
+        if sms_data == -1:
+            return
+        sms_max = sms_data[0][2] #最大存储短信数量
         if sms_max >= msg_nums and sms_max > 0:
-            sms.deleteMsg(1,4)#删除所有的sms信息
+            sms.deleteMsg(1,4) #删除所有的sms信息
 
     def send_singal_data_toBle(self,event,msg):
-        msg_nums = sms.getMsgNums()#短信数量
+        msg_nums = sms.getMsgNums() #短信数量
         if msg_nums == -1:
             msg_nums = 0
         sms_data = sms.getSaveLoc()
-        sms_max = sms_data[0][2]#最大存储短信数量
+        if sms_data == -1:
+            return
+        sms_max = sms_data[0][2] #最大存储短信数量
         print("recv:{}".format(int(msg)))
         message=self.sms_get_message_info(int(msg))
-        if message == -1:#说明没有这条短信
+        if message == -1: #说明没有这条短信
             return
         message_pdu = sms.decodePdu(message[5],20)
         
-        if message_pdu != -1:#解码出来的内容
+        if message_pdu != -1: #解码出来的内容
 
-            message_ref = message[0]#编码
-            message_total_num = message[1]#总共条数
-            message_seq = message[2]#当前第几条
-            data = message[5]#内容
-            data_len = len(data)#内容长度
+            message_ref = message[0] #编码
+            message_total_num = message[1] #总共条数
+            message_seq = message[2] #当前第几条
+            data = message[5] #内容
+            data_len = len(data) #内容长度
             # ref        :短信参考标识,同一个标识表明为同一条短信 
             # total_num  :此条长短信总条数 大于1属于长短信
             # seq        :此条短信在长短信中的序号
@@ -575,8 +582,9 @@ class Cat1Service:
         if msg_nums == -1:
             msg_nums = 0
         sms_data = sms.getSaveLoc()
-        sms_max = sms_data[0][2]#最大存储短信数量
-        self.reply_cmd('15',"@sms_max:"+str(sms_max)+"@current_num:"+str(msg_nums))
+        if sms_data != -1:
+            sms_max = sms_data[0][2]#最大存储短信数量
+            self.reply_cmd('15',"@sms_max:"+str(sms_max)+"@current_num:"+str(msg_nums))
         pass
     
     def get_all_sms_data(self,event,msg):
@@ -584,7 +592,9 @@ class Cat1Service:
         SMS_lis={}
         SMS_lis_count = 0
         sms_data = sms.getSaveLoc()
-        print(sms.getSaveLoc())
+        print(sms_data)
+        if sms_data == -1:
+            return
         sms_max = sms_data[0][2]#最大存储短信数量
         print(sms_max)
         self.msg_nums = sms.getMsgNums()