From: dxy15521469561 <1731678236@qq.com> Date: Tue, 30 Jan 2024 08:54:13 +0000 (+0800) Subject: D15: X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=b95e617140235d1b41740fffa362771bac28fc16;p=mirrors%2FASR1603_G5.git D15: 视频通话优化 K01未优化 --- diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c index daf2f01e..7c69d428 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c @@ -218,7 +218,7 @@ void jrtc_handle(void * argv) { HELIOS_JRTC_LOG("interrupt handle thread failed to get queue\n"); continue; } - HELIOS_JRTC_LOG("roomid:%s, ticket:%s, video:%x, camera:%x.", open_msg.roomid, open_msg.ticket, open_msg.video, open_msg.camera); + HELIOS_JRTC_LOG("roomid:%s, ticket:%s, video:%x, camera:%x.\n", open_msg.roomid, open_msg.ticket, open_msg.video, open_msg.camera); if (test == NULL) { test = jrtc_open(open_msg.roomid, open_msg.ticket, open_msg.video, open_msg.camera); @@ -414,6 +414,10 @@ STATIC mp_obj_t mp_jrtc_close (mp_obj_t err_j) return mp_obj_new_int(ret); } else { + if(jrtc_state(test) == JRTC_CLOSED){ + test = NULL; + return mp_obj_new_int(1); + } if (test == NULL) { return mp_obj_new_int(1); } @@ -432,7 +436,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_jrtc_close_obj, mp_jrtc_close); STATIC mp_obj_t mp_jrtc_get_state(void) { int sta = jrtc_state(test); - + HELIOS_JRTC_LOG("mp_jrtc_get_state!!! %d",sta); return mp_obj_new_int(sta); } STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_jrtc_get_state_obj, mp_jrtc_get_state); diff --git "a/2.sdk/project/D10/D15XG_DT\346\214\211\351\224\256\345\256\232\344\271\211\345\217\212\351\227\252\347\201\257.doc" "b/2.sdk/project/D10/D15XG_DT\346\214\211\351\224\256\345\256\232\344\271\211\345\217\212\351\227\252\347\201\257.doc" index 65ad2a34..7d7546ce 100644 Binary files "a/2.sdk/project/D10/D15XG_DT\346\214\211\351\224\256\345\256\232\344\271\211\345\217\212\351\227\252\347\201\257.doc" and "b/2.sdk/project/D10/D15XG_DT\346\214\211\351\224\256\345\256\232\344\271\211\345\217\212\351\227\252\347\201\257.doc" differ diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m_d15.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m_d15.py index 62de12ca..54300809 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m_d15.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m_d15.py @@ -132,6 +132,9 @@ if EventMesh.model == "D15" : self.temp_auto = 0 self.video_count = 0 + + self.sos_state = 0 + self.video_call_state = 0#视频通话拨进来还是拨出去的状态 1代表是正在拨进或者拨出去 self.video_call_in_mode = 0 #0是语音 1是视频通话 @@ -264,7 +267,9 @@ if EventMesh.model == "D15" : EventMesh.subscribe("app_restart", self.app_restart)#远程重启 - + EventMesh.subscribe("get_sos_state_out", self.get_sos_state_out)#正在拨打sos电话 + + EventMesh.subscribe("set_sos_state_out", self.set_sos_state_out)#清除在拨打sos电话 def interInfo_queue_thread(self): while True: @@ -539,6 +544,7 @@ if EventMesh.model == "D15" : sos_flag = EventMesh.publish("get_sos_flag") if sos_flag == 1: self.call_state = 0 + EventMesh.publish("set_sos_state_out") EventMesh.publish("set_sos_flag",0) EventMesh.publish("set_sos_num",0) EventMesh.publish("set_hangup_mode",0) @@ -652,7 +658,7 @@ if EventMesh.model == "D15" : if NEW_ENABLE == 0:#新的按键功能定义 video_state = EventMesh.publish("get_video_state") if video_state != 0:#视频通话打入或者接听后允许挂断视频通话 - EventMesh.publish("video_reject_cb",2)#挂断视频通话 + EventMesh.publish("video_dev_reject_cb",2)#挂断视频通话 return EventMesh.publish("play_cur_time_event")#播报当前时间 #播报当前时间 @@ -754,6 +760,7 @@ if EventMesh.model == "D15" : sos_flag = EventMesh.publish("get_sos_flag") if sos_flag == 1: self.call_state = 0 + EventMesh.publish("set_sos_state_out") EventMesh.publish("set_sos_flag",0) EventMesh.publish("set_sos_num",0) EventMesh.publish("set_hangup_mode",0) @@ -798,24 +805,25 @@ if EventMesh.model == "D15" : return video_state = EventMesh.publish("get_video_state") - print("video_state",video_state) + # print("video_state",video_state) self.video_count+=1 if self.video_count >= 30 or video_state == 0:#一分钟挂断视频通话 - EventMesh.publish("video_reject_cb",None)#挂断视频通话 + EventMesh.publish("video_newwork_reject_cb",None)#挂断视频通话 self.video_call_state = 0 self.video_count=0 + self.timer.stop() return if video_state != 6 or self.video_call_state == 0:#视频电话呼入 EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("close_timer_all")# return if self.video_call_in_mode == 0: - EventMesh.publish("set_led_time_arg",[1,2,10*2,led_mode.FLASH_LIGHT_RED,10,5,led_mode.VIDEO_MEASURE_MODE])#測量成功 + EventMesh.publish("set_led_time_arg",[1,2,10*2,led_mode.FLASH_LIGHT_RED,10,5,led_mode.VIDEO_MEASURE_MODE])# str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_VIDEO_VOICE_IN")) EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件 else: - EventMesh.publish("set_led_time_arg",[1,2,10*2,led_mode.FLASH_LIGHT_RED,10,5,led_mode.VIDEO_MEASURE_MODE])#測量成功 + EventMesh.publish("set_led_time_arg",[1,2,10*2,led_mode.FLASH_LIGHT_RED,10,5,led_mode.VIDEO_MEASURE_MODE])# str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_VIDEO_CALL_IN")) EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件 @@ -827,7 +835,7 @@ if EventMesh.model == "D15" : return EventMesh.publish("close_timer_all")# EventMesh.publish("close_wechat_btn_timer")# - # EventMesh.publish("set_led_time_arg",[1,2,10*10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功 + # EventMesh.publish("set_led_time_arg",[1,2,10*10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])# EventMesh.publish("clear_video_timer_state") EventMesh.publish("set_app_dev_end_state") if msg != None: @@ -851,11 +859,12 @@ if EventMesh.model == "D15" : if open_power == 0 or power_off == 1 : return video_state = EventMesh.publish("get_video_state")#加入中 - print("video_out_timer_cb video_state",video_state) + # print("video_out_timer_cb video_state",video_state) self.video_count+=1 if self.video_count >= 30 or video_state == 0:#40s挂断视频通话 对方无响应 - EventMesh.publish("video_reject_cb",None)#挂断视频通话 + self.timer.stop() + EventMesh.publish("video_newwork_reject_cb",None)#挂断视频通话 self.video_call_state = 0 self.video_count = 0 @@ -1030,9 +1039,9 @@ if EventMesh.model == "D15" : if power_off == 1: return self.sos_phone_num = '' - # EventMesh.debug_log("sos_out_call_center_cb",msg) + EventMesh.debug_log("sos_out_call_center_cb",msg) if self.call_state == 0: - + self.sos_state = 0 EventMesh.publish("close_timer_all")# if msg == None: str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL")) @@ -1040,7 +1049,7 @@ if EventMesh.model == "D15" : # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data) else: sos_state = EventMesh.publish("get_dev_state") - + self.sos_state = 1 tmp = 1 << 16 sos_state = sos_state|tmp #第21位=1 EventMesh.publish("set_dev_state",sos_state) @@ -1055,14 +1064,21 @@ if EventMesh.model == "D15" : def sos_time_out_phone(self, msg):#30s超时未打通或者信号不好则重新拨打 + self.sos_state = 0 sos_flag = EventMesh.publish("get_sos_flag") if sos_flag == 1: if self.call_state == 0: + EventMesh.publish("set_sos_state_out") EventMesh.publish("set_sos_info_call") def sos_call_out_phone(self, msg):#电话拨出去 voiceCall.callStart(self.sos_phone_num) + def get_sos_state_out(self, event, msg):#正在拨打sos电话 + return self.sos_state + + def set_sos_state_out(self, event, msg):#清除在拨打sos电话 + self.sos_state = 0 def call_test_event(self, event, msg): voiceCall.callStart(str("10086")) @@ -2629,7 +2645,7 @@ if EventMesh.model == "D15" : return self.KeyCall1_status = int(args[1]) - EventMesh.txt_log('key17_extint_cb :{}'.format(args)) + # EventMesh.debug_log('key17_extint_cb :{}'.format(args)) if self.KeyCall1_status == 0: self.KeyCall1_status = 1 else: @@ -2640,29 +2656,29 @@ if EventMesh.model == "D15" : video_state = EventMesh.publish("get_video_state") if video_state != 0:#视频通话打入或者接听后允许挂断视频通话 if video_state != 6:#6是app打手表需要接通 - EventMesh.publish("video_reject_cb",2)#挂断视频通话 + EventMesh.publish("video_dev_reject_cb",2)#挂断视频通话 return self.WeChatKey_status = self.wechatKey.read_level() self.GPIO26_status = self.pwk_key26.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_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]:上升沿或下降沿 + # 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.KeyCall2_status != 0 and self.sosKey_status != 0: if self.KeyCall1_status == 0:#按下 if NEW_ENABLE == 0:#新的按键功能定义 video_state = EventMesh.publish("get_video_state") if video_state != 0:#视频通话打入或者接听后允许挂断视频通话 - if video_state != 6:#6是app打手表需要接通 - EventMesh.publish("video_reject_cb",2)#挂断视频通话 - self.Keycall1_press_count=0 - self.wechatKey_timer.stop() - self.pwkey_timer.stop() - self.sosKey_timer.stop() - self.Keycall2_timer.stop() - self.Keycall1_timer.stop() + if video_state == 6:#6 是app拨打手表 1 是手表打app 3 是正在视频通话中 0 关闭只有第一次视频通话打入才允许接听 接通之后不允许接听了 + EventMesh.publish("video_answer_cb") + else: + EventMesh.publish("video_dev_reject_cb",2)#挂断视频通话 + self.Keycall1_press_count=0 + self.wechatKey_timer.stop() + self.pwkey_timer.stop() + self.sosKey_timer.stop() + self.Keycall2_timer.stop() + self.Keycall1_timer.stop() + return EventMesh.publish("close_wechat_btn_timer") if self.Keycall1_press == 0 : @@ -2790,7 +2806,7 @@ if EventMesh.model == "D15" : elif self.Keycall1_press_count == 1:# self.Keycall1_press_count = 0 EventMesh.publish("stop_led_timer")#设置参数 - print("video_state call",video_state) + # print("video_state call",video_state) # if video_state != 0: # if video_state == 6:#6 是app拨打手表 1 是手表打app 3 是正在视频通话中 0 关闭只有第一次视频通话打入才允许接听 接通之后不允许接听了 # EventMesh.publish("video_answer_cb") @@ -2806,7 +2822,7 @@ if EventMesh.model == "D15" : def key19_extint_cb(self,args):#call 2 - EventMesh.txt_log('key19_extint_cb :{}'.format(args)) + # EventMesh.txt_log('key19_extint_cb :{}'.format(args)) power_off = EventMesh.publish("get_power_off_state")#获取关机标识 open_power = EventMesh.publish("get_power_on_state")#获取开机标识 dev_app_mode = EventMesh.publish("get_dev_app_mode") @@ -2833,13 +2849,12 @@ if EventMesh.model == "D15" : video_state = EventMesh.publish("get_video_state") if video_state != 0:#视频通话打入或者接听后允许挂断视频通话 if video_state != 6:#6是app打手表需要接通 - EventMesh.publish("video_reject_cb",2)#挂断视频通话 + EventMesh.publish("video_dev_reject_cb",2)#挂断视频通话 return self.WeChatKey_status = self.wechatKey.read_level() self.GPIO26_status = self.pwk_key26.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]:上升沿或下降沿 + self.KeyCall1_status = self.extint_17.read_level() + self.sosKey_status = self.sosKey.read_level() # 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.KeyCall1_status != 0 and self.sosKey_status != 0: if self.KeyCall2_status == 0:#按下 @@ -2964,7 +2979,7 @@ if EventMesh.model == "D15" : elif self.Keycall2_press_count == 1:# self.Keycall2_press_count = 0 video_state = EventMesh.publish("get_video_state") - print("video_state ",video_state) + # print("video_state ",video_state) if video_state != 0: if video_state == 6:#6 是app拨打手表 1 是手表打app 3 是正在视频通话中 0 关闭只有第一次视频通话打入才允许接听 接通之后不允许接听了 EventMesh.publish("video_answer_cb") @@ -2983,7 +2998,7 @@ if EventMesh.model == "D15" : def pwk_extint_cb(self,args):#侧边按键 - EventMesh.txt_log('pwk_extint_cb :{}'.format(args)) + # EventMesh.txt_log('pwk_extint_cb :{}'.format(args)) open_power = EventMesh.publish("get_power_on_state")#获取开机标识 open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 video_state = EventMesh.publish("get_video_state") @@ -3012,33 +3027,16 @@ if EventMesh.model == "D15" : print("pwk_extint_cb") # EventMesh.publish("video_answer_cb") else: - EventMesh.publish("video_reject_cb",2)#挂断视频通话 + EventMesh.publish("video_dev_reject_cb",2)#挂断视频通话 return self.WeChatKey_status = self.wechatKey.read_level() - # self.KeyCall2_status = self.extint_17.read_level() + self.KeyCall2_status = self.extint_17.read_level() self.KeyCall1_status = self.extint_19.read_level() - # self.sosKey_status = self.sosKey.read_level() - # EventMesh.debug_log('pwk_extint_cb ',args,self.GPIO26_status,self.WeChatKey_status,self.sosKey_status,self.KeyCall1_status,self.KeyCall2_status) # args[0]:gpio号 args[1]:上升沿或下降沿 - # self.GPIO26_status = ~args[1] - # EventMesh.debug_log('### GPIO26_status {} self.GPIO26_status :{}'.format(args,self.GPIO26_status)) # args[0]:gpio号 args[1]:上升沿或下降沿 + self.sosKey_status = self.sosKey.read_level() + if self.WeChatKey_status != 0 and self.KeyCall1_status != 0 and self.sosKey_status != 0 and self.KeyCall2_status != 0: if self.GPIO26_status == 0:#按下 - # if NEW_ENABLE == 0:#新的按键功能定义 - # video_state = EventMesh.publish("get_video_state") - # if video_state != 0:#视频通话打入或者接听后允许挂断视频通话 - # if video_state == 6:#6是app打手表需要接通 - # pass - # # EventMesh.publish("video_answer_cb") - # else: - # EventMesh.publish("video_reject_cb",2)#挂断视频通话 - # self.Keycall1_press_count=0 - # self.wechatKey_timer.stop() - # self.pwkey_timer.stop() - # self.sosKey_timer.stop() - # self.Keycall2_timer.stop() - # self.Keycall1_timer.stop() - # return EventMesh.publish("close_wechat_btn_timer") if self.pwkey_press == 0 : self.aud.stop() #播放声音 @@ -3227,6 +3225,7 @@ if EventMesh.model == "D15" : if flag == 1:#如果是sos电话拨出去 sos_flag = EventMesh.publish("get_sos_flag") if sos_flag == 1: + EventMesh.publish("set_sos_state_out") EventMesh.publish("set_sos_flag",0) EventMesh.publish("set_sos_num",0) EventMesh.publish("set_hangup_mode",0) @@ -3255,9 +3254,9 @@ if EventMesh.model == "D15" : 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_17.read_level() + self.KeyCall2_status = self.extint_17.read_level() - EventMesh.debug_log('sosKey_extint_cb ',args,self.sosKey_status,self.WeChatKey_status,self.KeyCall1_status,self.KeyCall2_status,self.GPIO26_status) # args[0]:gpio号 args[1]:上升沿或下降沿 + # EventMesh.debug_log('sosKey_extint_cb ',args,self.sosKey_status,self.WeChatKey_status,self.KeyCall1_status,self.KeyCall2_status,self.GPIO26_status) # args[0]:gpio号 args[1]:上升沿或下降沿 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:#按下 if NEW_ENABLE == 0:#新的按键功能定义 @@ -3265,7 +3264,7 @@ if EventMesh.model == "D15" : if video_state != 0:#视频通话打入或者接听后允许挂断视频通话 if video_state == 6 or get_video == 0: EventMesh.debug_log("sosKey_extint_cb",get_video,video_state) - EventMesh.publish("video_reject_cb",2)#挂断视频通话 + EventMesh.publish("video_dev_reject_cb",2)#挂断视频通话 self.sosKey_press_count=0 self.wechatKey_timer.stop() self.pwkey_timer.stop() @@ -3374,7 +3373,7 @@ if EventMesh.model == "D15" : # 4、短按六次,播报IMEI号 # 5、短按十次,解绑APP,同时恢复出厂设置 def sosKey_timeout_cb(self, data):# - print("sosKey_timeout_cb",self.sosKey_press_count) + # print("sosKey_timeout_cb",self.sosKey_press_count) 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: @@ -3486,12 +3485,23 @@ if EventMesh.model == "D15" : pass elif self.sosKey_press_count == 3:#视频通话 self.sosKey_press_count = 0 - + battery = EventMesh.publish("screen_get_battery") + if battery != None: + if battery[0] != "1":#在充电得时候 + return + pass call_state = EventMesh.publish("get_call_state") battery = EventMesh.publish("screen_get_battery") if call_state == None: call_state = 0 - if call_state == 0: + if call_state == 0: + flag = EventMesh.publish("get_call_state") + fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 + usb_state = EventMesh.publish("get_usb")# + video_state = EventMesh.publish("get_video_state") + if flag != 0 or usb_state == 1 or usb_state == 3 or fall_down != 0: + return + pass EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("call_viode_book_num") pass @@ -3536,13 +3546,13 @@ if EventMesh.model == "D15" : video_state = EventMesh.publish("get_video_state") if video_state != 0:#视频通话打入或者接听后允许挂断视频通话 if video_state != 6:#6是app打手表需要接通 - EventMesh.publish("video_reject_cb",2)#挂断视频通话 + EventMesh.publish("video_dev_reject_cb",2)#挂断视频通话 return - # self.sosKey_status = self.sosKey.read_level() + self.sosKey_status = self.sosKey.read_level() self.GPIO26_status = self.pwk_key26.read_level() self.KeyCall1_status = self.extint_19.read_level() - # self.KeyCall2_status = self.extint_17.read_level() + self.KeyCall2_status = self.extint_17.read_level() # EventMesh.debug_log('wechatKey_extint_cb ',args,self.WeChatKey_status,self.sosKey_status,self.KeyCall1_status,self.KeyCall2_status,self.GPIO26_status) # args[0]:gpio号 args[1]:上升沿或下降沿 # 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: @@ -3550,7 +3560,7 @@ if EventMesh.model == "D15" : video_state = EventMesh.publish("get_video_state") if video_state != 0:#视频通话打入或者接听后允许挂断视频通话 if video_state != 6:#6是app打手表需要接通 - EventMesh.publish("video_reject_cb",2)#挂断视频通话 + EventMesh.publish("video_dev_reject_cb",2)#挂断视频通话 self.wechatKey_press_count = 0 self.wechatKey_timer.stop() self.pwkey_timer.stop() @@ -3847,7 +3857,7 @@ if EventMesh.model == "D15" : self.wechatKey_press_count = 0 EventMesh.publish("stop_led_timer")#设置参数 video_state = EventMesh.publish("get_video_state") - print("video_state call",video_state) + # print("video_state call",video_state) if video_state != 0: if video_state == 6:#2 是app拨打手表 1 是手表打app 3 是正在视频通话中 0 关闭只有第一次视频通话打入才允许接听 接通之后不允许接听了 EventMesh.publish("video_answer_cb") diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr_d15.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr_d15.py index 52bed14e..e30c868d 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr_d15.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr_d15.py @@ -572,6 +572,7 @@ if EventMesh.model == "D15": sos_flag = EventMesh.publish("get_sos_flag") EventMesh.debug_log('voicecall sos_flag',sos_flag) if sos_flag == 0 : + EventMesh.publish("set_sos_state_out") EventMesh.publish("set_sos_num",0) else: num = EventMesh.publish("get_sos_num") @@ -695,6 +696,7 @@ if EventMesh.model == "D15": sos_flag = EventMesh.publish("get_sos_flag") if sos_flag == 1: sos_flag = 0 + EventMesh.publish("set_sos_flag",0) EventMesh.debug_log('voicecall connected, PhoneNO.: ', args[6]) @@ -705,7 +707,10 @@ if EventMesh.model == "D15": b = tmp[0].isdigit()#判断是否不是数字开头 暂时不用 因为截取了+判断不了 if b == True and size_len > 11: tmp = tmp[size_len-11:] - EventMesh.publish("set_call_state",3) + if EventMesh.publish("get_call_state") == 2:#打通了才可设置状态 防止挂断太及时,又拨出去了 + EventMesh.publish("set_call_state",3) + else: + EventMesh.publish("set_call_state",0) # EventMesh.publish("load_screen", {"screen": "on_call","meta":str(tmp)}) elif args[0] == 12: @@ -725,6 +730,7 @@ if EventMesh.model == "D15": if flag == 2: EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("close_timer_all")# + EventMesh.publish("set_sos_state_out") EventMesh.publish("set_call_state",0) EventMesh.debug_log('voicecall disconnect end') @@ -2714,7 +2720,8 @@ if EventMesh.model == "D15": def get_imei(self, topic, msg): if not self.imei: self.imei = modem.getDevImei() - self.imei = "876226002021444"#视频通话测试账号 + # self.imei = "876226002021444"#视频通话测试账号 + # self.imei = "826226524724963"#视频通话测试账号 # self.imei = "860132060128634" #860132060128634 return self.imei @@ -4285,7 +4292,7 @@ if EventMesh.model == "D15": def set_sos_flag(self, event, msg): self.sos_flag = msg - + EventMesh.publish("set_sos_state_out") if self.sos_flag == 1: number = EventMesh.publish("get_dial_sos_number") @@ -4302,15 +4309,31 @@ if EventMesh.model == "D15": def set_callnumer_cb(self, event, msg): if self.sos_flag == 1: + EventMesh.publish("set_sos_state_out") self.callnumer = msg self.call_timer.start(5000, 0, self.call_timer_cb)#延迟10S 继续拨打 def call_timer_cb(self, *args, **kwargs): + EventMesh.publish("set_sos_state_out") + flag = EventMesh.publish("get_call_state") + fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 + video_state = EventMesh.publish("get_video_state") + if flag != 0 or fall_down != 0 or video_state != 0:#防止不会被中断不会继续拨打sos号码正在通话或者打电话中,跌倒报警 视频通话中不允许拨打sos + if self.sos_flag == 1: + self.call_timer.start(5000, 0, self.call_timer_cb)#延迟10S 继续拨打 + return + else: + self.call_timer.stop() + return + if self.sos_flag == 1: + self.call_timer.stop() EventMesh.publish("save_phonename",str(self.callnumer)) EventMesh.publish("save_phonenum",str(self.callnumer)) phone_num = EventMesh.publish("get_phonenum") EventMesh.publish("sos_out_call_center_cb",phone_num)#电话拨出去 + else: + self.call_timer.stop() def close_call_time(self, event, msg): self.call_timer.stop() @@ -5035,7 +5058,7 @@ if EventMesh.model == "D15": self.video_timer = 0 self.video_init = 0 - + self.video_network_end = 0 #网络不好或者信号较差菊风底层挂断当前视频通话 self.videoInfo_queue = Queue() _thread.stack_size(10*1024) _thread.start_new_thread(self.videoInfo_queue_thread, ()) @@ -5089,9 +5112,10 @@ if EventMesh.model == "D15": EventMesh.subscribe("app_rtalk_cb",self.app_rtalk_cb)#app拒绝视频通话 - EventMesh.subscribe("video_answer_cb",self.video_answer_cb)#手表端接听视频通话 + EventMesh.subscribe("video_answer_cb",self.video_answer_cb)#接听视频通话 - EventMesh.subscribe("video_reject_cb",self.video_reject_cb)#手表端挂断视频通话 + EventMesh.subscribe("video_newwork_reject_cb",self.video_newwork_reject_cb)#端挂断视频通话 + EventMesh.subscribe("video_dev_reject_cb",self.video_dev_reject_cb)#手表端挂断视频或者语音通话 EventMesh.subscribe("video_no_network",self.video_no_network)#打着突然掉网或者未绑定设备 每10s检测一次 @@ -5126,7 +5150,7 @@ if EventMesh.model == "D15": def call_viode_book_num(self, event, msg):#默认拨打视频通话列表第一个 self.video_led_state = 0 - EventMesh.publish("set_vedio_init") + self.video_network_end = 0 EventMesh.publish("clear_video_timer_state") if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网提示关机 if len(self.videobook) != 0:#已联网未添加账号 @@ -5189,6 +5213,17 @@ if EventMesh.model == "D15": call_type = EventMesh.publish("get_vedio_call_type")#呼叫类型 tokens_data = EventMesh.publish("get_vedio_tokens_data")#tookens数据#云米平台不需要tokens + # jrtc.init() + # jrtc.config_server("119.3.54.56:1050") + # jrtc.config("e99697f86096a74dbf635096", "us145a", "1234567890abcdef", "") + # jrtc.open("us144a", "",[],[15,120,240,320]) + # jrtc.set_cam_angle(jrtc.CAM_ROTATE_180) + # jrtc.init() + # jrtc.config_server("119.3.54.56:1050") + # jrtc.config("e99697f86096a74dbf635096", "us144a", "1234567890abcdef", "") + # jrtc.open("us145c", "",[],[15,120,240,320]) + + uid = str(call_id) ticket = str(meet_id) @@ -5196,7 +5231,7 @@ if EventMesh.model == "D15": jrtc.init() # jrtc.config_server("119.3.54.56:1050")#测试服地址 tokens = str(tokens_data) - appkey = "efe9f8800a39d96244234097"#小见 + appkey = "efe9f8800a39d96244234097"# uid_key = "25v9C652123QL3N8" # appkey = "249e7d505516af0a7ed44097" @@ -5214,7 +5249,7 @@ if EventMesh.model == "D15": jrtc.open(uid,ticket,[],[15,120,240,320]) - jrtc.set_rotate(jrtc.CAM_ROTATE_90) + jrtc.set_cam_angle(jrtc.CAM_ROTATE_180) self.video_count = 0 self.video_state_time = 0 @@ -5230,7 +5265,6 @@ if EventMesh.model == "D15": video_state = EventMesh.publish("get_video_state")#这个函数获取为了防止不进回调不置0 get_video_state = EventMesh.publish("get_video_in_out_state") dev_mode = EventMesh.publish("get_dev_app_mode") - # print("call_state",call_state,video_state) if self.video_led_state == 1 or self.video_timer == 1:#手表挂断不在进入 self.timer.stop() return @@ -5243,14 +5277,13 @@ if EventMesh.model == "D15": self.video_state = 0 self.video_state_time = 0 self.timer.stop() - EventMesh.publish("video_reject_cb",5)#挂断视频通话 + EventMesh.publish("video_newwork_reject_cb",5)#挂断视频通话 return if call_state == 5:#已经接通出画面了 self.video_count = 0 self.video_answer = 4 EventMesh.publish("set_video_in_out_state",0) - # self.timer.stop() if self.video_state_time == 0: self.video_state_time = 1 EventMesh.publish("stop_led_timer")#设置参数 @@ -5271,17 +5304,15 @@ if EventMesh.model == "D15": if get_video_state == 0 and call_state != 4 and self.video_answer == 0: EventMesh.publish("video_answer_mode_timer_cb",3)# - if call_state == 0: - # print("no call_state") self.timer.stop() - EventMesh.publish("video_reject_cb",1) + EventMesh.publish("video_newwork_reject_cb",1) else: self.video_state_time = 0 self.video_count = 0 self.timer.stop() EventMesh.publish("set_video_state", 0) - EventMesh.publish("video_reject_cb",1) + EventMesh.publish("video_newwork_reject_cb",1) def video_waite_event_time_cb(self,*argc):#正在接听中,请稍候 EventMesh.publish("video_answer_mode_timer_cb",1) @@ -5293,7 +5324,7 @@ if EventMesh.model == "D15": def video_no_network(self,event,msg):#视频通话无网络 if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:# if EventMesh.publish("get_video_state") != 0: - EventMesh.publish("video_reject_cb",None) + EventMesh.publish("video_newwork_reject_cb",None) pass @@ -5306,19 +5337,23 @@ if EventMesh.model == "D15": def video_answer_cb(self,event,msg):#手表端拒绝视频通话 - EventMesh.publish("set_video_in_out_state",0) EventMesh.publish("stop_led_timer")#关闭亮灯模式 EventMesh.publish("close_timer_all")##关闭统一的计时器 - EventMesh.publish("set_vedio_init")# + EventMesh.publish("set_video_in_out_state",0) EventMesh.publish("open_vedio_infor")#启动视频通话的SDK相关配置 def clear_video_timer_state(self,event,msg):#清除标识 self.video_timer = 0 - - def video_reject_cb(self,event,msg):#手表端挂断视频通话 - if self.video_timer == 0: - # print("close_jrtc_event start",self.video_timer) + self.video_network_end = 0 + + def video_newwork_reject_cb(self,event,msg):#信号不好底层SDK挂断 + if self.video_led_state != 2:#2表示app挂断 + if self.video_network_end == 1: + return + self.video_network_end = 1 + self.video_timer = 1 + self.video_init = 0 EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("close_timer_all")# EventMesh.publish("close_video_timer") @@ -5329,23 +5364,32 @@ if EventMesh.model == "D15": meet_id = str(EventMesh.publish("get_vedio_meet_id"))# call_type = int(EventMesh.publish("get_vedio_call_type"))# - # print("video_reject_cb1111",self.video_led_state,self.video_answer) - # print("close_jrtc_event ens") - if msg == 2: - self.video_led_state = 1 - EventMesh.publish("dev_video_end_timer_cb")#手表设备已挂断 - else: - self.video_led_state = 0 - EventMesh.publish("video_answer_mode_timer_cb",4)##提示对方已挂断 - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - self.video_timer = 1 - call_state = jrtc.get_state() - # print("close_jrtc_event ens1",call_state) jrtc.close(0) - # print("close_jrtc_event ens2",call_state) + if self.video_led_state == 0: + EventMesh.publish("video_answer_mode_timer_cb",4)#提示对方已挂断 + EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) + + + def video_dev_reject_cb(self,event,msg):#手表主动挂断 + if self.video_timer == 0: + self.video_init = 0 + EventMesh.publish("stop_led_timer")#设置参数 + EventMesh.publish("close_timer_all")# + EventMesh.publish("close_video_timer") + EventMesh.publish("set_video_state", 0) + EventMesh.publish("set_dev_app_mode", 0) + EventMesh.publish("set_video_in_out_state",0) + call_id = str(EventMesh.publish("get_vedio_call_id"))# + meet_id = str(EventMesh.publish("get_vedio_meet_id"))# + call_type = int(EventMesh.publish("get_vedio_call_type"))# + + self.video_led_state = 1 + jrtc.close(0) + self.video_timer = 1 + EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) + - def set_app_dev_end_state(self,event,msg):#app拒绝视频通话 self.video_led_state = 0 #手表挂断不在进入 @@ -5356,38 +5400,30 @@ if EventMesh.model == "D15": def app_rtalk_cb(self,event,msg):#app拒绝视频通话 dev_mode = EventMesh.publish("get_dev_app_mode")#如果是app主动挂断需要提示音频文件 video_state = EventMesh.publish("get_video_state")#清除视频通话状态 - # print("app_rtalk_cb return 1",self.video_led_state,dev_mode,video_state) - if self.video_led_state == 1 or self.video_timer == 1:#手表挂断不在进入 + if self.video_led_state != 0 or self.video_timer != 0:#手表挂断不在进入 return - # print("app_rtalk_cb return 2",self.video_led_state,dev_mode,video_state) + + self.video_init = 0 self.video_timer = 1 - self.video_led_state = 0 + self.video_led_state = 2 EventMesh.publish(constants.EVENT.SYSTEM_UP)# - - - video_in_out_state = EventMesh.publish("get_video_in_out_state")#设置参数 - if video_in_out_state != 0: - EventMesh.publish("stop_led_timer")#设置参数 - EventMesh.publish("close_timer_all")# - EventMesh.publish("set_video_in_out_state",0)#清除视频通话拨进还是拨出的状态 + EventMesh.publish("stop_led_timer")#设置参数 + EventMesh.publish("close_timer_all")# EventMesh.publish("close_video_timer") - # print("app_rtalk_cb ",dev_mode,self.video_led_state,video_state) EventMesh.publish("set_dev_app_mode", 0) EventMesh.publish("set_video_state",0)#清除视频通话状态 EventMesh.publish("set_video_in_out_state",0)#清除视频通话拨进还是拨出的状态 - EventMesh.publish("video_answer_mode_timer_cb",4)##提示对方已挂断 - video_state = EventMesh.publish("get_video_state") - # print("app_rtalk_cb end",video_state) + jrtc.close(0) def jrtc_cb(close_sta):#注册回调 print("jrtc callback:", close_sta) if close_sta == 0 or close_sta == 1: EventMesh.publish("set_video_state", 0) EventMesh.publish("set_video_in_out_state",0) - # if EventMesh.publish("get_app_dev_end_state") == 0: - # jrtc.close(0) + EventMesh.publish("set_vedio_init") + jrtc.close(0) jrtc.set_callback(jrtc_cb) diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py index 5ca1eb41..be0fd6e1 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py @@ -301,7 +301,10 @@ class SockManager(Abstract): EventMesh.publish("set_com",self.server_port) EventMesh.publish("set_new_key", str(secretKey))#获取pid和key EventMesh.publish("set_new_pid",str(pid))#获取pid和key - self.reconnect_timer_cb()#重连设备 + # self.reconnect_timer_cb()#重连设备 + print("self.reconnect_flag",self.reconnect_flag) + self.reconnect_flag = 0 + self.reconnect()#重连设备 EventMesh.publish("set_server_state",1)#获取修改服务器状态 @@ -616,7 +619,9 @@ class PING_ProtoCol(ProtoCol): data_tmp = data_tmp.split(']')[0] #去掉] EventMesh.publish(constants.EVENT.SET_PING, data_tmp.split(',')[1]) if EventMesh.model == 'D15': - EventMesh.publish(constants.PROTOCOL.JPREG_SEND) + if str(data_tmp) == "1": + EventMesh.publish(constants.PROTOCOL.JPREG_SEND) + EventMesh.publish(constants.PROTOCOL.MEMBERS_SEND) class KA_ProtoCol(ProtoCol): """心跳""" @@ -3026,7 +3031,7 @@ class CALLING_ProtoCol(ProtoCol):#app发起视频通话 send_data = EventMesh.publish("get_new_pid")+"*%s*0007*CALLING"%(self.imei) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) - print("CALLING:send data:%s"%(data)) + # print("CALLING:send data:%s"%(data)) # print("WLKEY!!!!!!!!!!!!!") # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) @@ -3057,12 +3062,9 @@ class CALLING_ProtoCol(ProtoCol):#app发起视频通话 fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 usb_state = EventMesh.publish("get_usb")# video_state = EventMesh.publish("get_video_state") - usb_state = 0 - if flag != 0 or usb_state == 1 or usb_state == 3 or fall_down != 0 or video_state != 0: #电话在打入或者 在充电不允许视频通话 + sos_dialing = EventMesh.publish("get_sos_state_out")#正在拨打sos电话 + if flag != 0 or usb_state == 1 or usb_state == 3 or fall_down != 0 or video_state != 0 or sos_dialing != 0: #电话在打入或者 在充电不允许视频通话 EventMesh.publish(constants.PROTOCOL.CALLING_SEND,1) - EventMesh.publish("set_video_in_out_state", 0) - EventMesh.publish("set_video_state", 0) - EventMesh.publish("set_dev_app_mode", 0)# else: EventMesh.publish(constants.PROTOCOL.CALLING_SEND,0) EventMesh.publish("set_video_state", 6) @@ -3086,11 +3088,11 @@ class RCALLING_ProtoCol(ProtoCol):#设备拒接接听 send_data = EventMesh.publish("get_new_pid")+"*%s*0008*RCALLING"%(self.imei) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s,%s,%s,%d]"%(str(MD5_SIGN),send_data,msg[0],msg[1],msg[2]) - print("RCALLING:send data:%s"%(data)) + # print("RCALLING:send data:%s"%(data)) # print("WLKEY!!!!!!!!!!!!!") # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) - print("RCALLING:send data end:%s"%(data)) + # print("RCALLING:send data end:%s"%(data)) def recv(self, event, msg): """ @@ -3120,19 +3122,18 @@ class AGTALK_ProtoCol(ProtoCol):#设备发起视频通话与app接听视频通 @param msg: 接收到的下行数据 """ # b'[SZKW*876226002021444*007B*AGTALK,0,01lqlyqzzQHpfwv5g7jFVC2H6Ha2tHFpMlfSm5sd2uo7o55JEcc=OVxewje6MjP0NgEODwsLDwkJCwkLCA0NDQ==,8762260020214441701226895]' - print("AGTALK!!!!!!!!!!!!!") + # print("AGTALK!!!!!!!!!!!!!") msg = msg[1:-1] msg_tmp = msg.decode('ascii') msg_tmp_d = msg_tmp.split(',') call_state = int(msg_tmp_d[1])#返回是否可以视频通话 if call_state == 0:#可正常通话 if EventMesh.publish("get_video_state") != 0: - print("AGTALK!!!!!!!!!!!!!answer") + # print("AGTALK!!!!!!!!!!!!!answer") tokens_data = msg_tmp_d[2]#会议id meet_id = msg_tmp_d[3]#会议id EventMesh.publish("set_vedio_meet_id", meet_id)# EventMesh.publish("set_vedio_tokens_data", tokens_data)# - EventMesh.publish("set_vedio_init")# EventMesh.publish("open_vedio_infor") else: @@ -3141,8 +3142,8 @@ class AGTALK_ProtoCol(ProtoCol):#设备发起视频通话与app接听视频通 meet_id = msg_tmp_d[3]#会议id EventMesh.publish("set_vedio_meet_id", meet_id)# EventMesh.publish("set_vedio_tokens_data", tokens_data)# - EventMesh.publish("video_reject_cb",None)#挂断视频通话 - print("AGTALK no!!!!!!!!!!!!!") + EventMesh.publish("video_newwork_reject_cb",None)#挂断视频通话 + # print("AGTALK no!!!!!!!!!!!!!") print("AGTALK!!!!!!!!!!!!!") @@ -3156,7 +3157,7 @@ class RTALK_ProtoCol(ProtoCol):#app拒接视频通话 send_data = EventMesh.publish("get_new_pid")+"*%s*0005*RTALK"%(self.imei) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1]) - print("AGTALK:send data:%s"%(data)) + # print("AGTALK:send data:%s"%(data)) # print("WLKEY!!!!!!!!!!!!!") # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/sleep_test.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/sleep_test.py index 903f1f11..31f2970e 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/sleep_test.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/sleep_test.py @@ -1,51 +1,19 @@ -import uos -import ql_fs -import EventMesh -if ql_fs.path_exists("/ext") == False: - ldev = uos.VfsLfs1(32, 32, 32, "ext_fs",0,3) - uos.mount(ldev,'/ext') -res = uos.statvfs("/ext") -res = list(res) - -from btn_device_ec800m import BtnDevice - -import lvgl as lv +# import lvgl as lv +from machine import LCD, Pin import utime -import osTimer -import pm -import ql_fs -from machine import Pin from misc import PWM -import uos -from machine import I2C -from Hsensor import GH3018 -from Gsensor import SC7A20 -btn_device = BtnDevice() -btn_device.start() -i2c0 = I2C(I2C.I2C0, I2C.FAST_MODE) -WHO_AM_I = bytearray([0x01, 0]) -I2C_SLAVE_ADDR = 0x49 -r_data = bytearray(2) -data = bytearray([0x60A0, 0]) #休眠 -i2c0.write(I2C_SLAVE_ADDR, WHO_AM_I, 1, data, 2) -def gsensor_cb(self, para): - EventMesh.debug_log("gsensor_cb:{}".format(para)) -gsensor = SC7A20() -EventMesh.debug_log("DeviceInfoManager:1.0") -gsensor.activate() -EventMesh.debug_log("DeviceInfoManager:1.1") -gsensor.init() -EventMesh.debug_log("DeviceInfoManager:2") -gsensor.set_callback(gsensor_cb) -hsensor = GH3018() -hsensor.activate() -hsensor.init() -hsensor.open_blood_oxygen() -utime.sleep(5) -# PWM_backlight = PWM(PWM.PWM1, PWM.ABOVE_MS, 0, 1) -# PWM_backlight.open() -hsensor.close() -#lcd_ctrl.write(0) +import camera +import jrtc + +jrtc.init() +jrtc.config_server("119.3.54.56:1050") +jrtc.config("e99697f86096a74dbf635096", "us144a", "1234567890abcdef", "") +jrtc.open("us145c", "",[],[15,120,240,320]) + +# jrtc.init() +# jrtc.config_server("119.3.54.56:1050") +# jrtc.config("e99697f86096a74dbf635096", "us145a", "1234567890abcdef", "") +# jrtc.open("us144a", "",[],[15,129,128,128]) +jrtc.set_cam_angle(jrtc.CAM_ROTATE_180) -pm.autosleep(1) -EventMesh.debug_log("test end2") \ No newline at end of file +print("jrtc closed !!!!...") diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py index bb8465ce..2dfaebe8 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py @@ -168,6 +168,8 @@ def main_init(): ui.add_screen(_ui.VdieoVoiceScreen()) ui.add_screen(_ui.VoiceShowScreen()) ui.add_screen(_ui.voiceInCallScreen()) + ui.add_screen(_ui.videoModeScreen()) + ui.add_screen(_ui.voiceOutCallScreen()) from pp_main import allppPopupScreen,delOnePopupScreen,ppListScreen,noppPopupScreen,delppsucessPopupScreen,ppMainScreen,addfaileppPopupScreen,ppMainPopupScreen,addppPopupScreen,addedppPopupScreen,ownaddppPopupScreen ui.add_screen(ppMainScreen()) diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py index 23d8cefa..75f4986e 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py @@ -574,6 +574,7 @@ class PING_ProtoCol(ProtoCol): data_tmp = msg.decode('ascii') data_tmp = data_tmp.split(']')[0] #去掉] EventMesh.publish(constants.PROTOCOL.JPREG_SEND) + EventMesh.publish(constants.PROTOCOL.MEMBERS_SEND) EventMesh.publish(constants.EVENT.SET_PING, data_tmp.split(',')[1]) class KA_ProtoCol(ProtoCol): @@ -2485,7 +2486,7 @@ class CALLING_ProtoCol(ProtoCol):#app发起视频通话 tokens_data = msg_tmp_d[4]#tokens EventMesh.publish("set_vedio_call_id", call_id)# EventMesh.publish("set_vedio_meet_id", meet_id)# - EventMesh.publish("set_vedio_call_type", call_type)# + EventMesh.publish("set_vedio_call_type", int(call_type))# EventMesh.publish("set_vedio_tokens_data", tokens_data)# get_ui = EventMesh.publish("get_UI_high_priority") @@ -2566,8 +2567,12 @@ class AGTALK_ProtoCol(ProtoCol):#设备发起视频通话与app接听视频通 meet_id = msg_tmp_d[3]#会议id EventMesh.publish("set_vedio_meet_id", meet_id)# EventMesh.publish("set_vedio_tokens_data", tokens_data)# + EventMesh.publish("clear_jrtc_init_state") EventMesh.publish("open_vedio_infor") + else: + EventMesh.publish("set_UI_high_priority",0) + EventMesh.publish("clear_jrtc_init_state") EventMesh.publish("return_prev_screen") print("AGTALK!!!!!!!!!!!!!") @@ -2582,7 +2587,7 @@ class RTALK_ProtoCol(ProtoCol):#app拒接视频通话 send_data = EventMesh.publish("get_new_pid")+"*%s*0005*RTALK"%(self.imei) MD5_SIGN = self.pack_MD5_head(send_data) data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1]) - print("AGTALK:send data:%s"%(data)) + print("RTALK:send data:%s"%(data)) # print("WLKEY!!!!!!!!!!!!!") # 通过socket发送到服务器端 EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) @@ -2600,8 +2605,9 @@ class RTALK_ProtoCol(ProtoCol):#app拒接视频通话 msg_tmp_d = msg_tmp.split(',') screen_NAME = EventMesh.publish("get_screen_NAME") if screen_NAME != None: - if screen_NAME == "vedioing" or screen_NAME == "voiceing" or screen_NAME == "video_outcall" or screen_NAME == "vedio_incall" or screen_NAME == "voice_incall": - # EventMesh.publish("close_jrtc_event") + if screen_NAME == "vedioing" or screen_NAME == "voiceing" or screen_NAME == "video_outcall" \ + or screen_NAME == "vedio_incall" or screen_NAME == "voice_incall" or screen_NAME == "voice_outcall": + EventMesh.publish("close_jrtc_event",None) EventMesh.publish("set_UI_high_priority", 0) EventMesh.publish("return_prev_screen") diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py index 1232a452..55dfb19a 100644 --- a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py @@ -8119,6 +8119,8 @@ class VoiceShowScreen(Screen):#正在语音通话中 self.second_count = 0 self.time_out = 0 self.meta_type = "popup" + EventMesh.subscribe("set_dev_end_video",self.set_dev_end_video) + EventMesh.subscribe("get_dev_end_video",self.get_dev_end_video) def initialization(self): @@ -8197,6 +8199,12 @@ class VoiceShowScreen(Screen):#正在语音通话中 EventMesh.publish("close_jrtc_event") EventMesh.publish("return_prev_screen") + + def get_dev_end_video(self,event,msg):#手表挂断app + return self.statu_open + + def set_dev_end_video(self,event,msg):#手表挂断app + self.statu_open = msg def fun(self,*argc): EventMesh.publish("system_sleep_rest")#防止黑屏 @@ -8212,24 +8220,10 @@ class VoiceShowScreen(Screen):#正在语音通话中 self.second_count+=1 self.show_time() - # print("call_state",call_state) - if call_state == 0 and self.statu_open == 0: - self.timer.stop() - - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - # EventMesh.publish("load_screen", {"screen": "main_menu"}) - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("close_jrtc_event") - EventMesh.publish("return_prev_screen") - - return if call_state != 5: self.time_out+=1 - if self.time_out >= 60 or (call_state == 0 and self.time_out >= 5): + if self.time_out >= 60 or (call_state == 0 and self.statu_open == 0 and self.second_count != 0 and self.time_out >= 5 and EventMesh.publish("get_jrtc_init_state") == 1): self.time_out = 0 self.timer.stop() @@ -8367,8 +8361,8 @@ video_img_test = None def jrtc_cb(close_sta): print("jrtc callback:", close_sta) if close_sta == 0 or close_sta == 1: - pass - # jrtc.close(0) + jrtc.close(0) + jrtc.set_callback(jrtc_cb) class VedioShowScreen(Screen):#正在视频通话中 # @@ -8383,51 +8377,66 @@ class VedioShowScreen(Screen):#正在视频通话中 self.show_label = 0 self.second_count = 0 self.time_out = 0 + self.jrtc_init_state = 0 self.meta_type = "popup" EventMesh.subscribe("open_vedio_infor",self.open_vedio_infor) EventMesh.subscribe("close_jrtc_event",self.close_jrtc_event) + EventMesh.subscribe("clear_jrtc_init_state",self.clear_jrtc_init_state)#清楚jrtcinit标志防止重复init + EventMesh.subscribe("get_jrtc_init_state",self.get_jrtc_init_state)#获取jrtcinit标志防止重复init def open_vedio_infor(self,event,msg): - call_id = EventMesh.publish("get_vedio_call_id")#对方的账号 - meet_id = EventMesh.publish("get_vedio_meet_id")#共有的会议id - call_type = EventMesh.publish("get_vedio_call_type")#呼叫类型 - tokens_data = EventMesh.publish("get_vedio_tokens_data")#tookens数据#云米平台不需要tokens - - - - # data = ['6951832', '876226002021444', '1', '01lqlyqzQ4Gozdz8OJv1Mij2Y3PBq2y3+rtIA26Ge+m2QHTc/Vk=gufkGNMBiYhPjbq1tLCwtLKysLKws7a2tg=='] - jrtc.init() - # jrtc.config_server("119.3.54.56:1050")#测试服地址 - tokens = str(tokens_data) - appkey = "efe9f8800a39d96244234097"#小见 - uid_key = "25v9C652123QL3N8" - - # appkey = "249e7d505516af0a7ed44097" - # uid_key = "qQI4gkB9FxH8J2cb" - imei = EventMesh.publish(constants.EVENT.GET_IMEI) - oneself_id = str(imei)#自己的账号默认是imei号 - jrtc.config(appkey,oneself_id,uid_key,tokens)#只初始化一次发起通话 - uid = str(call_id) - ticket = str(meet_id) - - print("uid ",uid,ticket,oneself_id) - #jrtc.set_rotate(0) - if call_type == 0: - jrtc.open(uid,ticket,[],[]) - else: - jrtc.open(uid,ticket,[15,129,128,128],[15,120,240,320]) + if self.jrtc_init_state == 0: + self.jrtc_init_state = 1 + EventMesh.publish("set_dev_end_video",0) + call_id = EventMesh.publish("get_vedio_call_id")#对方的账号 + meet_id = EventMesh.publish("get_vedio_meet_id")#共有的会议id + call_type = EventMesh.publish("get_vedio_call_type")#呼叫类型 + tokens_data = EventMesh.publish("get_vedio_tokens_data")#tookens数据#云米平台不需要tokens + + # jrtc.init() + # jrtc.config_server("119.3.54.56:1050") + # jrtc.config("e99697f86096a74dbf635096", "us145a", "1234567890abcdef", "") + # jrtc.open("us144a", "",[15,129,128,128],[15,120,240,320]) + # jrtc.set_cam_angle(jrtc.CAM_ROTATE_180) + + # data = ['6951832', '876226002021444', '1', '01lqlyqzQ4Gozdz8OJv1Mij2Y3PBq2y3+rtIA26Ge+m2QHTc/Vk=gufkGNMBiYhPjbq1tLCwtLKysLKws7a2tg=='] + jrtc.init() + tokens = str(tokens_data) + appkey = "efe9f8800a39d96244234097"#小见 + uid_key = "25v9C652123QL3N8" + + # appkey = "249e7d505516af0a7ed44097" + # uid_key = "qQI4gkB9FxH8J2cb" + imei = EventMesh.publish(constants.EVENT.GET_IMEI) + oneself_id = str(imei)#自己的账号默认是imei号 + jrtc.config(appkey,oneself_id,uid_key,tokens)#只初始化一次发起通话 + uid = str(call_id) + ticket = str(meet_id) + + print("uid ",uid,ticket,oneself_id) + #jrtc.set_rotate(0) + if call_type == 0:#语音通话不需要设置参数 + jrtc.open(uid,ticket,[],[]) + else: + jrtc.open(uid,ticket,[15,129,128,128],[15,120,240,320]) + jrtc.set_cam_angle(jrtc.CAM_ROTATE_180) + def close_jrtc_event(self,event,msg): - call_state = jrtc.get_state() - # print("close_jrtc_event1",call_state) - # jrtc.remove_img() - # print("close_jrtc_event2",call_state) + print("close_jrtc_event") + jrtc.close(0) - # print("close_jrtc_event3",call_state) + pass + def clear_jrtc_init_state(self,event,msg): + self.jrtc_init_state = 0 + pass + + def get_jrtc_init_state(self,event,msg): + return self.jrtc_init_state pass def initialization(self): - jrtc.set_rotate(jrtc.CAM_ROTATE_90) + global camera_video_answer_screen,video_img_test,camera_video_answer_btn_label,camera_video_answer_label,camera_video_answer_second_label,camera_video_answer_btn,vcamera_video_answer_btn_label if camera_video_answer_screen == None: camera_video_answer_screen = lv.obj() @@ -8474,12 +8483,9 @@ class VedioShowScreen(Screen):#正在视频通话中 self.meta = camera_video_answer_screen call_state = jrtc.get_state() - self.second_count = 0 self.statu_open = 0 - self.time_out = 0 - call_state = jrtc.get_state() EventMesh.publish("set_UI_high_priority", 1) if call_state == 5:#接通 @@ -8505,6 +8511,7 @@ class VedioShowScreen(Screen):#正在视频通话中 def close_cb(self,e): self.statu_open = 1 + EventMesh.publish("set_dev_end_video",1) call_id = str(EventMesh.publish("get_vedio_call_id"))# meet_id = str(EventMesh.publish("get_vedio_meet_id"))# call_type = int(EventMesh.publish("get_vedio_call_type"))# @@ -8529,27 +8536,13 @@ class VedioShowScreen(Screen):#正在视频通话中 video_img_test.clear_flag(lv.obj.FLAG.HIDDEN) self.second_count+=1 self.show_time() - # print("call_state",call_state) - if call_state == 0 and self.statu_open == 0: - self.timer.stop() - - call_id = str(EventMesh.publish("get_vedio_call_id"))# - meet_id = str(EventMesh.publish("get_vedio_meet_id"))# - call_type = int(EventMesh.publish("get_vedio_call_type"))# - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) - EventMesh.publish("set_UI_high_priority", 0) - EventMesh.publish("close_jrtc_event") - EventMesh.publish("return_prev_screen") - - return - + print("video call_state",call_state) if call_state != 5: self.time_out+=1 - if self.time_out >= 60 or (call_state == 0 and self.time_out >= 5): + if self.time_out >= 60 or (call_state == 0 and self.time_out >= 5 and self.second_count != 0 and self.jrtc_init_state == 1): self.time_out = 0 self.timer.stop() - + print("video call_state",call_state) call_id = str(EventMesh.publish("get_vedio_call_id"))# meet_id = str(EventMesh.publish("get_vedio_meet_id"))# call_type = int(EventMesh.publish("get_vedio_call_type"))# @@ -8558,11 +8551,8 @@ class VedioShowScreen(Screen):#正在视频通话中 EventMesh.publish("set_UI_high_priority", 0) EventMesh.publish("close_jrtc_event") EventMesh.publish("return_prev_screen") - - - def show_time(self): if self.second_count >= 99*60: @@ -8703,6 +8693,7 @@ class voiceInCallScreen(Screen):#语音通话打入中 self.call_timer.stop() self.aud.stop() EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("clear_jrtc_init_state") EventMesh.publish("open_vedio_infor") EventMesh.publish("load_screen", {"screen": "voiceing"}) @@ -8771,6 +8762,7 @@ class vedioCallingCallScreen(Screen):#视频通话打入中 self.pro_state = 0 self.meta = None self.timeout = 0 + EventMesh.subscribe("test_answer",self.test_answer) def initialization(self): global vedio_call_screen,vedio_call_img,vedio_call_name_label,vedio_call_answer,vedio_call_hangup,vedio_call_label @@ -8855,6 +8847,15 @@ class vedioCallingCallScreen(Screen):#视频通话打入中 self.call_timer.stop() self.aud.stop() EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("clear_jrtc_init_state") + EventMesh.publish("open_vedio_infor") + EventMesh.publish("load_screen", {"screen": "vedioing"}) + + def test_answer(self,event,msg): + self.call_timer.stop() + self.aud.stop() + EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("clear_jrtc_init_state") EventMesh.publish("open_vedio_infor") EventMesh.publish("load_screen", {"screen": "vedioing"}) @@ -8919,6 +8920,7 @@ class videoOutCallScreen(Screen):#正在拨号中...未打出 self.timer1 = osTimer() self.time_count = 0 self.second_count = 0 + self.answer = 0 def initialization(self): @@ -8978,6 +8980,7 @@ class videoOutCallScreen(Screen):#正在拨号中...未打出 self.time_count = 0 self.second_count = 0 + self.answer = 0 EventMesh.publish("set_UI_high_priority", 1) call_state = jrtc.get_state() # print("video_outcall",call_state) @@ -9010,7 +9013,7 @@ class videoOutCallScreen(Screen):#正在拨号中...未打出 pass def fun_cb(self,*argc): call_state = jrtc.get_state() - # print("video_outcall",call_state) + print("video_outcall",call_state) EventMesh.publish("system_sleep_rest")#防止黑屏 if call_state == 5: video_outcall_img_test.clear_flag(lv.obj.FLAG.HIDDEN) @@ -9019,9 +9022,11 @@ class videoOutCallScreen(Screen):#正在拨号中...未打出 video_outcall_call.set_pos(0, 50) self.second_count += 1 self.show_time() - if call_state != 5: + self.answer = 1 + + if call_state != 5:#未接通 1分钟未接通挂断或者 接通后app 网络不好也主动手表挂断 self.time_count+=1 - if self.time_count >= 1*60 or (call_state == 0 and self.time_count >= 5): + if self.time_count >= 1*60 or (call_state == 0 and self.time_count >= 5 and self.second_count != 0): self.time_count = 0 self.timer1.stop() call_id = str(EventMesh.publish("get_vedio_call_id"))# @@ -9059,6 +9064,164 @@ class videoOutCallScreen(Screen):#正在拨号中...未打出 def btn8_press(self): pass + +voice_outcall_screen = None +voice_outcall_img = None +voice_outcall_name = None +voice_outcall_hangup_imgbtn = None +voice_outcall_call = None +voice_outcall_img_test = None +voice_outcall_hangup_imgbtnlabel = None +class voiceOutCallScreen(Screen):#等待对方接接听中 + NAME = "voice_outcall" + + def __init__(self): + super().__init__() + self.meta = None + self.meta_type = "popup" + self.timer1 = osTimer() + self.time_count = 0 + self.second_count = 0 + self.answer = 0 + + + def initialization(self): + EventMesh.publish("set_UI_high_priority", 1) + self.time_count = 0 + global voice_outcall_screen,voice_outcall_img,voice_outcall_hangup_imgbtnlabel,voice_outcall_name ,voice_outcall_call,voice_outcall_hangup_imgbtn + if voice_outcall_screen == None: + voice_outcall_screen = lv.obj() + print("voice_outcall_screen") + voice_outcall_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + + voice_outcall_name = lv.label(voice_outcall_screen) + voice_outcall_name.set_pos(0, 20) + voice_outcall_name.set_size(LCD_X, 20) + voice_outcall_name.set_text(" ") + voice_outcall_name.set_long_mode(lv.label.LONG.DOT) + voice_outcall_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + voice_outcall_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + voice_outcall_call = lv.label(voice_outcall_screen) + voice_outcall_call.set_pos(0, 50) + voice_outcall_call.set_size(LCD_X, 40) + voice_outcall_call.set_text("正在等待对方接听中...") + voice_outcall_call.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + voice_outcall_call.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + voice_outcall_hangup_imgbtn = lv.img(voice_outcall_screen) + voice_outcall_hangup_imgbtn.set_size(32, 32) + voice_outcall_hangup_imgbtn.set_src("U:/static/hang_up.png") + voice_outcall_hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE) + voice_outcall_hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT) + voice_outcall_hangup_imgbtn.set_pos(48, 90) + + voice_outcall_hangup_imgbtnlabel = lv.label(voice_outcall_screen) + voice_outcall_hangup_imgbtnlabel.set_pos(18, 50) + voice_outcall_hangup_imgbtnlabel.set_text(" ") + voice_outcall_hangup_imgbtnlabel.set_size(90, 78) + voice_outcall_hangup_imgbtnlabel.add_flag(lv.obj.FLAG.CLICKABLE) + + voice_outcall_hangup_imgbtnlabel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), + lv.EVENT.SHORT_CLICKED, None) + + voice_outcall_hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)), + lv.EVENT.SHORT_CLICKED, None) + + + + self.meta = voice_outcall_screen + if voice_outcall_name != None: + voice_outcall_name.set_text(self.meta_info)#名称 + + self.time_count = 0 + self.second_count = 0 + self.answer = 0 + EventMesh.publish("set_UI_high_priority", 1) + call_state = jrtc.get_state() + # print("video_outcall",call_state) + if call_state == 5: + # video_outcall_img_test.clear_flag(lv.obj.FLAG.HIDDEN) + voice_outcall_name.set_text("正在通话中...")# + voice_outcall_name.set_pos(0, 20) + else: + # video_outcall_img_test.add_flag(lv.obj.FLAG.HIDDEN) + voice_outcall_call.set_text("正在等待对方接听中...") + voice_outcall_call.set_pos(0, 50) + voice_outcall_name.set_text(self.meta_info)#名称 + voice_outcall_name.set_pos(0, 20) + + self.timer1.start(1*1000,1,self.fun_cb) + + def post_processor_after_initialization(self): + pass + + def hangup(self,e): + self.timer1.stop() + call_id = str(EventMesh.publish("get_vedio_call_id"))# + meet_id = str(EventMesh.publish("get_vedio_meet_id"))# + call_type = int(EventMesh.publish("get_vedio_call_type"))# + EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) + # EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) + EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("load_screen", {"screen": "videolist"}) + + pass + def fun_cb(self,*argc): + call_state = jrtc.get_state() + print("voice_outcall",call_state) + EventMesh.publish("system_sleep_rest")#防止黑屏 + if call_state == 5: + voice_outcall_name.set_text("正在通话中...")# + voice_outcall_name.set_pos(0, 20) + voice_outcall_call.set_pos(0, 50) + self.second_count += 1 + self.show_time() + + + if call_state != 5: + self.time_count+=1 + if self.time_count >= 1*60 or (call_state == 0 and self.time_count >= 5 and self.second_count != 0): + self.time_count = 0 + self.timer1.stop() + call_id = str(EventMesh.publish("get_vedio_call_id"))# + meet_id = str(EventMesh.publish("get_vedio_meet_id"))# + call_type = int(EventMesh.publish("get_vedio_call_type"))# + EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) + # EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type]) + EventMesh.publish("set_UI_high_priority", 0) + EventMesh.publish("load_screen", {"screen": "videolist"}) + + def show_time(self): + + if self.second_count >= 99*60: + total_hour = self.second_count//3600#小时 + total_min = (self.second_count%3600)//60#分钟 + total_sec = (self.second_count%3600)%60#秒 + voice_outcall_call.set_text("{}:{}:{}".format("%02d"%(total_hour),"%02d"%(total_min),"%02d"%(total_sec))) + + else: + total_min = self.second_count//60 + total_sec = self.second_count%60 + voice_outcall_call.set_text("{}:{}".format("%02d"%(total_min),"%02d"%(total_sec))) + + def Close(self): + self.timer1.stop() + + def done_return(self): + pass + #EventMesh.publish("load_screen", {"screen": "main_menu"}) + + def btn1_release(self): + pass + #EventMesh.publish("load_screen", {"screen": "main_menu"}) + + def btn8_press(self): + pass + + + + videolist_screen = None videolist_cont = None videolist_top_title = None @@ -9117,10 +9280,10 @@ class videolistScreen(Screen): videolist_top_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) - videolist_none_label = lv.label(videolist_screen_list_screen) - videolist_none_label.set_pos(0, 20) + videolist_none_label = lv.label(videolist_screen) + videolist_none_label.set_pos(0, 60) videolist_none_label.set_size(LCD_X, 60) - videolist_none_label.set_text("无网络或者无SIM卡或者无添加账号") + videolist_none_label.set_text("无SIM卡或未添加账号") videolist_none_label.set_long_mode(lv.label.LONG.WRAP) videolist_none_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) videolist_none_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -9166,8 +9329,8 @@ class videolistScreen(Screen): if videolist_screen == None: return if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:#有卡时触发sos报警 无卡时自动关机 - self.videolist_detail_list.clear_flag(lv.obj.FLAG.HIDDEN) - videolist_none_label.add_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 + self.videolist_detail_list.add_flag(lv.obj.FLAG.HIDDEN) + videolist_none_label.clear_flag(lv.obj.FLAG.HIDDEN)#隐藏空文本 else: #读取json文件中的键作为label文本; if self.check_json == True and len(self.videobook) != 0: @@ -9247,7 +9410,8 @@ class videolistScreen(Screen): self.is_sliding = 0 if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机 msg_text = e.get_target().get_child(1).get_text() - EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) + # EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) + EventMesh.publish("load_screen", {"screen": "vedio_mode","meta":msg_text}) else: EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"}) @@ -9255,12 +9419,13 @@ class videolistScreen(Screen): def calling(self,msg_text): - _msg = msg_text - print("calling",_msg) - EventMesh.publish("set_vedio_call_id", _msg)# - EventMesh.publish("set_vedio_call_type", 1)# - EventMesh.publish(constants.PROTOCOL.AGTALK_SEND,[1,_msg]) - EventMesh.publish("load_screen", {"screen": "video_outcall","meta":_msg}) + pass + # _msg = msg_text + # print("calling",_msg) + # EventMesh.publish("set_vedio_call_id", _msg)# + # EventMesh.publish("set_vedio_call_type", 1)# + # EventMesh.publish(constants.PROTOCOL.AGTALK_SEND,[1,_msg]) + # EventMesh.publish("load_screen", {"screen": "video_outcall","meta":_msg}) def done_return(self): @@ -9277,7 +9442,163 @@ class videolistScreen(Screen): +video_select_mode_screen = None +video_select_mode_label1 = None +video_select_mode_label2 = None +video_select_mode_btn_label1 = None +video_select_mode_name = None +video_select_mode_btn =None +video_select_mode_btn1 = None +class videoModeScreen(Screen):#通话模式选择 + # + NAME = "vedio_mode" + + def __init__(self): + super().__init__() + self.meta = None + self.timer = osTimer() + self.meta_type = "popup" + self.count = 0 + self.is_sliding = 0 + + def initialization(self): + global video_select_mode_screen,video_select_mode_btn1,video_select_mode_btn,video_select_mode_label1,video_select_mode_label2,video_answer_btn_label1,video_select_mode_name + self.count = 0 + self.is_sliding = 0 + if video_select_mode_screen == None: + video_select_mode_screen = lv.obj() + print("video_select_mode_screen") + video_select_mode_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT) + + video_select_mode_name = lv.label(video_select_mode_screen) + video_select_mode_name.set_pos(0, 20) + video_select_mode_name.set_text(" ") + video_select_mode_name.set_size(128, 40) + video_select_mode_name.add_flag(lv.obj.FLAG.CLICKABLE) + video_select_mode_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + video_select_mode_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + video_select_mode_btn = lv.btn(video_select_mode_screen) + video_select_mode_btn.set_pos(4, 60) + video_select_mode_btn.set_size(120, 26) + video_select_mode_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.DEFAULT) + video_select_mode_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED) + video_select_mode_btn.set_style_radius(30,0) + + video_select_mode_label1 = lv.label(video_select_mode_btn) + video_select_mode_label1.set_text("语音通话") + video_select_mode_label1.set_size(128, 25) + video_select_mode_label1.set_pos(0,5) + video_select_mode_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + video_select_mode_label1.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) + + # video_select_mode_label1 = lv.label(video_select_mode_screen) + # video_select_mode_label1.set_pos(0, 60) + # video_select_mode_label1.set_text("语音通话") + # video_select_mode_label1.set_size(128, 30) + # video_select_mode_label1.add_flag(lv.obj.FLAG.CLICKABLE) + # video_select_mode_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + # video_select_mode_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + video_select_mode_btn1 = lv.btn(video_select_mode_screen) + video_select_mode_btn1.set_pos(4, 90) + video_select_mode_btn1.set_size(120, 26) + video_select_mode_btn1.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.DEFAULT) + video_select_mode_btn1.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED) + video_select_mode_btn1.set_style_radius(30,0) + + video_select_mode_label2 = lv.label(video_select_mode_btn1) + video_select_mode_label2.set_text("视频通话") + video_select_mode_label2.set_size(128, 25) + video_select_mode_label2.set_pos(0,5) + video_select_mode_label2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + video_select_mode_label2.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT) + + # video_select_mode_label2 = lv.label(video_select_mode_screen) + # video_select_mode_label2.set_pos(0, 90) + # video_select_mode_label2.set_text("视频通话") + # video_select_mode_label2.set_size(128, 38) + # video_select_mode_label2.add_flag(lv.obj.FLAG.CLICKABLE) + # video_select_mode_label2.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) + # video_select_mode_label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) + + self.meta = video_select_mode_screen + + video_select_mode_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_vedio_cb(e,0)), + lv.EVENT.SHORT_CLICKED, None) + video_select_mode_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_vedio_cb(e,0)), lv.EVENT.PRESSING, None) + + video_select_mode_btn1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_vedio_cb(e,1)), + lv.EVENT.SHORT_CLICKED, None) + video_select_mode_btn1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_vedio_cb(e,1)), lv.EVENT.PRESSING, None) + + if self.meta_info != None: + if len(str(self.meta_info)) != 0: + video_select_mode_name.set_text("{}".format(self.meta_info)) + else: + video_select_mode_name.set_text(" ") + else: + video_select_mode_name.set_text(" ") + + self.timer.start(1*1000,1,self.fun) + + + def fun(self,*argc): + self.count+=1 + if self.count <= 30: + EventMesh.publish("system_sleep_rest")#防止黑屏 + else: + self.timer.stop() + EventMesh.publish("return_prev_screen") + pass + def calling_vedio_cb(self,e,data):#视频通话 + code = e.get_code() + if code == lv.EVENT.PRESSING: + #print("PRESSING") + self.is_sliding += 1 + + elif code == lv.EVENT.SHORT_CLICKED: + #utime.sleep_ms(10) + print("1self.is_sliding",self.is_sliding) + if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件 + self.is_sliding = 0 + if data == 1: + msg_text = [self.meta_info,1] + EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) + else: + msg_text = [self.meta_info,0] + EventMesh.publish("publish_message_event_ui",{"func":self.calling,"data":msg_text}) + self.is_sliding = 0 + pass + + def calling(self,msg_text): + _msg = msg_text[0] + mode = msg_text[1] + print("calling",msg_text,_msg,mode) + if mode == 1:#0是语音 1是视频通话 + EventMesh.publish("load_screen", {"screen": "video_outcall","meta":_msg}) + else: + EventMesh.publish("load_screen", {"screen": "voice_outcall","meta":_msg}) + + EventMesh.publish("set_vedio_call_id", _msg)# + EventMesh.publish("set_vedio_call_type", mode)# + EventMesh.publish(constants.PROTOCOL.AGTALK_SEND,[mode,_msg]) + + def Close(self): + self.timer.stop() + + def done_return(self): + pass + EventMesh.publish("return_prev_screen") + + def btn1_release(self): + EventMesh.publish("return_prev_screen") + pass + + def btn8_press(self): + EventMesh.publish("return_prev_screen") + pass style_screen_calendar_1_extra_header_main_default = lv.style_t() diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py index 3849e742..bb2db901 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py @@ -25,7 +25,7 @@ import usys def server_init(server_type = None): #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为 if server_type == None: - server_type = 1 + server_type = 2 #print("server_init:server_type:{}".format(server_type)) d_server_addr = "api.xcloudtech.com" d_server_port = 9000 @@ -39,7 +39,14 @@ def server_init(server_type = None): # PID = "SZKW" elif server_type == 2: - d_server_addr = "8.134.110.49" + d_server_addr = "iot.socket.thisiot.com" + d_server_port = 9999 + d_md5_key = "SZYhyGhroQ3xFKFWZq1g" + d_PID = "oxLwDqcwJCtiPSRu" + + elif server_type == 3: + + d_server_addr = "8.134.110.49" d_server_port = 30346 d_md5_key = "3JyCjsw4ryXKzjzudayY" d_PID = "qAELPTKmFanR4RHe" diff --git a/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py b/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py index 098ae427..57271110 100644 --- a/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py +++ b/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py @@ -135,30 +135,30 @@ class BtnDevice(Abstract): self.pwk_count += 1 # if(self.pwk_count >= 1): #防抖100ms - if self.pwk_count > (15000//100): #长按 - self.pwk_count = 0 - self.pwk_press = 0 - self.__pwk_timer.stop() - self.GPIO26_flag = 0 - # print("power end") - Power.powerDown() - - return - elif self.pwk_count > (3000//100): #长按 - screen_NAME = EventMesh.publish("get_screen_NAME") - if screen_NAME != None: - if screen_NAME == "no_sim_screen" or screen_NAME == "imei_new": - if 1: - if self.GPIO26_flag == 0: - self.GPIO26_flag = 1 - Power.powerRestart() - return - if self.GPIO26_status == 1:#松开 - self.__pwk_timer.stop() - self.pwk_count = 0 - self.pwk_press = 0 - self.GPIO26_flag = 0 - return + # if self.pwk_count > (15000//100): #长按 + # self.pwk_count = 0 + # self.pwk_press = 0 + # self.__pwk_timer.stop() + # self.GPIO26_flag = 0 + # # print("power end") + # Power.powerDown() + + # return + if self.pwk_count > (5000//100): #长按 + # screen_NAME = EventMesh.publish("get_screen_NAME") + # if screen_NAME != None: + # if screen_NAME == "no_sim_screen" or screen_NAME == "imei_new": + # if 1: + if self.GPIO26_flag == 0: + self.GPIO26_flag = 1 + EventMesh.publish("load_screen", {"screen": "poweroff"}) + return + if self.GPIO26_status == 1:#松开 + self.__pwk_timer.stop() + self.pwk_count = 0 + self.pwk_press = 0 + self.GPIO26_flag = 0 + return if self.GPIO26_status == 1:#松开 self.__pwk_timer.stop() diff --git a/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/mgr.py index 732c017d..726005de 100644 --- a/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/mgr.py @@ -1161,7 +1161,7 @@ class DeviceInfoManager(Abstract): if self.no_smi_count > (15*60) and self.no_smi_state == 0: self.no_smi_count = 0 self.no_smi_state = 1 - EventMesh.publish("load_screen", {"screen": "no_sim_auto_screen"}) + # EventMesh.publish("load_screen", {"screen": "no_sim_auto_screen"}) else: self.no_smi_count = 0 self.no_smi_state = 0 diff --git a/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/ui.py b/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/ui.py index 67c97277..1f6c3baa 100644 --- a/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/ui.py +++ b/2.sdk/project/K5_DDY/sdk/services/microPython/ports/quectel/core/ui.py @@ -1414,10 +1414,10 @@ class NoSimAutoScreen(Screen):#无sim卡是否关机 def fun(self,*argc): EventMesh.publish("system_sleep_rest")#防止黑屏 self.count+=1 - if self.count > 30: + if self.count >= 30: self.count = 0 self.timer.stop() - EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"}) + EventMesh.publish("return_prev_screen") def Close(self): @@ -6766,7 +6766,7 @@ class no_sim_screenScreen(Screen): self.count = 0 def initialization(self): - EventMesh.publish("set_UI_high_priority",1) + #EventMesh.publish("set_UI_high_priority",1) global no_sim_screen,no_sim_screenn_label,no_sim_screenn_img if no_sim_screen == None : no_sim_screen = lv.obj() @@ -6785,7 +6785,7 @@ class no_sim_screenScreen(Screen): no_sim_screenn_label = lv.label(no_sim_screen) no_sim_screenn_label.set_pos(0, 220) no_sim_screenn_label.set_size(240, 80) - no_sim_screenn_label.set_text("请插入SIM卡,插卡后长按【POWER】键3S重启") + no_sim_screenn_label.set_text("请插入SIM卡,长按【开关】5S关机再重启") no_sim_screenn_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) no_sim_screenn_label.set_long_mode(lv.label.LONG.WRAP) no_sim_screenn_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) @@ -6817,12 +6817,15 @@ class no_sim_screenScreen(Screen): pass def btn8_press(self): - flag = EventMesh.publish("get_lcd_state") - if flag == 1: - EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) - else: - EventMesh.publish(constants.EVENT.SYSTEM_UP) + EventMesh.publish("set_UI_high_priority",0) + EventMesh.publish("load_screen", {"screen": "main_menu"}) pass + # flag = EventMesh.publish("get_lcd_state") + # if flag == 1: + # EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) + # else: + # EventMesh.publish(constants.EVENT.SYSTEM_UP) + # pass def btn1_press(self): pass @@ -6886,7 +6889,7 @@ class ImeiNewScreen(Screen): EventMesh.subscribe("get_login_exit",self.get_login_exit) def initialization(self): - EventMesh.publish("set_UI_high_priority",1) + #EventMesh.publish("set_UI_high_priority",1) imei = EventMesh.publish(constants.EVENT.GET_IMEI) iccid = str(sim.getIccid()) @@ -6956,11 +6959,8 @@ class ImeiNewScreen(Screen): EventMesh.publish(constants.EVENT.SYSTEM_UP) def btn8_press(self): - flag = EventMesh.publish("get_lcd_state") - if flag == 1: - EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) - else: - EventMesh.publish(constants.EVENT.SYSTEM_UP) + EventMesh.publish("set_UI_high_priority",0) + EventMesh.publish("load_screen", {"screen": "main_menu"}) no_network_screen = None @@ -6978,7 +6978,7 @@ class no_network_Screen(Screen):#开机未联网 def initialization(self): - EventMesh.publish("set_UI_high_priority",1) + #EventMesh.publish("set_UI_high_priority",1) global no_network_screen ,no_network_screen_label,no_network_screen_img if no_network_screen == None : no_network_screen = lv.obj() @@ -7059,12 +7059,9 @@ class no_network_Screen(Screen):#开机未联网 pass def btn8_press(self): - flag = EventMesh.publish("get_lcd_state") - if flag == 1: - EventMesh.publish(constants.EVENT.SYSTEM_SLEEP) - else: - EventMesh.publish(constants.EVENT.SYSTEM_UP) - pass + EventMesh.publish("set_UI_high_priority",0) + EventMesh.publish("load_screen", {"screen": "main_menu"}) + def btn1_press(self): pass