D15:
authordxy15521469561 <1731678236@qq.com>
Fri, 5 Jan 2024 11:54:16 +0000 (19:54 +0800)
committerdxy15521469561 <1731678236@qq.com>
Fri, 5 Jan 2024 11:54:16 +0000 (19:54 +0800)
需求更改

12 files changed:
2.sdk/Helios_SDK/services/microPython/lib/lvgl/src/hal/lv_hal_indev.h
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m_d15.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_main_menu.py

index 2d96330..1601d9c 100644 (file)
@@ -41,6 +41,10 @@ extern "C" {
 #define LV_INDEV_DEF_X_SLIDING_SPEED 100
 #endif
 
+#if PROJECT_NAME_G5_K5
+#define LV_INDEV_DEF_X_SLIDING_SPEED 100
+#endif
+
 /*Long press time in milliseconds.
  *Time to send `LV_EVENT_LONG_PRESSSED`)*/
 #define LV_INDEV_DEF_LONG_PRESS_TIME      400
index 7284fe9..2ea56ea 100644 (file)
@@ -1785,14 +1785,17 @@ class SCREEN_SHOWProtoCol(ProtoCol):
                 count = 3
             for i in range(count):
                 if i == 0:
-                    screen_school_data = lst[0]
-                    EventMesh.publish("set_schoolname", screen_school_data)#
+                    if len(str(lst[0])) != 0:
+                        screen_school_data = lst[0]
+                        EventMesh.publish("set_schoolname", screen_school_data)#
                 elif i == 1:
-                    screen_class_data = lst[1]
-                    EventMesh.publish("set_classname", screen_class_data)#
+                    if len(str(lst[1])) != 0:
+                        screen_class_data = lst[1]
+                        EventMesh.publish("set_classname", screen_class_data)#
                 else:
-                    screen_fullname_data= lst[2]
-                    EventMesh.publish("set_fullname", screen_fullname_data)#
+                    if len(str(lst[2])) != 0:
+                        screen_fullname_data= lst[2]
+                        EventMesh.publish("set_fullname", screen_fullname_data)#
                 
                 EventMesh.publish("update_screen_show")#更新开屏显示
 
index 2a31927..ef4a72b 100644 (file)
@@ -791,18 +791,27 @@ class WatchFace3():
         pass
         school=EventMesh.publish("get_schoolname")
         if school != None:
-            watchface3_school_label.set_text(str(school))
+            if len(str(school)) != 0:
+                watchface3_school_label.set_text(str(school))
+            else:
+                watchface3_school_label.set_text(' ')
         else:
             watchface3_school_label.set_text(' ')
         class_name = EventMesh.publish("get_classname")
         if class_name != None:
-            watchface3_class_label.set_text(str(class_name))
+            if len(str(class_name)) != 0:
+                watchface3_class_label.set_text(str(class_name))
+            else:
+                watchface3_class_label.set_text(' ')
         else:
             watchface3_class_label.set_text(' ')
 
         fullname = EventMesh.publish("get_fullname")
         if fullname != None:
-            watchface3_fullname_label.set_text(str(fullname))
+            if len(str(fullname)) != 0:
+                watchface3_fullname_label.set_text(str(fullname))
+            else:
+                watchface3_fullname_label.set_text(' ')
         else:
             watchface3_fullname_label.set_text(' ')
 
index e87b731..922a2f8 100644 (file)
@@ -197,7 +197,8 @@ if EventMesh.model == "D10_" :
             EventMesh.subscribe("set_unread_wechat_state", self.set_unread_wechat_state)#设置未读标识
             EventMesh.subscribe("get_unread_wechat_state", self.get_unread_wechat_state)#获取未读标志
             EventMesh.subscribe("get_wechat_time", self.get_wechat_time)#获取微聊时间戳
-            EventMesh.subscribe("get_wechat_state", self.get_wechat_state)#获取微聊时间戳
+            EventMesh.subscribe("get_wechat_state", self.get_wechat_state)#获取微聊状态
+            EventMesh.subscribe("set_wechat_state", self.set_wechat_state)#设置微聊状态
 
 
             EventMesh.subscribe("get_power_on_state", self.get_power_on_state)#获取开机标识
@@ -1142,7 +1143,6 @@ if EventMesh.model == "D10_" :
             elif msg == 2:
                 self.usbState = msg
                 EventMesh.publish("stop_led_timer")#设置参数
-                # EventMesh.publish("set_led_time_arg",[0,1000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.CHARGE_OUT_MODE])#測量成功
                 EventMesh.publish("set_led_time_arg",[1,1,0,led_mode.FLASH_LIGHT_GREEN,4,4,led_mode.CHARGE_OUT_MODE])#測量成功
                 EventMesh.debug_log("charge R_CHARGE_OUT")
                 if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
@@ -1197,11 +1197,11 @@ if EventMesh.model == "D10_" :
             pass
         def app_restart_cb(self,*argc):
             Power.powerRestart()
-
+            
         def open_power_on(self, event, msg): #msg 1 开机 2 关机 3 重启  4恢复出厂设置 5静音关机
             EventMesh.publish("close_timer_all")#
             if msg == 1:
-            
+                EventMesh.publish("close_hr_sop2")#
                 # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
                 # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                 self.pwk_timer1.start(3000,0,self.power_on_audio_cb)
@@ -1228,12 +1228,23 @@ if EventMesh.model == "D10_" :
                 # EventMesh.publish("set_test_data6",[1,step3,step4,step5])
                 EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
                 EventMesh.publish("set_storage_config",["power_state",0])
-                self.pwk_timer1.start(3000,0,self.power_off_audio_cb)
+                # self.pwk_timer1.start(3000,0,self.power_off_audio_cb)
+                EventMesh.publish("close_hr_sop2")#
+                # EventMesh.debug_log("power_off_audio_cb")
+                self.aud.stop()
+                self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
+                # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+                # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
+                self.power_off = 1
+                self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
             elif msg == 3:
                 flag = EventMesh.publish("get_call_state") 
                 if flag != 0:#电话呼叫中
                     self.call_state = 0
                     voiceCall.callEnd()
+                EventMesh.publish("close_hr_sop2")#
+                self.aud.stop()
                 self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
                 # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
                 # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
@@ -1246,6 +1257,7 @@ if EventMesh.model == "D10_" :
                 if flag != 0:#电话呼叫中
                     self.call_state = 0
                     voiceCall.callEnd()
+                EventMesh.publish("close_hr_sop2")#
                 EventMesh.publish("stop_led_timer")#设置参数
                 self.power_off = 1
                 ret = 0
@@ -1280,7 +1292,12 @@ if EventMesh.model == "D10_" :
                 time_tmp = utime.mktime(date_tmp)
                 EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
                 EventMesh.publish("set_storage_config",["power_state",1])
-                self.pwk_timer1.start(3000,0,self.power_off_no_audio_cb)#不需要关机铃声
+                
+                EventMesh.publish("close_hr_sop2")#
+                EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
+                self.power_off = 1
+                self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
+                # self.pwk_timer1.start(3000,0,self.power_off_no_audio_cb)#不需要关机铃声
 
         def fun(self,*argc):
             self.aud.stopPlayStream()
@@ -1300,6 +1317,7 @@ if EventMesh.model == "D10_" :
                 power_state = 0
             # print("power_state",power_state)
             if power_state <= 0:
+                self.aud.stop()
                 self.aud.play(1,1,'U:/static/R_POWER_OFF_1.mp3')
             # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
             # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
@@ -1313,6 +1331,7 @@ if EventMesh.model == "D10_" :
         
         def power_off_audio_cb(self, msg):
             # EventMesh.debug_log("power_off_audio_cb")
+            self.aud.stop()
             self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
             # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
             # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
@@ -1691,10 +1710,12 @@ if EventMesh.model == "D10_" :
                                     pass
                         else:
                             EventMesh.publish("close_timer_all")#
+                            EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_WHITE,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
                             str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_FAILE"))
                             EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                     else:#未插卡
                         EventMesh.publish("close_timer_all")#
+                        EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
                         str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SIM"))
                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
         
@@ -1995,6 +2016,8 @@ if EventMesh.model == "D10_" :
                 self.press_btn = 0
         def get_wechat_state(self, event, msg):
             return self.press_btn
+        def set_wechat_state(self, event, msg):
+            self.press_btn = msg
 
         def send_wechat_record(self, event, msg): #发送录音文件
             if self.press_btn == 1:
@@ -2044,6 +2067,9 @@ if EventMesh.model == "D10_" :
                     #         fd.readinto(buf)
                     #         senddata = [self.countdown_old,buf]
                     #         EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
+            else:
+                self.press_btn = 0
+
 
 
         def play_wechat_last_amr(self, event, msg):#播放微聊最后一条语音文件
@@ -2175,11 +2201,12 @@ if EventMesh.model == "D10_" :
             self.sosKey_timer = osTimer()
             self.sosKey_count = 0
             self.sosKey_press = 0 
+            self.sosKey_long_press = 0
 
             self.wechatKey_press_count = 0
 
             self.timeSeconOld = 0
-            self.wechat_state = 1 #按下录音时的状态
+            self.wechat_state = 0 #按下录音时的状态
 
             
             self.sosKey_press_count = 0
@@ -2244,28 +2271,27 @@ if EventMesh.model == "D10_" :
 
         def pwk_extint_cb(self,args):#侧边按键
             # self.GPIO26_status = self.extint.read_level()
-            self.GPIO26_status = int(args[1])
-            if self.GPIO26_status == 0:
-                self.GPIO26_status = 1
-            else:
-                self.GPIO26_status = 0
-                pass
-            # EventMesh.debug_log('### key20_extint_cb  {} self.GPIO26_status :{}'.format(args,self.GPIO26_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
-            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-            if power_off != None:
-                if power_off == 1:
-                    return
+            
             open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-            if open_power != None:
-                if open_power == 0:
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
                     return
             flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
             fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
             if fall_down != None:
                 if fall_down != 0 or flag == 2:
                     return
+            self.GPIO26_status = int(args[1])
+            if self.GPIO26_status == 0:
+                self.GPIO26_status = 1
+            else:
+                self.GPIO26_status = 0
+                pass
+            self.WeChatKey_status = self.wechatKey.read_level()
             if self.sosKey_status != 0 and self.WeChatKey_status != 0:
                 if self.GPIO26_status == 0:#按下
+                    EventMesh.publish("close_wechat_btn_timer")
                     if self.pwkey_press == 0 :
                         self.aud.stop()  #播放声音 
                         # self.wechatKey_timeout_cb(0)
@@ -2273,10 +2299,13 @@ if EventMesh.model == "D10_" :
                         self.wechatKey_timer.stop()
                         self.pwkey_timer.stop()
                         self.sosKey_timer.stop()
-                        self.wechatKey_press_count = 0
+                        
                         self.sosKey_press_count = 0
                         self.sosKey_press = 0
+                        self.sosKey_long_press = 0
                         self.wechatKey_press = 0
+                        self.wechat_state = 0
+                        self.wechatKey_press_count = 0
 
                         self.pwkey_press = 1
                         self.pwkey_count = 0
@@ -2286,6 +2315,17 @@ if EventMesh.model == "D10_" :
 
         def pwKey_press_cb(self, data):
             '''KEY2:联动屏幕右下角或返回键长按关机'''
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.pwkey_timer.stop()
+                    self.pwkey_count = 0
+                    self.pwkey_press = 0
+                    self.led_state = 0
+                    self.pwKey_press_count=0
+                    return
+            self.GPIO26_status = self.extint.read_level()
             if self.pwkey_press == 1 :
                 self.pwkey_count += 1
                 if self.pwkey_count > 5:
@@ -2381,8 +2421,35 @@ if EventMesh.model == "D10_" :
 
             except Exception as e:
                 usys.print_exception(e)
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.pwkey_timer.stop()
+                    self.pwkey_count = 0
+                    self.pwkey_press = 0
+                    self.led_state = 0
+                    self.pwKey_press_count=0
+                    return
             if self.pwKey_press_count >= 1:
                 self.pwKey_press_count = 0
+
+                # flag = EventMesh.publish("get_call_state") 
+                # if flag != 2:#如果是电话拨出去或者不在打电话中都可以执行
+                #     EventMesh.publish("stop_led_timer")#设置参数
+                #     if flag == 1:#如果是sos电话拨出去
+                #         sos_flag = EventMesh.publish("get_sos_flag")
+                #         if sos_flag == 1:
+                #             EventMesh.publish("set_sos_flag",0)
+                #             EventMesh.publish("set_sos_num",0)
+                #             EventMesh.publish("set_hangup_mode",0)
+                #     EventMesh.publish("close_hr_sop2")#
+                #     flag = EventMesh.publish("get_call_state") 
+                #     # if flag == 0 or flag == 2:#在拨出去或者通话中就不播报入网成功的语音
+                #     if flag != 1:#在拨出去或者通话中就不播报入网成功的语音
+                #         EventMesh.publish("set_sim_mode")#
+                #     EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd()
+                
                 # EventMesh.debug_log("pwKey_timeout_cb:self.pwKey_press_count >= 1")
                 flag = EventMesh.publish("get_call_state") 
                 if flag != 2:
@@ -2404,12 +2471,9 @@ if EventMesh.model == "D10_" :
 
         def sosKey_extint_cb(self,args):
             power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-            if power_off != None:
-                if power_off == 1:
-                    return
             open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-            if open_power != None:
-                if open_power == 0:
+            if power_off != None and open_power != None:
+                if power_off == 1 or open_power == 0:
                     return
             # self.sosKey_status = self.sosKey.read_level()
             self.sosKey_status = int(args[1])
@@ -2418,27 +2482,44 @@ if EventMesh.model == "D10_" :
             else:
                 self.sosKey_status = 0
                 pass
-            # EventMesh.debug_log('### key22_extint_cb  {} self.GPIO22_status:{}'.format(args,self.sosKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            # wechat_state = EventMesh.publish("get_wechat_state")
+            # EventMesh.debug_log('### key22_extint_cb  {} {} self.GPIO22_status:{} {} {}'.format(wechat_state,args,self.WeChatKey_status,self.GPIO26_status,self.sosKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
             if self.WeChatKey_status != 0 and self.GPIO26_status != 0:
                 if self.sosKey_status == 0:#按下
                     EventMesh.publish("close_falldown_alarm_event")#sos短按事件
+                    EventMesh.publish("close_wechat_btn_timer")
                     if self.sosKey_press == 0 :
                         self.led_state = 0
                         self.wechatKey_timer.stop()
                         self.pwkey_timer.stop()
                         self.sosKey_timer.stop()
                         self.wechatKey_press_count = 0
+                        self.wechat_state = 0
+                        self.wechatKey_count = 0
                         self.pwKey_press_count = 0
-                        self.sosKey_press = 1
+                        
                         self.pwkey_press = 0
                         self.wechatKey_press = 0
+                        
                         self.sosKey_long_press = 0
                         self.sosKey_count = 0
+                        self.sosKey_press = 1
                         self.sosKey_timer.start(100, 1, self.publish_soskey_btn_event_cb)
             # EventMesh.debug_log("key22_extint_cb:self.key22_timer.start!!!!\n")
 
         def sosKey_press_cb(self, data):
             '''KEY2:联动屏幕右下角或返回键长按关机'''
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.sosKey_timer.stop()
+                    self.sosKey_count = 0
+                    self.sosKey_press = 0
+                    self.sosKey_long_press = 0
+                    self.sosKey_press_count = 0
+                    return
+            self.sosKey_status = self.sosKey.read_level()
             if self.sosKey_press == 1 :
                 # if self.sosKey_count <= 2:
                     # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
@@ -2447,17 +2528,21 @@ if EventMesh.model == "D10_" :
                     #     EventMesh.publish("set_led_time_arg",[1000,200,1,led_mode.FLASH_LIGHT_RED,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
                 self.sosKey_count += 1
                 if self.sosKey_count >= 10*3: #长按3s sos拨号
-                    self.sosKey_count = 0
-                    self.sosKey_long_press = 1
-                    self.sosKey_press = 0
-                    self.sosKey_timer.stop()
-                    flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
-                    fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
-                    if fall_down != None:
-                        if fall_down != 0 or flag == 2:
-                            return
-                    EventMesh.publish_async("dial_sos_phone")#拨打sos号码
-                    return
+                    if self.sosKey_long_press == 0:
+                        self.sosKey_long_press = 1
+                        flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+                        fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+                        if fall_down != None:
+                            if fall_down != 0 or flag == 2:
+                                return
+                        EventMesh.publish_async("dial_sos_phone")#拨打sos号码
+                        return
+                    if self.sosKey_status == 1:#松开
+                        self.sosKey_count = 0
+                        self.sosKey_long_press = 0
+                        self.sosKey_press = 0
+                        self.sosKey_timer.stop()
+                        return
 
                 # EventMesh.debug_log("self.sosKey_count {}",self.sosKey_count)
                 if self.sosKey_status == 1:#松开
@@ -2465,11 +2550,22 @@ if EventMesh.model == "D10_" :
                         self.sosKey_timer.stop()
                         self.sosKey_count = 0
                         self.sosKey_press = 0
+                        self.sosKey_long_press = 0
                         self.sosKey_press_count+=1
                         self.sosKey_timer.start(500, 0, self.publish_sosKey_timeout_cb_do)#松手超时1s判断
         def publish_sosKey_timeout_cb_do(self, *args, **kwargs):
             EventMesh.publish("publish_message_event_btnInfo",{"func":self.sosKey_timeout_cb,"data":0})  
         def sosKey_timeout_cb(self, data):#
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.sosKey_timer.stop()
+                    self.sosKey_count = 0
+                    self.sosKey_press = 0
+                    self.sosKey_long_press = 0
+                    self.sosKey_press_count = 0
+                    return
             # EventMesh.debug_log("sosKey_press_count!!!!!!!!!!!!!! ",self.sosKey_press_count)
             flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
             fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
@@ -2530,13 +2626,10 @@ if EventMesh.model == "D10_" :
 
 
         def wechatKey_extint_cb(self,args):
-            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-            if power_off != None:
-                if power_off != 0:
-                    return
             open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-            if open_power != None:
-                if open_power == 0:
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
                     return
             fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
             if fall_down != None:
@@ -2549,7 +2642,8 @@ if EventMesh.model == "D10_" :
             else:
                 self.WeChatKey_status = 0
                 pass
-            # EventMesh.debug_log('### wechatKey_extint_cb  {} self.WeChatKey_status:{}'.format(args,self.WeChatKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            
+            # EventMesh.debug_log('### wechatKey_extint_cb  {} {} self.WeChatKey_status:{} {} {}'.format(wechat_state,args,self.sosKey_status,self.GPIO26_status,self.WeChatKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
             if self.sosKey_status != 0 and self.GPIO26_status != 0:
                 if self.WeChatKey_status == 0:#按下
                     if self.wechatKey_press == 0:
@@ -2559,14 +2653,19 @@ if EventMesh.model == "D10_" :
                         self.pwkey_timer.stop()
                         self.sosKey_timer.stop()
                         self.sosKey_press_count = 0
+                        self.sosKey_long_press = 0
                         self.pwKey_press_count = 0
                         self.sosKey_press = 0
                         self.pwkey_press = 0
                         self.wechatKey_press = 1
                         self.led_state = 0
                         self.wechatKey_count = 0
-                        self.wechat_state = 1
+                        self.wechat_state = 0
                         self.wechatKey_timer.start(100, 1, self.publish_wechat_btn_event_cb)
+                else:
+                    # EventMesh.debug_log('### wechatKey_extint_cb end')
+                    EventMesh.publish("close_wechat_btn_timer")
+
 
         def close_wechat_btn_timer(self,event,*argc):
             tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
@@ -2579,7 +2678,9 @@ if EventMesh.model == "D10_" :
                     self.wechatKey_timer.stop()
                     self.wechatKey_count = 0
                     self.wechatKey_press = 0
+                    self.wechat_state = 0
                     self.wechatKey_press_count=0
+                    
                     date_tmp = utime.localtime()
                     time_tmp = utime.mktime(date_tmp)
                     time_sec = tmp[1]
@@ -2593,6 +2694,18 @@ if EventMesh.model == "D10_" :
         
 
         def wechatKey_press_cb(self,data):
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.wechatKey_timer.stop()
+                    self.wechatKey_count = 0
+                    self.wechatKey_press = 0
+                    self.wechat_state = 0
+                    self.wechatKey_press_count=0
+                    return
+            self.WeChatKey_status = self.wechatKey.read_level()
+            # print("100ms self.WeChatKey_status",self.WeChatKey_status)
             wechat_time = 0
             tmp = None
             time_sec = 0
@@ -2603,16 +2716,16 @@ if EventMesh.model == "D10_" :
             if self.wechatKey_press == 1 :#是否按下
                 tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
                 self.wechatKey_count += 1
-                if self.wechatKey_count >= 10: #长按1s进入微聊录音
+                if self.wechatKey_count >= 15: #长按1s进入微聊录音
                     flag = EventMesh.publish("get_call_state") 
                     fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
                     if flag != None:
                         if flag == 0 and fall_down == 0:
                             if self.WeChatKey_status == 0:
                                 if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
-                                    if self.wechat_state == 1:#按下超过s开始录音
+                                    if self.wechat_state == 0:#按下超过s开始录音
                                         EventMesh.publish("start_wechat_record")#开始录音
-                                        self.wechat_state = 0
+                                        self.wechat_state = 1
                                 else:
                                     self.wechat_state = 0
                                     self.wechatKey_timer.stop()
@@ -2623,7 +2736,7 @@ if EventMesh.model == "D10_" :
                                     return
 
                             if self.WeChatKey_status == 0:#未松手超过15s啧停止录音
-                                if self.wechat_state == 0:
+                                if self.wechat_state == 1:
                                     if tmp != None:
                                         if tmp[0] != 0:
                                             time_sec = tmp[1]
@@ -2636,11 +2749,12 @@ if EventMesh.model == "D10_" :
                                                 self.wechatKey_timer.stop()
                                                 self.wechatKey_count = 0
                                                 self.wechatKey_press = 0
+                                                self.wechat_state = 0
                                                 self.wechatKey_press_count=0
                                                 return
                             else:
                                 if self.WeChatKey_status == 1:
-                                    if self.wechat_state == 0:#如果按下时长超过1s且小于长按的时间也认为是录微聊
+                                    if self.wechat_state == 1:#如果按下时长超过1s且小于长按的时间也认为是录微聊
                                         if tmp != None:
                                             if tmp[0] != 0:
                                                 time_sec = tmp[1]
@@ -2654,19 +2768,23 @@ if EventMesh.model == "D10_" :
 
                                         self.wechatKey_count = 0
                                         self.wechatKey_press = 0
+                                        self.wechat_state = 0
                                         self.wechatKey_press_count=0
                                         return
                         else:
                             self.wechatKey_timer.stop()
                             self.wechatKey_count = 0
+                            self.wechat_state = 0
                             self.wechatKey_press = 0
                             self.wechatKey_press_count=0
+                            return
                 if self.WeChatKey_status == 1:#松开
                     if self.wechatKey_count >= 1: #防抖100ms
                         # EventMesh.debug_log("WeChat time!!!!!!!!!!!!!!")
                         self.wechatKey_timer.stop()
                         self.wechatKey_count = 0
                         self.wechatKey_press = 0
+                        self.wechat_state = 0
                         self.wechatKey_press_count+=1
                         self.wechatKey_timer.start(500, 0, self.publish_wechatKey_btn_event_cb)#松手超时1s判断
 
@@ -2674,6 +2792,16 @@ if EventMesh.model == "D10_" :
             EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_timeout_cb,"data":0})  
 
         def wechatKey_timeout_cb(self,data):#微聊键
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.wechatKey_timer.stop()
+                    self.wechatKey_count = 0
+                    self.wechatKey_press = 0
+                    self.wechat_state = 0
+                    self.wechatKey_press_count=0
+                    return
             flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
             fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
             if self.wechatKey_press_count > 1:#
