修复ConfigModel字符串数据存储获取函数
authorSnickerSun <snickersun@163.com>
Sat, 13 Apr 2024 03:01:45 +0000 (11:01 +0800)
committerSnickerSun <snickersun@163.com>
Sat, 13 Apr 2024 03:01:45 +0000 (11:01 +0800)
添加startup_post_init ,根据配置信息,开启和关闭对应的服务,设备电源等

13 files changed:
code/sdk/application/brandy/brandy_standard/thread_pri_init.c
code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h
code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp
code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchModel.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemAboutTheWatchView.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/Systemupgrade.cpp
code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h
code/sdk/drivers/peripheral/lcd/lcd_private.c
code/sdk/drivers/peripheral/slip/cat1Service/cat1_ctl.cpp
code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/middleware/chips/brandy/nv/nv_config/cfg/acore/app.json
code/sdk/middleware/chips/brandy/pm/include/pm_definition.h

index f1b1af1..4b14ac0 100755 (executable)
@@ -363,9 +363,7 @@ static void thread_main(const void *unused)
 #ifdef ENABLE_SLIP\r
     slip_uart_init();\r
 #endif\r
-#ifdef SUPPORT_CAT1_SERVICE\r
-    cat1_server_init();\r
-#endif\r
+\r
 \r
 #ifdef ENABLE_CYWEE\r
     uapi_cywee_service_init();\r
@@ -373,13 +371,24 @@ static void thread_main(const void *unused)
 \r
 #ifdef SUPPORT_BLE_SERVICE\r
     if(start_ble_service_on_bootup_flag())\r
-        svr_bluetooth_init();\r
+    {\r
+        PRINT("start custom protocol classic bt ble service !\r\n");\r
+        openBle();\r
+\r
+    }\r
 #endif \r
 \r
 #ifdef SUPPORT_ALIPAY_SEC\r
     uapi_alipay_svr_init();\r
 #endif\r
     // ble_hid_server_init();\r
+\r
+#ifdef SUPPORT_CAT1_SERVICE\r
+    cat1_server_init();\r
+#endif\r
+\r
+    startup_post_init();\r
+\r
     set_startup_finish_flag();\r
 \r
 \r
index 93346b5..de5abd7 100644 (file)
@@ -116,11 +116,11 @@ namespace OHOS
         void SetLanguage(int languageid);
         int GetLanguage();
         void SetLanguageCode(char *languagecode);
-        const char *GetLanguageCode(void);
+        std::string GetLanguageCode(void);
 
-        char *Getimei();
-        char *GetpyVer();
-        char *GetmoderVer();
+        std::string Getimei();
+        std::string GetpyVer();
+        std::string GetmoderVer();
         
         void Setimei(char *str);
         void SetpyVer(char *str);
@@ -139,7 +139,7 @@ namespace OHOS
     private:
         configmodel_item configmodel_item_key_name[CONFIGMODEL_ITEM_MAX] =
         {
-            {ConfigDataType::DATATYPE_BOOL,     "ClassicBT_Service_On",     "true"  },//CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON, //关机前经典蓝牙服务状态,启动时仍然恢复其当时状态
+            {ConfigDataType::DATATYPE_BOOL,     "ClassicBT_Service_On",     "false"  },//CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON, //关机前经典蓝牙服务状态,启动时仍然恢复其当时状态
             {ConfigDataType::DATATYPE_INT,      "ScreenBrightness",         "255"    },//CONFIGMODEL_ITEM_SCREEN_BRIGHTNESS_VALUE,
             {ConfigDataType::DATATYPE_INT,      "ScreenOffTimeoutValue",    "5000"  },//CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE, 自动息屏时间,默认5秒 5000ms
             {ConfigDataType::DATATYPE_BOOL,     "Cat1_Service_On",          "false" },//CONFIGMODEL_ITEM_CAT1_SERVICE_ON, // 关机前Cat1 Service启动着,则重启仍然启动,反之亦然
index 02859fc..e64594f 100644 (file)
@@ -11,6 +11,7 @@ namespace OHOS
     ConfigModel::~ConfigModel()
     {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " ConfigModel::~ConfigModel");
+        //手表全生命周期存在,所以不考虑析构释放内存
     }
 
     ConfigModel *ConfigModel::GetInstance()
