From: DXY <1731678236@qq.com> Date: Tue, 4 Jun 2024 03:50:37 +0000 (+0800) Subject: configModel添加变量更改入库模式:增加蓝牙指令切换入库模式:优化移动入库,结果待移动平台验证 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=refs%2Fchanges%2F221%2Fhead;p=mirrors%2FFD230.git configModel添加变量更改入库模式:增加蓝牙指令切换入库模式:优化移动入库,结果待移动平台验证 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h index e837acc58..63ab40cbb 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h @@ -98,6 +98,9 @@ namespace OHOS CONFIFMOFEL_ITEM_DMP_FACTORY_STATUS,//入库恢复出厂状态 0已恢复出厂过 1代表没有 1cat1发送 + CONFIFMOFEL_ITEM_DMP_CHANGE_MODE,//入库切换模式 默认是1 电信入库 2-255其他是移动入库 0是关闭 + CONFIFMOFEL_ITEM_DMP_CHANGE_MODE_OLD,//入库切换模式旧模式 防止切换来回数据不清楚问题 默认是1 电信入库 2-255其他是移动入库 + CONFIGMODEL_ITEM_MAX, } ; @@ -174,6 +177,7 @@ namespace OHOS void SetScreenDuration(unsigned int value); unsigned int GetScreenDuration(void); + void SetRaiseToWake(bool value); bool GetRaiseToWake(void); /* ----------------------------- 声音与震动相关set与get ----------------------------- */ @@ -187,6 +191,12 @@ namespace OHOS void SetDmpFactoryStatus(int state); int GetDmpFactoryStatus(void); + void SetDmpChangeMode(int state);//设置入库模式 + int GetDmpChangeMode(void);//获取入库模式 + + void SetDmpChangeModeOld(int state);//设置旧入库模式 + int GetDmpChangeModeOld(void);//获取旧入库模式 + void SetVibrationReminder(int state); int GetVibrationReminder(void); @@ -280,7 +290,9 @@ namespace OHOS {ConfigDataType::DATATYPE_STRING, "sedentary_reminderTime ", "10:00-22:00" }, // CONFIFMOFEL_ITEM_SEDENTARY_REMINDERTIME,//久坐提醒时间段 {ConfigDataType::DATATYPE_STRING, "sim_iccid", "" },//CONFIFMOFEL_ITEM_SIM_ICCID cat1的iccid {ConfigDataType::DATATYPE_STRING, "telecom_regist_timesec", "" },//CONFIFMOFEL_ITEM_TELECOM_DMP_TIMESEC - {ConfigDataType::DATATYPE_INT, "dmp_factory_status", "0" }//CONFIFMOFEL_ITEM_DMP_FACTORY_STATUS默认是0 + {ConfigDataType::DATATYPE_INT, "dmp_factory_status", "0" },//CONFIFMOFEL_ITEM_DMP_FACTORY_STATUS默认是0 + {ConfigDataType::DATATYPE_INT, "dmp_change_mode", "1" },//CONFIFMOFEL_ITEM_DMP_CHANGE_MODE 入库切换模式 默认值 1 + {ConfigDataType::DATATYPE_INT, "dmp_change_mode_old", "1" }//CONFIFMOFEL_ITEM_DMP_CHANGE_MODE_OLD 默认值 1 要和新默认值一致 }; ConfigModel(); // 私有构造函数,确保无法在外部实例化 ConfigModel(const ConfigModel &) = delete; // 禁止拷贝构造 diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp index f407f6d89..fbfc02d33 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp @@ -680,6 +680,28 @@ namespace OHOS { return get_configData_int(CONFIFMOFEL_ITEM_DMP_FACTORY_STATUS); } + + void ConfigModel::SetDmpChangeMode(int state) + { + set_condigData_Int(CONFIFMOFEL_ITEM_DMP_CHANGE_MODE,state); + } + + + int ConfigModel::GetDmpChangeMode(void) + { + return get_configData_int(CONFIFMOFEL_ITEM_DMP_CHANGE_MODE); + } + + void ConfigModel::SetDmpChangeModeOld(int state) + { + set_condigData_Int(CONFIFMOFEL_ITEM_DMP_CHANGE_MODE_OLD,state); + } + + + int ConfigModel::GetDmpChangeModeOld(void) + { + return get_configData_int(CONFIFMOFEL_ITEM_DMP_CHANGE_MODE_OLD); + } /* * @brief 设置震动模式强度 * @param 马达 开关,3 强,2 中,1 å¼±,0 关 diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp index 865c83eef..bdadd4dcc 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -610,7 +610,18 @@ void set_brigthness(uint8_t data) //设置屏幕亮度 p_ConfigModel->SetBrightness(data); return; } +void Set_DmpChangeMode(int state) +{ + OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance(); + p_ConfigModel->SetDmpChangeMode(state); +} + +int Get_DmpChangeMode(void) +{ + OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance(); + return p_ConfigModel->GetDmpChangeMode(); +} int get_brigthness(void) //获取屏幕亮度 { OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance(); diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h index fed09c74c..b4395cb03 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.h @@ -182,6 +182,10 @@ void ble_get_sleep_remind(msg_get_sleep_param_info_t *data); void ble_set_sleep_remind(msg_get_sleep_param_info_t data); char * ble_step_history(uint8_t day,uint16_t *len); + +void Set_DmpChangeMode(int state); +int Get_DmpChangeMode(void); + #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c index 81d6daad1..049c5afb0 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c @@ -4021,6 +4021,63 @@ len 就是data的长度 *totaldata:总的数据内容 包含包头和校验预览做接口是用 如果要计算totaldata的长度直接是len+17+1 就是加上包头和校验和 crcvalue;数据的校验和 不包含包头和校验和的计算结果 */ +// 73 01 31 01 00 00 00 01 00 00 00 01 00 00 00 00 00 2 FE +void SetDMPModeCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//设置入库模式 0关闭 1电信 2-255移动 +{ + uint8_t value[19]; + memset(value,0,19); + uint32_t tmp = 1; + value[0] =0x72; + value[1] =0x01; + value[2] =0x31; + memcpy(value+3,&tmp,4); + memcpy(value+7,&tmp,4); + memcpy(value+11,&tmp,4); + memcpy(value+15,&tmp,2); + + if(Check_CRC(data,len,crcvalue)) + { + + int state = 0; + state = data[0]; + printf("data[0];%d state:%d\r\n",data[0],state); + Set_DmpChangeMode(state); + value[17] = 1; + value[18] = Calculate_CRC(value,18); + sendBleData(value,19); + }else{ + value[17] = 0; + value[18] = Calculate_CRC(value,18); + sendBleData(value,19); + } +} +// 73 01 FE 01 00 00 00 00 00 00 00 01 00 00 00 00 00 crc + +void GetDMPModeCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//获取入库模式 0关闭 1电信 2-255移动 +{ + uint8_t value[19]; + memset(value,0,19); + uint32_t tmp = 1; + value[0] =0x72; + value[1] =0x01; + value[2] =0x32; + memcpy(value+3,&tmp,4); + memcpy(value+7,&tmp,4); + memcpy(value+11,&tmp,4); + memcpy(value+15,&tmp,2); + + if(Check_CRC(data,len,crcvalue)) + { + int state = Get_DmpChangeMode(); + value[17] = state; + value[18] = Calculate_CRC(value,18); + sendBleData(value,19); + }else{ + value[17] = 0; + value[18] = Calculate_CRC(value,18); + sendBleData(value,19); + } +} void type2AE3Data(ble_read_data *buffer_handle,uint8_t *cmd_buf ,uint8_t *data,uint16_t datalen,uint8_t *totaldata,uint8_t crcvalue) { uint16_t cmd = cmd_buf[1]*256+cmd_buf[2]; @@ -4159,7 +4216,13 @@ void type2AE3Data(ble_read_data *buffer_handle,uint8_t *cmd_buf ,uint8_t *data,u case ALARM_CMD://获取手表闹钟//同步闹钟 readDevDataBle(cmd,data,datalen,totaldata,crcvalue); break; - + + case SET_DMP_MODE_CMD://0X0131 + SetDMPModeCmd(cmd,data,datalen,totaldata,crcvalue); + break; + case GET_DMP_MODE_CMD://0X0132 + GetDMPModeCmd(cmd,data,datalen,totaldata,crcvalue); + break; default: break; } @@ -4857,6 +4920,9 @@ uint8_t jscheck_ancs(uint8_t *data) } return 1; } + + + void ancsDataShowCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)// { uint8_t value[19]; diff --git a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h index ecacb8069..3ec0f3cc2 100644 --- a/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h +++ b/code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h @@ -92,6 +92,9 @@ void cameram_send_data(void); #define SYN_BASIC_TRANIN_HISTORY_DATA_CMD 0x0149 //同步基础训练历史数据basic training #define SYN_SLEEP_HISTORY_DATA_CMD 0x014B //同步睡眠历史数据 +#define SET_DMP_MODE_CMD 0x0131 +#define GET_DMP_MODE_CMD 0x0132 + #define FIND_PHONE_CMD 0x0501 //同步睡眠历史数据 #define MSG_DIRECTION_RECV 0x73 diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp index acecf40a0..839c9031c 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp @@ -944,15 +944,7 @@ void get_sim_iccid_toCat1(void)//获取sim卡的ICCID到cat1 udp_send_msg_toCat1(UDP_MSG_GET_SIM_ICCID,iccid_buf); } } -void set_telecom_dmp_switch_toCat1(uint8_t on)//设置电信入库功能开关->CAT1 -{ - if(on){ - udp_send_msg_toCat1(UDP_MSG_SET_TELECON_DMP_SWITCH,"1");//1开启 0关闭 - }else{ - udp_send_msg_toCat1(UDP_MSG_SET_TELECON_DMP_SWITCH,"0"); - } - -} + void save_regist_time_toBle(char *msg)//保存注册的时间戳 { if(strncmp(msg,"REGIST_TIME:",12) == 0)//字符串是否有ICCID:字符串 @@ -964,6 +956,28 @@ void save_regist_time_toBle(char *msg)//保存注册的时间戳 } return; } +void send_dmp_mode_toCat1(uint8_t on)//设置 +{ + printf("set_telecom_dmp_switch_toCat1 on:%d\r\n",on); + char buf[10] ={0}; + sprintf_s(buf,10,"%d",on); + udp_send_msg_toCat1(UDP_MSG_SET_TELECON_DMP_SWITCH,buf);//1开启 0关闭 +} +int get_dmp_change_mode_toCat1(void)//获取切换模式TO CAT1 +{ + int state = OHOS::ConfigModel::GetInstance()->GetDmpChangeMode(); + return state; +} +void set_dmp_change_mode_old(uint8_t mode)//获取切换模式TO CAT1 +{ + OHOS::ConfigModel::GetInstance()->SetDmpChangeModeOld(mode); + return; +} +int get_dmp_change_mode_old(void)//获取切换模式TO CAT1 +{ + int state = OHOS::ConfigModel::GetInstance()->GetDmpChangeModeOld(); + return state; +} void get_regist_time_toCat1(void)//设置电信入库功能开关->CAT1 { char time_buf[30] = {0}; @@ -987,27 +1001,31 @@ void send_ble_mac_toCat1(void)//发送BLE mac地址 to CAT1 char btaddr_str[64] = {0}; uint32_t len = 6; ret = uapi_get_nv_btaddr((uint8_t *)btaddr, &len); - sprintf((char *)btaddr_str, "%02X:%02X:%02X:%02X:%02X:%02X", btaddr[0], btaddr[1], btaddr[2], btaddr[3], btaddr[4], btaddr[5]); + sprintf_s((char *)btaddr_str,64,"%02X:%02X:%02X:%02X:%02X:%02X", btaddr[0], btaddr[1], btaddr[2], btaddr[3], btaddr[4], btaddr[5]); udp_send_msg_toCat1(UDP_MSG_SEND_BLE_MAC_TO_CAT1,btaddr_str); } -void send_dmp_factory_flag(void) +void send_dmp_factory_flag(void)//发送入库出厂标识 { printf("send_dmp_factory_flag\r\n"); char send_str[10] = {0}; int state = OHOS::ConfigModel::GetInstance()->GetDmpFactoryStatus(); - sprintf((char *)send_str, "%d", state); + sprintf_s((char *)send_str,10, "%d", state); udp_send_msg_toCat1(UDP_MSG_RECV_DMP_FACTORY,send_str);//发送和接收同一个指令 } -void set_dmp_factory_flag(char *msg)//设置factory状态 +int get_dmp_factory_status(void) +{ + int state = OHOS::ConfigModel::GetInstance()->GetDmpFactoryStatus(); + return state; +} +void set_dmp_china_mobile_factory_flag(char *msg)//设置factory状态 { - printf("set_dmp_factory_flag:%s\r\n",msg); + printf("set_dmp_china_mobile_factory_flag:%s\r\n",msg); int state = atoi(msg); OHOS::ConfigModel::GetInstance()->SetDmpFactoryStatus(state); } static int udp_packet_parse(char *rx_buffer, int len) { - int index = 0; if (len <6 || rx_buffer == NULL) { @@ -1071,23 +1089,32 @@ static int udp_packet_parse(char *rx_buffer, int len) restart_time_sync(); cat1_getsignal(); if(g_msg_format_type == 0) break; - #ifdef SUPPORT_TELECOM_DMP //是否开启电信入库功能 - set_telecom_dmp_switch_toCat1(1); - get_software_version_toCat1(); - get_sim_iccid_toCat1(); - get_regist_time_toCat1(); - #endif - #ifdef SUPPORT_CHINA_MOBILE_DMP //是否开启移动 - get_software_version_toCat1(); - send_ble_mac_toCat1(); - send_dmp_factory_flag(); - #endif - } + int stateOld = get_dmp_change_mode_old(); + int stateNew = get_dmp_change_mode_toCat1();//0 stateOld = 0 0-1 + if (stateNew == 0){//关闭入库功能 把恢复出厂标识清0 + send_dmp_mode_toCat1(stateNew); + set_dmp_change_mode_old(stateNew); + set_dmp_china_mobile_factory_flag("0");//清数据不能保留原来的数据 + }else{ + set_dmp_change_mode_old(stateNew); + if (stateNew != stateOld ){//防止切换之后数据还是以前的 + set_dmp_china_mobile_factory_flag("0");//清数据不能保留原来的数据 + } + printf("stateNew %d stateOld:%d\r\n",stateNew,stateOld); + send_dmp_mode_toCat1(stateNew); + if (stateNew == 1){ //0 是不开启入库功能 1 电信 2-255其他移动 + get_software_version_toCat1(); + send_dmp_factory_flag(); + }else { + get_software_version_toCat1(); + send_ble_mac_toCat1(); + send_dmp_factory_flag(); + } + } + } break; - case UDP_MSG_GET_TELECON_DMP_TIMESEC: - #ifdef SUPPORT_TELECOM_DMP - save_regist_time_toBle(msg_buffer); - #endif + case UDP_MSG_GET_TELECON_DMP_TIMESEC://暂时不用 + break; case UDP_CMD_GET_CAT1VER: index = cat1_handle_version_msg(msg_buffer); @@ -1095,13 +1122,10 @@ static int udp_packet_parse(char *rx_buffer, int len) case UDP_CMD_MSG_ATCMD: PRINT("ATCMD reply : %s\n", msg_buffer); break; - case UDP_MSG_SAVE_SIM_ICCID: - #ifdef SUPPORT_TELECOM_DMP - save_sim_iccid_toBle(msg_buffer); - #endif + case UDP_MSG_SAVE_SIM_ICCID://暂时不用 break; case UDP_MSG_RECV_DMP_FACTORY: - set_dmp_factory_flag(msg_buffer); + set_dmp_china_mobile_factory_flag(msg_buffer); break; case UDP_MSG_RECV_CAT1_SMS_CONTENT://接收单条短信内容 case UDP_MSG_SMS: diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/EventMesh.py b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/EventMesh.py index 7c8cf6876..7951835b2 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/EventMesh.py +++ b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/EventMesh.py @@ -1,7 +1,7 @@ import _thread import usys import ql_fs -CHINA_TELECOM_DM_FUN_ENABLE = 0 #是否开启电信入库的功能 +CHINA_TELECOM_DM_FUN_ENABLE = 1 #是否开启电信入库的功能 CHINA_MOBILE_DM_FUN_ENABLE = 1 #开启移动入库功能 class EventStore(object): def __init__(self): diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py index 06cbb2069..2c91b04eb 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py +++ b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py @@ -51,11 +51,9 @@ import ql_fs import pm import sms from usr.EventMesh import eventMesh,CHINA_TELECOM_DM_FUN_ENABLE,CHINA_MOBILE_DM_FUN_ENABLE -# CHINA_TELECOM_DM_FUN_ENABLE = 1 #是否开启电信入库功能 1开启 0关闭 -if CHINA_TELECOM_DM_FUN_ENABLE == 1:#防止两边不同步修改 用于包含头文件信息 - from usr.telecom_dmp import telecomDmpCb -if CHINA_MOBILE_DM_FUN_ENABLE == 1: - from usr.china_mobile_dmp import chinamobileCb + +from usr.telecom_dmp import telecomDmpCb +from usr.china_mobile_dmp import chinamobileCb def msg_cb(args): index = args[1] @@ -230,16 +228,15 @@ class Cat1Service: self.__threadid = _thread.start_new_thread(self.__Socket_Thread, ()) self.telecom_init_flag = 0 self.telecomTimer = osTimer() - if CHINA_TELECOM_DM_FUN_ENABLE == 1: - eventMesh.subscribe("cat1_reply_iccid_to_ble",self.cat1_reply_iccid_to_ble) - eventMesh.subscribe("cat1_reply_timesec_to_ble",self.cat1_reply_timesec_to_ble) + eventMesh.subscribe("cat1_reply_iccid_to_ble",self.cat1_reply_iccid_to_ble) + eventMesh.subscribe("cat1_reply_timesec_to_ble",self.cat1_reply_timesec_to_ble) self.iccid_data = "" self.software_version = "" self.deletSmsTimer = osTimer() - eventMesh.subscribe("set_telecom_dmp_switch",self.set_telecom_dmp_switch) - eventMesh.subscribe("get_telecom_dmp_switch",self.get_telecom_dmp_switch) + eventMesh.subscribe("set_dmp_change_mode",self.set_dmp_change_mode) + eventMesh.subscribe("get_dmp_change_mode",self.get_dmp_change_mode) eventMesh.subscribe("delete_sms_event",self.delete_sms_event) eventMesh.subscribe("remove_all_sms_cb", self.remove_all_sms_cb)# eventMesh.subscribe("send_sms_max_to_Ble",self.send_sms_max_to_Ble) @@ -365,22 +362,26 @@ class Cat1Service: elif cmd == "10" or cmd == "12" or cmd == "14":#获取固件版本号或者获取BT保存的SIM卡的ICCID BLE那边是否开启电信入库功能 if CHINA_TELECOM_DM_FUN_ENABLE == 1 : - if eventMesh.publish("get_telecom_dmp_switch") == 1: + if eventMesh.publish("get_dmp_change_mode") == 1: self.telecom_recv_cmd(cmd,parm) else: pass if CHINA_MOBILE_DM_FUN_ENABLE == 1: - self.china_mobile_recv_cmd(cmd,parm) + if eventMesh.publish("get_dmp_change_mode") > 1: + self.china_mobile_recv_cmd(cmd,parm) else: pass pass elif cmd == "13": - if CHINA_TELECOM_DM_FUN_ENABLE == 1: - self.telecom_recv_cmd(cmd,parm) + on = int(parm) + print("set_dmp_change_mode on:{}".format(on)) + eventMesh.publish("set_dmp_change_mode",on) + elif cmd == "16": if CHINA_MOBILE_DM_FUN_ENABLE == 1: - self.china_mobile_recv_cmd(cmd,parm) + if eventMesh.publish("get_dmp_change_mode") > 1: + self.china_mobile_recv_cmd(cmd,parm) else: pass elif cmd == "17":#用于CAT1恢复出厂需要清空数据的标识通用 @@ -393,16 +394,9 @@ class Cat1Service: eventMesh.publish("set_dev_version",self.software_version) print("software_version:{},{}".format(self.software_version,parm)) elif cmd == "12": - if len(str(parm)) > 1:#为空的时候会传一个字符0 - self.iccid_data = str(parm) - eventMesh.publish("save_iccid_data",[0,self.iccid_data]) - print("iccid_data:{},{}".format(self.iccid_data,parm)) - elif cmd == "13":#电信入库功能开关cmd - on=int(parm) - eventMesh.publish("set_telecom_dmp_switch",on) - elif cmd == "14":#电信入库功能开关cmd - time=int(parm) - eventMesh.publish("set_regist_time",[0,time]) + pass + elif cmd == "14":# + pass pass def china_mobile_recv_cmd(self,cmd,parm):#移动入库相关指令 @@ -423,13 +417,14 @@ class Cat1Service: self.reply_cmd('17',"{}".format(1)) - def set_telecom_dmp_switch(self,event,msg): + def set_dmp_change_mode(self,event,msg): self.telecom_dmp_switch = msg def delete_sms_single_data(self,event,msg):#删除单条信息 sms.deleteMsg(int(msg)) - def get_telecom_dmp_switch(self,event,msg): + def get_dmp_change_mode(self,event,msg): return self.telecom_dmp_switch + def delete_sms_event(self,event,msg): self.deletSmsTimer.start(2*1000,0,self.delete_sms_cb) def delete_sms_cb(self,*argc): @@ -666,21 +661,14 @@ class Cat1Service: print('Network connection successful.') self.set_network_config() self.__net_connected = 1 - if CHINA_TELECOM_DM_FUN_ENABLE == 1: - if eventMesh.publish("get_telecom_dmp_switch") == 1: - eventMesh.publish("set_network_state",self.__net_connected) + eventMesh.publish("set_network_state",self.__net_connected) self.__waiting_netstat = 0 return 0 else: print('Network connection failed, stage={}, state={}'.format(stage, state)) self.reset_network_config() self.__net_connected = 0 - if CHINA_TELECOM_DM_FUN_ENABLE == 1: - if eventMesh.publish("get_telecom_dmp_switch") == 1: - eventMesh.publish("set_network_state",self.__net_connected) - - if CHINA_MOBILE_DM_FUN_ENABLE == 1: - eventMesh.publish("set_network_state",self.__net_connected) + eventMesh.publish("set_network_state",self.__net_connected) self.__waiting_netstat = 0 return -1 @@ -776,16 +764,19 @@ class Cat1Service: cat1service.set_dns(pri_dns, sec_dns) # 网卡IP信息查询 cat1service.ipconfig() + if eventMesh.publish("get_dmp_change_mode") == 0:#入库功能关闭 + return if CHINA_TELECOM_DM_FUN_ENABLE == 1:#电信入库功能 不使用设置 0 防止两边不同步修改 - if eventMesh.publish("get_telecom_dmp_switch") == 1: + if eventMesh.publish("get_dmp_change_mode") == 1: eventMesh.publish("set_network_state",1) telecomDmpCb.telecom_dmp_power_on_init() if CHINA_MOBILE_DM_FUN_ENABLE == 1: - eventMesh.publish("set_network_state",1) - if self.china_mobile_init == 1: - return - self.china_mobile_init = 1 - chinamobileCb.china_mobile_init() + if eventMesh.publish("get_dmp_change_mode") > 1: + eventMesh.publish("set_network_state",1) + if self.china_mobile_init == 1: + return + self.china_mobile_init = 1 + chinamobileCb.china_mobile_init() def cat1_reply_iccid_to_ble(self,event,msg): ICCID_DATA = str("ICCID:")+str(msg) @@ -950,7 +941,7 @@ voiceCall.setCallback(voice_callback) def checknet_cb(arg): print("start checktime!!") if CHINA_TELECOM_DM_FUN_ENABLE == 1:#这是手表每30s检查一次 - if eventMesh.publish("get_telecom_dmp_switch") == 1: + if eventMesh.publish("get_dmp_change_mode") == 1: telecomDmpCb.telecom_dmp_power_on_count() _thread.start_new_thread(cat1service.wait_network_ready, ()) diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/china_mobile_dmp.py b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/china_mobile_dmp.py index 7c8db3edf..ebb67740b 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/china_mobile_dmp.py +++ b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/china_mobile_dmp.py @@ -57,6 +57,7 @@ class chinamobile: self.iccid_data = "" self.software_version = "" self.mac_data ="" + self.address = "b.fxltsbl.com" self.retryInterval = 10 self.retryNum = 1#异常重试最大次数 @@ -127,14 +128,14 @@ class chinamobile: #写文件信息 def write_config_msg_file(self,msg): print("write_config_msg_file msg:{}\r\n".format(msg)) - with open("/usr/config_msg.json",'w+',encoding="utf-8") as fd: + with open("/usr/china_mobie_config.json",'w+',encoding="utf-8") as fd: ujson.dump(msg,fd) #读文件信息 def read_config_msg_file(self): - IFEXIST = ql_fs.path_exists("/usr/config_msg.json") #不存在 + IFEXIST = ql_fs.path_exists("/usr/china_mobie_config.json") #不存在 if IFEXIST == True: - with open("/usr/config_msg.json","r",encoding='utf-8') as fd: + with open("/usr/china_mobie_config.json","r",encoding='utf-8') as fd: self.config_data = ujson.load(fd) print("read_config_msg_file self.config_data:{}\r\n".format(self.config_data)) @@ -162,7 +163,7 @@ class chinamobile: config_data = {"endpoint":"{}||{}||{}||{}||{}||{}||{}||{}||{}||{}||{}||{}".format(brand,model,appKey,sdkVersion,apiVersion,apiType,templateId,imei1,imei2,preField1,preField2,preField3),"configType":"{}".format(configType)} #配置拉取数据上报地址 - url = "https://b.fxltsbl.com//dm-multi-accept/multi/getMultiTerminalConfig" + url = "https://{}//dm-multi-accept/multi/getMultiTerminalConfig".format(self.address) headers_T ={"Content-Type":"application/json"} print("ujson.dumps(config_data):{}".format(ujson.dumps(config_data))) response = request.post(url, data=ujson.dumps(config_data),headers =headers_T) @@ -180,7 +181,7 @@ class chinamobile: print("first_get_config_json false",self.__net_connected) if self.__net_connected != 1:#网络不正常 return getresult - url = "https://b.fxltsbl.com//dm-multi-accept/multi/getMultiTerminalConfig" + url = "https://{}//dm-multi-accept/multi/getMultiTerminalConfig".format(self.address) result_json = self.china_mobile_first_get_config(url) # { # "reportTime":1440, @@ -196,7 +197,8 @@ class chinamobile: reportTime = self.reportTime reportNum = self.reportNum retryNum = self.retryNum - print("get_config_json old:{} {} {} {} {}\r\n".format(reportTime,heartBeatTime,reportNum,retryInterval,retryNum)) + address = self.address + print("get_config_json old:{} {} {} {} {} {}\r\n".format(reportTime,heartBeatTime,reportNum,retryInterval,retryNum,address)) if "rspCode" in result_json:#返回结课code 0000成功 其他参考文档 rspCode = result_json["rspCode"] rspCode_zh = result_json["rspMsg"] @@ -217,15 +219,27 @@ class chinamobile: self.retryInterval = int(msg_data["retryInterval"]) if "retryNum" in msg_data: self.retryNum = int(msg_data["retryNum"]) - print("get_config_json new:{} {} {} {} {}\r\n".format(self.reportTime,self.heartBeatTime,self.reportNum,self.retryInterval,self.retryNum)) + if "address" in msg_data: + self.address = str(msg_data["address"]) + print("get_config_json new:{} {} {} {} {}\r\n".format(self.reportTime,self.heartBeatTime,self.reportNum,self.retryInterval,self.retryNum,self.address)) print("true") else: print("false") + self.config_data["reportTime"] = self.reportTime + self.config_data["heartBeatTime"] = self.heartBeatTime + self.config_data["reportNum"] = self.reportNum + self.config_data["retryNum"] = self.retryNum + self.config_data["retryInterval"] = self.retryInterval + self.config_data["address"] = str(self.address) + + if getresult == 1:#请求配置文件成功 - if (self.retryInterval != retryInterval) or (self.retryNum != retryNum) or (self.heartBeatTime != heartBeatTime) or (self.reportTime != reportTime) or (self.reportNum != reportNum): + if (self.retryInterval != retryInterval) or (self.retryNum != retryNum) or (self.heartBeatTime != heartBeatTime) or\ + (self.reportTime != reportTime) or (self.reportNum != reportNum) or (self.address != address): #重新走注册流程 清空报错次数 记录当前时间戳 print("new config not old config!!!\r\n")#拉取的配置文件和保存本地的不一致 + self.write_config_msg_file(self.config_data) #保存新的配置文件 return 2 return getresult #1 获取成功 0 获取失败 @@ -258,7 +272,6 @@ class chinamobile: #不需要加密 #||分隔符不能超过11个 否则平台会解析出错 config_data = "{}||{}||{}||{}||{}||{}||{}||{}||{}||{}||{}||{}".format(brand,model,appKey,sdkVersion,apiVersion,apiType,templateId,imei1,imei2,configType,preField1,preField2) - #需要加密的数据明文 if (len(self.mac_data) == 0):#获取失败了 self.mac_data = "***" @@ -380,6 +393,8 @@ class chinamobile: self.reportTime = int(self.config_data["reportTime"]) if "reportNum" in self.config_data: self.reportNum = int(self.config_data["reportNum"]) + if "address" in self.config_data: + self.address = str(self.config_data["address"]) #终端本地需要保存本地的数据 # self.reportTime_Sec = 0 #保存本地 保存时间戳下一次开机使用 @@ -396,18 +411,11 @@ class chinamobile: print("read_config_file self.config_data:{} ".format(self.config_data)) def retryTimerCb(self,*argc):#异常重试机制定时器回调 #保存本地 - self.search_report_num_step() self.retryNum_old+=1 #1 self.reportNum = 1 self.config_data["retryNum_old"] = self.retryNum_old self.write_config_msg_file(self.config_data) print("retryTimerCb self.retryNum_old:{}\r\n".format(self.retryNum_old)) - if self.retryNum_old >= self.retryNum and self.retryNum_old != 0: - print("retryTimerCb timer") - self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据 - return - #触发查询上报总数流程 - - + self.search_report_num_step() pass def error_retryNum_step(self):#判读报错次数是否大于self.retryNum 步骤 @@ -417,15 +425,6 @@ class chinamobile: print("error_retryNum_step:self.retryNum_old >= self.retryNum\r\n") self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据 else: - date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp)#获取时间戳 - if self.reportTime_Sec == 0: - - self.reportTime_Sec = time_tmp#记录最大上报频率时间用于下次开机做判断 保存时间戳 - print("error_retryNum_step:self.reportTime_Sec:{}\r\n".format(self.reportTime_Sec)) - self.config_data["reportTime_Sec"] = self.reportTime_Sec - self.write_config_msg_file(self.config_data) - get_result = self.first_get_config_json()#发起向服务端请求配置信息下发到设备端 if get_result == 0:#获取失败或者没有网络 走异常重试机制 self.report_Num_old+=1#请求错误请求失败都要保存上报次数 @@ -436,7 +435,6 @@ class chinamobile: self.retryTimer.stop()#关定时器 self.retpoertTimerC.stop() self.heartreportTimer.stop() - self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb) pass else:# @@ -452,6 +450,7 @@ class chinamobile: self.write_config_msg_file(self.config_data) self.china_mobile_init()#重新走流程读配置文件->判断上报总数->判断报错次数->获取配置文件 return + report_result = self.self_regis_report_cb()#注册 #第二步触发心跳上报次数 @@ -465,28 +464,39 @@ class chinamobile: def check_current_time(self):#检测当前时间是否超过self.reportTime 超过清空报错次数 清空上报总次数 # date_tmp = utime.localtime() - time_tmp = utime.mktime(date_tmp)#获取时间戳 - - print("check_current_time:time_tmp - self.reportTime_Sec:{} self.reportTime*60:{}".format(time_tmp - self.reportTime_Sec,self.reportTime*60)) - if (time_tmp - self.reportTime_Sec) >= self.reportTime*60:#判断报错次数 + currentTime = utime.mktime(date_tmp)#获取时间戳 + reportTime = self.reportTime_Sec + print("check_current_time:time_tmp - self.reportTime_Sec:{} self.reportTime*60:{}".format(self.reportTime_Sec - currentTime ,self.reportTime*60)) + if currentTime > reportTime:#当前时间是否大于上次记录的时间 currentTime >= reportTime 直接清空 不超过定时清空数据不再上报数据 + date_tmp = utime.localtime() + time_tmp = utime.mktime(date_tmp)#获取时间戳 + self.report_Num_old = 0#清空上报总次数 #保存本地 + self.retryNum_old = 0#清空上报错误次数 #保存本地 + self.reportTime_Sec = time_tmp+reportTime#记录当前时间+reportTime的时间用于下次错判断 + self.config_data["reportTime_Sec"] = self.reportTime_Sec + self.config_data["retryNum_old"] = self.retryNum_old + self.config_data["report_Num_old"] = self.report_Num_old + self.write_config_msg_file(self.config_data) self.error_retryNum_step() - else:#当前时间-旧的保存时间 小于reportTime 并且次数大于8次了 - time_count = time_tmp - self.reportTime_Sec + else:#否则次数置零,记录一下(当前时间+reportTime)时间 + time_count = self.reportTime_Sec - currentTime#self.reportTime_Sec永远比time_tmp大 self.retpoertTimerC.start(time_count*1000,1,self.retpoertTimerCB) - def retpoertTimerCB(self,*argc): + + # 第一次请求的时候,记录一下(当前时间+reportTime)时间与次数,如果次数小于最大次数,直接返回true。 + # 如果次数大于最大次数,则判断一下当前时间是否超过上次设置的时间,如果超过了,则表示超过最大次数;否则次数置零,记录一下(当前时间+reportTime)时间。 + def retpoertTimerCB(self,*argc):#按照剩余的时间做定时器 date_tmp = utime.localtime() time_tmp = utime.mktime(date_tmp)#获取时间戳 - print("retpoertTimerCB time_tmp -self.reportTime_Sec:{} time_tmp :{} self.reportTime_Sec:{}\r\n".format(time_tmp-self.reportTime_Sec,time_tmp,self.reportTime_Sec)) + print("retpoertTimerCB time_tmp -self.reportTime_Sec:{} time_tmp :{} self.reportTime_Sec:{}\r\n".format(self.reportTime_Sec-time_tmp,time_tmp,self.reportTime_Sec)) self.report_Num_old = 0#清空上报总次数 #保存本地 self.retryNum_old = 0#清空上报错误次数 #保存本地 - self.reportTime_Sec = 0 + self.reportTime_Sec = time_tmp+reportTime#记录当前时间+reportTime的时间用于下次错判断 self.config_data["reportTime_Sec"] = self.reportTime_Sec self.config_data["retryNum_old"] = self.retryNum_old self.config_data["report_Num_old"] = self.report_Num_old self.write_config_msg_file(self.config_data) - self.retpoertTimerC.stop()#关闭定时器 self.error_retryNum_step()#清空报错次数重新走判断报错次数 pass @@ -495,14 +505,21 @@ class chinamobile: print("search_report_num_step:self.retryInterval:{} self.retryNum:{}".format(self.report_Num_old,self.reportNum)) if self.report_Num_old >= self.reportNum and self.report_Num_old != 0:#查询上报的总次数是否大于存储上报总次数 self.check_current_time()#检测当前时间是否超过self.reportTime 超过清空报错次数 清空上报总次数 - else:#查询报错次数 - self.error_retryNum_step() + else:# + date_tmp = utime.localtime() + time_tmp = utime.mktime(date_tmp)#获取时间戳 + self.reportTime_Sec = time_tmp+self.reportTime*60 #(记录时间+reportTime)标识旧的时间 + self.config_data["reportTime_Sec"] = self.reportTime_Sec + self.write_config_msg_file(self.config_data) + self.error_retryNum_step()#查询上报错误次数 - def reportTimerIntervalCb(self,*argc):#最大上报频率时间间隔定时器 + def reportTimerIntervalCb(self,*argc):#最大上报频率时间间隔定时器 要清空数据 print("reportTimerIntervalCb\r\n") self.retryNum_old = 0#保存 self.report_Num_old = 0#保存 定时清空数据 - self.reportTime_Sec = 0 + date_tmp = utime.localtime() + time_tmp = utime.mktime(date_tmp)#获取时间戳 + self.reportTime_Sec = time_tmp+self.reportTime*60 #(记录时间+reportTime)标识旧的时间 self.config_data["reportTime_Sec"] = self.reportTime_Sec self.config_data["retryNum_old"] = self.retryNum_old self.config_data["report_Num_old"] = self.report_Num_old @@ -512,10 +529,6 @@ class chinamobile: def self_regis_report_cb(self):#自注册上报信息 date_tmp = utime.localtime() time_tmp = utime.mktime(date_tmp)#获取时间戳 - if self.reportTime_Sec == 0: - self.reportTime_Sec = time_tmp #需要保存本地 - self.config_data["reportTime_Sec"] = self.reportTime_Sec - self.write_config_msg_file(self.config_data) self.report_Num_old+=1 ##保存本地 self.config_data["report_Num_old"] = self.report_Num_old @@ -523,7 +536,7 @@ class chinamobile: print("self_regis_report_cb:self.report_Num_old:{} self.reportNum:{} self.reportTime_Sec:{}\r\n".format(self.report_Num_old,self.reportNum,self.reportTime_Sec)) #设备自注册上报信息 - url = "https://b.fxltsbl.com//dm-multi-accept/multi/acceptMultiTerminalRegInfo"#上报地址 + url = "https://{}//dm-multi-accept/multi/acceptMultiTerminalRegInfo".format(self.address)#上报地址 confing_type = "autoRegist"#上报传输配置 result = self.china_mobile_autoregist_infor(url,confing_type) @@ -534,6 +547,13 @@ class chinamobile: self.retryTimer.stop()#关定时器 self.retpoertTimerC.stop() self.heartreportTimer.stop() + if self.retryNum_old >= self.retryNum and self.retryNum_old != 0: + print("retryTimerCb timer22")#异常重试过多重新间隔reportTime注册流程 关闭所有的定时器 + self.retryTimer.stop()#关定时器 + self.retpoertTimerC.stop() + self.heartreportTimer.stop() + self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据 + return self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb) return 0 else: @@ -557,7 +577,7 @@ class chinamobile: print("heart_report_cb:self.report_Num_old:{} self.reportNum:{} self.reportTime:{} self.reportTime_Sec:{}\r\n".format(self.report_Num_old,self.reportNum,self.reportTime,self.reportTime_Sec)) - url = "https://b.fxltsbl.com//dm-multi-accept/multi/acceptMultiTerminalHeartbeatInfo"#上报地址 + url = "https://{}//dm-multi-accept/multi/acceptMultiTerminalHeartbeatInfo".format(self.address)#上报地址 confing_type = "keepAlive"#上报传输配置 result = self.china_mobile_autoregist_infor(url,confing_type) if result != 1: @@ -566,21 +586,19 @@ class chinamobile: self.retryTimer.stop()#关定时器 self.retpoertTimerC.stop() self.heartreportTimer.stop() - if self.reportTime_Sec == 0: - self.reportTime_Sec = time_tmp#需要保存本地 - self.config_data["reportTime_Sec"] = self.reportTime_Sec - self.write_config_msg_file(self.config_data) + if self.retryNum_old >= self.retryNum and self.retryNum_old != 0:#异常重试过多重新间隔reportTime注册流程 + print("retryTimerCb timer3333") + self.retryTimer.stop()#关定时器 + self.retpoertTimerC.stop() + self.heartreportTimer.stop() + self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb)#重新开始 需要清空数据 + return self.retryTimer.start(self.retryInterval*60*1000,0,self.retryTimerCb) return if self.report_Num_old >= self.reportNum and self.report_Num_old != 0: self.retryTimer.stop()#关定时器 self.retpoertTimerC.stop() self.heartreportTimer.stop() - if self.reportTime_Sec == 0: - self.reportTime_Sec = time_tmp#需要保存本地 - self.config_data["reportTime_Sec"] = self.reportTime_Sec - self.write_config_msg_file(self.config_data) - print("self.retpoertTimerC.start") self.retpoertTimerC.start(self.reportTime*60*1000,0,self.reportTimerIntervalCb) return @@ -591,7 +609,14 @@ class chinamobile: if status == None: status = 0 if status == 0:#恢复出厂或者新的机器需要清空不必要的数据 - if self.init_flag == 0: + if self.init_flag == 0:#只初始化一次 + IFEXIST = ql_fs.path_exists("/usr/telecom_config.json") #不存在 + if IFEXIST == True: + uos.remove("/usr/telecom_config.json") + isStorage = ql_fs.path_exists("/usr/china_mobie_config.json")#移动入库的配置文件移除 + if isStorage == True: + uos.remove("/usr/china_mobie_config.json") + #先清空再写入 self.init_flag = 1 self.retryInterval = 10 self.retryNum = 1#异常重试最大次数 @@ -603,15 +628,17 @@ class chinamobile: self.report_Num_old = 0#保存本地 self.retryNum_old = 0#保存本地 + self.address = "b.fxltsbl.com"#默认适配地址 + self.config_data["retryInterval"] = self.retryInterval self.config_data["retryNum"] = self.retryNum self.config_data["heartBeatTime"] = self.heartBeatTime self.config_data["reportTime"] = self.reportTime self.config_data["reportNum"] = self.reportNum + self.config_data["address"] = self.address self.config_data["report_Num_old"] = self.report_Num_old self.config_data["retryNum_old"] = self.retryNum_old - self.config_data["reportTime_Sec"] = self.reportTime_Sec self.write_config_msg_file(self.config_data) #读配置文件 diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/telecom_dmp.py b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/telecom_dmp.py index 075f8950b..de00742fd 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/telecom_dmp.py +++ b/code/sdk/drivers/peripheral/slip/cat1Service/pyscript/telecom_dmp.py @@ -37,6 +37,7 @@ def get_report_url_website(mode = None):#获取上报网址 class telecomDmp: def __init__(self): + self.config_data = {} self.check_timer = osTimer()#1小时定时器 self.multiDayResend_timer = osTimer()#12小时定时器 多日重发的机制 self.telecomTimer = osTimer() @@ -107,24 +108,48 @@ class telecomDmp: def get_dev_version(self,event,msg):#获取固件版本号 return self.software_version - def save_iccid_data(self,event,msg):#保存ICCID - print("save_iccid_data :{}".format(msg)) + def save_iccid_data(self,event,msg): + self.iccid_data = str(msg)[6:]#ICCID: + print("write_config_msg_file msg:{}\r\n".format(msg)) + self.config_data["ICCID"]=self.iccid_data + with open("/usr/telecom_config.json",'w+',encoding="utf-8") as fd: + ujson.dump(self.config_data,fd) + #读文件信息 + def get_iccid_data(self,event,msg): - self.iccid_data = str(msg[1])#iccid: - if msg[0] == 1:#不需要回复BLE 否则需要回复BLE - eventMesh.publish("cat1_reply_iccid_to_ble",self.iccid_data) - - def get_iccid_data(self,event,msg):#获取ICCID + IFEXIST = ql_fs.path_exists("/usr/telecom_config.json") #不存在 + if IFEXIST == True: + with open("/usr/telecom_config.json","r",encoding='utf-8') as fd: + self.config_data = ujson.load(fd) + print("get_iccid_data self.config_data:{}\r\n".format(self.config_data)) + if self.config_data != {}: + if "ICCID" in self.config_data: + value = self.config_data["ICCID"] + self.iccid_data = str(value) + else: + self.iccid_data = "" + print("get_iccid_data self.config_data end:{}\r\n".format(self.config_data)) return self.iccid_data def set_regist_time(self,event,msg):# - print("regist_timeSec :{}".format(msg)) - - self.regist_timeSec = int(msg[1])#iccid: - if msg[0] == 1:#不需要回复BLE 否则需要回复BLE - eventMesh.publish("cat1_reply_timesec_to_ble",self.regist_timeSec) + self.regist_timeSec = str(msg)[7:]#REGIST: + print("set_regist_time msg:{}\r\n".format(msg)) + self.config_data["REGIST"]=self.regist_timeSec + with open("/usr/telecom_config.json",'w+',encoding="utf-8") as fd: + ujson.dump(self.config_data,fd) def get_regist_time(self,event,msg):# + IFEXIST = ql_fs.path_exists("/usr/telecom_config.json") #不存在 + if IFEXIST == True: + with open("/usr/telecom_config.json","r",encoding='utf-8') as fd: + self.config_data = ujson.load(fd) + print("get_regist_time self.config_data:{}\r\n".format(self.config_data)) + if self.config_data != {}: + if "REGIST" in self.config_data: + value = self.config_data["REGIST"] + self.regist_timeSec = int(value) + else: + self.regist_timeSec = 0 return self.regist_timeSec @@ -256,7 +281,8 @@ class telecomDmp: self.timer_count = 0 self.check_timer.stop() self.isRegistOk = 1#已完成自注册的标识 - eventMesh.publish("save_iccid_data",[1,iccid]) + iccid_buf =str("ICCID:")+str(str(iccid)) + eventMesh.publish("save_iccid_data",iccid_buf) self.multiple_day_resend() #上报成功后 需要29.5或者30.5天后重发 初始值为0.5也就是12小时 30天后再重发一次也是一个月后重发数据自注册域 print("regist success:!!!!!") @@ -289,14 +315,16 @@ class telecomDmp: time_tmp = utime.mktime(date_tmp)#获取时间戳 if self.multimer_init == 1:#已注册过或者开机5分钟之内没有注册 或者注册成功就开始出发多日重发机制 self.mulit_day_timesec = time_tmp+MULTI_DAY_RESEND_t#初始值多加12小时 #初始化t = 0.5天 - eventMesh.publish("set_regist_time",[1,self.mulit_day_timesec]) + REGIST_buf = str("REGIST:")+str(self.mulit_day_timesec) + eventMesh.publish("set_regist_time",REGIST_buf) return self.multimer_init = 1 #设置开始时间戳 get_timesec = eventMesh.publish("get_regist_time")#一开机初始化为0 没有保存过数据 如果保存过就用保存的时间 if get_timesec == 0: - self.mulit_day_timesec = time_tmp+MULTI_DAY_RESEND_t #初始化t = 0.5天 - eventMesh.publish("set_regist_time",[1,self.mulit_day_timesec]) + self.mulit_day_timesec = time_tmp+MULTI_DAY_RESEND_t + REGIST_buf = str("REGIST:")+str(self.mulit_day_timesec) + eventMesh.publish("set_regist_time",REGIST_buf) else: self.mulit_day_timesec = get_timesec self.multiDayResend_timer.start(60*60*1000,1,self.multiDayResendTimer_Cb)#一分钟计时 @@ -317,7 +345,8 @@ class telecomDmp: return self.telecom_regist_infor_init()#要自注册数据域信息发送完才初始化t self.mulit_day_timesec = time_tmp+MULTI_DAY_RESEND_t # 重发后 初始化t = 0.5天 - eventMesh.publish("set_regist_time",[1,self.mulit_day_timesec]) + REGIST_buf = str("REGIST:")+str(self.mulit_day_timesec) + eventMesh.publish("set_regist_time",REGIST_buf) def set_telecom_init_state(self,event,msg):#开机5分钟内检查是否有联网 有一次联网就关闭检查 @@ -336,12 +365,27 @@ class telecomDmp: def set_dmp_power_num(self,event,msg): print("set_dmp_power_num:{}".format(msg)) self.timerPowerNum = msg + def clear_storage_data(self): + IFEXIST = ql_fs.path_exists("/usr/telecom_config.json") #不存在 + if IFEXIST == True: + uos.remove("/usr/telecom_config.json") + isStorage = ql_fs.path_exists("/usr/china_mobie_config.json")#移动入库的配置文件移除 + if isStorage == True: + uos.remove("/usr/china_mobie_config.json") + print("clear_storage_data;{} {}".format(IFEXIST,isStorage)) + def telecom_dmp_power_on_init(self):#开机初始化一次检测 if eventMesh.publish("get_telecom_init_state") == 1:#发送消息获取对应的值 return if eventMesh.publish("get_dmp_power_num") < (eventMesh.publish("get_dmp_power_timer_count")*1000)/30000:#开机检查 if eventMesh.publish("get_telecom_init_state") == 0:#开机初始化一次 + status = eventMesh.publish("get_factory_status") + if status == None: + status = 0 + if status == 0:#恢复出厂过需要清空存储数据 + self.clear_storage_data() + pass self.telecomTimer.start(1*1000,0,self.fun_cb) eventMesh.publish("set_telecom_init_state",1)