index 8790518..cc5abad 100644 (file)
@@ -1204,7 +1204,7 @@ if EventMesh.model == "D15_" :
         def open_power_on(self, event, msg): #msg 1 开机 2 关机 3 重启  4恢复出厂设置 5静音关机
             EventMesh.publish("close_timer_all")#
             if msg == 1:
-            
+                EventMesh.publish("close_hr_sop2")#
                 # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
                 # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                 self.pwk_timer1.start(3000,0,self.power_on_audio_cb)
@@ -1231,12 +1231,23 @@ if EventMesh.model == "D15_" :
                 # EventMesh.publish("set_test_data6",[1,step3,step4,step5])
                 EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
                 EventMesh.publish("set_storage_config",["power_state",0])
-                self.pwk_timer1.start(3000,0,self.power_off_audio_cb)
+                # self.pwk_timer1.start(3000,0,self.power_off_audio_cb)
+                EventMesh.publish("close_hr_sop2")#
+                # EventMesh.debug_log("power_off_audio_cb")
+                self.aud.stop()
+                self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
+                # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+                # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
+                self.power_off = 1
+                self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
             elif msg == 3:
                 flag = EventMesh.publish("get_call_state") 
                 if flag != 0:#电话呼叫中
                     self.call_state = 0
                     voiceCall.callEnd()