@@ -525,23 +526,23 @@ namespace OHOS
         set_condigData_String(CONFIGMODEL_ITEM_LANGUAGE_CODE,languagecode);
     }
 
-    const char *ConfigModel::GetLanguageCode(void)
+    std::string ConfigModel::GetLanguageCode(void)
     {
-        return get_configData_string(CONFIGMODEL_ITEM_LANGUAGE_CODE).c_str();
+        return get_configData_string(CONFIGMODEL_ITEM_LANGUAGE_CODE);
     }
 
-    char *ConfigModel::Getimei()
+    std::string ConfigModel::Getimei()
     {
-        return (char*)get_configData_string(CONFIGMODEL_ITEM_CAT1_IMEI).c_str();
+        return get_configData_string(CONFIGMODEL_ITEM_CAT1_IMEI);
     }
 
-    char *ConfigModel::GetpyVer()
+    std::string ConfigModel::GetpyVer()
     {
-        return (char*)get_configData_string(CONFIGMODEL_ITEM_CAT1_PYVER).c_str();
+        return get_configData_string(CONFIGMODEL_ITEM_CAT1_PYVER);
     }
-    char *ConfigModel::GetmoderVer()
+    std::string ConfigModel::GetmoderVer()
     {
-        return (char*)get_configData_string(CONFIGMODEL_ITEM_CAT1_MODEMVER).c_str();
+        return get_configData_string(CONFIGMODEL_ITEM_CAT1_MODEMVER);
     }
 
     void ConfigModel::Setimei(char *str)
@@ -689,7 +690,7 @@ uint32_t ConfigModelInit(void)
  */
 bool start_ble_service_on_bootup_flag(void)
 {
-    return OHOS::ConfigModel::GetInstance()->GetCat1_4Gability();
+    return OHOS::ConfigModel::GetInstance()->GetClassicBlueToothState();
 }
 /***
  * Cat1服务是否开启
index 0875e9a..10932b2 100644 (file)
@@ -14,10 +14,10 @@ namespace OHOS
     LanguageSwitchModel::LanguageSwitchModel()
     {
         p_ConfigModel = ConfigModel::GetInstance();
-        if (p_ConfigModel->GetLanguageCode() != nullptr)
+        // if (p_ConfigModel->GetLanguageCode().c_str() != nullptr)
         {
             //printf("%s\n", p_ConfigModel->GetLanguageCode());
-            CurLanguageCode = const_cast<char *>(p_ConfigModel->GetLanguageCode());
+            CurLanguageCode = const_cast<char *>(p_ConfigModel->GetLanguageCode().c_str());
         }
     }
 
index b8769e1..27c59e5 100644 (file)
@@ -269,7 +269,12 @@ namespace OHOS
             .text = "",\r
             .lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
         };\r
-        Config.text = ConfigModel::GetInstance()->Getimei();\r
+        Config.text = const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());\r
+\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Imei %s , %s \r\n",Config.text,ConfigModel::GetInstance()->Getimei().c_str());\r
+\r
+\r
+\r
         AlgorithmVersion = InitLabel(Config);\r
         if (AlgorithmVersion == nullptr)\r
         {\r
@@ -299,7 +304,7 @@ namespace OHOS
         /* -------------------------------------------------------------------------- */\r
         uint8_t btaddr[6] ={0};\r
         uint8_t btaddr_str[64]={0};\r
-        uint32_t len = 64;\r
+        uint32_t len = 6;\r
         errcode_t ret = uapi_get_nv_btaddr((uint8_t*)btaddr,&len);\r
         sprintf((char*)btaddr_str , "%02X:%02X:%02X:%02X:%02X:%02X",btaddr[0],btaddr[1],btaddr[2],btaddr[3],btaddr[4],btaddr[5]);\r
 \r
@@ -344,8 +349,8 @@ namespace OHOS
         SystemAboutTheWatchScrollView->Add(LANAddressTitle);\r
         /* -------------------------------------------------------------------------- */\r
        \r
