优化协议功能
authordxy <1731678236qq.com>
Mon, 18 Aug 2025 10:28:26 +0000 (18:28 +0800)
committerdxy <1731678236qq.com>
Mon, 18 Aug 2025 10:28:26 +0000 (18:28 +0800)
2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_VC.py
2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/voice_record.py

index 70b34ba..679bbfc 100644 (file)
@@ -349,13 +349,25 @@ class AI_UART():
                 ack_flag = 1
             elif jsload_data["event"] == "bt_scan_rest":#扫描列表
                 EventMesh.publish("send_bt_scan_list",jsload_data)
+                ack_flag=1
             elif jsload_data["event"]=="bt_connect_single":
                 EventMesh.publish("save_bt_connect_list",jsload_data)
+                ack_flag=1
             elif jsload_data["event"]=="need_send_bt_connect_list":
                 self.get_bt_connect_timer.stop()
                 self.get_bt_connect_flag = 0
                 EventMesh.publish("save_bt_connect_list",jsload_data)
                 EventMesh.publish("send_bt_connect_list")
+                ack_flag=1
+            
+            elif jsload_data["event"]=="get_ble_switch":
+                EventMesh.publish("send_ble_adv_switch")
+                ack_flag=1
+                pass
+            elif jsload_data["event"]=="get_cat1_imei":
+                EventMesh.publish("send_imei_to_ble")
+                ack_flag=1
+                pass
 
             elif jsload_data["event"] == "ack" :#电源按键按下
                 self.read_ack_flag = 1
@@ -374,18 +386,41 @@ class AI_UART():
         #     //         "switch_bt_state":"0"
         #     //     }
         #     // } #格式
+        ble_state = EventMesh.publish("get_storage_config","switch_bt_state")
+        if ble_state == None:
+            ble_state = 0
+        self.read_ack_flag=0
         json_data = \
         {
             
             "event": "switch_bt_state",
             "data":{
-                "switch_bt_state":msg
+                "switch_bt_state":str(ble_state)
             }   
            
         }
         json_str  =ujson.dumps(json_data)
         print("send_ble_adv_switch{}".format(json_str))
         self.send_data(json_str)
+            
+        
+    def send_reset_cb(self):
+        send_count = 5#最大重发5次,没ack或者返回error重发
+        while 1:
+            send_count-=1
+            self.read_ack_flag = 0
+            EventMesh.publish("send_ble_adv_switch")
+            #utime.sleep_ms(100)
+            count =100
+            while True:
+                count -=1
+                if count <=0 or self.read_ack_flag != 0 :
+                    break
+                utime.sleep_ms(10)
+            # print("ota_data:{} count:{}".format(len(json_str),count))
+            if send_count <=0 or self.read_ack_flag == 1:
+                break
+
         pass
     def send_get_connect_bt_state(self,event,msg):
         json_data = \
@@ -674,7 +709,7 @@ class AI_dev(Abstract):
             self.PIN_MOT=Pin(Pin.GPIO36, Pin.OUT, Pin.PULL_DISABLE, 0)
 
         self.extint_wakeup_cta1_timer = osTimer()
-        # self.extint_wakeup_cta1.enable()
+        self.extint_wakeup_cta1.enable()
         self.extint_AI.enable()
         self.pwk_key_status = 0
         self.pwk_key_timer_count = 0
@@ -833,11 +868,12 @@ class AI_dev(Abstract):
         print("sys_sleep_cb!!!!!!!!!!!!!!!")
         print("sys_sleep_cb!!!!!!!!!!!!!!!")
         self.PIN_wakeup_bt.write(0)
-    def sys_up_cb(self,event=None,msg=None):#休眠前回调
+    def sys_up_cb(self,event=None,msg=None):#唤醒前回调
         print("sys_up_cb!!!!!!!!!!!!!!!")
         print("sys_up_cb!!!!!!!!!!!!!!!")
         print("sys_up_cb!!!!!!!!!!!!!!!")
         self.wakeup_BT()
+        self.PIN_wakeup_bt.write(1)
     
     def wakeup_BT(self,event=None,msg=None):#4G唤醒蓝牙
         
@@ -1122,6 +1158,8 @@ class AI_dev(Abstract):
         if Vbatt<=self.VBATT_tab["10"]:
             return 10
     def audio_montage_play(self,event,msg):
+        self.wakeup_BT()
+        
         self.aud.stopPlayStream()
         self.aud.stopAll()
         str_data='mp3files='
@@ -1136,6 +1174,7 @@ class AI_dev(Abstract):
         self.aud.montage_play('U:/static/audio.bin',1,1,str_data)
         
     def paly_iccid_imei(self,event,msg):
+        self.wakeup_BT()
         str_data = 'mp3files={}.mp3+'.format(audio_buf.index("liuliangtishi"))#流量提示
         imei  = modem.getDevImei()
         iccid = sim.getIccid()
@@ -1155,6 +1194,7 @@ class AI_dev(Abstract):
         self.aud.montage_play('U:/static/audio.bin',1,1,str_data)
     #鉴权出错,播放imei号
     def paly_device_res_error(self,event,msg):
+        self.wakeup_BT()
         str_data = 'mp3files={}.mp3+'.format(audio_buf.index("jianquancuowu"))#AI功能异常,请联系客户查询,设备号为:
         imei  = modem.getDevImei()
         imei = imei.upper()