+                EventMesh.publish("close_hr_sop2")#
+                self.aud.stop()
                 self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
                 # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
                 # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
@@ -1249,6 +1260,7 @@ if EventMesh.model == "D15_" :
                 if flag != 0:#电话呼叫中
                     self.call_state = 0
                     voiceCall.callEnd()
+                EventMesh.publish("close_hr_sop2")#
                 EventMesh.publish("stop_led_timer")#设置参数
                 self.power_off = 1
                 ret = 0
@@ -1283,7 +1295,14 @@ if EventMesh.model == "D15_" :
                 time_tmp = utime.mktime(date_tmp)
                 EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
                 EventMesh.publish("set_storage_config",["power_state",1])
-                self.pwk_timer1.start(3000,0,self.power_off_no_audio_cb)#不需要关机铃声
+                
+                EventMesh.publish("close_hr_sop2")#
+                EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
+                self.power_off = 1
+                self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
+                # self.pwk_timer1.start(3000,0,self.power_off_no_audio_cb)#不需要关机铃声
+
+
 
         def fun(self,*argc):
             self.aud.stopPlayStream()
@@ -1303,6 +1322,7 @@ if EventMesh.model == "D15_" :
                 power_state = 0
             # print("power_state",power_state)
             if power_state <= 0:
+                self.aud.stop()
                 self.aud.play(1,1,'U:/static/R_POWER_OFF_1.mp3')
             # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
             # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
@@ -1316,6 +1336,7 @@ if EventMesh.model == "D15_" :
         
         def power_off_audio_cb(self, msg):
             # EventMesh.debug_log("power_off_audio_cb")
+            self.aud.stop()
             self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
             # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
             # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
@@ -1726,10 +1747,12 @@ if EventMesh.model == "D15_" :
                                     pass
                         else:
                             EventMesh.publish("close_timer_all")#
+                            EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_WHITE,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
                             str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_FAILE"))
                             EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                     else:#未插卡
                         EventMesh.publish("close_timer_all")#
+                        EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
                         str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SIM"))
                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
         
@@ -2079,7 +2102,8 @@ if EventMesh.model == "D15_" :
                     #         fd.readinto(buf)
                     #         senddata = [self.countdown_old,buf]
                     #         EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
-
+            else:
+                self.press_btn = 0
 
         def play_wechat_last_amr(self, event, msg):#播放微聊最后一条语音文件
             flag = EventMesh.publish("get_call_state") 
@@ -2196,7 +2220,7 @@ if EventMesh.model == "D15_" :
             self.__tp = tp
             self.pwk_press = 0
             self.pwk_count = 0
-            self.GPIO26_status = 1#默认是低电平
+
             self.powerKey_status = 0
             self.sosKey = 0
             self.wechatKey = 0