-         uint8_t ble_name[20] = {0};\r
-        uint32_t ble_name_len ;\r
+        uint8_t ble_name[20] = {0};\r
+        uint32_t ble_name_len = sizeof(ble_name) ;\r
         ret = uapi_get_nv_btname(ble_name, &ble_name_len);\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get btname %s ,ret 0x%X\n",ble_name,ret);\r
        \r
@@ -434,7 +439,9 @@ namespace OHOS
             .text = "HarmonyOS Sans",\r
             .lineBreakMode = UILabel::LINE_BREAK_WRAP,\r
         };\r
-        Config.text=ConfigModel::GetInstance()->GetmoderVer();\r
+        Config.text=const_cast<char*>(ConfigModel::GetInstance()->GetmoderVer().c_str());\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "modemver %s , %s \r\n",Config.text,ConfigModel::GetInstance()->GetmoderVer().c_str());\r
+\r
         CAT1mode = InitLabel(Config);\r
         if (CAT1mode == nullptr)\r
         {\r
@@ -469,10 +476,12 @@ namespace OHOS
             .height = 30,\r
             .fontSize = 26,\r
             .lineHeigh = 30,\r
-            .text = "HarmonyOS Sans",\r
+            .text = "PyVer_3",\r
             .lineBreakMode = UILabel::LINE_BREAK_WRAP,\r
         };\r
-        Config.text=ConfigModel::GetInstance()->GetpyVer();\r
+        Config.text=const_cast<char*>(ConfigModel::GetInstance()->GetpyVer().c_str());\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "pyver %s , %s \r\n",Config.text,ConfigModel::GetInstance()->GetpyVer().c_str());\r
+\r
         pymode = InitLabel(Config);\r
         if (CAT1mode == nullptr)\r
         {\r
index 4770968..89b506d 100644 (file)
@@ -394,8 +394,8 @@ namespace OHOS
     {
         if(is_new_cat1_version)
         {
-            char *imei_str= ConfigModel::GetInstance()->Getimei();
-            char * version_buf=ConfigModel::GetInstance()->GetmoderVer();
+            char *imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+            char * version_buf=const_cast<char*>(ConfigModel::GetInstance()->GetmoderVer().c_str());
             sprintf((char *)uri,"http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=%s&imei=%s",version_buf,imei_str);
             cat1_ota_update((char *)"0");
             container_updating->SetVisible(true);
@@ -453,8 +453,8 @@ namespace OHOS
         
             }
             
-            char *imei_str= ConfigModel::GetInstance()->Getimei();
-            char * version_buf=ConfigModel::GetInstance()->GetmoderVer();
+            char *imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+            char * version_buf=const_cast<char*>(ConfigModel::GetInstance()->GetmoderVer().c_str());
             sprintf((char *)uri,
             "http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=%s&imei=%s",
                 version_buf,imei_str);
@@ -810,7 +810,7 @@ namespace OHOS
          }  
         display_api->set_screen_set_keepon_timeout(-1);
         memset(uri,0,256);
-        char *imei_str= ConfigModel::GetInstance()->Getimei();
+        char *imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
         sprintf((char *)uri,"http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=%s&imei=%s",version_buf,imei_str);
         custom_start_ota_download_ui_1(uri,(uint8_t*)Path,true);
 
index 6075ca6..822ed86 100755 (executable)
@@ -176,12 +176,12 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
 #else
     { HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },      // S_AGPIO_L22 MIPI TE
 #endif
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE },   // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源   拉高有效
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源   拉高有效
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L24 LCM_EN
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L25  //////////// audio pa reset
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L26 心率复位 PPG reset
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L27    LCM reset
-    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效
+    { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L28    CAT_1复位 CAT1_RESET_N  拉低有效
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L29    charge done info 检测是否充满电
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE },   // S_AGPIO_L30   KP_MKIN1 唤醒 CAT1 ,输出
     { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE },   // S_AGPIO_L31    KP_MKOUIT1 唤醒 蓝牙 ,输入
