更新
authorp15692025051 <846603105@qq.com>
Mon, 25 Aug 2025 01:46:21 +0000 (09:46 +0800)
committerp15692025051 <846603105@qq.com>
Mon, 25 Aug 2025 01:46:21 +0000 (09:46 +0800)
2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_VC.py

index ed7fcf5..c66fb73 100644 (file)
@@ -687,7 +687,7 @@ class AI_UART():
     def bt_ota_run(self,event=None,msg=None):#通过串口给蓝牙升级
         # EventMesh.publish("wakeup_BT") 
         EventMesh.publish(constants.EVENT.SYSTEM_UP)#唤醒休眠
-        print("bt_ota_run!!!:url:{}".format(msg))
+        print("bt_ota_run!!!:{}".format(msg))
         print("bt_ota_run!!!")
         print("bt_ota_run!!!")
         self.bt_ota_flag = 1
@@ -707,8 +707,10 @@ class AI_UART():
                 break
             utime.sleep_ms(10)
         print("ota_start:count:{}".format(count))
+        url = msg[0]
+        bt_size = msg[1]
         headers_T = {"Content-Type":"application/octet-stream"}
-        response = request.get(url = msg,headers=headers_T,timeout = 120,decode = False)
+        response = request.get(url = url,headers=headers_T,timeout = 120,decode = False)
         offset = 0
         checksum = 0
         for i in response.content:
@@ -742,9 +744,13 @@ class AI_UART():
                         break
                     utime.sleep_ms(10)
                 print("ota_data:{} count:{}".format(len(json_str),count))
-                if send_count <=0 or self.read_ack_flag == 1:
+                if  self.read_ack_flag == 1:
                     break
+                if send_count <=0 :
+                    return -1
             offset+=len(i)
+        if offset < bt_size:
+            return -1
         self.read_ack_flag = 0
         json_data = \
         {
@@ -760,7 +766,7 @@ class AI_UART():
                 break
             utime.sleep_ms(1)
         self.bt_ota_flag = 0
-        return 1
+        return 0
 audio_buf = ['chaobingfatis', 'chenggong', 'didianguanji', 'IMEIhao', 'jianquancuowu', 'key_prompt', 'liuliangtishi', 'Low_power_warning', 'R_CHARGE_FULL', 'R_CHARGE_IN', 'R_CHARGE_OUT', 'R_READ_TIME_0', 'R_READ_TIME_1', 'R_READ_TIME_2', 'R_READ_TIME_3', 'R_READ_TIME_4', 'R_READ_TIME_5', 'R_READ_TIME_6', 'R_READ_TIME_7', 'R_READ_TIME_8', 'R_READ_TIME_9', 'R_READ_TIME_A', 'R_READ_TIME_B', 'R_READ_TIME_C', 'R_READ_TIME_D', 'R_READ_TIME_E', 'R_READ_TIME_F', 'R_READ_TIME_G', 'R_READ_TIME_H', 'R_READ_TIME_I', 'R_READ_TIME_J', 'R_READ_TIME_K', 'R_READ_TIME_L', 'R_READ_TIME_M', 'R_READ_TIME_N', 'R_READ_TIME_O', 'R_READ_TIME_P', 'R_READ_TIME_Q', 'R_READ_TIME_R', 'R_READ_TIME_S', 'R_READ_TIME_T', 'R_READ_TIME_U', 'R_READ_TIME_V', 'R_READ_TIME_W', 'R_READ_TIME_X', 'R_READ_TIME_Y', 'R_READ_TIME_Z', 'send_tone', 'shouhou', 'xinhaoruo1', 'zhengzaiguanji']
 class AI_dev(Abstract):
     # AI
@@ -1857,6 +1863,7 @@ class OTA():
         self.downloadFileVoURL1= ""
         self.downloadFileVoURL2= ""
         self.downloadFileVoURLBT=""
+        self.BT_ota_size =0
         self.ota_task_id  = None
     #蓝牙升级升级,返回0,没有升级;返回,1有升级,正在执行升级;返回2,电压不够
     def bt_ota(self,event=None,msg=None):
@@ -1905,6 +1912,7 @@ class OTA():
                                     for fileList in data["data"]["fileList"]:
                                         
                                         if fileList["fileName"] == "update.ufw":
+                                            self.BT_ota_size = fileList["size"]
                                             self.downloadFileVoURLBT = fileList["url"]
                         if data["code"] == 20006:#已是最新版本
                             ret_str = 0
@@ -1977,6 +1985,7 @@ class OTA():
                                         elif fileList["fileName"] == "dfota_1.bin":
                                             self.downloadFileVoURL1 = fileList["url"]
                                         elif fileList["fileName"] == "update.ufw":
+                                            self.BT_ota_size = fileList["size"]
                                             self.downloadFileVoURLBT = fileList["url"]
                         if data["code"] == 20006:#已是最新版本
                             ret_str = 0
@@ -2023,10 +2032,17 @@ class OTA():
             if VC_satrt_flag == 0 or count<=0 or voice_record_satrt_flag == 0:
                 break
             utime.sleep_ms(100)
-        if self.downloadFileVoURLBT != "":
-            EventMesh.publish("bt_ota_run",self.downloadFileVoURLBT) #升级蓝牙
+        if self.downloadFileVoURLBT != "" and self.BT_ota_size != 0:
+            count = 5 #重试5次
+            while 1:
+                count -=1
+                ret = EventMesh.publish("bt_ota_run",[self.downloadFileVoURLBT,self.BT_ota_size ]) #升级蓝牙
+
+                if ret == 0 or count <=0:
+                    break
+                utime.sleep_ms(1000)
             utime.sleep_ms(1000)
-            EventMesh.publish("rest_TB") #复位蓝牙
+            #EventMesh.publish("rest_TB") #复位蓝牙
             utime.sleep_ms(50000)
             if self.downloadFileVoURL1 == "" and self.downloadFileVoURL2 == "": #cat1没有升级的时候,要重启设备
                 Power.powerRestart()
@@ -2780,7 +2796,7 @@ class AI_VC(Abstract):
         print("pwk_key_release")
         EventMesh.publish("publish_AI_btnInfo",{"func":self.Close}) 
         EventMesh.publish("stop_sos_call")
-        #EventMesh.publish("sleep_BT")#休眠蓝牙
+        EventMesh.publish("sleep_BT")#休眠蓝牙
 
     def key_prompt(self):
         EventMesh.publish("audio_montage_play",["key_prompt.mp3"])