@@ -2215,14 +2239,13 @@ if EventMesh.model == "D15_" :
             self.wechatKey_press_count = 0
 
             self.timeSeconOld = 0
-            self.wechat_state = 1 #按下录音时的状态
+            self.wechat_state = 0 #按下录音时的状态
 
             
             self.sosKey_press_count = 0
 
 
-            self.pwk_key = 0
-            self.GPIO26_status = 1
+           
 
             self.extint_22 = 0
             self.GPIO22_status = 1
@@ -2248,6 +2271,8 @@ if EventMesh.model == "D15_" :
             
 
             self.pwkey_timer = osTimer()
+            self.pwk_key = 0
+            self.GPIO26_status = 1
             self.pwKey_press_count = 0
             self.pwkey_count = 0
             self.pwkey_press = 0
@@ -2311,26 +2336,15 @@ if EventMesh.model == "D15_" :
             self.extint_17 = ExtInt(ExtInt.GPIO17,ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.key17_extint_cb)
             self.extint_17.enable()
 
-            # self.sosKey = ExtInt(ExtInt.GPIO22, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.sosKey_extint_cb)
-            # self.sosKey.enable()
-
             self.wechatKey = ExtInt(ExtInt.GPIO22, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.wechatKey_extint_cb)
             self.wechatKey.enable()
 
-            # key19 = Pin(Pin.GPIO19, Pin.OUT, Pin.PULL_PU, 0)
-        # def key22_extint_cb(self,args):#SOS键
-        #     self.GPIO22_status = self.extint_22.read_level()
-        #     EventMesh.debug_log('### key22_extint_cb  {} self.GPIO22_status :{}'.format(args,self.GPIO22_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
 
-        def key17_extint_cb(self,args):#call 2
-            
-            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-            if power_off != None:
-                if power_off == 1:
-                    return
+        def key17_extint_cb(self,args):#call 1
             open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-            if open_power != None:
-                if open_power == 0:
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
                     return
             fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
             flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
@@ -2338,24 +2352,25 @@ if EventMesh.model == "D15_" :
                 if fall_down != 0:
                     return
             
-            self.KeyCall2_status = int(args[1]) 
+            self.KeyCall1_status = int(args[1]) 
             # EventMesh.txt_log('self.KeyCall2_level :{}'.format(args,self.KeyCall2_status,GPIO17_status))
-            if self.KeyCall2_status == 0:
-                self.KeyCall2_status = 1
+            if self.KeyCall1_status == 0:
+                self.KeyCall1_status = 1
             else:
-                self.KeyCall2_status = 0
+                self.KeyCall1_status = 0
                 pass
             self.WeChatKey_status = self.wechatKey.read_level()
             self.GPIO26_status = self.pwk_key26.read_level()
-            self.KeyCall1_status = self.extint_19.read_level()
+            self.KeyCall2_status = self.extint_19.read_level()
             self.sosKey_status = self.sosKey.read_level()
-            EventMesh.debug_log('key17_extint_cb1',args,self.KeyCall2_status,self.Keycall2_press,self.Keycall2_long_press)
+            # EventMesh.debug_log('key17_extint_cb1',args,self.KeyCall2_status,self.Keycall2_press,self.Keycall2_long_press)
             # EventMesh.debug_log('key17_extint_cb2',self.Keycall2_press) # args[0]:gpio号 args[1]:上升沿或下降沿
 
             # EventMesh.debug_log('key17_extint_cb',args,self.KeyCall2_status,self.WeChatKey_status,self.GPIO26_status,self.KeyCall1_status,self.sosKey_status) # args[0]:gpio号 args[1]:上升沿或下降沿
-            if self.WeChatKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall1_status != 0 and self.sosKey_status != 0:
-                if self.KeyCall2_status == 0:#按下
-                    if self.Keycall2_press == 0 :
+            if self.WeChatKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall2_status != 0 and self.sosKey_status != 0:
+                if self.KeyCall1_status == 0:#按下
+                    EventMesh.publish("close_wechat_btn_timer")
+                    if self.Keycall1_press == 0 :
                         self.wechatKey_timer.stop()
                         self.pwkey_timer.stop()
                         self.sosKey_timer.stop()
@@ -2375,24 +2390,36 @@ if EventMesh.model == "D15_" :
                         self.wechatKey_count = 0
                         self.wechatKey_press = 0
                         self.wechatKey_press_count=0#微聊键
-
-                        self.Keycall1_count = 0
-                        self.Keycall1_press = 0
-                        self.Keycall1_press_count = 0#call 1键
-                        self.Keycall1_long_press = 0
+                        self.wechat_state = 0
 
                         self.Keycall2_count = 0
-                        self.Keycall2_press = 1
+                        self.Keycall2_press = 0
+                        self.Keycall2_press_count = 0#call 2键
                         self.Keycall2_long_press = 0
-                        self.Keycall2_timer.start(200, 1, self.publish_call2key_btn_event_cb)
 
-        def call2Key_press_cb(self, data):
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 1
+                        self.Keycall1_long_press = 0
+                        self.Keycall1_timer.start(100, 1, self.publish_call1key_btn_event_cb)
+
+        def call1Key_press_cb(self, data):
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.Keycall1_timer.stop()
+                    self.Keycall1_count = 0
+                    self.Keycall1_press = 0
+                    self.Keycall1_press_count+=1
+                    self.Keycall1_long_press = 0
+                    return
             '''KEY2:联动屏幕右下角或返回键长按关机'''
-            if self.Keycall2_press == 1 :
-                self.Keycall2_count += 1
-                if self.Keycall2_count >= 10*3: #长按3s 
-                    if self.Keycall2_long_press == 0:
-                        self.Keycall2_long_press = 1
+            self.KeyCall1_status = self.extint_17.read_level()
+            if self.Keycall1_press == 1 :
+                self.Keycall1_count += 1
+                if self.Keycall1_count >= 10*3: #长按3s 
+                    if self.Keycall1_long_press == 0:
+                        self.Keycall1_long_press = 1
                         flag = EventMesh.publish("get_call_state")#获取通话状态
                         fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
                         if fall_down != None:
@@ -2402,38 +2429,48 @@ if EventMesh.model == "D15_" :
                         EventMesh.publish("call_phonebook_num",1)
                         return
 
-                    if self.KeyCall2_status == 1:
-                        self.Keycall2_count = 0
-                        self.Keycall2_press = 0
-                        self.Keycall2_press_count = 0
-                        self.Keycall2_long_press = 0
-                        self.Keycall2_timer.stop()
+                    if self.KeyCall1_status == 1:
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 0
+                        self.Keycall1_press_count = 0
+                        self.Keycall1_long_press = 0
+                        self.Keycall1_timer.stop()
                         return
                     
 
-                if self.KeyCall2_status == 1:#松开
-                    if self.Keycall2_count >= 1: #防抖100ms
-                        self.Keycall2_timer.stop()
-                        self.Keycall2_count = 0
-                        self.Keycall2_press = 0
-                        self.Keycall2_press_count+=1
-                        self.Keycall2_timer.start(500, 0, self.publish_call2Key_timeout_cb_do)#松手超时1s判断
+                if self.KeyCall1_status == 1:#松开
+                    if self.Keycall1_count >= 1: #防抖100ms
+                        self.Keycall1_timer.stop()
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 0
+                        self.Keycall1_press_count+=1
+                        self.Keycall1_timer.start(500, 0, self.publish_call1Key_timeout_cb_do)#松手超时1s判断
                     
 
-        def publish_call2Key_timeout_cb_do(self, *args, **kwargs):
-            EventMesh.publish("publish_message_event_btnInfo",{"func":self.call2Key_timeout_cb,"data":0}) 
+        def publish_call1Key_timeout_cb_do(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.call1Key_timeout_cb,"data":0}) 
         
-        def call2Key_timeout_cb(self, data):#
+        def call1Key_timeout_cb(self, data):#
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.Keycall1_timer.stop()
+                    self.Keycall1_count = 0
+                    self.Keycall1_press = 0
+                    self.Keycall1_press_count+=1
+                    self.Keycall1_long_press = 0
+                    return
             flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
             fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
             # print("call2Key_timeout_cb",self.Keycall2_press_count,flag)
-            if self.Keycall2_press_count > 1:#
+            if self.Keycall1_press_count > 1:#
                 if fall_down != None:
                     if fall_down != 0 or flag != 0:#在打电话或者跌倒报警提醒中不允许按键触发
-                        self.Keycall2_press_count = 0
+                        self.Keycall1_press_count = 0
                         return
-            if self.Keycall2_press_count == 3:#心率血压测试
-                self.Keycall2_press_count = 0
+            if self.Keycall1_press_count == 3:#心率血压测试
+                self.Keycall1_press_count = 0
                 call_state = EventMesh.publish("get_call_state")
                 battery = EventMesh.publish("screen_get_battery")
                 if call_state == None:
@@ -2443,8 +2480,8 @@ if EventMesh.model == "D15_" :
                         if battery[0] != "1":#在充电得时候
                             EventMesh.publish("stop_led_timer")#设置参数
                             EventMesh.publish("set_manual_measure_mode",1)#
-            elif self.Keycall2_press_count == 1:#
-                self.Keycall2_press_count = 0
+            elif self.Keycall1_press_count == 1:#
+                self.Keycall1_press_count = 0
                 EventMesh.publish("stop_led_timer")#设置参数
                 call_state = EventMesh.publish("get_call_state") 
                 if call_state == 2:#电话拨进需要接听
