configModel添加变量更改入库模式:增加蓝牙指令切换入库模式:优化移动入库,结果待移动平台验证 221/1 221/head 226/target/1
authorDXY <1731678236@qq.com>
Tue, 4 Jun 2024 03:50:37 +0000 (11:50 +0800)
committerDXY <1731678236@qq.com>
Tue, 4 Jun 2024 03:50:37 +0000 (11:50 +0800)
code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h
code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp
code/sdk/application/wearable/service/ble_service/blemoder/bletest.h
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.h
code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp
code/sdk/drivers/peripheral/slip/cat1Service/pyscript/EventMesh.py
code/sdk/drivers/peripheral/slip/cat1Service/pyscript/cat1Service.py
code/sdk/drivers/peripheral/slip/cat1Service/pyscript/china_mobile_dmp.py
code/sdk/drivers/peripheral/slip/cat1Service/pyscript/telecom_dmp.py

index e837acc..63ab40c 100644 (file)
@@ -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;            // 禁止拷贝构造
index f407f6d..fbfc02d 100644 (file)
@@ -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 关
index 865c83e..bdadd4d 100644 (file)
@@ -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();
index fed09c7..b4395cb 100644 (file)
@@ -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
 }
index 81d6daa..049c5af 100644 (file)
@@ -4021,6 +4021,63 @@ len 就是data的长度
 *totaldata:总的数据内容 包含包头和校验预览做接口是用  如果要计算totaldata的长度直接是len+17+1 就是加上包头和校验和\r
 crcvalue;数据的校验和 不包含包头和校验和的计算结果\r
 */\r
+// 73 01 31 01 00 00 00 01 00 00 00 01 00 00 00 00 00 2 FE\r
+void SetDMPModeCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//设置入库模式 0关闭 1电信 2-255移动\r
+{\r
+    uint8_t value[19];\r
+    memset(value,0,19);\r
+    uint32_t tmp = 1;\r
+    value[0] =0x72;\r
+    value[1] =0x01;\r
+    value[2] =0x31;\r
+    memcpy(value+3,&tmp,4);\r
+    memcpy(value+7,&tmp,4);\r
+    memcpy(value+11,&tmp,4);\r
+    memcpy(value+15,&tmp,2);\r
+    \r
+    if(Check_CRC(data,len,crcvalue))\r
+    {\r
+        \r
+        int state = 0;\r
+        state = data[0];\r
+        printf("data[0];%d state:%d\r\n",data[0],state);\r
+        Set_DmpChangeMode(state);\r
+        value[17] = 1;\r
+        value[18] = Calculate_CRC(value,18);\r
+        sendBleData(value,19);\r
+    }else{\r
+        value[17] = 0;\r
+        value[18] = Calculate_CRC(value,18);\r
+        sendBleData(value,19);\r
+    }\r
+}\r
+// 73 01 FE 01 00 00 00 00 00 00 00 01 00 00 00 00 00 crc\r
+\r
+void GetDMPModeCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//获取入库模式 0关闭 1电信 2-255移动\r
+{\r
+    uint8_t value[19];\r
+    memset(value,0,19);\r
+    uint32_t tmp = 1;\r
+    value[0] =0x72;\r
+    value[1] =0x01;\r
+    value[2] =0x32;\r
+    memcpy(value+3,&tmp,4);\r
+    memcpy(value+7,&tmp,4);\r
+    memcpy(value+11,&tmp,4);\r
+    memcpy(value+15,&tmp,2);\r
+    \r
+    if(Check_CRC(data,len,crcvalue))\r
+    {\r
+        int state = Get_DmpChangeMode();\r
+        value[17] = state;\r
+        value[18] = Calculate_CRC(value,18);\r
+        sendBleData(value,19);\r
+    }else{\r
+        value[17] = 0;\r
+        value[18] = Calculate_CRC(value,18);\r
+        sendBleData(value,19);\r
+    }\r
+}\r
 void type2AE3Data(ble_read_data *buffer_handle,uint8_t *cmd_buf ,uint8_t *data,uint16_t datalen,uint8_t *totaldata,uint8_t crcvalue)\r
 {\r
     uint16_t cmd = cmd_buf[1]*256+cmd_buf[2];\r
@@ -4159,7 +4216,13 @@ void type2AE3Data(ble_read_data *buffer_handle,uint8_t *cmd_buf ,uint8_t *data,u
         case ALARM_CMD://获取手表闹钟//同步闹钟\r
             readDevDataBle(cmd,data,datalen,totaldata,crcvalue);\r
             break;\r
-        \r
+\r
+        case SET_DMP_MODE_CMD://0X0131\r
+            SetDMPModeCmd(cmd,data,datalen,totaldata,crcvalue);\r
+            break;\r
+        case GET_DMP_MODE_CMD://0X0132\r
+            GetDMPModeCmd(cmd,data,datalen,totaldata,crcvalue);\r
+            break;\r
         default:\r
             break;\r
     }\r
@@ -4857,6 +4920,9 @@ uint8_t jscheck_ancs(uint8_t *data)
     }\r
     return 1;\r
 }\r
+\r
+\r
+\r
 void ancsDataShowCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
 {\r
     uint8_t value[19];\r
index ecacb80..3ec0f3c 100644 (file)
@@ -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
index acecf40..839c903 100644 (file)
@@ -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:
index 7c8cf68..7951835 100644 (file)
@@ -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):
index 06cbb20..2c91b04 100644 (file)
@@ -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, ())
index 7c8db3e..ebb6774 100644 (file)
@@ -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:#å½\93å\89\8dæ\97¶é\97´-æ\97§ç\9a\84ä¿\9då­\98æ\97¶é\97´ å°\8fäº\8ereportTime å¹¶ä¸\94次æ\95°å¤§äº\8e8次äº\86
-            time_count = time_tmp - self.reportTime_Sec
+        else:#å\90¦å\88\99次æ\95°ç½®é\9b¶ï¼\8cè®°å½\95ä¸\80ä¸\8bï¼\88å½\93å\89\8dæ\97¶é\97´+reportTimeï¼\89æ\97¶é\97´
+            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)
         #读配置文件 
index 075f895..de00742 100644 (file)
@@ -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)