EventMesh.publish("load_screen", {"screen": "main_menu"})
-class TKS_ProtoCol(ProtoCol):
- """微聊"""
- TYPE = "TKS"
-
-
- def send(self, event, msg):
- if len(str(msg)) == 1:
- len_size = len(str(msg))+len("TKS,")
- # 实例:[XT*334588000000156*0009*TK,1]
- send_data = self.PID+"*%s*%04X*TKS"%(self.imei,len_size)
- MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS")
- MD5_SIGN = self.pack_MD5_head(MD5_head_data)
- data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
- print("TKS:data:%s"%(data))
- # 通过socket发送到服务器端
- EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
-
- else:
- # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
- #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
- arm_data = msg[1]
- arm_sec = msg[0]
- # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec))
-
- arm = bytearray()
- for i in range(len(arm_data)):
- if arm_data[i] == 0x7d:
- arm.extend(b'\x7d\x01')
- elif arm_data[i] == 0x5b :
- arm.extend(b'\x7d\x02')
- elif arm_data[i] == 0x5d :
- arm.extend(b'\x7d\x03')
- elif arm_data[i] == 0x2c :
- arm.extend(b'\x7d\x04')
- elif arm_data[i] == 0x2a :
- arm.extend(b'\x7d\x05')
- else :
- arm.append(arm_data[i])
-
- datalen = len(arm) + len(str("TKS,"))+len(str(arm_sec))+1
- #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
- send_data = bytearray("SZKW*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
- send_data.extend(arm)
- MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS")
- MD5_SIGN = self.pack_MD5_head(MD5_head_data)
- data = bytearray('[')
- data.extend(MD5_SIGN)
- data.extend(send_data)
- data.extend(']')
- # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data))
- EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
-
-
- def recv(self, event, msg):
- """
-
- ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
- @param event: 微聊
- @param msg: 接收到的下行数据
- [SZKW*860132060004322*20BD*TK,#!AMR...]
- """
- #Wechat_log("K_ProtoCol:recv:data:{}".format(msg))
- # print("TK recv:{}".format(msg))
- msg_tmp = msg.decode('ascii')
- str = msg_tmp.split('TKS,')
- # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR")))
- if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据
- # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg)))
- arm_data = bytearray(str[1])#获取amr输出
- get_wechat_data = EventMesh.publish("get_wechat_data")
-
- MXA_MSG = get_wechat_data[0]
- wechat_recode_list = get_wechat_data[1]
- wechat_num = wechat_recode_list["num"]
- # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
-
- if wechat_num >= MXA_MSG:
- wechat_num = 0
- if wechat_num == 0:
- wechat_num += 1
- elif wechat_num > 0:
- wechat_num += 1
-
-
- Wechat_log("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list))
- wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3)
- wechat_recode_list['num'] = wechat_num
- EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
- #写语音文件数据
- screen_NAME = EventMesh.publish("get_screen_NAME")
- get_lcd_state = EventMesh.publish("get_lcd_state")
- if screen_NAME != "wechat" or get_lcd_state == 0:
- EventMesh.publish("load_screen", {"screen": "wechat_popup"})
- else:
- EventMesh.publish("wechat_updata_list_show")
- # path = "/ext/static/storage_file/audio_amr/amr/{}.amr".format(wechat_num)
- path = "/ext/static/storage_file/{}.amr".format(wechat_num)
- with open(path,"w") as fd:
- arm = bytearray()
- j = 0
- for i in range(len(arm_data)):
- if arm_data[j] == 0x7d and arm_data[j+1] == 0x01:
- arm.extend(b'\x7d')
- j+=1
- elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02:
- arm.extend(b'\x5b')
- j+=1
- elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03:
- arm.extend(b'\x5d')
- j+=1
- elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04:
- arm.extend(b'\x2c')
- j+=1
- elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05:
- arm.extend(b'\x2a')
- j+=1
- else :
- arm.append(arm_data[j])
- j+=1
- if j >= len(arm_data):
- break
- fd.write(arm)
- EventMesh.publish(constants.PROTOCOL.TKS_SEND,1)
-
-
-
-
-
-class TK_ProtoCol(ProtoCol):
- """微聊"""
- TYPE = "TK"
-
-
- def send(self, event, msg):
- # print("TK send:{}".format(msg))
- if len(str(msg)) == 1:
-
- len_size = len(str(msg))+len("TK,")
- # 实例:[XT*334588000000156*0009*TK,1]
- send_data = self.PID+"*%s*%04X*TK"%(self.imei,len_size)
- MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TK")
- MD5_SIGN = self.pack_MD5_head(MD5_head_data)
- data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
- print("TK:data:%s"%(data))
- # 通过socket发送到服务器端
- EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
-
- else:
- # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
- #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
- arm_data = msg[1]
- arm_sec = msg[0]
- # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec))
-
- arm = bytearray()
- for i in range(len(arm_data)):
- if arm_data[i] == 0x7d:
- arm.extend(b'\x7d\x01')
- elif arm_data[i] == 0x5b :
- arm.extend(b'\x7d\x02')
- elif arm_data[i] == 0x5d :
- arm.extend(b'\x7d\x03')
- elif arm_data[i] == 0x2c :
- arm.extend(b'\x7d\x04')
- elif arm_data[i] == 0x2a :
- arm.extend(b'\x7d\x05')
- else :
- arm.append(arm_data[i])
-
- datalen = len(arm) +len(str("TK,"))+len(str(arm_sec))+1
- #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
- send_data = bytearray("SZKW*%s*%04X*TK,%d,"%(self.imei,datalen,arm_sec))
- send_data.extend(arm)
- MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TK")
- MD5_SIGN = self.pack_MD5_head(MD5_head_data)
- data = bytearray('[')
- data.extend(MD5_SIGN)
- data.extend(send_data)
- data.extend(']')
- # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data))
- EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
-
-
- def recv(self, event, msg):
- """
-
- ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
- @param event: 微聊
- @param msg: 接收到的下行数据
- [SZKW*860132060004322*20BD*TK,#!AMR...]
- """
- #Wechat_log("K_ProtoCol:recv:data:{}".format(msg))
- # print("TK recv:{}".format(msg))
- msg_tmp = msg.decode('ascii')
- str = msg_tmp.split('TK,')
- # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR")))
- if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据
- # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg)))
- arm_data = bytearray(str[1])#获取amr输出
- get_wechat_data = EventMesh.publish("get_wechat_data")
-
- MXA_MSG = get_wechat_data[0]
- wechat_recode_list = get_wechat_data[1]
- wechat_num = wechat_recode_list["num"]
- # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
-
- if wechat_num >= MXA_MSG:
- wechat_num = 0
- if wechat_num == 0:
- wechat_num += 1
- elif wechat_num > 0:
- wechat_num += 1
-
-
- Wechat_log("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list))
- wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3)
- wechat_recode_list['num'] = wechat_num
- EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
- #写语音文件数据
- screen_NAME = EventMesh.publish("get_screen_NAME")
- get_lcd_state = EventMesh.publish("get_lcd_state")
- if screen_NAME != "wechat" or get_lcd_state == 0:
- EventMesh.publish("load_screen", {"screen": "wechat_popup"})
- else:
- EventMesh.publish("wechat_updata_list_show")
- # path = "/ext/static/storage_file/audio_amr/amr/{}.amr".format(wechat_num)
- path = "/ext/static/storage_file/{}.amr".format(wechat_num)
- with open(path,"w") as fd:
- arm = bytearray()
- j = 0
- for i in range(len(arm_data)):
- if arm_data[j] == 0x7d and arm_data[j+1] == 0x01:
- arm.extend(b'\x7d')
- j+=1
- elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02:
- arm.extend(b'\x5b')
- j+=1
- elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03:
- arm.extend(b'\x5d')
- j+=1
- elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04:
- arm.extend(b'\x2c')
- j+=1
- elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05:
- arm.extend(b'\x2a')
- j+=1
- else :
- arm.append(arm_data[j])
- j+=1
- if j >= len(arm_data):
- break
- fd.write(arm)
- EventMesh.publish(constants.PROTOCOL.TK_SEND,1)
-
-
-
-
-
-class MESSAGE_ProtoCol(ProtoCol):
- """微聊"""
- TYPE = "MESSAGE"
-
-
- def send(self, event, msg):
-
- #[XT*334588000000156*0007*MESSAGE]
- send_data = "SZKW*%s*0007*MESSAGE"%(self.imei)
- MD5_SIGN = self.pack_MD5_head(send_data)
- data = "[%s%s]"%(str(MD5_SIGN),send_data)
- #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
- # 通过socket发送到服务器端
- EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
-
- def recv(self, event, msg):
- """
-
- @param event: 微聊文字
- @param msg: 接收到的下行数据
- """
- msg = msg[1:-1]
-
- msg_s = msg.decode('ascii')
- msg_s = msg_s.split(',')
- msg_s = msg_s[1]
- # Wechat_log("msg_tmp:len:{}\r\n data:{}".format(len(msg_s),msg_s))
-
-
- get_wechat_data = EventMesh.publish("get_wechat_data")
-
- MXA_MSG = get_wechat_data[0]
- wechat_recode_list = get_wechat_data[1]
- wechat_num = wechat_recode_list["num"]
- # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
-
- if wechat_num >= MXA_MSG:
- wechat_num = 0
- if wechat_num == 0:
- wechat_num += 1
- elif wechat_num > 0:
- wechat_num += 1
- msg_txt = {}
- # 0 1 2 3
- Wechat_log("wechat_num:init {}".format(wechat_num))
- msg_txt = UnicodeHexStr_To_Utf8Str(msg_s)
- # Wechat_log("msg_txt:{}".format(msg_txt))
- wechat_recode_list["%02d"%(wechat_num)] = "T:{}".format(msg_txt)
- wechat_recode_list['num'] = wechat_num
- EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
- # Wechat_log("wechat_recode_list:len data:{}".format(wechat_recode_list))
- EventMesh.publish(constants.PROTOCOL.MESSAGE_SEND)
- screen_NAME = EventMesh.publish("get_screen_NAME")
- get_lcd_state = EventMesh.publish("get_lcd_state")
- if screen_NAME != "wechat" or get_lcd_state == 0:
- EventMesh.publish("load_screen", {"screen": "wechat_popup"})
- else:
- EventMesh.publish("wechat_updata_list_show")
-
-
-
-
-
from mgr import schoolclassManager,setCallStateManager,setclassTimeManager,setSmsIndexManager,ConfigStoreManager,testSmsSetIPManager,playPowerAudioManager,sosInfoCallManager,getBootOffManager,getSosFlagManager,CountdownManager, LocationManager, getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\
AddrBookManager,MsgdetailManager,PhoneCallingManager,getOldTimeManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager
from motor import motorEventManager
- from appWechat import WechatScreen,TKS_ProtoCol,TK_ProtoCol,MESSAGE_ProtoCol,NewWechatPopupScreen
+ from appWechat import WechatScreen,NewWechatPopupScreen
# from protocol import REMOVE_ProtoCol,HELP_ProtoCol,FALLDOWN_ProtoCol,AL_ProtoCol,bldstart_ProtoCol,blood_ProtoCol,SCREEN_SHOWProtoCol,btemp2_ProtoCol,bodytemp2_ProtoCol,TEMP_Hour_ProtoCol,SILENCETIMEFS_ProtoCol,KEYBRD_ProtoCol,SILENCETIME2_ProtoCol,WLKEY_ProtoCol,LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\
# TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,Time_ProtoCol,\
pcr.add_support(protocol.bodytemp2_ProtoCol())
pcr.add_support(protocol.btemp2_ProtoCol())
pcr.add_support(protocol.SCREEN_SHOWProtoCol())
- pcr.add_support(TKS_ProtoCol())
- pcr.add_support(TK_ProtoCol())
- pcr.add_support(MESSAGE_ProtoCol())
+ pcr.add_support(protocol.TKS_ProtoCol())
+ pcr.add_support(protocol.TK_ProtoCol())
+ pcr.add_support(protocol.MESSAGE_ProtoCol())
pcr.add_support(protocol.blood_ProtoCol())
pcr.add_support(protocol.bldstart_ProtoCol())
def set_sos_info_call(self, event, msg):
hangup_mode = EventMesh.publish("get_hangup_mode")
if hangup_mode == 1:
+
EventMesh.publish("set_sos_flag",0)
EventMesh.publish("set_sos_num",0)
EventMesh.publish("set_hangup_mode",0)
+
print('hangup_mode disconnect',hangup_mode)
sos_flag = EventMesh.publish("get_sos_flag")
print('voicecall sos_flag',sos_flag)
# print("number:{} number_len :{}".format(number,len(number)))
EventMesh.publish("set_sos_num",num)
if len(number) == 1:
- EventMesh.publish("set_callnumer_cb",number[0])
- print("phone 1")
+ if len(number[0]) != 0:
+ EventMesh.publish("set_callnumer_cb",number[0])
+ print("phone 1")
elif len(number) == 2:
if num == 1 or num == 3:
print("phone 2")
- EventMesh.publish("set_callnumer_cb",number[1])
+ if len(number[1]) != 0:
+ EventMesh.publish("set_callnumer_cb",number[1])
elif num == 2:
print("phone 3")
- EventMesh.publish("set_callnumer_cb",number[0])
+ if len(number[0]) != 0:
+ EventMesh.publish("set_callnumer_cb",number[0])
elif len(number) == 3:
if num == 1 or num == 4:
- EventMesh.publish("set_callnumer_cb",number[1])
+ if len(number[1]) != 0:
+ EventMesh.publish("set_callnumer_cb",number[1])
print("phone 4")
elif num == 2 or num == 5:
print("phone 5")
- EventMesh.publish("set_callnumer_cb",number[2])
+ if len(number[2]) != 0:
+ EventMesh.publish("set_callnumer_cb",number[2])
elif num == 3:
- print("phone 6")
- EventMesh.publish("set_callnumer_cb",number[0])
+ if len(number[0]) != 0:
+ print("phone 6")
+ EventMesh.publish("set_callnumer_cb",number[0])
WL_timer = osTimer()
def WL_timer_cb(*args):
sos_flag = EventMesh.publish("get_sos_flag")
if sos_flag == 1:
sos_flag = 0
+ EventMesh.publish("close_sos_timer")
EventMesh.publish("set_sos_flag",0)
+ EventMesh.publish("set_sos_num",0)
print('voicecall connected, PhoneNO.: ', args[6])
size_len = len(str(args[6]))
EventMesh.subscribe("set_hangup_mode", self.set_hangup_mode)
EventMesh.subscribe("get_hangup_mode", self.get_hangup_mode)#获取挂断方式 是对方挂断 还是手表按键主动挂断
+ EventMesh.subscribe("send_sos_to_app",self.send_sos_to_app)
+
+ EventMesh.subscribe("close_sos_timer",self.close_sos_timer)
+
def get_hangup_mode(self, event, msg): # 1是设备端手表主动挂断 0是手机端
return self.hangup_mode
#voiceCall.callStart(str(number[0]))
def set_callnumer_cb(self, event, msg):
-
- self.callnumer = msg
- self.call_timer.start(8000, 0, self.call_timer_cb)#延迟8S 继续拨打
+ if self.sos_flag == 1:
+ print("sos set_callnumer_cb!!!")
+ self.callnumer = msg
+ self.call_timer.start(8000, 0, self.call_timer_cb)#延迟8S 继续拨打
+
+ def send_sos_to_app(self,event,msg):
+ sos_state = EventMesh.publish("get_dev_state")
+ tmp = 1 << 16
+ sos_state = sos_state|tmp #第16位=1
+ EventMesh.publish("set_dev_state",sos_state)
+ EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位
+ pass
def call_timer_cb(self, *args, **kwargs):
- if self.sos_flag == 1:
- sos_state = EventMesh.publish("get_dev_state")
- tmp = 1 << 16
- sos_state = sos_state|tmp #第16位=1
- EventMesh.publish("set_dev_state",sos_state)
-
- EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位
- # print("call_timer_cb:{}".format(self.callnumer))
- EventMesh.publish("save_phonename",str(self.callnumer))
- EventMesh.publish("save_phonenum",str(self.callnumer))
- EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
+ print("sos call_timer_cb!!!",self.sos_flag)
+ EventMesh.publish("save_phonename",str(self.callnumer))
+ EventMesh.publish("save_phonenum",str(self.callnumer))
+ EventMesh.publish("send_sos_to_app")
+ print("sos call_timer_cb!!!")
+ EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
+
+ def close_sos_timer(self,event,msg):
+ self.call_timer.stop()
+ pass
+
def get_sos_flag(self, event, msg):
return self.sos_flag
END = ";" + chr(0x01)
#PID = "SZKW"
#PID = "qAELPTKmFanR4RHe"
-
+ PID = ''
+ md5_key = ''
def __init__(self):
self.content = None
self.check_sum = None
# print("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp))
#b'[SZKW*860132060006970*0015*sosHome_dial_ProtoCol,15521469561,10086,15521469561]'
i = 0
- for i in range(len(msg_tmp)-1):
- # print("sos:send data :{}".format(msg_tmp[i+1]))
+ num = 0
+ count = 0
+ print("sos msg_tmp",msg_tmp)
+ if len(msg_tmp) > 4:
+ num = 3
+ else:
+ num = len(msg_tmp)-1
+ data = []
+ for i in range(num):
+ print("sos:send data :{}".format(msg_tmp[i+1]))
if len(msg_tmp[i+1]) != 0:
EventMesh.publish("set_storage_config",["SOS_NUMBER{}".format(i+1),msg_tmp[i+1]])
- # print("read_data:{} msg_tmp:{}".format(read_data,msg_tmp[i+1]))
-
- if (len(msg_tmp)-1) == 3:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2],msg_tmp[3]])
- elif (len(msg_tmp)-1) == 2:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2]])
- elif (len(msg_tmp)-1) == 1:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1]])
+ data.append(str(msg_tmp[i+1]))
+ count+=1
+ print("data:{}".format(data))
+ EventMesh.publish("set_dial_sos_number",data)
EventMesh.publish(constants.PROTOCOL.SOS_SEND)
+class TKS_ProtoCol(ProtoCol):
+ """微聊"""
+ TYPE = "TKS"
+
+
+ def send(self, event, msg):
+ if len(str(msg)) == 1:
+ len_size = len(str(msg))+len("TKS,")
+ # 实例:[XT*334588000000156*0009*TK,1]
+ send_data = self.PID+"*%s*%04X*TKS"%(self.imei,len_size)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
+ print("TKS:data:%s"%(data))
+ # 通过socket发送到服务器端
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+ else:
+ # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
+ #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
+ arm_data = msg[1]
+ arm_sec = msg[0]
+ # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec))
+
+ arm = bytearray()
+ for i in range(len(arm_data)):
+ if arm_data[i] == 0x7d:
+ arm.extend(b'\x7d\x01')
+ elif arm_data[i] == 0x5b :
+ arm.extend(b'\x7d\x02')
+ elif arm_data[i] == 0x5d :
+ arm.extend(b'\x7d\x03')
+ elif arm_data[i] == 0x2c :
+ arm.extend(b'\x7d\x04')
+ elif arm_data[i] == 0x2a :
+ arm.extend(b'\x7d\x05')
+ else :
+ arm.append(arm_data[i])
+
+ datalen = len(arm) + len(str("TKS,"))+len(str(arm_sec))+1
+ #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
+ send_data = bytearray(self.PID+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
+ send_data.extend(arm)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = bytearray('[')
+ data.extend(MD5_SIGN)
+ data.extend(send_data)
+ data.extend(']')
+ # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data))
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+
+ def recv(self, event, msg):
+ """
+
+ ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+ @param event: 微聊
+ @param msg: 接收到的下行数据
+ [SZKW*860132060004322*20BD*TK,#!AMR...]
+ """
+ #Wechat_log("K_ProtoCol:recv:data:{}".format(msg))
+ # print("TK recv:{}".format(msg))
+ msg_tmp = msg.decode('ascii')
+ str = msg_tmp.split('TKS,')
+ # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR")))
+ if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据
+ # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg)))
+ arm_data = bytearray(str[1])#获取amr输出
+ get_wechat_data = EventMesh.publish("get_wechat_data")
+
+ MXA_MSG = get_wechat_data[0]
+ wechat_recode_list = get_wechat_data[1]
+ wechat_num = wechat_recode_list["num"]
+ # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+
+ if wechat_num >= MXA_MSG:
+ wechat_num = 0
+ if wechat_num == 0:
+ wechat_num += 1
+ elif wechat_num > 0:
+ wechat_num += 1
+
+
+ print("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list))
+ wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3)
+ wechat_recode_list['num'] = wechat_num
+ EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
+ #写语音文件数据
+ screen_NAME = EventMesh.publish("get_screen_NAME")
+ get_lcd_state = EventMesh.publish("get_lcd_state")
+ if screen_NAME != "wechat" or get_lcd_state == 0:
+ EventMesh.publish("load_screen", {"screen": "wechat_popup"})
+ else:
+ EventMesh.publish("wechat_updata_list_show")
+ # path = "/ext/static/storage_file/audio_amr/amr/{}.amr".format(wechat_num)
+ path = "/ext/static/storage_file/{}.amr".format(wechat_num)
+ with open(path,"w") as fd:
+ arm = bytearray()
+ j = 0
+ for i in range(len(arm_data)):
+ if arm_data[j] == 0x7d and arm_data[j+1] == 0x01:
+ arm.extend(b'\x7d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02:
+ arm.extend(b'\x5b')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03:
+ arm.extend(b'\x5d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04:
+ arm.extend(b'\x2c')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05:
+ arm.extend(b'\x2a')
+ j+=1
+ else :
+ arm.append(arm_data[j])
+ j+=1
+ if j >= len(arm_data):
+ break
+ fd.write(arm)
+ EventMesh.publish(constants.PROTOCOL.TKS_SEND,1)
+
+
+
+
+
+class TK_ProtoCol(ProtoCol):
+ """微聊"""
+ TYPE = "TK"
+
+
+ def send(self, event, msg):
+ # print("TK send:{}".format(msg))
+ if len(str(msg)) == 1:
+
+ len_size = len(str(msg))+len("TK,")
+ # 实例:[XT*334588000000156*0009*TK,1]
+ send_data = self.PID+"*%s*%04X*TK"%(self.imei,len_size)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TK")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
+ print("TK:data:%s"%(data))
+ # 通过socket发送到服务器端
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+ else:
+ # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
+ #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
+ arm_data = msg[1]
+ arm_sec = msg[0]
+ # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec))
+
+ arm = bytearray()
+ for i in range(len(arm_data)):
+ if arm_data[i] == 0x7d:
+ arm.extend(b'\x7d\x01')
+ elif arm_data[i] == 0x5b :
+ arm.extend(b'\x7d\x02')
+ elif arm_data[i] == 0x5d :
+ arm.extend(b'\x7d\x03')
+ elif arm_data[i] == 0x2c :
+ arm.extend(b'\x7d\x04')
+ elif arm_data[i] == 0x2a :
+ arm.extend(b'\x7d\x05')
+ else :
+ arm.append(arm_data[i])
+
+ datalen = len(arm) +len(str("TK,"))+len(str(arm_sec))+1
+ #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
+ send_data = bytearray(self.PID+"*%s*%04X*TK,"%(self.imei,datalen))
+ send_data.extend(arm)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TK")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = bytearray('[')
+ data.extend(MD5_SIGN)
+ data.extend(send_data)
+ data.extend(']')
+ # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data))
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+
+ def recv(self, event, msg):
+ """
+
+ ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+ @param event: 微聊
+ @param msg: 接收到的下行数据
+ [SZKW*860132060004322*20BD*TK,#!AMR...]
+ """
+ #Wechat_log("K_ProtoCol:recv:data:{}".format(msg))
+ # print("TK recv:{}".format(msg))
+ msg_tmp = msg.decode('ascii')
+ str = msg_tmp.split('TK,')
+ # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR")))
+ if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据
+ # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg)))
+ arm_data = bytearray(str[1])#获取amr输出
+ get_wechat_data = EventMesh.publish("get_wechat_data")
+
+ MXA_MSG = get_wechat_data[0]
+ wechat_recode_list = get_wechat_data[1]
+ wechat_num = wechat_recode_list["num"]
+ # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+
+ if wechat_num >= MXA_MSG:
+ wechat_num = 0
+ if wechat_num == 0:
+ wechat_num += 1
+ elif wechat_num > 0:
+ wechat_num += 1
+
+
+ print("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list))
+ wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3)
+ wechat_recode_list['num'] = wechat_num
+ EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
+ #写语音文件数据
+ screen_NAME = EventMesh.publish("get_screen_NAME")
+ get_lcd_state = EventMesh.publish("get_lcd_state")
+ if screen_NAME != "wechat" or get_lcd_state == 0:
+ EventMesh.publish("load_screen", {"screen": "wechat_popup"})
+ else:
+ EventMesh.publish("wechat_updata_list_show")
+ # path = "/ext/static/storage_file/audio_amr/amr/{}.amr".format(wechat_num)
+ path = "/ext/static/storage_file/{}.amr".format(wechat_num)
+ with open(path,"w") as fd:
+ arm = bytearray()
+ j = 0
+ for i in range(len(arm_data)):
+ if arm_data[j] == 0x7d and arm_data[j+1] == 0x01:
+ arm.extend(b'\x7d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02:
+ arm.extend(b'\x5b')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03:
+ arm.extend(b'\x5d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04:
+ arm.extend(b'\x2c')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05:
+ arm.extend(b'\x2a')
+ j+=1
+ else :
+ arm.append(arm_data[j])
+ j+=1
+ if j >= len(arm_data):
+ break
+ fd.write(arm)
+ EventMesh.publish(constants.PROTOCOL.TK_SEND,1)
+
+
+
+
+
+class MESSAGE_ProtoCol(ProtoCol):
+ """微聊"""
+ TYPE = "MESSAGE"
+
+
+ def send(self, event, msg):
+
+ #[XT*334588000000156*0007*MESSAGE]
+ send_data = self.PID+"*%s*0007*MESSAGE"%(self.imei)
+ MD5_SIGN = self.pack_MD5_head(send_data)
+ data = "[%s%s]"%(str(MD5_SIGN),send_data)
+ #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
+ # 通过socket发送到服务器端
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+ def recv(self, event, msg):
+ """
+
+ @param event: 微聊文字
+ @param msg: 接收到的下行数据
+ """
+ msg = msg[1:-1]
+
+ msg_s = msg.decode('ascii')
+ msg_s = msg_s.split(',')
+ msg_s = msg_s[1]
+ # Wechat_log("msg_tmp:len:{}\r\n data:{}".format(len(msg_s),msg_s))
+
+
+ get_wechat_data = EventMesh.publish("get_wechat_data")
+
+ MXA_MSG = get_wechat_data[0]
+ wechat_recode_list = get_wechat_data[1]
+ wechat_num = wechat_recode_list["num"]
+ # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+
+ if wechat_num >= MXA_MSG:
+ wechat_num = 0
+ if wechat_num == 0:
+ wechat_num += 1
+ elif wechat_num > 0:
+ wechat_num += 1
+ msg_txt = {}
+ # 0 1 2 3
+ print("wechat_num:init {}".format(wechat_num))
+ msg_txt = UnicodeHexStr_To_Utf8Str(msg_s)
+ # Wechat_log("msg_txt:{}".format(msg_txt))
+ wechat_recode_list["%02d"%(wechat_num)] = "T:{}".format(msg_txt)
+ wechat_recode_list['num'] = wechat_num
+ EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
+ # Wechat_log("wechat_recode_list:len data:{}".format(wechat_recode_list))
+ EventMesh.publish(constants.PROTOCOL.MESSAGE_SEND)
+ screen_NAME = EventMesh.publish("get_screen_NAME")
+ get_lcd_state = EventMesh.publish("get_lcd_state")
+ if screen_NAME != "wechat" or get_lcd_state == 0:
+ EventMesh.publish("load_screen", {"screen": "wechat_popup"})
+ else:
+ EventMesh.publish("wechat_updata_list_show")
+
+
+
+
+
class ProtoColResolver(object):
def __init__(self):
code = e.get_code()
if code == lv.EVENT.SHORT_CLICKED:
EventMesh.publish("set_UI_high_priority", 0)
+ EventMesh.publish("close_sos_timer")
EventMesh.publish("set_hangup_mode", 1)
voiceCall.callEnd()
EventMesh.publish("set_interrup_incall",0)
def timeout_hangup(self,e):
EventMesh.publish("system_sleep_rest")#防止黑屏
self.time_count+=1
- if self.time_count >= 5:#5s内没有打通则不在继续拨打关闭
+ if self.time_count >= 5 :#设置:#5s内没有打通则不在继续拨打关闭
self.time_count = 0
+ voiceCall.callEnd()
EventMesh.publish("set_UI_high_priority", 0)
EventMesh.publish("set_sos_info_call")
# EventMesh.publish("load_screen", {"screen": "dialing"})
voiceCall.callEnd()
sos_flag = EventMesh.publish("get_sos_flag")
if sos_flag == 1:
+ EventMesh.publish("close_sos_timer")
EventMesh.publish("set_sos_flag",0)
EventMesh.publish("set_sos_num",0)
EventMesh.publish("set_hangup_mode",0)
EventMesh.publish("return_prev_screen")
def Close(self):
- EventMesh.publish("set_sos_info_call")
+ # EventMesh.publish("set_sos_info_call")
self.timer.stop()
phone_num = self.phonebook[_msg]
EventMesh.publish("save_phonenum", phone_num)
- # phone_num_tmp = int(phone_num)
-
- "dialing_noplay_popup"
EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})
def done_DOWN(self):#下滑
if sos_flag == 1:
EventMesh.publish("set_sos_flag",0)
EventMesh.publish("set_sos_num",0)
+ EventMesh.publish("close_sos_timer")
EventMesh.publish("set_hangup_mode",0)
data = RTC().datetime()
hour = data[4]
def concel(self, e):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
+ # EventMesh.publish("load_screen", {"screen": "setting"})
def btn1_release(self):
EventMesh.publish("load_screen", {"screen": "setting"})
try :
if boot_count < 50 :#开机50秒内按键次数大于10就校准
#EventMesh.debug_log("boot_count:{}".format(boot_count))
- if self.pwKey_press_count >= 10:
+ if self.pwKey_press_count >= 6:
self.Hsensor = EventMesh.publish("get_Hsensor")
self.hsensorTest_timer.start(1000,1,self.hsensorTest_timer_cb)
EventMesh.debug_log("打开校准模式")
BATTERY_OCV_TABLE = {
"nix_coy_mnzo2": {
55: {
- 4270: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55,
- 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3355: 0,
+ 4290: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55,
+ 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3400: 0,
},
20: {
- 4270: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55,
- 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3355: 0,
+ 4290: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55,
+ 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3400: 0,
},
0: {
- 4270: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55,
- 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3355: 0,
+ 4290: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55,
+ 3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3400: 0,
},
},
}
else:
self.clear_step = 0
- """电量小于20% 5分钟提醒一次"""
+ """电量小于0% 关机"""
get_low_btn = EventMesh.publish("get_low_bat_btn")#
battery = EventMesh.publish("screen_get_battery")
- # EventMesh.debug_log("get_low_btn:{} self.bat_time:{}".format(get_low_btn,self.bat_time))
- if get_low_btn != None:#低电使能开关
- if get_low_btn == 1:
- self.bat_time+=10
- # EventMesh.debug_log("date_tmp:{} self.bat_time:{}".format(date_tmp,self.bat_time))
- if self.bat_time > 5*60:
- self.bat_time = 0
- if battery[1] <= 20 and battery[1] > 0:
- pass
- # EventMesh.publish("load_screen", {"screen": "LOW_POWER"})
- else:
- self.bat_time = 0
+ if battery[0] != '1':
+ if battery[1] == 0:
+ EventMesh.publish("open_power_on",2)# #未检测到sim卡15分钟后关机
"""未联网提示关机"""
ble=EventMesh.publish(constants.EVENT.GET_CONNECT)
else:
if battery[1] >= 100:
if self.charge_full_count == 0:#充电已满
- EventMesh.publish("set_usb",3)#
+ # EventMesh.publish("set_usb",3)#
EventMesh.debug_log("charge R_CHARGE_full")
self.charge_full_count = 1
TYPE = "SOS"
def send(self, event, msg):
# [XT*334588000000156*0004*MONITOR]
- send_data = EventMesh.publish("get_new_pid")+"*%s*0003*SOS"%(self.imei)
+ send_data = self.PID+"*%s*0003*SOS"%(self.imei)
MD5_SIGN = self.pack_MD5_head(send_data)
data = "[%s%s]"%(str(MD5_SIGN),send_data)
- EventMesh.debug_log("sosHome_dial_ProtoCol:data:%s"%(data))
+ print("sosHome_dial_ProtoCol:data:%s"%(data))
# 通过socket发送到服务器端
EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
msg_tmp = msg.decode('ascii')
msg_tmp = msg_tmp.split(',')
- # EventMesh.debug_log("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp))
+ # print("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp))
#b'[SZKW*860132060006970*0015*sosHome_dial_ProtoCol,15521469561,10086,15521469561]'
- # print("sosnumber msg_tmp",msg_tmp)
i = 0
- for i in range(len(msg_tmp)-1):
- # EventMesh.debug_log("sos:send data :{}".format(msg_tmp[i+1]))
+ num = 0
+ count = 0
+ print("sos msg_tmp",msg_tmp)
+ if len(msg_tmp) > 4:
+ num = 3
+ else:
+ num = len(msg_tmp)-1
+ data = []
+ for i in range(num):
+ # print("sos:send data :{}".format(msg_tmp[i+1]))
if len(msg_tmp[i+1]) != 0:
EventMesh.publish("set_storage_config",["SOS_NUMBER{}".format(i+1),msg_tmp[i+1]])
-
- if (len(msg_tmp)-1) == 3:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2],msg_tmp[3]])
- elif (len(msg_tmp)-1) == 2:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2]])
- elif (len(msg_tmp)-1) == 1:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1]])
+ data.append(str(msg_tmp[i+1]))
+ count+=1
+ print("data:{}".format(data))
+ EventMesh.publish("set_dial_sos_number",data)
EventMesh.publish(constants.PROTOCOL.SOS_SEND)
+
# 低电提醒
#[XT*334588000000156*0008*LOWBAT,1]
else:
# [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
#[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
- arm_data = msg[1]
- arm_sec = msg[0]
+ arm_data = msg
+ # arm_sec = msg[0]
# EventMesh.debug_log("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec))
arm = bytearray()
else :
arm.append(arm_data[i])
- datalen = len(arm) + 4+len(str(arm_sec))+1
+ datalen = len(arm) + len("TK,")+1
#Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
- send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TK,%d,"%(self.imei,datalen,arm_sec))
+ send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TK,"%(self.imei,datalen))
send_data.extend(arm)
MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,datalen,"TK")
MD5_SIGN = self.pack_MD5_head(MD5_head_data)
else :
arm.append(arm_data[i])
- datalen = len(arm) + 4+len(str(arm_sec))+1
+ datalen = len(arm) + len("TKS,")+len(str(arm_sec))+1
#Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
send_data.extend(arm)
"""sos家庭号码"""
TYPE = "SOS"
def send(self, event, msg):
-
# [XT*334588000000156*0004*MONITOR]
send_data = EventMesh.publish("get_new_pid")+"*%s*0003*SOS"%(self.imei)
MD5_SIGN = self.pack_MD5_head(send_data)
# print("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp))
#b'[SZKW*860132060006970*0015*sosHome_dial_ProtoCol,15521469561,10086,15521469561]'
i = 0
- for i in range(len(msg_tmp)-1):
+ num = 0
+ count = 0
+ print("sos msg_tmp",msg_tmp)
+ if len(msg_tmp) > 4:
+ num = 3
+ else:
+ num = len(msg_tmp)-1
+ data = []
+ for i in range(num):
# print("sos:send data :{}".format(msg_tmp[i+1]))
if len(msg_tmp[i+1]) != 0:
EventMesh.publish("set_storage_config",["SOS_NUMBER{}".format(i+1),msg_tmp[i+1]])
- # print("read_data:{} msg_tmp:{}".format(read_data,msg_tmp[i+1]))
-
- if (len(msg_tmp)-1) == 3:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2],msg_tmp[3]])
- elif (len(msg_tmp)-1) == 2:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2]])
- elif (len(msg_tmp)-1) == 1:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1]])
+ data.append(str(msg_tmp[i+1]))
+ count+=1
+ print("data:{}".format(data))
+ EventMesh.publish("set_dial_sos_number",data)
EventMesh.publish(constants.PROTOCOL.SOS_SEND)
md images
del images /q
-..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c ext -b 4096 -r 4096 -p 4096 -s 1468000 -i .\images\ext_fs.bin
+..\..\Helios_SDK\tools\ASR_1606\win32\mklfs.exe -c ext -b 4096 -r 4096 -p 4096 -s 1363148 -i .\images\ext_fs.bin
if errorlevel 1 (
echo "ext_fs.binÉú³Éʧ°Ü !!!!!!!!!!!!!!! "
goto exit
self.alarm_count = 0
self.aud.stop()
self.timer.stop()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
return
play_state = EventMesh.publish("get_audio_state")#音频播放状态
if play_state != None:
def done_left_to_right(self):
self.close_timer()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_right_to_left(self):
self.close_timer()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_bottom_to_top(self):
self.close_timer()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_top_to_bottom(self):
self.close_timer()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_return(self):
self.close_timer()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_click(self):
self.close_timer()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
self.close_timer()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
self.close_timer()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
#闹钟列表
class ClkListScreen(Screen):
def alarm_draw_btn(self):
- global alarm_list
- self.clock_list = alarm_list
- IFEXIST = ql_fs.path_exists("/ext/static/storage_file/alarm_msg.json")
- if IFEXIST == True:
- if self.clock_list:
+ get_alarm_data = EventMesh.publish("get_storage_config","normal_alarm")
+ print("get_alarm_data",get_alarm_data)
+ if get_alarm_data != None and get_alarm_data != []:
+
+ if len(get_alarm_data) != 0:
# print("nalarm_list:{}".format(alarm_list))
no_add_alarm_img.add_flag(lv.obj.FLAG.HIDDEN)
no_add_alarm.add_flag(lv.obj.FLAG.HIDDEN)
#print("菜单的孩子个数:",clk_list_screen1.get_child_cnt())
num = 0
count = 0
- clock_nums = len(self.clock_list)-2#3-2 = 1 0
+ clock_nums = len(get_alarm_data)#3-2 = 1 0
# for i ,each in enumerate(self.clock_list):
for i in range(0,self.MXA_clk_num):
if i >= clock_nums:
self.contact_detail_listt_dict[i]["_btn"].add_flag(lv.obj.FLAG.HIDDEN)
continue
- each = self.clock_list[2+i]
- num = each["idx"]
+ hour = get_alarm_data[i]["hour"]
+ min = get_alarm_data[i]["min"]
+
+ day = get_alarm_data[i]["day"]
- if count >= 3:
- break
- repeart = each["repeart"]#
- if repeart >= 10:
- continue
print("count1:{}".format(count))
#_btn = lv.btn(self.alarm_show_list)
self.contact_detail_listt_dict[count]["_btn"].set_size(230,75)
#_btn_label1 = lv.label(_btn)
self.contact_detail_listt_dict[count]["_btn_label1"].set_pos(50, 0)
self.contact_detail_listt_dict[count]["_btn_label1"].set_size(0, 0)
- self.contact_detail_listt_dict[count]["_btn_label1"].set_text(str(num))
+ self.contact_detail_listt_dict[count]["_btn_label1"].set_text(" ")
#_btn_label2 = lv.label(_btn)
self.contact_detail_listt_dict[count]["_btn_label2"].set_pos(8, 10)
self.contact_detail_listt_dict[count]["_btn_label2"].set_size(97, 40)
- self.contact_detail_listt_dict[count]["_btn_label2"].set_text("%02d" % each["hour"] + ":"+"%02d" % each["minute"])
+ self.contact_detail_listt_dict[count]["_btn_label2"].set_text("%02d" %(hour) + ":"+"%02d" %(min))
# _btn_label2.set_text(str(each["days"]))
# _btn_label2.set_long_mode(lv.label.LONG.DOT)
# _btn_label2.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
self.contact_detail_listt_dict[count]["_btn_label2"].set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
- _new_list = sorted(each["days"])
- repeart = each["repeart"]
+ _new_list = sorted(day)
_output = [self.weekdays_list[x] for x in _new_list]
#_btn_label3 = lv.label(_btn)
self.contact_detail_listt_dict[count]["_btn_label3"].set_pos(5, 44)
self.contact_detail_listt_dict[count]["_btn_label3"].set_size(200, 40)
- print("_new_list:{} repeart:{}".format(_new_list,repeart))
- if repeart == 1:
+ print("_new_list:{} ".format(_new_list))
+ if day == []:
self.contact_detail_listt_dict[count]["_btn_label3"].set_text("一次")
- elif repeart == 2:
+ elif len(day) > 6:
self.contact_detail_listt_dict[count]["_btn_label3"].set_text("每天")
else:
self.contact_detail_listt_dict[count]["_btn_label3"].set_text(",".join(_output))
# print("sw_event_cb ~~~")
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "toolbox"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "toolbox"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
factorymode_step.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "FactoryModestep"})), lv.EVENT.CLICKED, None)
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
pass
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
pass
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
pass
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
pass
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
self.timer_FactoryModeLocation.stop()
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "factorymode"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
\ No newline at end of file
buf = bytearray(ql_fs.path_getsize(path))
fd.readinto(buf)
senddata = [self.countdown_old,buf]
- EventMesh.publish(constants.PROTOCOL.TK_SEND,senddata)
+ EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
Wechat_log("sending2")
wechat_press_label_countdown.set_text("{}S".format(str(self.countdown)))
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
EventMesh.publish("load_screen", {"screen": "wechat"})
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-class TK_ProtoCol(ProtoCol):
+class TKS_ProtoCol(ProtoCol):
"""微聊"""
- TYPE = "TK"
+ TYPE = "TKS"
def send(self, event, msg):
MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS")
MD5_SIGN = self.pack_MD5_head(MD5_head_data)
data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
- print("TK:data:%s"%(data))
+ print("TKS:data:%s"%(data))
# 通过socket发送到服务器端
EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
else :
arm.append(arm_data[i])
- datalen = len(arm) + 4+len(str(arm_sec))+1
+ datalen = len(arm) +len("TKS")+len(str(arm_sec))+1
#Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
- send_data = bytearray("SZKW*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
+ send_data = bytearray(self.PID+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
send_data.extend(arm)
MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS")
MD5_SIGN = self.pack_MD5_head(MD5_head_data)
EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+ def recv(self, event, msg):
+ """
+
+ ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+ @param event: 微聊
+ @param msg: 接收到的下行数据
+ [SZKW*860132060004322*20BD*TK,#!AMR...]
+ """
+ #Wechat_log("K_ProtoCol:recv:data:{}".format(msg))
+ # print("TK recv:{}".format(msg))
+ msg_tmp = msg.decode('ascii')
+ str = msg_tmp.split('TKS,')
+ # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR")))
+ if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据
+ # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg)))
+ arm_data = bytearray(str[1])#获取amr输出
+ get_wechat_data = EventMesh.publish("get_wechat_data")
+
+ MXA_MSG = get_wechat_data[0]
+ wechat_recode_list = get_wechat_data[1]
+ wechat_num = wechat_recode_list["num"]
+ # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+
+ if wechat_num >= MXA_MSG:
+ wechat_num = 0
+ if wechat_num == 0:
+ wechat_num += 1
+ elif wechat_num > 0:
+ wechat_num += 1
+
+
+ Wechat_log("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list))
+ wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3)
+ wechat_recode_list['num'] = wechat_num
+ EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
+ #写语音文件数据
+ screen_NAME = EventMesh.publish("get_screen_NAME")
+ get_lcd_state = EventMesh.publish("get_lcd_state")
+ if screen_NAME != "wechat" or get_lcd_state == 0:
+ EventMesh.publish("load_screen", {"screen": "wechat_popup"})
+ else:
+ EventMesh.publish("wechat_updata_list_show")
+ # path = "/ext/static/storage_file/audio_amr/amr/{}.amr".format(wechat_num)
+ path = "/ext/static/storage_file/{}.amr".format(wechat_num)
+ with open(path,"w") as fd:
+ arm = bytearray()
+ j = 0
+ for i in range(len(arm_data)):
+ if arm_data[j] == 0x7d and arm_data[j+1] == 0x01:
+ arm.extend(b'\x7d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02:
+ arm.extend(b'\x5b')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03:
+ arm.extend(b'\x5d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04:
+ arm.extend(b'\x2c')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05:
+ arm.extend(b'\x2a')
+ j+=1
+ else :
+ arm.append(arm_data[j])
+ j+=1
+ if j >= len(arm_data):
+ break
+ fd.write(arm)
+ EventMesh.publish(constants.PROTOCOL.TKS_SEND,1)
+
+
+
+
+class TK_ProtoCol(ProtoCol):
+ """微聊"""
+ TYPE = "TK"
+
+
+ def send(self, event, msg):
+ # print("TK send:{}".format(msg))
+ if len(str(msg)) == 1:
+
+ len_size = len(str(msg))+len("TK,")
+ # 实例:[XT*334588000000156*0009*TK,1]
+ send_data = self.PID+"*%s*%04X*TK"%(self.imei,len_size)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TK")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
+ print("TK:data:%s"%(data))
+ # 通过socket发送到服务器端
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+ else:
+ # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
+ #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
+ arm_data = msg[1]
+ arm_sec = msg[0]
+ # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec))
+
+ arm = bytearray()
+ for i in range(len(arm_data)):
+ if arm_data[i] == 0x7d:
+ arm.extend(b'\x7d\x01')
+ elif arm_data[i] == 0x5b :
+ arm.extend(b'\x7d\x02')
+ elif arm_data[i] == 0x5d :
+ arm.extend(b'\x7d\x03')
+ elif arm_data[i] == 0x2c :
+ arm.extend(b'\x7d\x04')
+ elif arm_data[i] == 0x2a :
+ arm.extend(b'\x7d\x05')
+ else :
+ arm.append(arm_data[i])
+
+ datalen = len(arm) + len("TK")+len(str(arm_sec))+1
+ #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
+ send_data = bytearray(self.PID+"*%s*%04X*TK,"%(self.imei,datalen))
+ send_data.extend(arm)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TK")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = bytearray('[')
+ data.extend(MD5_SIGN)
+ data.extend(send_data)
+ data.extend(']')
+ # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data))
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+
def recv(self, event, msg):
"""
TK_SEND = "TK_SEND"
TK_RECV = "TK_RECV"
+ TKS_SEND = "TKS_SEND"
+ TKS_RECV = "TKS_RECV"
+
MESSAGE_SEND = "MESSAGE_SEND"
MESSAGE_RECV = "MESSAGE_RECV"
BTEMP2_SEND ="btemp2_SEND"
BTEMP2_RECV ="btemp2_RECV"
+ FACTORY_SEND = "FACTORY_SEND"
+ FACTORY_RECV = "FACTORY_RECV"
+
class EVENT:
CHANNEL_SOCKET_SEND = "CHANNEL_SOCKET_SEND"
START_LOCATION = "START_LOCATION"
from mgr import setCallStateManager,setclassTimeManager,setSmsIndexManager,ConfigStoreManager,testSmsSetIPManager,playPowerAudioManager,sosInfoCallManager,getBootOffManager,getSosFlagManager,CountdownManager, LocationManager, getVolumSizeManager,gethistoryDataManager,getUpLoadDataManager, getplayAudiodStateManager,\
AddrBookManager,MsgdetailManager,PhoneCallingManager,getOldTimeManager,getStorageDataManager,getBrightnessManager,getHrTimeManager,getTempTimeManager,getLowBatManager
- from protocol import btemp2_ProtoCol,bodytemp2_ProtoCol,TEMP_Hour_ProtoCol,SILENCETIMEFS_ProtoCol,KEYBRD_ProtoCol,SILENCETIME2_ProtoCol,WLKEY_ProtoCol,LK_ProtoCol,PING_ProtoCol,HEART_ProtoCol,OXYGEN_ProtoCol,OXYGEN_One_ProtoCol,HRSTART_ProtoCol,CENTER_ProtoCol,UPLOAD_ProtoCol,\
- TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,Time_ProtoCol,\
- ProtoColResolver,PHL_ProtoCol,MONITOR_ProtoCol,bootoff_ProtoCol,WDSTART_ProtoCol,LOWBAT_ProtoCol,sosHome_dial_ProtoCol,SockManager,NetManager
+ import protocol
import ui as _ui
# import ui as _ui
#print("init4:{}".format(utime.localtime()))
except Exception as e:
usys.print_exception(e)
try:
- from appWechat import WechatScreen,TK_ProtoCol,MESSAGE_ProtoCol,NewWechatPopupScreen
+ from appWechat import WechatScreen,NewWechatPopupScreen
ui.add_screen(WechatScreen())
from alarm import ClkListScreen,ClockManager,NewEditClk,CLKTimeScreen,ClkPeriod,PopupAlarmScreen
from ui_health import HealthScreen
app.append_manager(playPowerAudioManager())
#app.append_manager(Alipay())
app.append_manager(ConfigStoreManager())
- app.append_manager(NetManager())
+ app.append_manager(protocol.NetManager())
app.append_manager(LocationManager())
app.append_manager(AddrBookManager())
app.append_manager(mgr.MsgManager())
#print("init11:{}".format(utime.localtime()))
try:
- pcr = ProtoColResolver()
- pcr.add_support(LK_ProtoCol())
- pcr.add_support(PING_ProtoCol())
- pcr.add_support(KA_ProtoCol())
- pcr.add_support(UD_ProtoCol())
- pcr.add_support(CR_ProtoCol())
- pcr.add_support(FIND_ProtoCol())
- pcr.add_support(POWEROFF_ProtoCol())
- pcr.add_support(PHL_ProtoCol())
- pcr.add_support(TK_ProtoCol())
- pcr.add_support(MESSAGE_ProtoCol())
- pcr.add_support(WT_ProtoCol())
- pcr.add_support(REMIND_ProtoCol())
- pcr.add_support(HRSTART_ProtoCol())
- pcr.add_support(HEART_ProtoCol())
- pcr.add_support(OXYGEN_ProtoCol())
- pcr.add_support(OXYGEN_One_ProtoCol())
- pcr.add_support(TEMP_ProtoCol())
- pcr.add_support(DLT_ProtoCol())
- pcr.add_support(UPLOAD_ProtoCol())
- pcr.add_support(MONITOR_ProtoCol())
+ pcr = protocol.ProtoColResolver()
+ pcr.add_support(protocol.LK_ProtoCol())
+ pcr.add_support(protocol.PING_ProtoCol())
+ pcr.add_support(protocol.KA_ProtoCol())
+ pcr.add_support(protocol.UD_ProtoCol())
+ pcr.add_support(protocol.CR_ProtoCol())
+ pcr.add_support(protocol.FIND_ProtoCol())
+ pcr.add_support(protocol.POWEROFF_ProtoCol())
+ pcr.add_support(protocol.PHL_ProtoCol())
+ pcr.add_support(protocol.TK_ProtoCol())
+ pcr.add_support(protocol.MESSAGE_ProtoCol())
+ pcr.add_support(protocol.WT_ProtoCol())
+ pcr.add_support(protocol.REMIND_ProtoCol())
+ pcr.add_support(protocol.HRSTART_ProtoCol())
+ pcr.add_support(protocol.HEART_ProtoCol())
+ pcr.add_support(protocol.OXYGEN_ProtoCol())
+ pcr.add_support(protocol.OXYGEN_One_ProtoCol())
+ pcr.add_support(protocol.TEMP_ProtoCol())
+ pcr.add_support(protocol.DLT_ProtoCol())
+ pcr.add_support(protocol.UPLOAD_ProtoCol())
+ pcr.add_support(protocol.MONITOR_ProtoCol())
# pcr.add_support(CENTER_ProtoCol())
- pcr.add_support(CENTER_ProtoCol())
- pcr.add_support(bootoff_ProtoCol())
- pcr.add_support(WDSTART_ProtoCol())
- pcr.add_support(LOWBAT_ProtoCol())
- pcr.add_support(sosHome_dial_ProtoCol())
- pcr.add_support(Time_ProtoCol())
- pcr.add_support(WLKEY_ProtoCol())
- pcr.add_support(KEYBRD_ProtoCol())
- pcr.add_support(SILENCETIME2_ProtoCol())
- pcr.add_support(SILENCETIMEFS_ProtoCol())
- pcr.add_support(TEMP_Hour_ProtoCol())
- pcr.add_support(bodytemp2_ProtoCol())
- pcr.add_support(btemp2_ProtoCol())
+ pcr.add_support(protocol.CENTER_ProtoCol())
+ pcr.add_support(protocol.bootoff_ProtoCol())
+ pcr.add_support(protocol.WDSTART_ProtoCol())
+ pcr.add_support(protocol.LOWBAT_ProtoCol())
+ pcr.add_support(protocol.sosHome_dial_ProtoCol())
+ pcr.add_support(protocol.Time_ProtoCol())
+ pcr.add_support(protocol.WLKEY_ProtoCol())
+ pcr.add_support(protocol.KEYBRD_ProtoCol())
+ pcr.add_support(protocol.SILENCETIME2_ProtoCol())
+ pcr.add_support(protocol.SILENCETIMEFS_ProtoCol())
+ pcr.add_support(protocol.TEMP_Hour_ProtoCol())
+ pcr.add_support(protocol.bodytemp2_ProtoCol())
+ pcr.add_support(protocol.btemp2_ProtoCol())
+ pcr.add_support(protocol.TK_ProtoCol())
+ pcr.add_support(protocol.TKS_ProtoCol())
+ pcr.add_support(protocol.MESSAGE_ProtoCol())
+ pcr.add_support(protocol.FACTORY_ProtoCol())
except Exception as e:
usys.print_exception(e)
try:
- sm = SockManager()
+ sm = protocol.SockManager()
sm.add_support_resolver(pcr)
app.append_manager(sm)
#print("init11.0:{}".format(utime.localtime()))
EventMesh.publish("set_interrup_incall",0)
EventMesh.publish("set_UI_high_priority",0)
-
-
- screen_NAME = EventMesh.publish("get_screen_NAME")
- if screen_NAME != None:
- if screen_NAME != "dialing_noplay_popup":
- EventMesh.publish("return_prev_screen")
+
+ EventMesh.publish("return_prev_screen")
EventMesh.publish("set_sos_info_call")
print('voicecall disconnect end')
self.no_smi_count = 0
self.no_smi_state = 0
+ self.normal_oldtotalmin = 0 #上次响过的闹钟分钟数不等于当前的分钟数据需要清零否则下一个不会响铃
+ self.normal_flag =0
+ self.normal_count = 0
+
self.charge_full_count = 0
self.GPS_step_t = 0#记录步数
self.usb = USB()
data = RTC().datetime()
hour = data[4]
min = data[5]
- next_alarm_time = utime.localtime(old_Timesec)
+ next_alarm_time = utime.localtime(int(old_Timesec))
# print("data[5]:{} {} next_alarm_time:{} old_Timesec:{}".format(data[1],data[2],next_alarm_time,old_Timesec))
month = next_alarm_time[1]
day = next_alarm_time[2]
- if month != data[1] or day != data[2]:
+ year = next_alarm_time[0]
+ if month != data[1] or day != data[2] or year != data[0]:
step = EventMesh.publish("get_old_step_value")
- if step > 0:
- self.gsensor.reset_step()
- EventMesh.publish("set_old_step_value",0)
+ self.gsensor.reset_step()
+ EventMesh.publish("set_old_step_value",0)
hr = EventMesh.publish("get_old_hr_data",)
if hr != 0:
if spo2 != 0:
EventMesh.publish("set_old_spo2_data", 0)
EventMesh.publish("set_old_time_data",time_tmp)
- if hour == 0:#清步数
- if min <= 1:
- if self.clear_step == 0:
- step = EventMesh.publish("get_old_step_value")
- EventMesh.publish("set_old_time_data",time_tmp)
- if step > 0:
- EventMesh.publish("set_old_step_value",0)
- self.gsensor.reset_step()
- hr = EventMesh.publish("get_old_hr_data")
- if hr != 0:
- EventMesh.publish("set_old_hr_data", 0)
-
- spo2 = EventMesh.publish("get_old_spo2_data")
- if spo2 != 0:
- EventMesh.publish("set_old_spo2_data", 0)
- self.clear_step = 1
+ if hour == 23:#清步数
+ if min == 59:
+ step = EventMesh.publish("get_old_step_value")
+ EventMesh.publish("set_old_time_data",time_tmp)
+ EventMesh.publish("set_old_step_value",0)
+ self.gsensor.reset_step()
+ hr = EventMesh.publish("get_old_hr_data")
+ if hr != 0:
+ EventMesh.publish("set_old_hr_data", 0)
+
+ spo2 = EventMesh.publish("get_old_spo2_data")
+ if spo2 != 0:
+ EventMesh.publish("set_old_spo2_data", 0)
else:
if self.clear_step == 1:
self.clear_step = 0
#quecgnss.gnssEnable(0)
-
+ self.normal_alarm()
+
+
+ #普通闹钟
+ def normal_alarm(self):
+ data = RTC().datetime()
+ hour = data[4]
+ min = data[5]
+
+ week = int(data[3])
+
+ date1 = data[1]
+ date2 = data[2]
+ cur_total_min = int(hour)*60+int(min)
+ # EventMesh.debug_log("self.normal_oldtotalmin",self.normal_oldtotalmin,cur_total_min,self.alarm_flag)
+ if self.normal_oldtotalmin == 0:
+ self.normal_oldtotalmin = cur_total_min #549
+ if self.normal_oldtotalmin != cur_total_min: #上次响过的闹钟分钟数不等于当前的分钟数据需要清零否则下一个不会响铃
+ if self.normal_flag == 1:
+ self.normal_flag = 0
+ self.normal_count = 0
+ normal_alarm = []
+ normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
+ # EventMesh.debug_log("sleep info2",sleep,cur_total_min)
+ if self.normal_flag == 1:#表示闹钟响过清除标志
+ self.normal_count+=1
+ if self.normal_count > 6:
+ self.normal_count = 0
+ self.normal_flag = 0
+ if normal_alarm != None:
+ if len(normal_alarm) != 0 and normal_alarm != []:
+ j = 0
+ for i in range(len(normal_alarm)):
+ # EventMesh.debug_log("normal_alarm normal_alarm 33",normal_alarm,j)
+ normalalarm_hour = normal_alarm[j]["hour"]
+ normalalarm_min = normal_alarm[j]["min"]
+ normalalarm_day = normal_alarm[j]["day"]
+ normalalarm_enale = normal_alarm[j]["enable"]
+ normalalarm_totalmin = int(normalalarm_hour)*60+int(normalalarm_min)
+ # EventMesh.debug_log("wake alarm",normalalarm_hour,sleep_min,sleep_day,sleep_enale,sleep_totalmin,week)
+ if normalalarm_day == []:#单次闹钟只响一次
+ if normalalarm_enale != 0:
+ if normalalarm_totalmin == cur_total_min:#14:00
+ self.normal_count = 0
+ self.normal_flag = 0
+ normal_alarm[j]["enable"] = 0
+
+ # EventMesh.debug_log("wakeup wakeup1",sleep,j)
+ EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm])#删除之后重新保存
+ EventMesh.publish("push_update_alarm_show")
+ # new_data=EventMesh.publish("get_storage_config","normal_alarm")
+ # print("normal wakeup1",new_data,j)
+ EventMesh.publish("load_screen", {"screen": "popup_alarm"})
+ break
+ else:
+ if normalalarm_enale != 0 and (week in normalalarm_day):#记录响过的时间分钟数
+ if normalalarm_totalmin == cur_total_min and self.normal_flag == 0:#14:00
+ self.normal_flag = 1
+ self.normal_count = 0
+ self.normal_oldtotalmin = normalalarm_totalmin
+ EventMesh.publish("load_screen", {"screen": "popup_alarm"})
+ break
+ j+=1
def get_sim_Status(self, event, msg):
return sim.getStatus()
"""
XYZ = self.gsensor.get_x_y_z()
tmp = 0
-
+ step = [0,0,0,0]
tmp = self.gsensor.get_step()
# print("x:%d,y:%d,z:%d tmp %d",XYZ[0],XYZ[1],XYZ[2],tmp)
- self.step[0]= tmp
- self.step[1] = XYZ[0]
- self.step[2] = XYZ[1]
- self.step[3] = XYZ[2]
+ step[0]= tmp
+ step[1] = XYZ[0]
+ step[2] = XYZ[1]
+ step[3] = XYZ[2]
- return self.step
+ return step
def get_ic_cid(self, event, msg):
"""
def set_old_step_value(self, event, msg):
self.oldstep = msg
+ EventMesh.publish("set_storage_config",["old_step",msg])
def get_old_step_value(self, event, msg):
def server_init(server_type = None):
#服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为
if server_type == None:
- server_type = 4
+ server_type = 1
#print("server_init:server_type:{}".format(server_type))
d_server_addr = "api.xcloudtech.com"
d_server_port = 9000
data = data + r
print("TCP recv: data:len:{}".format(len(data)))
- print("TCP recv: data:{}".format(data))
+ # print("TCP recv: data:{}".format(data))
if data[-1] != 0x5d and len(data)<20*1024: #']':
continue
self.connect_tmp = 1 #有数据,就认为是连接状态
EventMesh.publish("set_weather_data",[msg_date,msg_time,msg_weather_content,msg_type,msg_temp,msg_min_temp,msg_max_temp,msg_city,1])
EventMesh.publish("updata_weather_show")
-class REMIND_ProtoCol(ProtoCol):
- """闹钟数据"""
+class REMIND_ProtoCol(ProtoCol):#普通闹钟
+ """
+
+ 平台发送:
+ [XT*YYYYYYYYYYYYYYY*LEN*REMIND,,时间1-开关,时间2-开关,周几]
+ 实例:[XT*334588000000156*0008*REMIND,,时间1-开关,时间2-开关,周几]
+ 终端回复:
+ [XT*YYYYYYYYYYYYYYY*LEN*REMIND]
+ """
TYPE = "REMIND"
-
-
+
def send(self, event, msg):
- # [SZKW*867387060319491*0008*REMIND]
send_data = self.PID+"*%s*0006*REMIND"%(self.imei)
MD5_SIGN = self.pack_MD5_head(send_data)
data = "[%s%s]"%(str(MD5_SIGN),send_data)
- # print("REMIND_ProtoCol:send:%s"%(data))
+ #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
# 通过socket发送到服务器端
EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
def recv(self, event, msg):
- """
- @param event: 闹钟数据下发
- @param msg: 接收到的下行数据
- """
- # b'SZKW*860132060004322*0035*REMIND,23-04-06,14:41:06,b6e0d4c6,1,27,-1,40,6DF157335E02'
- # print("REMIND_ProtoCol RECV msg:%s"%(msg))
- alarm_new = []
-
+ # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1
msg = msg[1:-1]
msg_tmp = msg.decode('ascii')
- msg_tmp = msg_tmp.split('REMIND,')
- msg_tmp = msg_tmp[1]
-
- alarm_new = EventMesh.publish("read_alarminjson")
- # print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp)
- k=1
+ msg_tmp_new = msg_tmp.split('REMIND,')[1]
+ msg_tmp_data = msg_tmp.split('REMIND')[1]
count = 0
+ for i in str(msg_tmp_data):
+ # print("i",i)
+ if i == ",":
+ count+=1
- for i in range(len(str(msg_tmp))):#寻找有多少个,号
- if msg_tmp[i] == ',':#, , ,
- k+=1
- if len(alarm_new) > 2:
- for i in range(0,len(alarm_new)-2):
- del alarm_new[2]
- # print("alarm_new:{}",alarm_new)
- for j in range(2,2+k):#0 1是开关机,234是闹钟
+ normal_alarm_save = []
+ alarm_day = []
+ alarm_switch = 0
+
+ print("count",count,msg_tmp_new)
+ if count >= 3:
+ count = 3
+ for i in range(0,count):#默认是三个时间多了也不保存
alarm_day = []
- alarm_week = []
- alarm_total_data = []
- if k == 1:
- if len(msg_tmp) != 0:
- alarm_data = msg_tmp.split('-')#-作为分隔符
- alarm_switch = int(alarm_data[1])#开关
- alarm_day_num = int(alarm_data[2])#天
- alarm_time = alarm_data[0]#时间
- alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
- alarm_time_hour = int(alarm_time_tmp[0])
- alarm_time_min = int(alarm_time_tmp[1])
- if alarm_day_num == 3:
- alarm_week = alarm_data[3]#星期
-
- if alarm_day_num == 2:#每一天
- alarm_day = [1,2,3,4,5,6,0]
- elif alarm_day_num == 3:#自定义
- for i in range(0,7):
- if alarm_week[i] != '0':
- alarm_day.append(i)
- alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
- else:
- if len(msg_tmp) != 0:
- alarm_total_data = msg_tmp.split(',')[count]
- count+=1
- b = alarm_total_data.find('-')
- if b != -1:
- alarm_data = alarm_total_data.split('-')#-作为分隔符
- alarm_switch = int(alarm_data[1])#开关
- alarm_day_num = int(alarm_data[2])#天
- alarm_time = alarm_data[0]#时间
- alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
- alarm_time_hour = int(alarm_time_tmp[0])
- alarm_time_min = int(alarm_time_tmp[1])
- if alarm_day_num == 3:
- alarm_week = alarm_data[3]#星期
-
- if alarm_day_num == 2:#每一天
- alarm_day = [1,2,3,4,5,6,0]
- elif alarm_day_num == 3:#自定义
+ alarm_data = str(msg_tmp_new.split(',')[i])
+ # print("i",i,sleep_data)
+ if len(alarm_data) != 0:
+ b = alarm_data.find('-')
+ if b != -1:
+ alarm_time = alarm_data.split('-')[0]#-作为分隔符
+ alarm_switch = int(alarm_data.split('-')[1])#开关
+ alarm_repeat = int(alarm_data.split('-')[2])#是单次还是每天 还是自定义
+
+ alarm_hour = int(alarm_time.split(":")[0])#时间
+ alarm_min = int(alarm_time.split(":")[1])#冒号分隔时间 时 分
+
+
+ if alarm_repeat == 2:#每一天
+ alarm_day = [0,1,2,3,4,5,6]
+ elif alarm_repeat == 3:#自定义
+ alarm_day_tmp = alarm_data.split('-')[3]#-作为分隔符
+ if len(str(alarm_day_tmp)) != 0:
for i in range(0,7):
- if alarm_week[i] != '0':
+ if alarm_day_tmp[i] != '0':
alarm_day.append(i)
- alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
-
- # print("alarm_new end:{}",alarm_new)
+ else:#单次 1
+ alarm_day=[]
+ # if alarm_switch = 0:
+ normal_alarm_save.append({"hour":alarm_hour,"min":alarm_min,"day":alarm_day,"enable":alarm_switch})
- with open("/ext/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
- ujson.dump(alarm_new,fd)
+ EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm_save])
+ # normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
+
+ # print("recv REMIND_SEND:{} normal_alarm ;{}".format(msg,normal_alarm))
+
+ EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
EventMesh.publish("push_update_alarm_show")
-
- # EventMesh.publish("add_alarm",[0,msg_tmp])
- EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
class HRSTART_ProtoCol(ProtoCol):
send_data = self.PID+"*%s*%04X*btemp2"%(self.imei,len_size)
MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"btemp2")
MD5_SIGN = self.pack_MD5_head(MD5_head_data)
- data = "[%s%s,%d,%f]"%(str(MD5_SIGN),send_data,1,msg[1])
+ data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,1,str(msg[1]))
# print("btemp2:data:%s"%(data))
# 通过socket发送到服务器端
EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
EventMesh.publish(constants.PROTOCOL.BOOTOFF_SEND)
-#sos家庭号码
class sosHome_dial_ProtoCol(ProtoCol):
"""sos家庭号码"""
TYPE = "SOS"
# print("sosHome_dial_ProtoCol:send data :{} {}".format(len(msg_tmp),msg_tmp))
#b'[SZKW*860132060006970*0015*sosHome_dial_ProtoCol,15521469561,10086,15521469561]'
i = 0
- for i in range(len(msg_tmp)-1):
- # print("sos:send data :{}".format(msg_tmp[i+1]))
+ num = 0
+ count = 0
+ print("sos msg_tmp",msg_tmp)
+ if len(msg_tmp) > 4:
+ num = 3
+ else:
+ num = len(msg_tmp)-1
+ data = []
+ for i in range(num):
+ print("sos:send data :{}".format(msg_tmp[i+1]))
if len(msg_tmp[i+1]) != 0:
EventMesh.publish("set_storage_config",["SOS_NUMBER{}".format(i+1),msg_tmp[i+1]])
- # print("read_data:{} msg_tmp:{}".format(read_data,msg_tmp[i+1]))
-
- if (len(msg_tmp)-1) == 3:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2],msg_tmp[3]])
- elif (len(msg_tmp)-1) == 2:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1],msg_tmp[2]])
- elif (len(msg_tmp)-1) == 1:
- EventMesh.publish("set_dial_sos_number",[msg_tmp[1]])
+ data.append(str(msg_tmp[i+1]))
+ count+=1
+ print("data:{}".format(data))
+ EventMesh.publish("set_dial_sos_number",data)
EventMesh.publish(constants.PROTOCOL.SOS_SEND)
# print("KEYBRD!!!!!!!!!!!!!",msg)
EventMesh.publish(constants.PROTOCOL.KEYBRD_SEND)
+
+class TKS_ProtoCol(ProtoCol):
+ """微聊"""
+ TYPE = "TKS"
+
+
+ def send(self, event, msg):
+ # print("TK send:{}".format(msg))
+ if len(str(msg)) == 1:
+
+ len_size = len(str(msg))+len("TKS,")
+ # 实例:[XT*334588000000156*0009*TK,1]
+ send_data = self.PID+"*%s*%04X*TKS"%(self.imei,len_size)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
+ print("TKS:data:%s"%(data))
+ # 通过socket发送到服务器端
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+ else:
+ # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
+ #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
+ arm_data = msg[1]
+ arm_sec = msg[0]
+ # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec))
+
+ arm = bytearray()
+ for i in range(len(arm_data)):
+ if arm_data[i] == 0x7d:
+ arm.extend(b'\x7d\x01')
+ elif arm_data[i] == 0x5b :
+ arm.extend(b'\x7d\x02')
+ elif arm_data[i] == 0x5d :
+ arm.extend(b'\x7d\x03')
+ elif arm_data[i] == 0x2c :
+ arm.extend(b'\x7d\x04')
+ elif arm_data[i] == 0x2a :
+ arm.extend(b'\x7d\x05')
+ else :
+ arm.append(arm_data[i])
+
+ datalen = len(arm) +len("TKS")+len(str(arm_sec))+1
+ #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
+ send_data = bytearray(self.PID+"*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec))
+ send_data.extend(arm)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = bytearray('[')
+ data.extend(MD5_SIGN)
+ data.extend(send_data)
+ data.extend(']')
+ # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data))
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+
+ def recv(self, event, msg):
+ """
+
+ ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+ @param event: 微聊
+ @param msg: 接收到的下行数据
+ [SZKW*860132060004322*20BD*TK,#!AMR...]
+ """
+ #Wechat_log("K_ProtoCol:recv:data:{}".format(msg))
+ # print("TK recv:{}".format(msg))
+ msg_tmp = msg.decode('ascii')
+ str = msg_tmp.split('TKS,')
+ # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR")))
+ if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据
+ # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg)))
+ arm_data = bytearray(str[1])#获取amr输出
+ get_wechat_data = EventMesh.publish("get_wechat_data")
+
+ MXA_MSG = get_wechat_data[0]
+ wechat_recode_list = get_wechat_data[1]
+ wechat_num = wechat_recode_list["num"]
+ # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+
+ if wechat_num >= MXA_MSG:
+ wechat_num = 0
+ if wechat_num == 0:
+ wechat_num += 1
+ elif wechat_num > 0:
+ wechat_num += 1
+
+
+ print("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list))
+ wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3)
+ wechat_recode_list['num'] = wechat_num
+ EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
+ #写语音文件数据
+ screen_NAME = EventMesh.publish("get_screen_NAME")
+ get_lcd_state = EventMesh.publish("get_lcd_state")
+ if screen_NAME != "wechat" or get_lcd_state == 0:
+ EventMesh.publish("load_screen", {"screen": "wechat_popup"})
+ else:
+ EventMesh.publish("wechat_updata_list_show")
+ # path = "/ext/static/storage_file/audio_amr/amr/{}.amr".format(wechat_num)
+ path = "/ext/static/storage_file/{}.amr".format(wechat_num)
+ with open(path,"w") as fd:
+ arm = bytearray()
+ j = 0
+ for i in range(len(arm_data)):
+ if arm_data[j] == 0x7d and arm_data[j+1] == 0x01:
+ arm.extend(b'\x7d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02:
+ arm.extend(b'\x5b')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03:
+ arm.extend(b'\x5d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04:
+ arm.extend(b'\x2c')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05:
+ arm.extend(b'\x2a')
+ j+=1
+ else :
+ arm.append(arm_data[j])
+ j+=1
+ if j >= len(arm_data):
+ break
+ fd.write(arm)
+ EventMesh.publish(constants.PROTOCOL.TKS_SEND,1)
+
+
+
+
+class TK_ProtoCol(ProtoCol):
+ """微聊"""
+ TYPE = "TK"
+
+
+ def send(self, event, msg):
+ # print("TK send:{}".format(msg))
+ if len(str(msg)) == 1:
+
+ len_size = len(str(msg))+len("TK,")
+ # 实例:[XT*334588000000156*0009*TK,1]
+ send_data = self.PID+"*%s*%04X*TK"%(self.imei,len_size)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TK")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
+ print("TK:data:%s"%(data))
+ # 通过socket发送到服务器端
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+ else:
+ # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
+ #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
+ arm_data = msg[1]
+ arm_sec = msg[0]
+ # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec))
+
+ arm = bytearray()
+ for i in range(len(arm_data)):
+ if arm_data[i] == 0x7d:
+ arm.extend(b'\x7d\x01')
+ elif arm_data[i] == 0x5b :
+ arm.extend(b'\x7d\x02')
+ elif arm_data[i] == 0x5d :
+ arm.extend(b'\x7d\x03')
+ elif arm_data[i] == 0x2c :
+ arm.extend(b'\x7d\x04')
+ elif arm_data[i] == 0x2a :
+ arm.extend(b'\x7d\x05')
+ else :
+ arm.append(arm_data[i])
+
+ datalen = len(arm) + len("TK")+len(str(arm_sec))+1
+ #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
+ send_data = bytearray(self.PID+"*%s*%04X*TK,"%(self.imei,datalen))
+ send_data.extend(arm)
+ MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TK")
+ MD5_SIGN = self.pack_MD5_head(MD5_head_data)
+ data = bytearray('[')
+ data.extend(MD5_SIGN)
+ data.extend(send_data)
+ data.extend(']')
+ # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data))
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+
+ def recv(self, event, msg):
+ """
+
+ ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+ @param event: 微聊
+ @param msg: 接收到的下行数据
+ [SZKW*860132060004322*20BD*TK,#!AMR...]
+ """
+ #print("K_ProtoCol:recv:data:{}".format(msg))
+ # print("TK recv:{}".format(msg))
+ msg_tmp = msg.decode('ascii')
+ str = msg_tmp.split('TK,')
+ # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR")))
+ if msg_tmp.find("#!AMR") != -1: #是否是服务器下发音频数据
+ # Wechat_log("TK_ProtoCol:recv:datalen{}".format(len(msg)))
+ arm_data = bytearray(str[1])#获取amr输出
+ get_wechat_data = EventMesh.publish("get_wechat_data")
+
+ MXA_MSG = get_wechat_data[0]
+ wechat_recode_list = get_wechat_data[1]
+ wechat_num = wechat_recode_list["num"]
+ # print("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+
+ if wechat_num >= MXA_MSG:
+ wechat_num = 0
+ if wechat_num == 0:
+ wechat_num += 1
+ elif wechat_num > 0:
+ wechat_num += 1
+
+
+ print("num_total:datalen:{} {}".format(MXA_MSG,wechat_recode_list))
+ wechat_recode_list["%02d"%(wechat_num)] = "R:{}".format(3)
+ wechat_recode_list['num'] = wechat_num
+ EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
+ #写语音文件数据
+ screen_NAME = EventMesh.publish("get_screen_NAME")
+ get_lcd_state = EventMesh.publish("get_lcd_state")
+ if screen_NAME != "wechat" or get_lcd_state == 0:
+ EventMesh.publish("load_screen", {"screen": "wechat_popup"})
+ else:
+ EventMesh.publish("wechat_updata_list_show")
+ # path = "/ext/static/storage_file/audio_amr/amr/{}.amr".format(wechat_num)
+ path = "/ext/static/storage_file/{}.amr".format(wechat_num)
+ with open(path,"w") as fd:
+ arm = bytearray()
+ j = 0
+ for i in range(len(arm_data)):
+ if arm_data[j] == 0x7d and arm_data[j+1] == 0x01:
+ arm.extend(b'\x7d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x02:
+ arm.extend(b'\x5b')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x03:
+ arm.extend(b'\x5d')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x04:
+ arm.extend(b'\x2c')
+ j+=1
+ elif arm_data[j] == 0x7d and arm_data[j+1] == 0x05:
+ arm.extend(b'\x2a')
+ j+=1
+ else :
+ arm.append(arm_data[j])
+ j+=1
+ if j >= len(arm_data):
+ break
+ fd.write(arm)
+ EventMesh.publish(constants.PROTOCOL.TK_SEND,1)
+
+
+
+
+
+class MESSAGE_ProtoCol(ProtoCol):
+ """微聊"""
+ TYPE = "MESSAGE"
+
+
+ def send(self, event, msg):
+
+ #[XT*334588000000156*0007*MESSAGE]
+ send_data = self.PID+"*%s*0007*MESSAGE"%(self.imei)
+ MD5_SIGN = self.pack_MD5_head(send_data)
+ data = "[%s%s]"%(str(MD5_SIGN),send_data)
+ #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
+ # 通过socket发送到服务器端
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+ def recv(self, event, msg):
+ """
+
+ @param event: 微聊文字
+ @param msg: 接收到的下行数据
+ """
+ msg = msg[1:-1]
+
+ msg_s = msg.decode('ascii')
+ msg_s = msg_s.split(',')
+ msg_s = msg_s[1]
+ # Wechat_log("msg_tmp:len:{}\r\n data:{}".format(len(msg_s),msg_s))
+
+
+ get_wechat_data = EventMesh.publish("get_wechat_data")
+
+ MXA_MSG = get_wechat_data[0]
+ wechat_recode_list = get_wechat_data[1]
+ wechat_num = wechat_recode_list["num"]
+ # Wechat_log("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list))
+
+ if wechat_num >= MXA_MSG:
+ wechat_num = 0
+ if wechat_num == 0:
+ wechat_num += 1
+ elif wechat_num > 0:
+ wechat_num += 1
+ msg_txt = {}
+ # 0 1 2 3
+ print("wechat_num:init {}".format(wechat_num))
+ msg_txt = UnicodeHexStr_To_Utf8Str(msg_s)
+ # Wechat_log("msg_txt:{}".format(msg_txt))
+ wechat_recode_list["%02d"%(wechat_num)] = "T:{}".format(msg_txt)
+ wechat_recode_list['num'] = wechat_num
+ EventMesh.publish("set_wechat_data",[MXA_MSG,wechat_recode_list])
+ # Wechat_log("wechat_recode_list:len data:{}".format(wechat_recode_list))
+ EventMesh.publish(constants.PROTOCOL.MESSAGE_SEND)
+ screen_NAME = EventMesh.publish("get_screen_NAME")
+ get_lcd_state = EventMesh.publish("get_lcd_state")
+ if screen_NAME != "wechat" or get_lcd_state == 0:
+ EventMesh.publish("load_screen", {"screen": "wechat_popup"})
+ else:
+ EventMesh.publish("wechat_updata_list_show")
+
+# 平台发送:
+# [XT*YYYYYYYYYYYYYYY*LEN*FACTORY]
+# 实例:[XT*334588000000156*0007*FACTORY]
+# 终端回复:
+# [XT*YYYYYYYYYYYYYYY*LEN*FACTORY]
+# 实例:[XT*334588000000156*0007*FACTORY]
+# 说明:终端恢复出厂设置,里面设置的号码都将清空
+class FACTORY_ProtoCol(ProtoCol):#睡眠时间
+ """
+ 实例:[XT*334588000000156*0008*FACTORY]
+ 终端回复
+ [XT*YYYYYYYYYYYYYYY*LEN*WLKEY]
+ 实例:[XT*334588000000156*0006*FACTORY]
+ """
+ TYPE = "FACTORY"
+
+ def send(self, event, msg):
+ send_data = self.PID+"*%s*0007*FACTORY"%(self.imei)
+ MD5_SIGN = self.pack_MD5_head(send_data)
+ data = "[%s%s]"%(str(MD5_SIGN),send_data)
+ # EventMesh.debug_log("FACTORY:send:%s"%(data))
+ # 通过socket发送到服务器端
+ EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+ def recv(self, event, msg):
+
+ # EventMesh.debug_log("FACTORY!!!!!!!!!")
+ # 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("app_factory_cb")
+ EventMesh.publish(constants.PROTOCOL.FACTORY_SEND)
+ # EventMesh.publish("app_factory",None)#app恢复出厂
+
+
class ProtoColResolver(object):
def __init__(self):
self.protocol_list = []
voiceCall.callEnd()
EventMesh.publish("set_interrup_incall",0)
EventMesh.publish("set_UI_high_priority",0)
-
-
- screen_NAME = EventMesh.publish("get_screen_NAME")
- if screen_NAME != None:
- if screen_NAME != "dialing_noplay_popup":
- EventMesh.publish("return_prev_screen")
+ EventMesh.publish("return_prev_screen")
def Close(self):
self.timer.stop()
EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
def done_return(self):
EventMesh.publish("load_screen", {"screen": "popup"})
- def hangup(self,e):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
+
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "popup"})
EventMesh.publish(constants.EVENT.STOP_HEART)
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "health"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "health"})
-
+ EventMesh.publish("return_prev_screen")
+
def btn8_press(self):
EventMesh.publish("watch_top_show")
EventMesh.publish("load_screen", {"screen": "main_menu"})
self.is_sliding =0
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
voiceCall.callEnd()
EventMesh.publish("set_interrup_incall",0)
EventMesh.publish("set_UI_high_priority",0)
-
-
- screen_NAME = EventMesh.publish("get_screen_NAME")
- if screen_NAME != None:
- if screen_NAME != "dialing_noplay_popup":
- EventMesh.publish("return_prev_screen")
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
pass
voiceCall.callEnd()
EventMesh.publish("set_interrup_incall",0)
EventMesh.publish("set_UI_high_priority",0)
-
-
- screen_NAME = EventMesh.publish("get_screen_NAME")
- if screen_NAME != None:
- if screen_NAME != "dialing_noplay_popup":
- EventMesh.publish("return_prev_screen")
+ EventMesh.publish("return_prev_screen")
def Close(self):
self.timer.stop()
self.timer.stop()
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "toolbox"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "toolbox"})
-
+ EventMesh.publish("return_prev_screen")
+
def btn8_press(self):
EventMesh.publish("watch_top_show")
EventMesh.publish("load_screen", {"screen": "main_menu"})
weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
no_weather_img = lv.img(weather_screen)
- no_weather_img.set_pos(10, 10)
+ no_weather_img.set_pos(5, 10)
no_weather_img.set_size(135, 120)
no_weather_img.set_src("E:/static/update.png")
no_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
weather_tem_label = lv.label(weather_screen)
- weather_tem_label.set_pos(155, 44)
- weather_tem_label.set_size(60, 50)
- weather_tem_label.set_text("_ _")
+ weather_tem_label.set_pos(145, 44)
+ weather_tem_label.set_size(240-145, 50)
+ weather_tem_label.set_text("_ _ ℃")
weather_tem_label.set_long_mode(lv.label.LONG.WRAP)
weather_tem_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
weather_tem_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
- no_weather_degree = lv.img(weather_screen)
- no_weather_degree.set_pos(200, 40)
- no_weather_degree.set_size(22, 22)
- no_weather_degree.set_src("U:/static/degree.png")
- no_weather_degree.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+ # no_weather_degree = lv.img(weather_screen)
+ # no_weather_degree.set_pos(200, 40)
+ # no_weather_degree.set_size(22, 22)
+ # # no_weather_degree.set_src("U:/static/degree.png")
+ # no_weather_degree.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
weather_detail_label = lv.label(weather_screen)
weather_detail_label.set_pos(155, 80)
def update_weather_data(self, event, msg):
- global weather_screen,weather_img,no_weather_img,weather_tem_label,no_weather_degree,\
+ global weather_screen,weather_img,no_weather_img,weather_tem_label,\
weather_detail_label,weather_location_label,no_connect_label ,no_connect_label1
connect = EventMesh.publish(constants.EVENT.GET_CONNECT) #获取网络状态
self.weather_data = EventMesh.publish("get_weather_data")
temp = self.weather_data[4]
if temp == None:
- no_weather_degree.set_pos(200, 40)
- weather_tem_label.set_text("_ _")
+ weather_tem_label.set_text("_ _℃")
else:
- if len(temp) > 2:
- no_weather_degree.set_pos(218, 40)
- else:
- no_weather_degree.set_pos(200, 40)
- weather_tem_label.set_text("{}".format(temp))
+ weather_tem_label.set_text("{} ℃".format(temp))
date = self.weather_data[0]
if date != '{}':
else:
weather_location_label.set_text("--")
else:#已联网未获取到天气数据
- no_weather_degree.set_pos(200, 40)
+
weather_location_label.set_text(" ")
weather_detail_label.set_text("-/-")
- weather_tem_label.set_text("_ _")
+ weather_tem_label.set_text("_ _℃")
no_connect_label.set_text("未获取网络数据")
no_connect_label1.set_text("请稍候重试")
else:
- no_weather_degree.set_pos(200, 40)
+
weather_location_label.set_text(" ")
weather_detail_label.set_text("-/-")
- weather_tem_label.set_text("_ _")
+ weather_tem_label.set_text("_ _℃")
no_weather_img.clear_flag(lv.obj.FLAG.HIDDEN)
weather_img.add_flag(lv.obj.FLAG.HIDDEN)
no_connect_label1.set_text("请联网后重试")
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "toolbox"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "toolbox"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
# EventMesh.publish("load_screen", {"screen": "main_menu"})
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
temp_line7.add_style(style_line_blue,0)
temperature_bpm_label = lv.label(temperature_screen)
- temperature_bpm_label.set_size(120, 40)
- temperature_bpm_label.set_pos(100, 244)
- temperature_bpm_label.set_text("- -")
+ temperature_bpm_label.set_size(240-100, 40)
+ temperature_bpm_label.set_pos(100, 249)
+ temperature_bpm_label.set_text("- -℃")
temperature_bpm_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
temperature_bpm_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
temperature_keep_label = lv.label(temperature_screen)
- temperature_keep_label.set_size(140, 40)
- temperature_keep_label.set_pos(100, 280)
+ temperature_keep_label.set_size(140, 35)
+ temperature_keep_label.set_pos(100, 285)
temperature_keep_label.set_text("未出值")
temperature_keep_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
- temperature_degree_img = lv.img(temperature_screen)
- temperature_degree_img.set_pos(156, 242)
- temperature_degree_img.set_size(22, 22)
- temperature_degree_img.set_src("U:/static/degree.png")
- temperature_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+ # temperature_degree_img = lv.img(temperature_screen)
+ # temperature_degree_img.set_pos(156, 242)
+ # temperature_degree_img.set_size(22, 22)
+ # temperature_degree_img.set_src("U:/static/degree.png")
+ # temperature_degree_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
self.meta = temperature_screen
temp_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
lv.EVENT.CLICKED, None)
- temperature_bpm_label.set_text("- -")
+ temperature_bpm_label.set_text("- -℃")
temperature_start_label.set_text("正在测量中.")
def restart_up(self,e):
global temperature_done_label,temperature_keep_label,temperature_bpm_label,temperature_start_label,temp_reset_btn_img
- temperature_bpm_label.set_text("- -")
+ temperature_bpm_label.set_text("- -℃")
temperature_keep_label.set_text("未出值")
temp_reset_btn_img.add_flag(lv.obj.FLAG.HIDDEN)
self.point = 0
- temperature_bpm_label.set_text("- -")
+ temperature_bpm_label.set_text("- -℃")
temperature_start_label.set_text("正在测量中.")
EventMesh.publish("set_temp_state",1)
EventMesh.publish(constants.EVENT.START_TEMP)
# print("self.temp:{}".format(temp))
if self.point >= 2:
if temp != 0:
- temperature_bpm_label.set_text("{}".format(tmp))
+ temperature_bpm_label.set_text("{} ℃".format(tmp))
else:
- temperature_bpm_label.set_text("- -")
+ temperature_bpm_label.set_text("- -℃")
if self.point%4 == 0 :
temperature_start_label.set_text("正在测量中..")
if WEAR == 0:
temp = 0
temperature_start_label.set_text("佩戴异常,点击重测")
- temperature_bpm_label.set_text("- -")
+ temperature_bpm_label.set_text("- -℃")
temperature_keep_label.set_text(" ")
temperature_keep_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
else :
EventMesh.publish(constants.EVENT.STOP_TEMP)
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "health"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "health"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "health"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "health"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
if self.g_end == 1:
EventMesh.publish("load_screen", {"screen": "countdown"})
else:
- EventMesh.publish("load_screen", {"screen": "toolbox"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
if self.g_state == 0:
self.timer.stop()
- EventMesh.publish("load_screen", {"screen": "toolbox"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
if self.g_state == 0:
self.FIND_timer_count += 1
if self.FIND_timer_count >= 4: #120秒
self.stop_FIND()
- EventMesh.publish("load_screen", {"screen": "countdown"})
+ EventMesh.publish("return_prev_screen")
return
self.aud.play(1, 1, 'E:/static/audio_audio_haixiu.mp3')
def done_left_to_right(self):
self.stop_FIND()
- EventMesh.publish("load_screen", {"screen": "countdown"})
+ EventMesh.publish("return_prev_screen")
def done_right_to_left(self):
self.stop_FIND()
- EventMesh.publish("load_screen", {"screen": "countdown"})
+ EventMesh.publish("return_prev_screen")
def done_bottom_to_top(self):
self.stop_FIND()
- EventMesh.publish("load_screen", {"screen": "countdown"})
+ EventMesh.publish("return_prev_screen")
def done_top_to_bottom(self):
self.stop_FIND()
- EventMesh.publish("load_screen", {"screen": "countdown"})
+ EventMesh.publish("return_prev_screen")
def done_return(self):
self.stop_FIND()
- EventMesh.publish("load_screen", {"screen": "countdown"})
+ EventMesh.publish("return_prev_screen")
def done_click(self):
print("count down !!!!!!!!!!")
self.stop_FIND()
- EventMesh.publish("load_screen", {"screen": "countdown"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
self.stop_FIND()
- EventMesh.publish("load_screen", {"screen": "countdown"})
-
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
self.stop_FIND()
EventMesh.publish("load_screen", {"screen": "main_menu"})
def done_return(self):
if self.s_state == 0:
self.timer.stop()
- EventMesh.publish("load_screen", {"screen": "toolbox"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
if self.s_state == 0:
self.timer.stop()
- EventMesh.publish("load_screen", {"screen": "toolbox"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
if self.s_state == 0:
def stop_FIND(self) :
self.FIND_timer.stop()
self.aud.stop() #播放声音
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def Close(self):
print("self.FIND_timer_Close")
self.meta = Lowpower_screen
def done_left_to_right(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_right_to_left(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_bottom_to_top(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_top_to_bottom(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_click(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"})
def done_left_to_right(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_right_to_left(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_bottom_to_top(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_top_to_bottom(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def done_click(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("load_screen", {"screen": "main_menu"})
rrestor_confirm_n_screen = None
rrestor_confirm_n_screen_label = None
-#正在充电
+#
class restore_confirmScreen(Screen):
NAME = "restore_confirm"
def __init__(self):
self.count = 0
self.timer1 = osTimer()
self.timer2 = osTimer()
+ self.timer3 = osTimer()
+
+ EventMesh.subscribe("app_factory_cb",self.app_factory_cb)
def initialization(self):
global rrestor_confirm_n_screen ,rrestor_confirm_n_screen_label
self.timer1.stop()
self.timer2.stop()
+ def app_factory_cb(self,event,msg):
+ ret = 0
+ ret = ql_fs.path_exists("/ext/static/storage_file")#电话本
+ if ret == True:
+ ql_fs.rmdirs("/ext/static/storage_file")
+ ql_fs.mkdirs("/ext/static/storage_file")
+ EventMesh.publish("alipay_unbind")
+ if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#已连接服务器发指令恢复出厂
+ EventMesh.publish(constants.PROTOCOL.DLT_SEND)
+ self.timer3.start(4000,0,self.timer_cb_threescond)
+ pass
def timer_cb_threescond(self,e):
Power.powerRestart()
self.screen = None
self.screen_old = None
self.screen_prev = None
+ self.screen_prev_new = None
+ self.screen_last = None
self.screen_list = []
self.lv = lv
self.system_sleep_timer = osTimer()
self.main_id = 0
self.set_interrup_flag = 0
self.UI_high_priority_flag = 0 #如果=1,则当前ui不被打断
+ self.page_id = ["main_menu"]
+ self.page_count = 0
+
self.level = EventMesh.publish("get_storage_config","brightness_level")
EventMesh.subscribe("publish_message_event_ui",self.publish_message_event_ui)
EventMesh.subscribe("return_prev_screen",self.return_prev_screen)
+ EventMesh.subscribe("del_prev_screen",self.del_prev_screen)#退出当前界面就删除当前界面 进去需要保存当前界面
+ EventMesh.subscribe("add_new_screen",self.add_new_screen)#保存新的界面用作返回上一级
+
+
self.system_sleep_timer.start(1000, 1, self.system_sleep_timer_cb)
def publish_message_event_ui(self,event,msg):
# for scr in self.screen_list:
# if scr.handle_message_event(data) == 1 :
# break
+ def add_new_screen(self, event, msg):
+ if msg == "main_menu":
+ if self.page_count > 0:
+ self.page_id.clear()#清空所有
+ self.page_count = 0
+ self.page_id = ["main_menu"]
+ print("add_new_screen ",self.page_id,self.page_count)
+ else:
+ if self.page_count == None:
+ self.page_count = 0
+ self.page_id.clear()#清空所有
+ self.page_id = ["main_menu"]
+ last_screen = self.page_id[int(self.page_count)]
+ print("self.page_id",last_screen,msg,self.page_id,self.page_count)
+ if last_screen != msg and (msg in last_screen) == False:
+ self.page_count+=1
+ page_pre = "{}".format(msg)
+ self.page_id.append(page_pre)
+
+ def del_prev_screen(self, event, msg):
+ if self.page_count > 0:
+ # print("del_prev_screen self.page_id",self.page_id,self.page_count)
+ if self.screen.meta_type != "popup":
+ del self.page_id[int(self.page_count)]
+ self.page_count-=1
+
+ if self.page_count == 0:
+ self.page_id.clear()#清空所有
+ self.page_id = ["main_menu"]
+
+ if self.page_count == None:
+ self.page_count = 0
+ self.page_id.clear()#清空所有
+ self.page_id = ["main_menu"]
def return_prev_screen(self, event, msg):
- if self.screen_prev != None:
- EventMesh.publish("load_screen", {"screen": self.screen_prev.NAME})
+ EventMesh.publish("del_prev_screen")#退出当前界面就删除当前界面 进去需要保存当前界面
+
+ pre_page = self.page_id[int(self.page_count)]
+ # print("pre_page:data = {} self.page_count:{}".format(pre_page,self.page_count))
+ if len(pre_page) == 0:#预防是空的界面
+ self.page_count = 0
+ pre_page = "main_menu"
+
+ if self.page_count == None:
+ self.page_count = 0
+
+ if self.page_count == 0:
+ pre_page = "main_menu"
+ if pre_page != None:
+ EventMesh.publish("load_screen", {"screen": pre_page})
+ # if self.screen_prev != None:
+ # print("self.screen_prev.NAME",self.screen_prev.NAME)
+ # EventMesh.publish("load_screen", {"screen": self.screen_prev.NAME})
def set_interrup_incall(self, event, msg):
self.set_interrup_flag = msg
self.screen_old.Close() #先关闭上一次界面
self.lv.img.cache_invalidate_src(None) #清img cache
self.lv.img.cache_set_size(16) #开img cache
- if self.screen_old.meta_type != "popup": #不是弹窗,保存上一个界面,用来返回
- self.screen_prev = self.screen_old #
- self.screen_old = self.screen
+ if self.screen.meta_type != "popup": #只要当前界面不是弹窗界面都要保存当前界面
+ if self.screen_old.meta_type != "popup":#上个界面也不为弹窗界面
+ self.screen_prev = self.screen_old #第二种方式
+ screen_new = msg["screen"]
+ # print('self.screen_prev.NAME:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen.NAME))
+ if self.screen_prev.NAME != self.screen.NAME:
+ EventMesh.publish("add_new_screen",screen_new)#保存新的界面用作返回上一级
+
if msg.get("meta"):
self.screen.meta_info = msg.get("meta")
print("load_screen:post_processor_before_initialization")
self.lv.scr_load(self.screen.get_meta())
self.screen.post_processor_after_initialization()
+ self.screen_old = self.screen
+ if self.screen_prev == None:
+ if self.screen.meta_type != "popup":
+ self.screen_prev = self.screen
self.__lcd_on()
mem = gc.mem_free()
print('2剩余内存RAM:{} KB'.format(mem / 1024))
restore_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
restore_label = lv.label(restore_screen)
-restore_label.set_pos(0, 100)
-restore_label.set_size(240, 40)
-restore_label.set_text("恢复出厂设置?")
+restore_label.set_pos(0, 90)
+restore_label.set_size(240, 70)
+restore_label.set_text("设备多有的数据将被清除,确定继续?")
restore_label.set_long_mode(lv.label.LONG.WRAP)
restore_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
restore_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
def concel(self, e):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
update_return.add_event_cb(lambda e: EventMesh.callback_wrapper(self.back(e)),lv.EVENT.CLICKED, None)
def back(self,e):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
EventMesh.publish("load_screen", {"screen": "factorymode"})
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
pass
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def confirm(self, e):
EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"})
def concel(self, e):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
def fun(self,*argc):
EventMesh.publish("system_sleep_rest")#防止黑屏
if self.count == 0:
- self.aud.play(1, 1, 'E:/static/R_POWER_1.mp3') #播放来电铃声
+ self.aud.play(1, 1, 'E:/static/R_POWER_1.mp3') #播放来电铃声
else:
play_state = EventMesh.publish("get_audio_state")#音频播放状态
if play_state != None:
self.meta = language_screen
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
class DialswitchScreen(Screen):
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def done_left_to_right(self):#右滑
#print("done_left_to_right!!!!!!!!!")
self.timer.stop()
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
EventMesh.publish("load_screen", {"screen": "main_menu"})
def btn8_press(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
# -------------------------------------------imei screen----------------------------------------------------------
imei_screen = lv.obj()
imei_label.set_text(imei)
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
app_label.set_text(imei)
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")
volume_alarm_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "alarmvolume"})), lv.EVENT.CLICKED, None)
def done_return(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "main_menu"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("load_screen", {"screen": "maiin_menu"})
def done_return(self):
self.aud.stop()
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn1_release(self):
- EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("return_prev_screen")
def btn8_press(self):
EventMesh.publish("watch_top_show")