@@ -2453,39 +2490,37 @@ if EventMesh.model == "D15_" :
                 EventMesh.publish("play_cur_step_event")##播放当前步数
             
 
-            self.Keycall2_press_count = 0
+            self.Keycall1_press_count = 0
 
 
-        def key19_extint_cb(self,args):#call 1
+        def key19_extint_cb(self,args):#call 2
             
             power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-            if power_off != None:
-                if power_off == 1:
-                    return
             open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-            if open_power != None:
-                if open_power == 0:
+            if power_off != None and open_power != None:
+                if power_off == 1 or open_power == 0:
                     return
             fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
             flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
             if fall_down != None:
                 if fall_down != 0:
                     return
-            self.KeyCall1_status = int(args[1])
-            if self.KeyCall1_status == 0:
-                self.KeyCall1_status = 1
+            self.KeyCall2_status = int(args[1])
+            if self.KeyCall2_status == 0:
+                self.KeyCall2_status = 1
             else:
-                self.KeyCall1_status = 0
+                self.KeyCall2_status = 0
                 pass
             self.WeChatKey_status = self.wechatKey.read_level()
             self.GPIO26_status = self.pwk_key26.read_level()
-            self.KeyCall2_status = self.extint_17.read_level()
+            self.KeyCall1_status = self.extint_17.read_level()
             self.sosKey_status = self.sosKey.read_level()
             # EventMesh.debug_log('key19_extint_cb ',args,self.KeyCall1_status,self.GPIO26_status,self.WeChatKey_status,self.sosKey_status,self.KeyCall2_status,self.GPIO26_status) # args[0]:gpio号 args[1]:上升沿或下降沿
             # EventMesh.debug_log('self.KeyCall1_status :{}',args,self.KeyCall1_status) # args[0]:gpio号 args[1]:上升沿或下降沿
-            if self.WeChatKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall2_status != 0 and self.sosKey_status != 0:
-                if self.KeyCall1_status == 0:#按下
-                    if self.Keycall1_press == 0 :
+            if self.WeChatKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall1_status != 0 and self.sosKey_status != 0:
+                if self.KeyCall2_status == 0:#按下
+                    EventMesh.publish("close_wechat_btn_timer")
+                    if self.Keycall2_press == 0 :
                         self.wechatKey_timer.stop()
                         self.pwkey_timer.stop()
                         self.sosKey_timer.stop()
@@ -2505,24 +2540,37 @@ if EventMesh.model == "D15_" :
                         self.wechatKey_count = 0
                         self.wechatKey_press = 0
                         self.wechatKey_press_count=0
+                        self.wechat_state = 0
             
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 0 
+                        self.Keycall1_press_count = 0
+                        self.Keycall1_long_press = 0
+
                         self.Keycall2_count = 0
-                        self.Keycall2_press = 0 
-                        self.Keycall2_press_count = 0
+                        self.Keycall2_press = 1
                         self.Keycall2_long_press = 0
+                        self.Keycall2_timer.start(100, 1, self.publish_call2key_btn_event_cb)
 
-                        self.Keycall1_count = 0
-                        self.Keycall1_press = 1
-                        self.Keycall1_long_press = 0
-                        self.Keycall1_timer.start(100, 1, self.publish_call1key_btn_event_cb)
+        def call2Key_press_cb(self, data):
 
-        def call1Key_press_cb(self, data):
             '''KEY2:联动屏幕右下角或返回键长按关机'''
-            if self.Keycall1_press == 1 :
-                self.Keycall1_count += 1
-                if self.Keycall1_count >= 10*3: #长按3s 
-                    if self.Keycall1_long_press == 0:
-                        self.Keycall1_long_press = 1
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.Keycall2_timer.stop()
+                    self.Keycall2_count = 0
+                    self.Keycall2_press = 0
+                    self.Keycall2_press_count=0
+                    self.Keycall2_long_press = 0
+                    return
+            self.KeyCall2_status = self.extint_19.read_level()
+            if self.Keycall2_press == 1 :
+                self.Keycall2_count += 1
+                if self.Keycall2_count >= 10*3: #长按3s 
+                    if self.Keycall2_long_press == 0:
+                        self.Keycall2_long_press = 1
                         flag = EventMesh.publish("get_call_state")#获取通话状态
                         fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
                         if fall_down != None:
@@ -2531,38 +2579,47 @@ if EventMesh.model == "D15_" :
                         EventMesh.publish("stop_led_timer")#设置参数
                         EventMesh.publish("call_phonebook_num",2)
                         return
-                    if self.KeyCall1_status == 1:#松开
-                        self.Keycall1_count = 0
-                        self.Keycall1_press = 0
-                        self.Keycall1_press_count = 0
-                        self.Keycall1_long_press = 0
-                        self.Keycall1_timer.stop()
+                    if self.KeyCall2_status == 1:#松开
+                        self.Keycall2_count = 0
+                        self.Keycall2_press = 0
+                        self.Keycall2_press_count = 0
+                        self.Keycall2_long_press = 0
+                        self.Keycall2_timer.stop()
                         return
                     
 
-                if self.KeyCall1_status == 1:#松开
-                    if self.Keycall1_count >= 1: #防抖100ms
-                        self.Keycall1_timer.stop()
-                        self.Keycall1_count = 0
-                        self.Keycall1_press = 0
-                        self.Keycall1_press_count+=1
-                        self.Keycall1_timer.start(500, 0, self.publish_call1Key_timeout_cb_do)#松手超时1s判断
+                if self.KeyCall2_status == 1:#松开
+                    if self.Keycall2_count >= 1: #防抖100ms
+                        self.Keycall2_timer.stop()
+                        self.Keycall2_count = 0
+                        self.Keycall2_press = 0
+                        self.Keycall2_press_count+=1
+                        self.Keycall2_timer.start(500, 0, self.publish_call2Key_timeout_cb_do)#松手超时1s判断
 
-        def publish_call1Key_timeout_cb_do(self, *args, **kwargs):
-            EventMesh.publish("publish_message_event_btnInfo",{"func":self.call1Key_timeout_cb,"data":0}) 
+        def publish_call2Key_timeout_cb_do(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.call2Key_timeout_cb,"data":0}) 
         
-        def call1Key_timeout_cb(self, data):#
+        def call2Key_timeout_cb(self, data):#
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.Keycall2_timer.stop()
+                    self.Keycall2_count = 0
+                    self.Keycall2_press = 0
+                    self.Keycall2_press_count=0
+                    return
             flag = EventMesh.publish("get_call_state")#获取通话状态 
             fall_down = EventMesh.publish("get_fall_down_state")#获取跌倒报警标识
             # print("call1Key_timeout_cb",self.Keycall1_press_count,flag)
-            if self.Keycall1_press_count > 1:#
+            if self.Keycall2_press_count > 1:#
                 if fall_down != None:
                     if fall_down != 0 or flag != 0:#在打电话或者跌倒报警提醒中不允许按键触发
-                        self.Keycall1_press_count = 0
+                        self.Keycall2_press_count = 0
                         return
             
-            if self.Keycall1_press_count == 3:#测试体温
-                self.Keycall1_press_count = 0
+            if self.Keycall2_press_count == 3:#测试体温
+                self.Keycall2_press_count = 0
                 call_state = EventMesh.publish("get_call_state")
                 battery = EventMesh.publish("screen_get_battery")
                 if call_state == None:
@@ -2572,8 +2629,8 @@ if EventMesh.model == "D15_" :
                         if battery[0] != "1":#在充电得时候
                             EventMesh.publish("stop_led_timer")#设置参数
                             EventMesh.publish("set_manual_measure_mode",3)#测量体温
-            elif self.Keycall1_press_count == 1:#
-                self.Keycall1_press_count = 0
+            elif self.Keycall2_press_count == 1:#
+                self.Keycall2_press_count = 0
                 EventMesh.publish("stop_led_timer")#设置参数
                 call_state = EventMesh.publish("get_call_state") 
                 if call_state == 2:#电话拨进需要接听
@@ -2581,20 +2638,16 @@ if EventMesh.model == "D15_" :
                     return
                 EventMesh.publish("play_battery_level_value")#播放当前电量
                 
-            self.Keycall1_press_count = 0
+            self.Keycall2_press_count = 0
 
 
 
         def pwk_extint_cb(self,args):#侧边按键
             # self.GPIO26_status = self.pwk_key26.read_level()
-        
-            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-            if power_off != None:
-                if power_off == 1:
-                    return
             open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-            if open_power != None:
-                if open_power == 0:
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
                     return
             flag = EventMesh.publish("get_call_state")#获取通话状态
             fall_down = EventMesh.publish("get_fall_down_state")#获取跌倒报警标识
@@ -2615,8 +2668,8 @@ if EventMesh.model == "D15_" :
             # self.GPIO26_status = ~args[1]
             # EventMesh.debug_log('### GPIO26_status  {} self.GPIO26_status :{}'.format(args,self.GPIO26_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
             if self.WeChatKey_status != 0 and self.KeyCall1_status != 0 and self.sosKey_status != 0 and self.KeyCall2_status != 0:
-            # if self.sosKey_status != 0 and self.WeChatKey_status != 0:
                 if self.GPIO26_status == 0:#按下
+                    EventMesh.publish("close_wechat_btn_timer")
                     if self.pwkey_press == 0 :
                         self.aud.stop()  #播放声音 
                         self.wechatKey_timer.stop()