@@ -3639,14 +3679,9 @@ class AI_VC(Abstract):
                                 EventMesh.publish("set_play_new_voice_state",1)
                                 EventMesh.publish("update_play_new_voice_info")
                                 EventMesh.publish("play_new_voice_list")
-                                
-                                pass
                             pass
                         elif jsload_data["event"] == "audio.convert.failed": #音频转换失败了
-                            if EventMesh.publish("get_play_new_voice_state")== 1:
-                                EventMesh.publish("set_play_new_voice_state",1)
-                                EventMesh.publish("update_play_new_voice_info")
-                                EventMesh.publish("play_new_voice_list")
+                            pass
                                 
                         
                     else:#下发音频数据
index 94aa609..a0f5890 100644 (file)
@@ -668,6 +668,9 @@ class WEB_CMD_ENUM:
     GET_CHAT_CONFIG_R="get_chat_config_R"
     GET_CHAT_CONFIG_S="get_chat_config_S"
 
+    CHAT_CONFIG_R = "chat_config_R"
+    CHAT_CONFIG_S = "chat_config_S"
+
 class IOTSendCmdManager(Abstract):
     #
     def __init__(self):
@@ -1288,8 +1291,23 @@ class SockMangager(Abstract):
 
     def get_play_new_voice_state(self,event,msg):
         return self.play_new_voice_state
+    def _1S_timer_cb(self,*argc):
+        EventMesh.publish("publish_AI_btnInfo",{"func":self._1S_timer_cb_}) 
+
+    def _1S_timer_cb_(self): 
+        #self.iot_web_send_queue.put("ping") 
+        get_VC_satrt_flag = EventMesh.publish("get_VC_satrt_flag")
+        if get_VC_satrt_flag == None:
+            get_VC_satrt_flag = 0
+        if get_VC_satrt_flag == 0:
+            self.play_new_voice_list_timer_cb()
+            self._1S_timer.stop()
 
     def play_new_voice_list(self,event,msg):
+        if len(self.new_voice_list) != 0:
+            self._1S_timer.start(1000, 1, self._1S_timer_cb)
+
+    def play_new_voice_list_timer_cb(self):
         print("play_new_voice_list:{}".format(len(self.new_voice_list)))
         if len(self.new_voice_list) != 0:
             
@@ -1322,7 +1340,6 @@ class SockMangager(Abstract):
         time_tmp = utime.mktime(date_tmp)
         try:
             print("type:{}".format(msg))
-            json_load = ujson.dumps(msg)
             data = msg["data"]
             bt_scan_rest ={
                 "cmd":"bt_scan_rest",
@@ -1490,7 +1507,7 @@ class SockMangager(Abstract):
             
         
         # http://220.160.104.34:30800/ws-bus/test/voice-record/876226211472149?state=1,
-        # http://220.160.104.34:30800/ws-bus/test/876226211472149?testType=alarmList
+        # http://220.160.104.34:30800/ws-bus/test/860132066107046?testType=alarmList
     def hr_report_publish_event(self,data):
         
         HR_DATA = EventMesh.publish("GET_IOT_WEB_SEND_CMD",WEB_CMD_ENUM.HR_S_CMD)
@@ -1567,11 +1584,7 @@ class SockMangager(Abstract):
     def close_websocket_timer(self,event,msg):
         self._1S_timer.stop()
 
-    def _1S_timer_cb(self,*argc):
-        EventMesh.publish("publish_AI_btnInfo",{"func":self._1S_timer_cb_}) 
-
-    def _1S_timer_cb_(self): 
-        self.iot_web_send_queue.put("ping") 
+    
         
     def socket_send_queue_thread(self):
         while True:
@@ -2531,7 +2544,10 @@ class IOTWeb_chat_configProtoCol(ProtoCol):
             speed = data["speed"]
             vadDuration = data["vadDuration"]
             voiceId = data["voiceId"]
-            EventMesh.publish("SET_SPEECH_RATE",speed)
+            if vadDuration !=  None:
+                EventMesh.publish("SET_SPEECH_RATE",speed)
+            if voiceId != None:
+                EventMesh.publish("set_vad_silence",voiceId)
         EventMesh.publish(WEB_CMD_ENUM.CHAT_CONFIG_S)
 #获取AI对话音色配置
 class IOTWeb_get_chat_configProtoCol(ProtoCol):
@@ -2936,9 +2952,9 @@ class IOTWeb_bt_scanProtoCol(ProtoCol):
         date_tmp = utime.localtime()
         time_tmp = utime.mktime(date_tmp)
         s_msg = ""
-        if msg == "0":
+        if msg == "1":
             s_msg = "开始扫描附近设备"
-        elif msg == "1":
+        elif msg == "0":
             s_msg = "停止扫描附近设备"
         bt_scan = {
             "cmd":"dispatch_rest",
@@ -2977,6 +2993,7 @@ class IOTWeb_bt_scanProtoCol(ProtoCol):
             elif data == "0":
                 s_ret = "0"
                 EventMesh.publish("send_ble_scan","0")
+                
             pass
             
         print("recv bt_scan{}".format(msg))
index 368a49f..2b82716 100644 (file)
@@ -195,7 +195,7 @@ class VOICE_RECORD(Abstract): #静默录音
             if self.record_fd != None:
                 utime.sleep_ms(1)
             else:
-                utime.sleep_ms(100)
+                utime.sleep_ms(30)
         self.start_voice_record_flag = 0
         print("Voice_record_thread:exit")
         self.voice_record_thread_id = 0