@@ -237,7 +237,9 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = {
  */
 
 
-#define DEFAULT_POWERON_CAT1 0
+//默认开启Cat1 然后再根据配置决定是否关闭.
+#define DEFAULT_POWERON_CAT1 1  
+
 //需要配置默认输出的,以及需要配置默认输入中断函数的。
 const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
 
index 0554c31..1e45a1e 100644 (file)
@@ -27,7 +27,7 @@ static void lcd_drv_power_on(void)
     uapi_gpio_set_val(RESET_LCD_GPIO, GPIO_LEVEL_HIGH);
     uapi_tcxo_delay_ms(10); /* delay 10 ms */
 }
-#define  USE_OUTPUT_CTL 1
+#define  USE_OUTPUT_CTL 0
 static void lcd_drv_power_off(void)
 {
 #if USE_OUTPUT_CTL
index 0da4579..4ff3178 100644 (file)
@@ -80,21 +80,21 @@ void uapi_cat1_stop_volte_voice(void)
 
 void uapi_cat1_remove_audio_vote(void)
 {
-    uint8_t cnt = pm_veto_get_id_cnt(PM_ID_AUDIO);
+    uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
     if (cnt == 1) {
-        uapi_pm_remove_sleep_veto(PM_ID_AUDIO);
+        uapi_pm_remove_sleep_veto(PM_ID_CAT1);
     } else {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has delete pm_id_audio vote\r\n");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has delete pm_id_cat1 vote\r\n");
     }
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"\r\nCAT1 SERVICE MCU SLEEP SUCCESS\r\n");
 }
 void uapi_cat1_add_audio_vote(void)
 {
-    uint8_t cnt = pm_veto_get_id_cnt(PM_ID_AUDIO);
+    uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
     if (cnt == 0) {
-        uapi_pm_add_sleep_veto(PM_ID_AUDIO);
+        uapi_pm_add_sleep_veto(PM_ID_CAT1);
     } else {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_audio vote\r\n");
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");
     }
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"\r\nCAT1 SERVICE MCU WAKEUP SUCCESS\r\n");
 }
index 1e10f11..04f9297 100644 (file)
@@ -585,11 +585,11 @@ errcode_t cat1_server_init(void)
     
     g_timer_time_sync = osTimerNew((osTimerFunc_t)time_sync_func, osTimerPeriodic, NULL, NULL);
 
-    if ( poweron_cat1_on_bootup_flag() )
-    {
-        uapi_cat1_power_on(1);
-        uapi_cat1_reset(0);
-    }
+    // if ( poweron_cat1_on_bootup_flag() )
+    // {
+    //     uapi_cat1_power_on(1);
+    //     uapi_cat1_reset(0);
+    // }
     if (g_timer_time_sync == NULL)
         printf("g_timer_time_sync create failed\n");
 
index ede3795..891d41e 100644 (file)
@@ -150,6 +150,47 @@ bool is_doing_shutdown_or_reboot(void)
 {
     return doing_shutdown_or_reboot;
 }
+
+void startup_post_init_task(void)
+{
+
+    PRINT("startup_post_init_task !\r\n");
+
+    LOS_Msleep(5000);
+    if ( poweron_cat1_on_bootup_flag() )
+    {
+        PRINT("PowerOn Cat1 !\r\n");
+
+        uapi_cat1_power_on(1);
+        uapi_cat1_reset(0);
+    }else{
+        PRINT("PowerOff Cat1 !\r\n");
+
+        uapi_cat1_power_on(0);
+        uapi_cat1_reset(1);
+    }
+
+}
+    
+void startup_post_init(void)
+{
+    PRINT("startup_post_init !\r\n");
+    app_task_definition_t taskcfg={0};
+    taskcfg.create_queue_handle = NULL;
+    taskcfg.attr.name="startup_post_init_task";
+    taskcfg.attr.priority = osPriorityNormal;
+    taskcfg.attr.stack_size = 0x1000;
+    taskcfg.func = startup_post_init_task;
+    taskcfg.use_mem = USE_EXTEND_MEM;
+    
+    errcode_t ret=uapi_create_osThread_custom(&taskcfg);
+    if(ret != ERRCODE_SUCC)
+    {
+        PRINT("create shutdown_reboot_prejobs thread failed %d!\r\n",ret);
+        
+    }
+}
+
 #include "upg.h"
 #include "upg_porting.h"
 errcode_t uaip_cmd_update_request(void)