@@ -2633,10 +2686,12 @@ if EventMesh.model == "D15_" :
                         self.wechatKey_count = 0
                         self.wechatKey_press = 0
                         self.wechatKey_press_count=0
+                        self.wechat_state = 0
                        
 
                         self.pwkey_press = 1
                         self.pwkey_count = 0
+                        self.led_state = 0
 
                         self.Keycall1_count = 0
                         self.Keycall1_press = 0 
@@ -2655,7 +2710,19 @@ if EventMesh.model == "D15_" :
 
 
         def pwKey_press_cb(self, data):
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.pwkey_timer.stop()
+                    self.pwkey_count = 0
+                    self.pwkey_press = 0
+                    self.led_state = 0
+                    self.pwKey_press_count=0
+                    return
             '''KEY2:联动屏幕右下角或返回键长按关机'''
+            self.GPIO26_status = self.pwk_key26.read_level()
+
             if self.pwkey_press == 1 :
                 self.pwkey_count += 1
                 if self.pwkey_count > 5:
@@ -2751,11 +2818,37 @@ if EventMesh.model == "D15_" :
 
             except Exception as e:
                 usys.print_exception(e)
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.pwkey_timer.stop()
+                    self.pwkey_count = 0
+                    self.pwkey_press = 0
+                    self.led_state = 0
+                    self.pwKey_press_count=0
+                    return
+
             if self.pwKey_press_count >= 1:
                 self.pwKey_press_count = 0
-                # EventMesh.debug_log("pwKey_timeout_cb:self.pwKey_press_count >= 1")
+                # flag = EventMesh.publish("get_call_state") 
+                # if flag != 2:#如果是电话拨出去或者不在打电话中都可以执行
+                #     EventMesh.publish("stop_led_timer")#设置参数
+                #     if flag == 1:#如果是sos电话拨出去
+                #         sos_flag = EventMesh.publish("get_sos_flag")
+                #         if sos_flag == 1:
+                #             EventMesh.publish("set_sos_flag",0)
+                #             EventMesh.publish("set_sos_num",0)
+                #             EventMesh.publish("set_hangup_mode",0)
+                #     EventMesh.publish("close_hr_sop2")#
+                #     flag = EventMesh.publish("get_call_state") 
+                #     # if flag == 0 or flag == 2:#在拨出去或者通话中就不播报入网成功的语音
+                #     if flag != 1:#在拨出去或者通话中就不播报入网成功的语音
+                #         EventMesh.publish("set_sim_mode")#
+                #     EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd()
+                
                 flag = EventMesh.publish("get_call_state") 
-                if flag != 2:#如果是电话拨出去或者不在打电话中都可以执行
+                if flag != 2:
                     EventMesh.publish("stop_led_timer")#设置参数
                     EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd()
 
@@ -2774,12 +2867,9 @@ if EventMesh.model == "D15_" :
 
         def sosKey_extint_cb(self,args):
             power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-            if power_off != None:
-                if power_off == 1:
-                    return
             open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-            if open_power != None:
-                if open_power == 0:
+            if power_off != None and open_power != None:
+                if power_off == 1 or open_power == 0:
                     return
             self.sosKey_status = int(args[1])
             if self.sosKey_status == 0:
@@ -2797,6 +2887,7 @@ if EventMesh.model == "D15_" :
             if self.WeChatKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall1_status != 0 and self.KeyCall2_status != 0:
                 if self.sosKey_status == 0:#按下
                     EventMesh.publish("close_falldown_alarm_event")#关闭跌倒报警提醒事件
+                    EventMesh.publish("close_wechat_btn_timer")
                     if self.sosKey_press == 0 :
                         self.wechatKey_timer.stop()
                         self.pwkey_timer.stop()
@@ -2813,6 +2904,7 @@ if EventMesh.model == "D15_" :
 
                         self.wechatKey_count = 0
                         self.wechatKey_press = 0
+                        self.wechat_state = 0
                         self.wechatKey_press_count=0#微聊键
 
 
@@ -2836,6 +2928,17 @@ if EventMesh.model == "D15_" :
 
         def sosKey_press_cb(self, data):
             '''KEY2:联动屏幕右下角或返回键长按关机'''
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.sosKey_timer.stop()
+                    self.sosKey_count = 0
+                    self.sosKey_press = 0
+                    self.sosKey_long_press = 0
+                    self.sosKey_press_count = 0
+                    return
+            self.sosKey_status = self.sosKey.read_level()
             if self.sosKey_press == 1 :
                 # if self.sosKey_count <= 2:
                     # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
@@ -2866,6 +2969,7 @@ if EventMesh.model == "D15_" :
                         self.sosKey_timer.stop()
                         self.sosKey_count = 0
                         self.sosKey_press = 0
+                        self.sosKey_long_press = 0
                         self.sosKey_press_count+=1
                         self.sosKey_timer.start(500, 0, self.publish_sosKey_timeout_cb_do)#松手超时1s判断
         def publish_sosKey_timeout_cb_do(self, *args, **kwargs):
@@ -2876,6 +2980,16 @@ if EventMesh.model == "D15_" :
         # 4、短按六次,播报IMEI号
         # 5、短按十次,解绑APP,同时恢复出厂设置
         def sosKey_timeout_cb(self, data):#
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.sosKey_timer.stop()
+                    self.sosKey_count = 0
+                    self.sosKey_press = 0
+                    self.sosKey_long_press = 0
+                    self.sosKey_press_count = 0
+                    return
             if NEW_ENABLE == 1:#旧的按键定义
                 # EventMesh.debug_log("sosKey_press_count!!!!!!!!!!!!!! ",self.sosKey_press_count)
                 flag = EventMesh.publish("get_call_state")#获取通话状态
@@ -3002,12 +3116,9 @@ if EventMesh.model == "D15_" :
 
         def wechatKey_extint_cb(self,args):
             power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-            if power_off != None:
-                if power_off != 0:
-                    return
             open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-            if open_power != None:
-                if open_power == 0:
+            if power_off != None and open_power != None:
+                if power_off != 0 or open_power == 0:
                     return
             fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
             if fall_down != None:
@@ -3028,6 +3139,7 @@ if EventMesh.model == "D15_" :
             # if self.sosKey_status != 0 and self.GPIO26_status != 0:
             if self.sosKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall1_status != 0 and self.KeyCall2_status != 0:
                 if self.WeChatKey_status == 0:#按下
+
                     if self.wechatKey_press == 0:
                         self.wechatKey_timer.stop()
                         self.pwkey_timer.stop()
@@ -3042,12 +3154,13 @@ if EventMesh.model == "D15_" :
 
                         self.pwkey_press = 0
                         self.pwkey_count = 0
+                        self.led_state = 0
                         self.pwKey_press_count=0
 
                         self.wechatKey_press = 1
                         self.led_state = 0
                         self.wechatKey_count = 0
-                        self.wechat_state = 1
+                        self.wechat_state = 0
 
                         self.Keycall1_count = 0
                         self.Keycall1_press = 0 
@@ -3060,6 +3173,8 @@ if EventMesh.model == "D15_" :
                         self.Keycall2_long_press = 0
 
                         self.wechatKey_timer.start(100, 1, self.publish_wechat_btn_event_cb)
+                else:
+                    EventMesh.publish("close_wechat_btn_timer")
 
         def close_wechat_btn_timer(self,event,*argc):
             tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
@@ -3073,6 +3188,7 @@ if EventMesh.model == "D15_" :
                     self.wechatKey_count = 0
                     self.wechatKey_press = 0
                     self.wechatKey_press_count=0
+                    self.wechat_state = 0
                     date_tmp = utime.localtime()
                     time_tmp = utime.mktime(date_tmp)
                     time_sec = tmp[1]
@@ -3086,6 +3202,17 @@ if EventMesh.model == "D15_" :
         
 
         def wechatKey_press_cb(self,data):
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.wechatKey_timer.stop()
+                    self.wechatKey_count = 0
+                    self.wechatKey_press = 0
+                    self.wechat_state = 0
+                    self.wechatKey_press_count=0
+                    return
+            self.WeChatKey_status = self.wechatKey.read_level()
             wechat_time = 0
             tmp = None
             time_sec = 0
@@ -3096,16 +3223,16 @@ if EventMesh.model == "D15_" :
             if self.wechatKey_press == 1 :#是否按下
                 tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
                 self.wechatKey_count += 1
-                if self.wechatKey_count >= 10: #长按1s进入微聊录音
+                if self.wechatKey_count >= 15: #长按1s进入微聊录音
                     flag = EventMesh.publish("get_call_state") 
                     fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
                     if flag != None:
                         if flag == 0 and fall_down == 0:
                             if self.WeChatKey_status == 0:
                                 if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
-                                    if self.wechat_state == 1:#按下超过s开始录音
+                                    if self.wechat_state == 0:#按下超过s开始录音
                                         EventMesh.publish("start_wechat_record")#开始录音
-                                        self.wechat_state = 0
+                                        self.wechat_state = 1
                                 else:
                                     self.wechat_state = 0
                                     self.wechatKey_timer.stop()
@@ -3116,7 +3243,7 @@ if EventMesh.model == "D15_" :
                                     return
 
                             if self.WeChatKey_status == 0:#未松手超过15s啧停止录音
-                                if self.wechat_state == 0:
+                                if self.wechat_state == 1:
                                     if tmp != None:
                                         if tmp[0] != 0:
                                             time_sec = tmp[1]
@@ -3129,11 +3256,12 @@ if EventMesh.model == "D15_" :
                                                 self.wechatKey_timer.stop()
                                                 self.wechatKey_count = 0
                                                 self.wechatKey_press = 0
+                                                self.wechat_state = 0
                                                 self.wechatKey_press_count=0
                                                 return
                             else:
                                 if self.WeChatKey_status == 1:
-                                    if self.wechat_state == 0:#如果按下时长超过1s且小于长按的时间也认为是录微聊
+                                    if self.wechat_state == 1:#如果按下时长超过1s且小于长按的时间也认为是录微聊
                                         if tmp != None:
                                             if tmp[0] != 0:
                                                 time_sec = tmp[1]
@@ -3142,9 +3270,10 @@ if EventMesh.model == "D15_" :
                                             if wechat_time >= 15:
                                                 wechat_time = 15
                                         
+                                        
                                         EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
                                         self.wechatKey_timer.stop()
-
+                                        self.wechat_state = 0
                                         self.wechatKey_count = 0
                                         self.wechatKey_press = 0
                                         self.wechatKey_press_count=0
@@ -3152,8 +3281,10 @@ if EventMesh.model == "D15_" :
                         else:
                             self.wechatKey_timer.stop()
                             self.wechatKey_count = 0
+                            self.wechat_state = 0
                             self.wechatKey_press = 0
                             self.wechatKey_press_count = 0
+                            return
 
                 if self.WeChatKey_status == 1:#松开
                     if self.wechatKey_count >= 1: #防抖100ms
@@ -3161,6 +3292,7 @@ if EventMesh.model == "D15_" :
                         self.wechatKey_timer.stop()
                         self.wechatKey_count = 0
                         self.wechatKey_press = 0
+                        self.wechat_state = 0
                         self.wechatKey_press_count+=1
                         self.wechatKey_timer.start(500, 0, self.publish_wechatKey_btn_event_cb)#松手超时1s判断
 
@@ -3177,6 +3309,17 @@ if EventMesh.model == "D15_" :
         # 8、短按八次,拨打通信录号码八
     
         def wechatKey_timeout_cb(self,data):#微聊键
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None and open_power_off != None:
+                if open_power == 0 or open_power_off == 1:
+                    self.wechatKey_timer.stop()
+                    self.wechatKey_count = 0
+                    self.wechatKey_press = 0
+                    self.wechat_state = 0
+                    self.wechatKey_press_count=0
+                    return
+            
             if NEW_ENABLE == 1: #旧的按键定义微聊键
                 flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
                 fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
index d3c58fd..fb5e347 100644 (file)
@@ -143,6 +143,12 @@ class PROTOCOL:
 
     RESET_SEND = "RESET_SEND"
     RESET_RECV = "RESET_RECV"
+
+    REMIND_CH_SIT_SEND = "REMIND_CH_SIT_SEND"
+    REMIND_CH_SIT_RECV = "REMIND_CH_SIT_RECV"
+
+    SCREEN_SHOW_SEND = "SCREEN_SHOW_SEND"
+    SCREEN_SHOW_RECV = "SCREEN_SHOW_RECV"
     
 
 class EVENT:
index 9dc7378..a1b19e0 100644 (file)
@@ -291,7 +291,7 @@ class ledEventManager(Abstract):#灯事件
                                 if get_hr_state == 1 or get_spo2_state == 1 or temp_state == 1 \
                                 or bp_state == 1  or bg_state == 1:
                                     if self.working_led_mode != led_mode.HEALTH_LED_MODE:#如果不在亮微聊模式需要亮微聊模式
-                                        # EventMesh.debug_log("set_hr_blood_led!!!!!!!!!!")
+                                        EventMesh.debug_log("set_hr_blood_led!!!!!!!!!!")
                                         str_buf = [1,2,10*70*2,led_mode.FLASH_LIGHT_RED_GREEN,10,5,led_mode.HEALTH_LED_MODE]#測量成功
                                         self.timer_state = 0
                                         self.timer.stop()
@@ -299,7 +299,7 @@ class ledEventManager(Abstract):#灯事件
                                         self.working_led_mode = led_mode.HEALTH_LED_MODE
                                         return
                                     else:
-                                        # EventMesh.debug_log("set_hr_blood_led stop!!!!!!!!!!")
+                                        EventMesh.debug_log("set_hr_blood_led stop!!!!!!!!!!")
                                         return
                                 else:# 0 2都认为其他模式灯亮 不是测试健康灯
                                     self.working_led_mode = led_mode.OTHER_MEASURE_MODE
@@ -539,6 +539,10 @@ class ledEventManager(Abstract):#灯事件
         if open_power != None:
             if open_power == 0:
                 return
+        open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+        if open_power_off != None:
+            if open_power_off == 1:
+                return
         usb_in = EventMesh.publish("get_usb")#
         open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识
         if open_power_off != None:
index e53695f..52fa200 100644 (file)
@@ -146,6 +146,7 @@ def main_init():
     app.append_manager(mgr.sosInfoCallManager())
     app.append_manager(mgr.testSmsSetIPManager())
     app.append_manager(mgr.deleteSmsManager())
+    app.append_manager(mgr.schoolclassManager())
 
     EventMesh.debug_log("init21:{}".format(utime.localtime()))    
     
@@ -200,6 +201,8 @@ def main_init():
     pcr.add_support(protocol.SLEEPTIME_ProtoCol())
     pcr.add_support(protocol.FACTORY_ProtoCol())
     pcr.add_support(protocol.RESET_ProtoCol())
+    pcr.add_support(protocol.REMIND_CH_SIT_ProtoCol())
+    pcr.add_support(protocol.SCREEN_SHOWProtoCol())
 
     sm = protocol.SockManager()
     sm.add_support_resolver(pcr)
index b9d60fd..06bbb89 100644 (file)
@@ -613,25 +613,31 @@ class sosInfoCallManager(Abstract):
                     # EventMesh.debug_log("number:{} number_len :{}".format(number,len(number)))
                         EventMesh.publish("set_sos_num",num)
                         if len(number) == 1:
-                            EventMesh.publish("set_callnumer_cb",number[0])
-                            EventMesh.debug_log("phone 1")
+                            if len(number[0]) != 0:
+                                EventMesh.publish("set_callnumer_cb",number[0])
+                                EventMesh.debug_log("phone 1")
                         elif len(number) == 2:
                             if num == 1 or num == 3:
-                                EventMesh.debug_log("phone 2")
-                                EventMesh.publish("set_callnumer_cb",number[1])
+                                if len(number[1]) != 0:
+                                    EventMesh.debug_log("phone 2")
+                                    EventMesh.publish("set_callnumer_cb",number[1])
                             elif num == 2:
-                                EventMesh.debug_log("phone 3")
-                                EventMesh.publish("set_callnumer_cb",number[0])
+                                if len(number[0]) != 0:
+                                    EventMesh.debug_log("phone 3")
+                                    EventMesh.publish("set_callnumer_cb",number[0])
                         elif len(number) == 3:
                             if num == 1 or num == 4:
-                                EventMesh.publish("set_callnumer_cb",number[1])
-                                EventMesh.debug_log("phone 4")
+                                if len(number[1]) != 0:
+                                    EventMesh.publish("set_callnumer_cb",number[1])
+                                    EventMesh.debug_log("phone 4")
                             elif num == 2 or num == 5:
-                                EventMesh.debug_log("phone 5")
-                                EventMesh.publish("set_callnumer_cb",number[2])
+                                if len(number[2]) != 0:
+                                    EventMesh.debug_log("phone 5")
+                                    EventMesh.publish("set_callnumer_cb",number[2])
                             elif num == 3:
-                                EventMesh.debug_log("phone 6")
-                                EventMesh.publish("set_callnumer_cb",number[0])   
+                                if len(number[0]) != 0:
+                                    EventMesh.debug_log("phone 6")
+                                    EventMesh.publish("set_callnumer_cb",number[0])   
 WL_timer = osTimer()   
 def WL_timer_cb(*args):   
     get_call = EventMesh.publish("get_call_state") 
@@ -2704,6 +2710,7 @@ class DeviceInfoManager(Abstract):
     def get_imei(self, topic, msg):
         if not self.imei:
             self.imei = modem.getDevImei()
+        # self.imei = "860132060128634" #860132060128634
         return self.imei
 
     def get_cid(self, topic, msg):
@@ -3376,7 +3383,7 @@ class AddrBookManager(Abstract):
                 EventMesh.publish("dial_out_call_center_cb",None)#电话拨出去
         else:
             EventMesh.publish("dial_out_call_center_cb",None)#电话拨出去
-        EventMesh.debug_log("call_phonebook_one_call name:{} key_tmp:{} len:{}".format(name,key_tmp,len(self.read_phonebook)))
+        EventMesh.debug_log("call_phonebook_call name:{} msg:{}".format(len(self.read_phonebook),msg))
 
     def call_phonebook_one_call(self, event, msg):
         name = ''
@@ -4260,6 +4267,8 @@ class getSosFlagManager(Abstract):#设置sos
 
         EventMesh.subscribe("set_callnumer_cb", self.set_callnumer_cb)#延时回调
 
+        EventMesh.subscribe("close_call_time",self.close_call_time)
+
         EventMesh.subscribe("set_hangup_mode", self.set_hangup_mode)
         EventMesh.subscribe("get_hangup_mode", self.get_hangup_mode)#获取挂断方式 是对方挂断 还是手表按键主动挂断
 
@@ -4277,6 +4286,7 @@ class getSosFlagManager(Abstract):#设置sos
            
             if number != None:
                 if len(number) > 0:
+                    self.call_timer.stop()
                     EventMesh.publish("save_phonename",number[0])
                     EventMesh.publish("save_phonenum",number[0])
                     EventMesh.publish("set_sos_num",0)
@@ -4286,8 +4296,9 @@ class getSosFlagManager(Abstract):#设置sos
                     EventMesh.publish("sos_out_call_center_cb",None)#电话拨出去
 
     def set_callnumer_cb(self, event, msg):
-        self.callnumer = msg
-        self.call_timer.start(5000, 0, self.call_timer_cb)#延迟10S 继续拨打
+        if self.sos_flag == 1:
+            self.callnumer = msg
+            self.call_timer.start(5000, 0, self.call_timer_cb)#延迟10S 继续拨打
 
     def call_timer_cb(self, *args, **kwargs):
         if self.sos_flag == 1:
@@ -4296,6 +4307,8 @@ class getSosFlagManager(Abstract):#设置sos
             phone_num = EventMesh.publish("get_phonenum")  
             EventMesh.publish("sos_out_call_center_cb",phone_num)#电话拨出去
        
+    def close_call_time(self, event, msg): 
+        self.call_timer.stop()
 
     def get_sos_flag(self, event, msg): 
         return self.sos_flag
@@ -4923,3 +4936,67 @@ class ClockManager(Abstract):
                 self.rtc.enable_alarm(0)
                    
 
+class schoolclassManager(Abstract):#
+    def __init__(self):
+        # ['火星情报局', '一年级二班', '柠檬茶']
+        self.school_name = ''
+        self.class_name = ''
+        self.full_name = ''
+        tmp_data = EventMesh.publish("get_storage_config","school_name")
+        if tmp_data != None:
+            self.school_name = tmp_data
+        tmp_data = EventMesh.publish("get_storage_config","class_name")
+        if tmp_data != None:
+            self.class_name = tmp_data
+        tmp_data = EventMesh.publish("get_storage_config","full_name")
+        if tmp_data != None:
+            self.full_name = tmp_data    
+
+        
+
+    def post_processor_after_instantiation(self):
+        EventMesh.subscribe("set_schoolname", self.set_school_name)#
+        EventMesh.subscribe("get_schoolname", self.get_school_name)
+
+        EventMesh.subscribe("set_classname", self.set_classname)#
+        EventMesh.subscribe("get_classname", self.get_classname)
+
+        EventMesh.subscribe("set_fullname", self.set_full_name)#
+        EventMesh.subscribe("get_fullname", self.get_full_name)
+
+    def set_school_name(self, event, msg): 
+        if msg != None:
+            if len(msg) != 0:
+                self.school_name = str(msg)
+                EventMesh.publish("set_storage_config",["school_name",str(msg)])
+        
+
+    def get_school_name(self, event, msg):
+        if self.school_name:
+            return self.school_name
+        else:
+            return None
+    
+    def set_classname(self, event, msg): 
+        if msg != None:
+            if len(msg) != 0:
+                self.class_name = str(msg)
+                EventMesh.publish("set_storage_config",["class_name",str(msg)])
+            
+        
+    def get_classname(self, event, msg):
+        if self.class_name:
+            return self.class_name
+        else:
+            return None
+    def set_full_name(self, event, msg): 
+        if msg != None:
+            if len(msg) != 0:
+                self.full_name = str(msg)
+                EventMesh.publish("set_storage_config",["full_name",str(msg)])
+
+    def get_full_name(self, event, msg):
+        if self.full_name:
+            return self.full_name
+        else:
+            return None
\ No newline at end of file
index 11970be..9bbe2eb 100644 (file)
@@ -2795,6 +2795,111 @@ class RESET_ProtoCol(ProtoCol):#重启
         EventMesh.publish(constants.PROTOCOL.RESET_SEND) 
         Power.powerRestart()
 
+# 平台发送:
+# [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_SIT,时间间隔(分钟),总开关(0为关,1为开),午间休息时段,晚间休息时段]
+# 午间/晚间休息时段格式为:开始时间(hh:mm)-结束时间(hh:mm)-开关(0为关,1为开),例如 12:00-15:00-1。
+# 久坐默认值为20分钟。
+# 午间和晚间默认值,午间12:00-14:00,晚上20:00-07:00。
+# 实例:
+# [XT*334588000000156*0026*REMIND_CH_SIT,20,0,12:00-15:00-1,20:00-07:00-1]
+# 终端回复:
+# [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_SIT]
+# 实例:[XT*334588000000156*000E*REMIND_CH_SIT]
+class REMIND_CH_SIT_ProtoCol(ProtoCol):#久坐提醒
+    """
+    实例:[XT*334588000000156*0008*REMIND_CH_SIT]
+    终端回复
+    [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_SIT]
+    实例:[XT*334588000000156*0006*REMIND_CH_SIT]
+    """
+    TYPE = "REMIND_CH_SIT"
+    
+    def send(self, event, msg):
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000d*REMIND_CH_SIT"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        EventMesh.debug_log("REMIND_CH_SIT:send:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+
+        EventMesh.debug_log("REMIND_CH_SIT!!!!!!!!!")
+        # msg = msg[1:-1]
+        # msg_tmp = msg.decode('ascii')
+        # msg_data = msg_tmp.split(',')
+        # EventMesh.debug_log("WLKEY_ProtoCol".format(msg_data[1]))
+        # EventMesh.publish("set_storage_config",["WLKEY",msg_data[1]])
+
+        EventMesh.publish(constants.PROTOCOL.REMIND_CH_SIT_SEND) 
+        
+# 平台发送:
+# [XT*YYYYYYYYYYYYYYY*LEN*SCREEN_SHOW,参数内容]
+# 实例:[XT*334588000000156*0016*SCREEN_SHOW,00000000000]
+# 参数内容用 unicode 编码呈现,设备收到后需解码。
+# 解码后的参数内容可能有多个参数,不同参数用逗号分隔,设备自己决定如何在屏幕中显示这些参数。比如 "SCREEN_SHOW,深圳第一中学,三年1班、张三"
+# 终端回复:
+# [XT*YYYYYYYYYYYYYYY*LEN*SCREEN_SHOW]
+# 实例:[XT*334588000000156*000B*SCREEN_SHOW]
+
+class SCREEN_SHOWProtoCol(ProtoCol):
+    """开屏显示"""
+    TYPE = "SCREEN_SHOW"
+    def send(self, event, msg):
+        # [XT*334588000000156*0006*SILENCETIME2]
+        send_data = self.PID+"*%s*000B*SCREEN_SHOW"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        # print("KEYBRD:data:%s"%(data))
+        # print("KEYBRD!!!!!!!!!!!!!",msg)
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+    def recv(self, event, msg):
+        """
+        @param event:
+        @param msg: 接收到的下行数据
+        """
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_tmp = msg_tmp.split(',')
+        msg_tmp = msg_tmp[1:]
+        msg_tmp = msg_tmp[0]
+        print("screen_school_data msg",msg)
+
+        j = 0
+        i = 0
+        videobook_old = {}
+        videobook_name_tmp = UnicodeHexStr_To_Utf8Str(msg_tmp)
+        lst = videobook_name_tmp.split(",")
+        print("lst data",lst)
+
+         # 0 1 2 3
+        screen_school_data = ""#学校
+        screen_class_data = ""#班级
+        screen_fullname_data = ""#姓名
+        if len(lst) != 0: 
+            count = len(lst)
+            if count > 3:
+                count = 3
+            for i in range(count):
+                if i == 0:
+                    screen_school_data = lst[0]
+                    EventMesh.publish("set_schoolname", screen_school_data)#
+                elif i == 1:
+                    screen_class_data = lst[1]
+                    EventMesh.publish("set_classname", screen_class_data)#
+                else:
+                    screen_fullname_data= lst[2]
+                    EventMesh.publish("set_fullname", screen_fullname_data)#
+                
+                # EventMesh.publish("update_screen_show")#更新开屏显示
+
+        print("screen_school_data!!!:",screen_school_data,screen_class_data,screen_fullname_data)
+
+        EventMesh.publish(constants.PROTOCOL.SCREEN_SHOW_SEND)  
+
+
 class ProtoColResolver(object):
     def __init__(self):
         self.protocol_list = []
index f872d56..2d5f3c4 100644 (file)
@@ -511,7 +511,7 @@ class MainMenuScreen(Screen):
         self.menu_id = id
     def done_left_to_right(self):
         id = MainMenu2_til.get_tile_act().get_child(0).get_text()
-        print("done_left_to_right:ID{} menu_id{}".format(id,self.menu_id))
+        # print("done_left_to_right:ID{} menu_id{}".format(id,self.menu_id))
         if id == "0":
             MainMenu2_til.set_tile_id(MainMenu2_num-2,0,lv.ANIM.OFF)
         elif self.menu_id != '2' and id == '1':
@@ -521,7 +521,7 @@ class MainMenuScreen(Screen):
         self.menu_id = id
     def done_right_to_left(self):
         id = MainMenu2_til.get_tile_act().get_child(0).get_text()
-        print("done_right_to_left:ID{} menu_id{}".format(id,self.menu_id))
+        # print("done_right_to_left:ID{} menu_id{}".format(id,self.menu_id))
         if id == "0":
             MainMenu2_til.set_tile_id(0,0,lv.ANIM.OFF)
         elif (self.menu_id != str(MainMenu2_num-2) ) and id == str(MainMenu2_num-1) :