@@ -600,7 +641,6 @@ errcode_t init_btaddr_btname(void)
 {
 
     errcode_t ret ;
-    srand(time(0));
     uint8_t bd_addr[BD_ADDR_LEN]={0};
     uint8_t name[BTSDK_DEVNAME_LEN]={0};
     uint32_t  addrlen = sizeof(bd_addr);
@@ -610,6 +650,7 @@ errcode_t init_btaddr_btname(void)
         printf("uapi_get_nv_btaddr failed ret %d , addrlen %d\n",ret,addrlen);
         return ERRCODE_FAIL; 
     } 
+
  //如果  281106856959
     if ( bd_addr[5] == 0x59 &&
         bd_addr[4] == 0x69 &&
@@ -618,11 +659,25 @@ errcode_t init_btaddr_btname(void)
         bd_addr[1] == 0x11 &&
         bd_addr[0] == 0x28 )
     {   
+        
+        uint8_t soc_id[20]; // 20 is soc id length
+        uapi_soc_read_id(soc_id, 20); // 20 is soc id length
+        uint16_t sum = 0x0;
+        printf("[soc id:]\r\n");
+        for (uint8_t i = 0; i < 20; i += 2) { // 20 is soc id length, 2 means use 16bits
+            uint16_t ptmp16= *((uint16_t *)&soc_id[i]);
+            sum += ptmp16;
+            printf("0x%04X  ", ptmp16);
+            if ((i + 2) % 8 == 0) { printf("\r\n"); } // 2&8 will word wrap
+        }
+        printf("get socid sum 0x%04X\r\n",sum);
+        srand(sum);
         //默认是:281106856959
         printf("是默认值,修改地址\n");
-        bd_addr[5] = rand() % 0xFF;
-        bd_addr[4] = rand() % 0xFF;
         bd_addr[3] = rand() % 0xFF;  
+        bd_addr[4] = rand() % 0xFF;
+        bd_addr[5] = rand() % 0xFF;
+
         printf("uapi_set_nv_btaddr : ******%02x%02x%02x\n", bd_addr[3], bd_addr[4], bd_addr[5]);
 
         ret = uapi_set_nv_btaddr(bd_addr, addrlen);
@@ -634,7 +689,8 @@ errcode_t init_btaddr_btname(void)
 
     }
 
-
+ 
+#if 0
     uint32_t  namelen = sizeof(name);
     ret = uapi_get_nv_btname(name,&namelen);
     if (ret != ERRCODE_SUCC) { 
@@ -642,7 +698,6 @@ errcode_t init_btaddr_btname(void)
         printf("uapi_get_nv_btname failed ret %d , namelen %d\n",ret,namelen);
         return ERRCODE_FAIL; 
     } 
-    
     if ( strcmp((char*)name,"WatchSoar") == 0)
     {   
         //默认是:WatchSoar
@@ -656,6 +711,7 @@ errcode_t init_btaddr_btname(void)
             return ERRCODE_FAIL; 
         } 
     }
+#endif
     return ERRCODE_SUCC;
 
 }
index 52dc090..1e6fff5 100755 (executable)
@@ -41,7 +41,7 @@
             "key_status": "alive",
             "structure_type": "btsrv_local_device_info_t",
             "attributions": 1,
-            "value": [[40,17,6,133,105, 89],0,0,["W","a","t","c","h","S","o","a","r",0]]
+            "value": [[40,17,6,133,105, 89],0,0,["W","a","t","c","h","D","e","m","o",0]]
         },
         "btsrv_paired_device_info":{
             "key_id": "0x2102",
index bc2d0d9..16c84a7 100755 (executable)
@@ -42,6 +42,7 @@ typedef enum {
     PM_ID_HEART,//新增,心率芯片
     PM_ID_MOTOR,//新增,马达
     PM_ID_GSENSOR,//新增,加速计
+    PM_ID_CAT1,//Cat1 communication
     PM_ID_MAX,
 } pm_id_t;