移植部分蓝牙协议代码
authorhcj <1224667075@qq.com>
Thu, 15 May 2025 02:54:32 +0000 (10:54 +0800)
committerhcj <1224667075@qq.com>
Thu, 15 May 2025 06:21:58 +0000 (14:21 +0800)
18 files changed:
code/sdk/application/wearable/fd230/nativeapp/nativeui/musicplayer/src/MusicPlayerModel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/set_dial/src/SetDialModel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingModel.cpp
code/sdk/application/wearable/fd230/service/broadcast/include/broadcast_feature.h
code/sdk/build/config/target_config/brandy/config.py
code/sdk/zhihui/drivers/cywee/Inc/cywee_hal.h
code/sdk/zhihui/services/ble_service/blemoder/CMakeLists.txt
code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.cpp
code/sdk/zhihui/services/ble_service/blemoder/bleInstruct.h
code/sdk/zhihui/services/ble_service/blemoder/ble_congfig_adapt.cpp [new file with mode: 0644]
code/sdk/zhihui/services/ble_service/bleservice/CMakeLists.txt
code/sdk/zhihui/services/ble_service/bleservice/bleANCS.c
code/sdk/zhihui/services/ble_service/bleservice/bleANCS.h
code/sdk/zhihui/services/ble_service/bleservice/bleEvent.c
code/sdk/zhihui/services/ble_service/bleservice/bleService.c
code/sdk/zhihui/services/ble_service/bleservice/bleService.h
code/sdk/zhihui/utils/custom_cmd_service.c
code/sdk/zhihui/utils/custom_utils.c

index eccfac2..d7e12e1 100644 (file)
@@ -46,4 +46,110 @@ namespace OHOS
         return PlayersModel::GetInstance()->getIdToMusicNameMapNumber();
     }
 
+//////////////////////////////////////
+#ifdef BLE_INSTRUCT
+
+#include "bleEvent.h"
+#include "bleInstruct.h"
+
+void get_music_path_(char *buf,uint8_t max_len)
+{
+    std::string path= OHOS::MusicPlayerModel::GetInstance().GetMusicPlayPath();
+    memcpy_s(buf,max_len,path.c_str(),path.length());
+}
+
+
+bool delete_MP3_file_By_ID_(uint16_t id)
+{
+    char dir_path[128]={0};
+    get_music_path_(dir_path,128);
+     char file_path[512];
+    std::string realname =OHOS::MusicPlayerModel::GetInstance().getRealMusicNameById(id);
+    sprintf_s(file_path,512,"%s/%s",dir_path,realname.c_str());
+
+    int ret= remove(file_path);
+    if(ret==0)
+    {
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+
+}
+
+
+char * dir_to_json_buf_malloc_(uint8_t type)
+{
+    char dir_path[128]={0};
+    type=2;
+    switch (type)
+    {
+        case 2: //
+            get_music_path(dir_path,128);
+            break;
+        case 3: //
+            sprintf_s(dir_path,64,"%s","user/dial/offline_dial");
+            return NULL;
+
+        default:
+            break;
+    }
+    cJSON *dataJSON = cJSON_CreateObject();
+    cJSON* data_arryJSON = cJSON_CreateArray();
+
+    int size=OHOS::MusicPlayerModel::GetInstance().getIdToMusicNameMapNumber();
+    for(int i=0;i<size;i++)
+    {
+        char file_path[512];
+        int  file_size;
+        std::string realname =OHOS::MusicPlayerModel::GetInstance().getRealMusicNameById(i);
+        sprintf_s(file_path,512,"%s/%s",dir_path,realname.c_str());
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%s\r\n",file_path);
+        FILE * fp = fopen(file_path,"rb+");
+        if(fp==NULL)
+        {
+              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
+            return NULL;
+        }
+        if (fp != NULL)
+        {
+            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+            file_size = ftell(fp);       // 获取当前文件指针位置,即文件大小
+            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+
+            fclose(fp);
+        }
+        std::string showname =OHOS::MusicPlayerModel::GetInstance().getShowMusicNameById(i);
+        cJSON* itemJSON = cJSON_CreateObject();
+        cJSON_AddNumberToObject(itemJSON,"uid",i);
+        cJSON_AddStringToObject(itemJSON,"name",showname.c_str());
+        cJSON_AddNumberToObject(itemJSON,"size",file_size);;
+        cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
+    }
+    cJSON_AddNumberToObject(dataJSON,"type",2);
+    cJSON_AddItemToObject(dataJSON,"list",data_arryJSON);
+    char *json_format = cJSON_PrintUnformatted(dataJSON);
+    int pSize = cJSON_GetArraySize(dataJSON);
+    cJSON_Delete(dataJSON);
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"mp3 :%s\r\n",json_format);
+    return json_format;
+    
+}
+
+
+extern bleInstruct_t_ bleInstruct_t;
+
+void ble_play_init()
+{
+    bleInstruct_t .get_music_path_cb = get_music_path_;
+    bleInstruct_t .delete_MP3_file_By_ID = delete_MP3_file_By_ID_;
+    bleInstruct_t .dir_to_json_buf_malloc = dir_to_json_buf_malloc_;
+}
+
+#endif
+
+
+
 }
index 171c632..2f364f8 100644 (file)
@@ -27,6 +27,7 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <unordered_set>
+#include "graphic_service.h"
 extern "C" {
 void check_dial_space() { OHOS::SetDialModel::GetInstance().CheckDialSpace(); }
 }
@@ -1001,4 +1002,150 @@ bool SetDialModel::CheckDialDownload(uint16_t ID, uint32_t dial_size) {
   return downloadstate;
 }
 
+#ifdef BLE_INSTRUCT
+
+#include "bleEvent.h"
+#include "bleInstruct.h"
+
+uint8_t get_dial_num_()
+{
+    return OHOS::SetDialModel::GetInstance().GetDialCount();
+}
+
+bool check_dial_freespace_(uint16_t id,uint32_t dial_size) {
+  return OHOS::SetDialModel::GetInstance().CheckDialDownload(id,dial_size);
+}
+
+void ble_get_dial_path_(char * buf,uint16_t id)
+{
+    char *path= (char*)OHOS::SetDialModel::GetInstance().GetSaveDir(id,0).c_str();
+    memcpy(buf,path,strlen(path)+1);
+    return;
+}
+
+void ble_save_dial_custom_(msg_recv_custom_dial_info_t *data)
+{
+    OHOS:: DialLayout info;
+    info.dialId=data->dial_uid;
+    info.batteryDisplay=data->battery;
+    info.timeDisplay=data->time;
+    info.colorTypeSet=data->time_font;
+    OHOS::SetDialModel::GetInstance().saveDialConfig(info);
+}
+
+void ble_set_dial_by_id__(uint16_t id)
+{
+    // printf("ble_set_dial_by_id_ %d\n",id);
+    OHOS::SetDialModel::GetInstance().UpdateDialSetting(id);
+   
+}
+void ble_set_dial_by_id_(uint16_t id)
+{
+    // printf("ble_set_dial_by_id %d\n",id);
+    GraphicService::GetInstance()->PostGraphicEvent(
+                std::bind(ble_set_dial_by_id__ ,id));
+}
+
+void ble_get_custom_dial_(uint16_t id,char *buf)
+{
+    const char *name=OHOS::SetDialModel::GetInstance().GetCustomName(id).c_str();
+    memset_s(buf,32,0,32);
+    memcpy_s(buf,32,name,strlen(name));
+}
+uint16_t ble_get_dial_id_(void)
+{
+   uint16_t id= OHOS::SetDialModel::GetInstance().GetCurrentDialID();
+   return id;
+}
+
+bool ble_is_dial_install_by_id_(uint16_t id)
+{
+   return OHOS::SetDialModel::GetInstance().IsDialInstalled(id);
+}
+
+////////////////////////////////////////////////////////
+
+int ble_get_dial_num_(void)
+{
+   return OHOS::SetDialModel::GetInstance().GetDialCount();
+}
+
+void ble_delete_dial__(uint16_t id)
+{
+    OHOS::SetDialModel::GetInstance().UninstallDial(id);
+}
+
+bool ble_delete_dial_(uint16_t id)
+{
+
+    if(id==OHOS::SetDialModel::GetInstance().GetCurrentDialID())
+    return false;
+    else
+    {
+        switch (id) {
+        case OHOS::DEFAULT_DIAL_ID:
+        case OHOS::MAX_DEFAULT_DIAL_ID:
+        case OHOS::DEFAULT_DIAL_ID_0:
+        case OHOS::DEFAULT_DIAL_ID_1:
+        case OHOS::DEFAULT_DIAL_ID_2:
+        case OHOS::DEFAULT_DIAL_ID_3:
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                        "UninstallDial: Default dial %d cannot be uninstalled", id);
+        return false;
+        }
+        GraphicService::GetInstance()->PostGraphicEvent(
+                std::bind(ble_delete_dial__,id));
+        return true;
+    }
+    
+}
+
+int get_all_dial_id_( char * buf,uint16_t MAX_LEN)
+{
+    return OHOS::SetDialModel::GetInstance().GetAllDialIDs(buf,MAX_LEN);
+}
+
+bool dial_file_save_(void )
+{
+    return OHOS::SetDialModel::GetInstance().saveDialfile();
+}
+
+void install_Register_dial__( char * name,uint16_t id)
+{
+    OHOS::SetDialModel::GetInstance().RegisterDial(id,name,0);
+
+}
+void install_Register_dial_( char * name,uint16_t id)
+{
+    GraphicService::GetInstance()->PostGraphicEvent(
+                std::bind(install_Register_dial__,name ,id));
+    return ;
+
+}
+
+extern bleInstruct_t_ bleInstruct_t;
+
+void ble_dial_init()
+{
+  bleInstruct_t.get_dial_num_cb= get_dial_num_;
+  bleInstruct_t.check_dial_freespace= check_dial_freespace_;
+  bleInstruct_t.ble_get_dial_path= ble_get_dial_path_;
+  bleInstruct_t. ble_save_dial_custom=ble_save_dial_custom_;
+
+  bleInstruct_t. ble_set_dial_by_id=ble_set_dial_by_id_;
+
+
+  bleInstruct_t. ble_get_custom_dial= ble_get_custom_dial_;
+  bleInstruct_t. ble_get_dial_id = ble_get_dial_id_;
+  bleInstruct_t. ble_is_dial_install_by_id =ble_is_dial_install_by_id_;
+  ////////////////////////////////////////////////////////
+  bleInstruct_t. ble_get_dial_num=ble_get_dial_num_;
+  bleInstruct_t. ble_delete_dial=ble_delete_dial_;
+  bleInstruct_t. get_all_dial_id=get_all_dial_id_;
+  bleInstruct_t. dial_file_save=dial_file_save_;
+  bleInstruct_t.install_Register_dial= install_Register_dial_;
+
+}
+#endif
+
 } // namespace OHOS
index e3f1e6a..5978216 100644 (file)
@@ -2362,4 +2362,49 @@ bool TraingModel::LoadDataFormJson(std::vector<SportData> &sportDataVector) {
   return true;
 }
 
+
+
+#ifdef BLE_INSTRUCT
+
+#include "bleEvent.h"
+#include "bleInstruct.h"
+
+//////////////////////////////ble////////////////////////////////////////////
+
+bool get_training_spead_path_(char *path ,uint32_t time,uint32_t max_len)
+{
+  std::string str = OHOS::TraingModel::GetInstance()->GetPaceTablePath(time);
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get_training_spead:%s\r\n",str.c_str());
+   if(str.length()<=3)
+   {
+        return false;
+   }
+   memcpy_s(path,max_len,str.c_str(),str.length());
+   return true;
+
+}
+
+
+bool get_training_heart_path_(char *path ,uint32_t time,uint32_t max_len)
+{
+  std::string str = OHOS::TraingModel::GetInstance()->GetHeartTablePath(time);
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get_training_heart:%s\r\n",str.c_str());
+    if(str.length()<=3)
+   {
+        return false;
+   }
+   memcpy_s(path,max_len,str.c_str(),str.length());
+   return true;
+}
+
+extern bleInstruct_t_ bleInstruct_t;
+
+void ble_training_init()
+{
+  bleInstruct_t.get_training_spead_path_cb= get_training_spead_path_;
+  bleInstruct_t.get_training_heart_path_cb= get_training_heart_path_;
+}
+
+#endif
+
 } // namespace OHOS
index 3c9fcf0..d1cacab 100644 (file)
@@ -48,7 +48,7 @@ typedef enum {
     TOPIC_EVENT_HFP_PHONE_TO_WATCH,\r
     TOPIC_EVENT_HFP_WATCH_TO_PHONE,\r
     TOPIC_EVENT_HFP_HINT,\r
-#ifdef CYWEE_SPORT\r
+// #ifdef CYWEE_SPORT\r
     TOPIC_EVENT_ACTIVITY_UPDATE,\r
     TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE,\r
     TOPIC_EVENT_AR_ALERT_TYPE_UPDATE,\r
@@ -57,7 +57,7 @@ typedef enum {
     TOPIC_EVENT_BLE_TRAINING,\r
     TOPIC_EVENT_BLE_TRANSMIT,\r
     TOPIC_EVENT_GOAL_SHOW_VIEW,\r
-#endif\r
+// #endif\r
 #ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION\r
     TOPIC_EVENT_CHARGE_PLUG,\r
     TOPIC_EVENT_CHARGE_UNPLUG,\r
@@ -83,11 +83,11 @@ typedef enum {
     TOPIC_EVENT_CAT1_CALL_FAIL,\r
 #endif\r
 \r
-#ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION\r
+// #ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION\r
     TOPIC_EVENT_DEVICE_BIND,\r
     TOPIC_EVENT_DEVICE_UNBIND,\r
     TOPIC_EVENT_DEVICE_UNBINDING_REQUEST,\r
-#endif\r
+// #endif\r
     TOPIC_EVENT_ENTER_CMAERA,\r
     TOPIC_EVENT_CANCEL_CMAERA,\r
     TOPIC_EVENT_FIND_WATCH, //查找手表\r
index 97f89fb..3ba17fa 100644 (file)
@@ -369,15 +369,18 @@ target = {
             # 'CYWEE_MAC_ACTIVE',
             'SUPPORT_CAT1_SERVICE',
             # 'SUPPORT_TCPIP',                                 
-            'SUPPORT_HID_SERVICE',
+            # 'SUPPORT_HID_SERVICE',
             'SUPPORT_BAIDU_MAP',
             'CFG_FLASH_SIZE=16',
             'SINGLE_USER_PARTITION',
             'TPTYPE_FT6X46',
             'ROTARYENCODER_HX3507',
             'NANDFLASH_DS35X',
-            # 'BLE_INSTRUCT',
+            'BLE_INSTRUCT',
+            # 'AILPAY_SUPPORT',
+            # 'PPG_SERVICE_SUPPORT',
             # 'FACTORYTEST_SERVICE',
+            
         ],
         #添加自定义应用
        'ram_component': [
@@ -402,9 +405,9 @@ target = {
                            "nativelauncher",
                         #    "ppg_service",
                         #    "cywee",
-                        #    "batterry_service",
-                        #    "bleservice",
-                        #    "blemoder",
+                           "batterry_service",
+                           "bleservice",
+                           "blemoder",
                         #    "factorytest_service",
                         #    "hid_service",
                         #    "producttest",
index 4a86e89..e5d16ad 100644 (file)
@@ -18,12 +18,7 @@ extern "C" {
 
 #include "stdint.h"
 #include "errcode.h"
-typedef enum {
-    CYWEE_SAVE_DATA_STEP,
-    CYWEE_SAVE_DATA_DISTANCE,
-    CYWEE_SAVE_DATA_CALORIES,
-    CYWEE_SAVE_DATA_FAT,
-} CYWEE_SAVE_DATA_TYPE;
+
 
 
 extern uint64_t CWM_OS_GetTimeNs(void);
index a6baf87..9a777d3 100644 (file)
@@ -7,6 +7,7 @@ set(COMPONENT_NAME "blemoder")
 
 set(PUBLIC_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}
+
    )
 set(PRIVATE_HEADER
     ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
@@ -60,6 +61,8 @@ set(PRIVATE_HEADER
 
 set(SOURCES
 ${CMAKE_CURRENT_SOURCE_DIR}/bleInstruct.cpp
+${CMAKE_CURRENT_SOURCE_DIR}/ble_congfig_adapt.cpp
+
 )
 
 set(COMPONENT_PUBLIC_CCFLAGS
@@ -91,8 +94,8 @@ set(MAIN_COMPONENT
 )
 
 set(PUBLIC_DEFINES
-SUPPORT_PPG_SERVICE
-SUPPORT_AT_PPG
+# SUPPORT_PPG_SERVICE
+# SUPPORT_AT_PPG
 )
 
 set(PRIVATE_DEFINES
index 1bb4e04..1816a8b 100644 (file)
 #include "securec.h"
 #include "broadcast_service.h"
 #include "broadcast_feature.h"
-#include "service_id_define.h"
-#include "samgr_lite.h"
-#include "thread_adapter.h"
-#include "graphic_service.h"
-
-
-
-#include "ConfigModel.h"
-#ifdef SUPPORT_CAT1_SERVICE
-#include "cat1_server.h"
-#endif
-// #include "TraingCardPresenter.h"
-#include "../../../../../../zhihui/drivers/vibrator/service/vibrator_service.h"
-#include "../../../../../../zhihui/config/include/ConfigModelC.h"
-#include "../../../../../../zhihui/utils/custom_runtime.h"
-
-#ifdef FD230
-#include "uiservice/include/ui_service.h" 
-#include "TraingModel.h"
-#include "WeatherModel.h"
-#include "SleepModel.h"
-#include "CodedLockModel.h"
-#include "alarm/include/AlarmClockModelC.h"
-#include "goal_notification.h"
-#include "transmitting.h"
-#include "ScheduleData.h"
-#include "font/ui_font.h"
-#include "font/base_font.h"
-#include "common/typed_text.h"
-#include "health_service.h"
-#include "AlipayC.h"
-#include "PlayersModelC.h"
-#include "LanguageInit.h"
-#include "phoneaddressmodel.h"
-#include "AlmmgrAlarmClockManage.h"
-#include "AlarmClockTimerConfig.h"
-#include "AlarmClockManage.h"
-#include "SetDialModel.h"
-#include "AiVoiceModel.h"
-#include "SleepModel.h"
-#include "BluetoothModel.h"
-#include "MusicPlayerModel.h"
-#include "UiConfig.h"
-
-#endif
+#include "bleEvent.h"
+#include "bleInstruct.h"
 
+#include "blepath.h"
+#include "cJSON.h"
 
+#include "unistd.h"
+#include "dirent.h"
+#include "custom_utils.h"
 
+// #include "cywee_hal.h"
 
+// #include "font/base_font.h"
+// #include "uicomponents/UIComponents.h"
 
+//#define APP_DOWNLOAD_DIAL_PATH "/user/dial/offline_dial" /*表盘市场安装路径*/
 #ifdef __cplusplus
 #if __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 #endif /* __cplusplus */
 
-#include "custom_utils.h"
-#include "pinctrl.h"
-#include "debug_print.h"
-#include "soc_osal.h"
-#include "tcxo.h"
-#include "irmalloc.h"
-#include "errcode.h"
-#include "common_def.h"
-
-#include "chip_core_irq.h"
-#include "chip_io.h"
-#include "gpio.h"
-#include "pm_veto.h"
-#include "cywee_service.h"
-#include "rtc.h"
-#include "timer.h"
-#include "systick.h"
-#include "cmsis_os2.h"
-#include "los_printf.h"
-
-#include "custom_utils.h"
-#include "string.h"
-#include "bleService.h"
-#ifdef BLE_INSTRUCT
-#include "bleInstruct.h"
-#endif
-
-#include <cywee_hal.h>
+// #define DIAL_DATA_DIR "/user/dial/offline_dial"
+// #ifdef FD230
 
-#include <dirent.h>
-#include <ppg_service.h>
-#include "power_display_service.h"
-#include "alipay_feature.h"
 
+#define DIAL_DATA_DIR NULL
 
-// #include "font/base_font.h"
-// #include "uicomponents/UIComponents.h"
+#define TAR_PATH EXC_TAR_PATH
 
-//#define APP_DOWNLOAD_DIAL_PATH "/user/dial/offline_dial" /*表盘市场安装路径*/
-#define DIAL_DATA_DIR APP_DOWNLOAD_DIAL_PATH
+#define ADDRESS_BOOK_PATH "/user/userdata/addressbook.bin"
 
-// #define DIAL_DATA_DIR "/user/dial/offline_dial"
-#ifdef FD230
+#if 1
 
-uint16_t get_str_nodisplay_number(char *str, uint32_t max_len) {
 
-  uint32_t j = 0;
-  uint32_t letter = 0;
-  if (str == nullptr) {
-    return 0;
-  }
-  uint16_t nodisplay_numberlen=0;
-
-  while (str[j] != '\0') 
-  {
-    int i = j;
-    letter = OHOS::TypedText::GetUTF8Next(str, j, j);
-    int len = j - i;
-    OHOS::UIFont *fontEngine = OHOS::UIFont::GetInstance();
-    OHOS::GlyphPathData path;
-    if (!fontEngine->GetGlyphPathData(letter, 0, path)) 
-    {
-      if(nodisplay_numberlen==0 && i!=0)
-      {
-        return 0;
-      }
-      nodisplay_numberlen+=len;
-      
-    }
-    else
-    {
-      return nodisplay_numberlen;
-    }
-  }
-  // printf("%s\r\n", str_);
-}
 
+bleInstruct_t_ bleInstruct_t;
 
 char * get_dial_path(void)
 {
+    
     return DIAL_DATA_DIR;
 }
 
@@ -171,202 +76,91 @@ errcode_t get_dial_file_path(char* input_dialname ,uint32_t input_size, char* ou
 
 uint8_t get_dial_num()
 {
-    return OHOS::SetDialModel::GetInstance().GetDialCount();
+    return bleInstruct_t.get_dial_num_cb();
 }
 
 bool ble_is_Alipay_bind(void)
 {
-    return is_Alipay_bind();
+    // return is_Alipay_bind();
+    return false;
 }
 
 void set_ota_upgrade(void)
 {
-   OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-   p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OTA_UPGRADE,1);
+   bleInstruct_t.set_ota_upgrade_cb();
 }
 
 void test_paly(uint8_t falg)
 {
+}
 
-    if(falg)
-    {
-#ifdef SINGLE_USER_PARTITION
-        testPlayerStart_("/user/music/ring/ring.mp3");
-#else
-        testPlayerStart_("/music/ring/ring.mp3");
-#endif
-    }
-    else
-    {
-        AlarmPlayerStop_();
-    }
 
-}
 bool get_training_spead_path(char *path ,uint32_t time,uint32_t max_len)
 {
-  std::string str = OHOS::TraingModel::GetInstance()->GetPaceTablePath(time);
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get_training_spead:%s\r\n",str.c_str());
-   if(str.length()<=3)
-   {
-        return false;
-   }
-   memcpy_s(path,max_len,str.c_str(),str.length());
-   return true;
-
+    return bleInstruct_t.get_training_spead_path_cb(path,time,max_len);
 }
 
 
 bool get_training_heart_path(char *path ,uint32_t time,uint32_t max_len)
 {
-  std::string str = OHOS::TraingModel::GetInstance()->GetHeartTablePath(time);
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get_training_heart:%s\r\n",str.c_str());
-    if(str.length()<=3)
-   {
-        return false;
-   }
-   memcpy_s(path,max_len,str.c_str(),str.length());
-   return true;
+
+   return bleInstruct_t.get_training_heart_path_cb(path,time,max_len);
 }
 
 
 void ble_sos_data_save(void)
 {
-    OHOS::SOS_number_save();
+    bleInstruct_t.ble_sos_data_save_cb();
 }
 
 void ble_SOS_data_init(void)
 {
-    OHOS::SOS_number_init();
+    bleInstruct_t.ble_SOS_data_init_cb();
 }
 
 void ota_updata_init(void)
 {
-   OHOS::get_updatafail_data();
+    bleInstruct_t.ota_updata_init_cb();
 }
 
 
 uint8_t * ble_get_sos_all_data_malloc(uint32_t *len)
 {   
-    uint8_t count= OHOS ::get_sos_number_count();
-    if(count==0)
-    return NULL;
-
-    uint8_t *data=(uint8_t *)malloc(1+count*(sizeof(OHOS::sos_number_t)+3));
-    if(data==NULL)
-    {
-        return NULL;
-    }
-    data[0]=count;
-    uint32_t offset=1;
-
-    for(int i=0;i<count;i++)
-    {
-        char name[NAME_LEN]={0};
-        uint8_t sex= OHOS::get_sos_name_and_sex(i,name);
-        char number[NUMBER_LEN]={0};
-        memcpy_s((void *)number,NUMBER_LEN,(void *)OHOS::get_sos_number(i),NUMBER_LEN);
-        data[offset]=sex;
-        offset++;
-        data[offset]=osal_strlen(name);
-        offset++;
-        memcpy_s((void *)&data[offset],NAME_LEN,name,osal_strlen(name));
-        offset+=osal_strlen(name);
-
-        data[offset]=osal_strlen(number);
-        offset++;
-        memcpy_s((void *)&data[offset],NUMBER_LEN,number,osal_strlen(number));
-        offset+=osal_strlen(number);
-
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"sex:%d,name:%d,%s,number:%d,%s\r\n",sex,osal_strlen(name),name,osal_strlen(number),number);
-    }
-    *len=offset;
-
-    return data;
+    return bleInstruct_t.ble_get_sos_all_data_malloc_cb(len);
 }
-
+#define before_file_day 30
 //sos 
 void ble_sos_number_clean(void)
 {
-    OHOS::sos_number_clean();
+    return bleInstruct_t.ble_sos_number_clean_cb();
 }
 
 bool ble_add_sos_number(uint8_t sex,char *name,char *number)
 {
-    return OHOS::add_sos_number(sex,name,number);
+    return bleInstruct_t.ble_add_sos_number_cb(sex,name,number);
 }
 
-
-#define before_file_day 30
-
-
 void ble_Alipayunbind(void)
 {
-    const alipay_svr_api_t *alipay_api = alipay_svr_get_api();
-    alipay_api->remove_bind();
+    // const alipay_svr_api_t *alipay_api = alipay_svr_get_api();
+    // alipay_api->remove_bind();
 }
 
 
 void get_music_path(char *buf,uint8_t max_len)
 {
-    std::string path= OHOS::MusicPlayerModel::GetInstance().GetMusicPlayPath();
-    memcpy_s(buf,max_len,path.c_str(),path.length());
+    return bleInstruct_t.get_music_path_cb(buf,max_len);
 }
 
 bool is_first_pair(void)
 {
-    return OHOS::ConfigModel::GetInstance()->GetisFirstTimeStart(); 
+    return bleInstruct_t.is_first_pair_cb();
 }
 
 
 bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_end,char *title,char *data,bool is_end)
 {
-
-    // OHOS::ScheduleRevData info_;
-    ScheduleRevData info_;
-    
-    info_.topic.clear();
-    info_.content.clear();
-    info_.topic.append(title,strlen(title));
-    info_.content.append(data,strlen(data));
-
-    time_t currtime=timetamp_begin;
-    struct tm *timeinfo;
-    timeinfo = localtime(&currtime);
-    
-    int y=timeinfo->tm_year+ 1900;
-    int m=timeinfo->tm_mon+1;
-    int d=timeinfo->tm_mday;
-    int h=timeinfo->tm_hour;
-    int min=timeinfo->tm_min;
-    char day_buf[24]={0};
-    sprintf_s(day_buf,24,"%d/%d",m,d);
-    info_.date.clear();
-    info_.date.append(day_buf,strlen(day_buf));
-
-    currtime=timetamp_end;
-    timeinfo = localtime(&currtime);
-   
-    int h_=timeinfo->tm_hour;
-    int min_=timeinfo->tm_min;
-    char time_buf[24]={0};
-    sprintf_s(time_buf,24,"%02d:%02d-%02d:%02d",h,min,h_,min_);
-    info_.time.clear();
-    info_.time.append(time_buf,strlen(time_buf));
-
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"///////////////////日程数据////////////////////\r\n");
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"date:%s\r\n",info_.date.c_str());
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"time:%s\r\n",info_.time.c_str());
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"titel:%s\r\n",info_.topic.c_str());
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"content:%s\r\n",info_.content.c_str());
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"//////////////////////////////////////////////\r\n");
-    //  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"delete_before_file now day%d %d %d\r\n ",y,m,d);
-
-    // OHOS::C_ScheduleSetByApp(&info_, id - 1, is_end);
-    C_ScheduleSetByApp(&info_, id-1, is_end);
-
-    if(is_end)
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"////////////////////结束///////////////////\r\n");
-    return true;
+    return  bleInstruct_t.Ble_Set_ScheduleInfo_cb( id, timetamp_begin, timetamp_end,title,data, is_end);
 }
 
 
@@ -374,2362 +168,96 @@ bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_e
 //在此处实现,给UI回复消息。
 void ble_app_reply(bool data)
 {
-    bool state = data;
-    SendMsgToUIService(UI_AI_JUMP_TO_LISTENING_VIEW, 0, &state, sizeof(bool));
+    return  bleInstruct_t.ble_app_reply(data);
 }
 
 
 void ble_connect_ok(void)
 {
-    SendMsgToUIService(PHONE_CONNECTED_TO_UI, 0, nullptr, 0);
+   return  bleInstruct_t.ble_connect_ok();
 }
 
 void ble_disconnect_ok(void)
 {
-    SendMsgToUIService(PHONE_DISCONNECTED_TO_UI, 0, nullptr, 0);
+     return  bleInstruct_t.ble_disconnect_ok();
 }
 
 void hand_watch_first_time_Paired(void)
 {
-    SendMsgToUIService(UI_HAND_WATCH_FIRST_PAIRED, 0, nullptr, 0);
+    return  bleInstruct_t.hand_watch_first_time_Paired();
 }
 
 void ble_set_ai_Question_str(char *buf)
 {
-    OHOS::AiVoiceModel::GetInstance().SetUserQuestionStr(std::string(buf));
+    return bleInstruct_t.ble_set_ai_Question_str(buf);
 }
 
 void ble_set_ai_Answer_str(char *buf,uint8_t type)
 {
-    OHOS::AiVoiceModel::GetInstance().SetAiAnswerStrStr(std::string(buf),type);
+    return bleInstruct_t.ble_set_ai_Answer_str(buf,type);
 }
 
 char* ble_get_ai_audio_path_str(void)
 {
-    return (char *)OHOS::AiVoiceModel::GetInstance().GetAIAudioPath().c_str();
+    return bleInstruct_t.ble_get_ai_audio_path_str();
 }
 
 void ble_set_pair(uint8_t falg)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID,falg);
-    return;
+    return bleInstruct_t.ble_set_pair(falg);
 }
 
 uint8_t get_ble_pair(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID);
-    
+   return bleInstruct_t.get_ble_pair();
 }
 
 uint8_t get_br_is_pair(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BR_PAIR);
+    return bleInstruct_t.get_br_is_pair();
 }
 
 void set_br_pair(uint8_t data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BR_PAIR,data);
-    return;
+    return bleInstruct_t.set_br_pair(data);
 }
 
 bool get_lcd_state(void)
 {
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    if (display_api->get_screen_state() != SCREEN_ON)
-    return false;
-    else
-    return true;
+   return bleInstruct_t.get_lcd_state();
 }
 
 uint8_t ble_get_heart_data()
 {
-    OHOS::HeartRateData data;
-    OHOS::HealthService ::GetInstance()->ReadHeartRateData(data);
-    uint8_t heart=0;
-    heart=data.Heart;
-    return heart;
+    return bleInstruct_t.ble_get_heart_data();
 }
 
 uint8_t ble_get_oxygen_data()
 {
-    OHOS::BloodOxygenData  *data=(OHOS::BloodOxygenData*)malloc(sizeof(OHOS::BloodOxygenData));
-    data=OHOS::HealthService ::GetInstance()->ReadBloodOxygenData();
-    uint8_t spo2=0;
-    if(data==NULL)
-    spo2=0;
-    else
-    spo2=data->SPO2;
-
-    free(data);
-    return spo2;
+    return bleInstruct_t.ble_get_oxygen_data();
 }
 
 
 cJSON* ble_get_recs_data()
 {
-    cJSON* data_arryJSON = cJSON_CreateArray();
-    struct Trainingdata * data=NULL;
-    int i=0;
-    //char file_path[128] = {0};
-    char timeday[12] = {0};
-    uapi_get_YYMMDD_Time_extend(timeday, '_',0);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%s\r\n",timeday);
-    //sprintf(file_path, "%s%s.bin", TRAINING_PATH_BLE, timeday);
-
-    while(data=read_Trainingdata_data(timeday, i))
-    {
-        cJSON* itemJSON = cJSON_CreateObject();
-        if(data!=NULL)
-        {
-            cJSON_AddNumberToObject(itemJSON, "src", data->src);
-            cJSON_AddNumberToObject(itemJSON,"bt",data->bt);
-            cJSON_AddNumberToObject(itemJSON,"ty",data->ty);
-            cJSON_AddNumberToObject(itemJSON,"st",data->st);
-            cJSON_AddNumberToObject(itemJSON,"sp",data->sp);
-            cJSON_AddNumberToObject(itemJSON,"tgt",data->tgt);
-            cJSON_AddNumberToObject(itemJSON,"tg",data->tg);
-            cJSON_AddNumberToObject(itemJSON,"pg",data->pg);
-            cJSON_AddNumberToObject(itemJSON,"du",data->du);
-            cJSON_AddNumberToObject(itemJSON,"ca",data->ca);
-            cJSON_AddNumberToObject(itemJSON,"di",data->di);
-            cJSON_AddNumberToObject(itemJSON,"hr",data->hr);
-            cJSON_AddNumberToObject(itemJSON,"stp",data->stp);
-            cJSON_AddNumberToObject(itemJSON,"ti",data->ti);
-            cJSON_AddNumberToObject(itemJSON,"cir",data->cir);
-            cJSON_AddNumberToObject(itemJSON, "alt", data->alt);
-            cJSON_AddNumberToObject(itemJSON,"apc",data->apc);
-            cJSON_AddNumberToObject(itemJSON,"fpc",data->fpc);
-            cJSON_AddNumberToObject(itemJSON,"spc",data->spc);
-            cJSON_AddNumberToObject(itemJSON,"std",data->std);
-            cJSON_AddNumberToObject(itemJSON,"cdc",data->cdc);
-
-            cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
-            free(data);
-            data=NULL;
-        }
-        else{
-            break;
-        }
-        i++;
-    }
-    return data_arryJSON;
+   return bleInstruct_t.ble_get_recs_data();
 }
 
 //通过时间戳获取训练数据
 cJSON* ble_get_Trainingdata_by_timetamp(uint32_t timetamp)
 {
-    struct Trainingdata * data=NULL;
-    int i=0;
-  
-    time_t currtime=timetamp;
-    struct tm *timeinfo;
-    timeinfo = localtime(&currtime);
-    int y=timeinfo->tm_year+ 1900;
-    int m=timeinfo->tm_mon+1;
-    int d=timeinfo->tm_mday;
-    int h=timeinfo->tm_hour;
-    int min=timeinfo->tm_min;
-
-    char timeday[24]={0};
-    sprintf_s(timeday,24,"%d_%02d_%02d",y,m,d);
-
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%s\r\n",timeday);
-
-    while(data=read_Trainingdata_data(timeday, i))
-    {
-        if(data!=NULL)
-        {
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%d,%d\r\n",timetamp,data->st);
-            int time_error= timetamp>data->st ? timetamp-data->st:data->st-timetamp;
-            if(time_error<=2)
-            {
-                cJSON* itemJSON = cJSON_CreateObject();
-
-                cJSON_AddNumberToObject(itemJSON, "src", data->src);
-                cJSON_AddNumberToObject(itemJSON,"bt",data->bt);
-                cJSON_AddNumberToObject(itemJSON,"ty",data->ty);
-                cJSON_AddNumberToObject(itemJSON,"st",data->st);
-                cJSON_AddNumberToObject(itemJSON,"sp",data->sp);
-                cJSON_AddNumberToObject(itemJSON,"tgt",data->tgt);
-                cJSON_AddNumberToObject(itemJSON,"tg",data->tg);
-                cJSON_AddNumberToObject(itemJSON,"pg",data->pg);
-                cJSON_AddNumberToObject(itemJSON,"du",data->du);
-                cJSON_AddNumberToObject(itemJSON,"ca",data->ca);
-                cJSON_AddNumberToObject(itemJSON,"di",data->di);
-                cJSON_AddNumberToObject(itemJSON,"hr",data->hr);
-                cJSON_AddNumberToObject(itemJSON,"stp",data->stp);
-                cJSON_AddNumberToObject(itemJSON,"ti",data->ti);
-                cJSON_AddNumberToObject(itemJSON,"cir",data->cir);
-                cJSON_AddNumberToObject(itemJSON, "alt", data->alt);
-                cJSON_AddNumberToObject(itemJSON,"apc",data->apc);
-                cJSON_AddNumberToObject(itemJSON,"fpc",data->fpc);
-                cJSON_AddNumberToObject(itemJSON,"spc",data->spc);
-                cJSON_AddNumberToObject(itemJSON,"std",data->std);
-                cJSON_AddNumberToObject(itemJSON,"cdc",data->cdc);
-                free(data);
-                return itemJSON;
-            }
-
-            free(data);
-            data=NULL;
-        }
-        else{
-            break;
-        }
-        i++;
-    }
-    return NULL;
-}
-Tag_Trailer_t Mp3Trailer;
-Tag_ID3V2_TAG_T TAG_T;
-
-void Tag_read_ID3V2( FILE *fp)
-{
-// Get Header
-    fseek(fp,10,SEEK_CUR);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Tag_read_ID2V3\r\n");
-
-    for(int i=7;i>0;i--)
-    {
-        memset_s(&TAG_T,sizeof(TAG_T),0,sizeof(TAG_T));
-        uint32_t size =fread(TAG_T.ID,4,1,fp);
-
-        if(strcmp("TPE1",TAG_T.ID)==0)
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Header :%d %s\r\n",size,TAG_T.ID);
-      
-       
-        fread(TAG_T.Size,4,1,fp);
-        size = TAG_T.Size[0]*0x100000000 + TAG_T.Size[1]*0x10000+ TAG_T.Size[2]*0x100 +TAG_T.Size[3];
-
-        if(strcmp("TPE1",TAG_T.ID)==0)
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Size :%d\r\n",size);
-        
-
-        fread(TAG_T.Flags,2,1,fp);
-        
-        char buf[124]={0};
-        if(strcmp("TPE1",TAG_T.ID)==0)
-        {
-           
-            fread(Mp3Trailer.Artist,1,size,fp);
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"data : %s\r\n",Mp3Trailer.Artist);
-        }
-        else
-        {
-            if(size>=128)
-            {
-                fseek(fp,size,SEEK_CUR);
-            }
-            else
-            {
-                fread(buf,1,size,fp);
-                //  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"data : %s\r\n",buf);
-            }
-        }
-    }
-     return;
-    
-}
-
-
-bool delete_MP3_file_By_ID(uint16_t id)
-{
-    char dir_path[128]={0};
-    get_music_path(dir_path,128);
-     char file_path[512];
-    std::string realname =OHOS::MusicPlayerModel::GetInstance().getRealMusicNameById(id);
-    sprintf_s(file_path,512,"%s/%s",dir_path,realname.c_str());
-
-    int ret= remove(file_path);
-    if(ret==0)
-    {
-        return true;
-    }
-    else
-    {
-        return false;
-    }
-
-}
-
-char * dir_to_json_buf_malloc_(uint8_t type)
-{
-    char dir_path[128]={0};
-    type=2;
-    switch (type)
-    {
-        case 2: //
-            get_music_path(dir_path,128);
-            break;
-        case 3: //
-            sprintf_s(dir_path,64,"%s","user/dial/offline_dial");
-            return NULL;
-
-        default:
-            break;
-    }
-    cJSON *dataJSON = cJSON_CreateObject();
-    cJSON* data_arryJSON = cJSON_CreateArray();
-
-    int size=OHOS::MusicPlayerModel::GetInstance().getIdToMusicNameMapNumber();
-    for(int i=0;i<size;i++)
-    {
-        char file_path[512];
-        int  file_size;
-        std::string realname =OHOS::MusicPlayerModel::GetInstance().getRealMusicNameById(i);
-        sprintf_s(file_path,512,"%s/%s",dir_path,realname.c_str());
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%s\r\n",file_path);
-        FILE * fp = fopen(file_path,"rb+");
-        if(fp==NULL)
-        {
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
-            return NULL;
-        }
-        if (fp != NULL)
-        {
-            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-            file_size = ftell(fp);       // 获取当前文件指针位置,即文件大小
-            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-
-            fclose(fp);
-        }
-        std::string showname =OHOS::MusicPlayerModel::GetInstance().getShowMusicNameById(i);
-        cJSON* itemJSON = cJSON_CreateObject();
-        cJSON_AddNumberToObject(itemJSON,"uid",i);
-        cJSON_AddStringToObject(itemJSON,"name",showname.c_str());
-        cJSON_AddNumberToObject(itemJSON,"size",file_size);;
-        cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
-    }
-    cJSON_AddNumberToObject(dataJSON,"type",2);
-    cJSON_AddItemToObject(dataJSON,"list",data_arryJSON);
-    char *json_format = cJSON_PrintUnformatted(dataJSON);
-    int pSize = cJSON_GetArraySize(dataJSON);
-    cJSON_Delete(dataJSON);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"mp3 :%s\r\n",json_format);
-    return json_format;
-    
-}
-
-
-
-
-uint8_t ble_AT_add_nap_data(uint16_t time)
-{
-    OHOS::NAP_T data;
-    data.total_time=time;
-    uint32_t creationTime;
-    int ret =uapi_get_timestampe_ss(&creationTime);
-    data.fall_asleep_timestamp=creationTime-60*60;
-    data.wake_up_timestamp=creationTime;
-    set_nap_data(&data);
-}
-
-uint8_t ble_get_sleep_data(uint32_t file_size,uint8_t day_,uint8_t *data)
-{
-    char dir_path[64]={0};
-    char day[12]={0};
-    uapi_get_YYMMDD_Time_extend(day,'\0', day_);
-    sprintf_s(dir_path,64,SLEEP_DIR_PATH,day);
-
-    uint32_t offset=0;
-    uint8_t sleep_count=1;
-
-    {
-        char file_path[128]={0};
-        sprintf_s(file_path,128,"%s/%s",dir_path,"nap.bin");
-        
-        FILE * fp = fopen(file_path,"rb+");
-        if(fp==NULL)
-        {
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
-        }
-        else
-        {
-            uint16_t sleep_file_size=0;
-            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-            sleep_file_size = ftell(fp);       // 获取当前文件指针位置,即文件大小
-            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-
-            int mod_value=0;  
-            mod_value=sleep_file_size%14;
-            if(mod_value!=0)
-            return 0;
-            uint8_t nap_count=sleep_file_size/14;
-
-            sleep_count=nap_count+1;
-            
-            uint16_t read_size =fread(data,1,sleep_file_size,fp);
-            offset+=read_size;
-            fclose(fp);
-        }
-    }
-    {
-        char file_path[128]={0};
-        sprintf_s(file_path,128,"%s/%s",dir_path,"sleep_time.bin");
-        FILE * fp = fopen(file_path,"rb+");
-        if(fp)
-        {
-            uint16_t sleep_file_size=0;
-    
-            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-            sleep_file_size = ftell(fp);       // 获取当前文件指针位置,即文件大小
-            sleep_file_size++;
-            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-
-            memcpy(data+offset,&sleep_file_size,2);
-            *(data+offset+2)=sleep_count;
-            sleep_count++;
-            uint16_t read_size =fread(data+offset+3,1,sleep_file_size,fp);
-
-            if((read_size+1)!=sleep_file_size)
-            {
-                  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fread fail read_size:%d!= sleep_file_size:%d \r\n",read_size,sleep_file_size);
-            }
-
-            fclose(fp);
-            char file_path[128]={0};
-            sprintf_s(file_path,128,"%s/%s",dir_path,"sleep_status.bin");
-            fp = fopen(file_path,"rb+");
-            sleep_file_size=0;
-            if(fp)
-            {
-                fseek(fp, 0, SEEK_END);
-                sleep_file_size = ftell(fp); 
-                fseek(fp, 0, SEEK_SET);
-                uint16_t read_size_status =fread(data+offset+3+read_size,1,sleep_file_size,fp);
-                read_size+=read_size_status;
-                read_size+=1;
-                memcpy(data+offset,&read_size,2);
-                fclose(fp);
-
-            }
-            offset+=read_size;
-            offset+=3;
-        }
-    }
-
-    return offset;
-}
-
-
-
-
-uint8_t ble_get_sleep_data_dir(uint32_t *file_size,uint8_t day_)
-{
-    char dir_path[64]={0};
-    char day[12]={0};
-    uapi_get_YYMMDD_Time_extend(day,'\0', day_);
-    sprintf_s(dir_path,64,SLEEP_DIR_PATH,day);
-
-    struct DIR *dir;
-    struct dirent *ent;
-
    
-    uint8_t file_count=0;
-
-    if ((dir = opendir(dir_path)) != NULL)
-    {
-        while ((ent = readdir(dir)) != NULL)
-        {
-             std::string fileName = ent->d_name;
-            if (fileName != "." && fileName != "..")
-            {
-             
-                if (ent->d_type == DT_REG || ent->d_type == DT_UNKNOWN ) // 普通文件
-                {
-                    
-                    if(fileName=="sleep_time.bin")
-                    {
-                        char file_path[128]={0};
-                        sprintf_s(file_path,128,"%s/%s",dir_path,ent->d_name);
-                        
-                        FILE * fp = fopen(file_path,"rb+");
-                        if(fp==NULL)
-                        {
-                              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
-                            return file_count;
-                        }
-                    
-                        if (fp != NULL)
-                        {
-                            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-                            *file_size += ftell(fp)+3;       // 获取当前文件指针位置,即文件大小
-                            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-                            fclose(fp);
-                        }
-                        file_count++;
-                    }
-                    else if (fileName=="sleep_status.bin")
-                    {
-                        char file_path[128]={0};
-                        sprintf_s(file_path,128,"%s/%s",dir_path,ent->d_name);
-                        FILE * fp = fopen(file_path,"rb+");
-                        if(fp==NULL)
-                        {
-                              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
-                            return file_count;
-                        }
-                        if (fp != NULL)
-                        {
-                            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-                            *file_size += ftell(fp);       // 获取当前文件指针位置,即文件大小
-                            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-                            fclose(fp);
-                        }
-                    }
-                    else if(fileName=="nap.bin")
-                    {
-                        char file_path[128]={0};
-                        sprintf_s(file_path,128,"%s/%s",dir_path,ent->d_name);
-                        
-                        FILE * fp = fopen(file_path,"rb+");
-                        if(fp==NULL)
-                        {
-                              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
-                            return file_count;
-                        }
-                    uint32_t size=0;
-                        if (fp != NULL)
-                        {
-                            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-                            size= ftell(fp);       // 获取当前文件指针位置,即文件大小
-                            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-                            fclose(fp);
-                        }
-                        int mod_value=0;
-                       
-                        mod_value=size%14;
-                        if(mod_value!=0)
-                        return 0;
-
-                        uint8_t nap_count=size/14;
-                        *file_size+=nap_count*14;
-                        
-                        file_count+=nap_count;
-                    }
-                    
-                }
-            }
-            else if (ent->d_type == DT_DIR) // 目录
-            {
-                continue;
-            }
-        }
-    }
-    else
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," opendir fail %s\r\n",dir_path);
-        return file_count;
-    }
-    closedir(dir);
-
-    return file_count;
-}
-
-void ble_set_password(uint8_t falg, char * data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD_SWITCH,falg);
-    p_ConfigModel->set_condigData_String(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD,data);
-
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"设置手表密码 %d %s \r\n",falg, data);   
-
-    /*更新model密码配置*/
-    if(falg == 0)
-    {
-        //更新手表状态
-        GraphicService::GetInstance()->PostGraphicEvent(
-        std::bind(&OHOS::CodedLockModel::BleUnlock, OHOS::CodedLockModel::GetInstance()));      
-    }
-    OHOS::CodedLockModel::GetInstance()->SetUserPassWord(data);
-
-    return;
-}
-
-uint8_t ble_get_password(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    std::string str =p_ConfigModel->get_configData_string(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD);
-    uint8_t falg =p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD_SWITCH);
-
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"获取手表密码 %d %s \r\n",falg,str.c_str());
-
-    return falg;
-   
-}
-
-void set_sedent_param(  msg_sedent_set_param_info_t * data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_SWITCH,data->sedent_on);
-   
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_REMINDERTIME,data->sedent_time );
-       
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_INTERVAL,data->frequenc);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data->sedent_on);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"久坐提醒时间段:%d\r\n",data->sedent_time);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"久坐提醒时间间隔(单位小时):%d\r\n",data->frequenc);
-    
-    set_sedentary_data();
-    return;
-}
-
-
-void get_sedent_param(  msg_sedent_set_param_info_t * data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    data->sedent_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_SWITCH);
-
-    data->sedent_time = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_REMINDERTIME);
-
-    data->frequenc = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_INTERVAL);
-    return;
-}
-
-bool check_dial_freespace(uint16_t id,uint32_t dial_size) {
-  return OHOS::SetDialModel::GetInstance().CheckDialDownload(id,dial_size);
-}
-
-void ble_get_dial_path(char * buf,uint16_t id)
-{
-    char *path= (char*)OHOS::SetDialModel::GetInstance().GetSaveDir(id,0).c_str();
-    memcpy(buf,path,strlen(path)+1);
-    return;
-}
-
-void ble_save_dial_custom(msg_recv_custom_dial_info_t *data)
-{
-    OHOS:: DialLayout info;
-    info.dialId=data->dial_uid;
-    info.batteryDisplay=data->battery;
-    info.timeDisplay=data->time;
-    info.colorTypeSet=data->time_font;
-    OHOS::SetDialModel::GetInstance().saveDialConfig(info);
-}
-
-void ble_set_dial_by_id_(uint16_t id)
-{
-    // printf("ble_set_dial_by_id_ %d\n",id);
-    OHOS::SetDialModel::GetInstance().UpdateDialSetting(id);
-   
-}
-void ble_set_dial_by_id(uint16_t id)
-{
-    // printf("ble_set_dial_by_id %d\n",id);
-    GraphicService::GetInstance()->PostGraphicEvent(
-                std::bind(ble_set_dial_by_id_ ,id));
-}
-
-void ble_get_custom_dial(uint16_t id,char *buf)
-{
-    const char *name=OHOS::SetDialModel::GetInstance().GetCustomName(id).c_str();
-    memset_s(buf,32,0,32);
-    memcpy_s(buf,32,name,strlen(name));
-}
-uint16_t ble_get_dial_id(void)
-{
-   uint16_t id= OHOS::SetDialModel::GetInstance().GetCurrentDialID();
-   return id;
-}
-
-
-
-bool ble_is_dial_install_by_id(uint16_t id)
-{
-   return OHOS::SetDialModel::GetInstance().IsDialInstalled(id);
-}
-
-int ble_get_dial_num(void)
-{
-   return OHOS::SetDialModel::GetInstance().GetDialCount();
-}
-
-void ble_delete_dial_(uint16_t id)
-{
-    OHOS::SetDialModel::GetInstance().UninstallDial(id);
-}
-
-bool ble_delete_dial(uint16_t id)
-{
-
-    if(id==OHOS::SetDialModel::GetInstance().GetCurrentDialID())
-    return false;
-    else
-    {
-        switch (id) {
-        case OHOS::DEFAULT_DIAL_ID:
-        case OHOS::MAX_DEFAULT_DIAL_ID:
-        case OHOS::DEFAULT_DIAL_ID_0:
-        case OHOS::DEFAULT_DIAL_ID_1:
-        case OHOS::DEFAULT_DIAL_ID_2:
-        case OHOS::DEFAULT_DIAL_ID_3:
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                        "UninstallDial: Default dial %d cannot be uninstalled", id);
-        return false;
-        }
-        GraphicService::GetInstance()->PostGraphicEvent(
-                std::bind(ble_delete_dial_,id));
-        return true;
-    }
-    
-}
-
-int get_all_dial_id( char * buf,uint16_t MAX_LEN)
-{
-    return OHOS::SetDialModel::GetInstance().GetAllDialIDs(buf,MAX_LEN);
-}
-
-bool dial_file_save(void )
-{
-    return OHOS::SetDialModel::GetInstance().saveDialfile();
-}
-
-void install_Register_dial_( char * name,uint16_t id)
-{
-    OHOS::SetDialModel::GetInstance().RegisterDial(id,name,0);
-
-}
-void install_Register_dial( char * name,uint16_t id)
-{
-    GraphicService::GetInstance()->PostGraphicEvent(
-                std::bind(install_Register_dial_,name ,id));
-    return ;
-
-}
-
-#include "cywee_ble_Service.h"
-
-void delete_before_file(uint8_t type)
-{
-    time_t currtime;
-    struct tm *timeinfo;
-    time(&currtime);
-    timeinfo = localtime(&currtime);
-
-    int y=timeinfo->tm_year+ 1900;
-    int m=timeinfo->tm_mon+1;
-    int d=timeinfo->tm_mday;
-
-       WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"delete_before_file now day%d %d %d\r\n ",y,m,d);
-
-    char path_[64]={0};
-
-     switch (type)
-    {
-        case 0x43: //同步步数历史数据
-        sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_STEP);
-            break;
-        case 0x44://同步燃脂时间数据
-        sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_FAT);
-            break;
-        case 0x45://同步站立历史数据
-        sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_STAND);
-            break;
-        case 0x46://同步卡路里历史数据
-        sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_CALORIES);
-            break;
-        case 0x47://同步距离历史数据
-        sprintf_s(path_,64,"%s",GOAL_DATA_CONFIG_DIR_DISTANCE);
-            break;
-        default:
-            break;
-    }
-
-    
-    struct DIR *dir;
-    struct dirent *ent;
-    
-
-    if ((dir = opendir(path_)) != NULL)
-    {
-        while ((ent = readdir(dir)) != NULL)
-        {
-            std::string fileName = ent->d_name;
-            if (fileName != "." && fileName != "..")
-            {
-                
-                if (ent->d_type == DT_REG || ent->d_type == DT_UNKNOWN ) // 普通文件
-                {
-                    int flag=0;
-                      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%s\r\n",fileName.c_str());
-                    int y_;
-                    int m_;
-                    int d_;
-
-                    for(int i=0;i<fileName.length();i++)
-                    {
-                        int data=0;
-                       
-                        data=atoi(fileName.c_str()+i);
-                        if(data>0)
-                        {
-                            
-                            if(flag==0)
-                            {
-                                i=i+4;
-                                  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"data %d\r\n",data);
-                                y_=y-data;
-                                flag++;
-                            }
-                            else if (flag==1)
-                            {
-                                i=i+2;
-                                  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"data %d\r\n",data);
-                                m_=m-data;
-                                flag++;
-                            }
-                            else if (flag==2)
-                            {
-                                i=i+2;
-                                  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"data %d\r\n",data);
-                                d_=d-data;
-                                flag++;
-                            }
-                            
-                            
-                        }
-                    }
-                    
-                    if((y_*24+m_)*30+d_>before_file_day)
-                    {
-                        char path_remove[64]={0};
-                        sprintf_s(path_remove,64,"%s/%s",path_,fileName.c_str());
-                        remove(path_remove);
-                          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"succ remove %s\r\n ",path_remove);
-                    }
-                    else
-                    {
-                          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"is 30d  %d\r\n ",(y_*24+m_)*30+d_);
-                    }
-                   
-                }
-            }
-            else if (ent->d_type == DT_DIR) // 目录
-            {
-                continue;
-            }
-        }
-    }
-    else
-    {
-
-        return ;
-    }
-    closedir(dir);
-
-
-
-
-}
-
-char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
-{
-    char path_[64]={0};
-    char timeday[12] = {0};
-    uapi_get_YYMMDD_Time_extend(timeday, '_',day);
-    uint8_t day_now_data_size=0;
-    switch (type)
-    {
-        case 0x43: //同步步数历史数据
-        sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_PATH,timeday);
-        day_now_data_size=8;
-            break;
-        case 0x44://同步燃脂时间数据
-        sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_FAT_PATH,timeday);
-        day_now_data_size=6;
-            break;
-        case 0x45://同步站立历史数据
-        sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_STAND_DATA_PATH,timeday);
-         day_now_data_size=4;
-            break;
-        case 0x46://同步卡路里历史数据
-        sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_CALORIES_PATH,timeday);
-        day_now_data_size=8;
-            break;
-        case 0x47://同步距离历史数据
-        sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_DISTANCE_PATH,timeday);
-        day_now_data_size=8;
-            break;
-        default:
-            break;
-    }
-    if(day!=0)
-    {
-        day_now_data_size=0;
-    }
-    FILE * fp = fopen(path_,"rb+");
-    uint32_t size=0;
-    if(fp==NULL)
-    {
-        
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen type  %d %s fail\r\n",type,path_);
-        if(day==0)
-        {
-            goto DAY_IS_0;
-        }
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen type  %d %s fail\r\n",type,path_);
-        return NULL;
-    }
-   
-    if (fp != NULL)
-    {
-        fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-        size = ftell(fp);       // 获取当前文件指针位置,即文件大小
-        fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-    }
-   
-
-    DAY_IS_0:
-
-    //  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"size %d \r\n",size);
-    char * buf=(char *)malloc(size+day_now_data_size);
-    if(buf==NULL)
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"malloc fail\r\n");
-        return buf;
-    }
-    if(fp)
-    {
-        uint32_t ret= fread(buf,1,size,fp);
-        fclose(fp);
-    }
-    
-    if(day==0)
-    {
-        time_t currtime;
-        uint32_t creationTime=0;
-        int ret = uapi_get_timestampe_ss(&creationTime);
-
-        int32_t value=0;
-        int16_t value_16=0;
-        float f_value=0;
-
-        struct tm *timeinfo;
-        time(&currtime);
-        timeinfo = localtime(&currtime);
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"localtime %d",timeinfo->tm_min);
-        creationTime=creationTime-(timeinfo->tm_min*60)-(timeinfo->tm_sec);
-       
-        switch (type)
-        {
-            case 0x43: //同步步数历史数据
-
-                if( get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
-                {
-                    if(value>0)
-                    {
-                        memcpy(buf+size,&creationTime,4);
-                        size+=4;
-                        memcpy(buf+size,&value,4);
-                        size+=4;
-                    }
-                }
-              
-                break;
-            case 0x44://同步燃脂时间数据
-                if(get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
-                {
-                     if(value_16>0)
-                    {
-                        memcpy(buf+size,&creationTime,4);
-                        size+=4;
-                        int16 temp_value= (value_16);
-                        memcpy(buf+size,&(temp_value),2);
-                        size+=2;
-                    }
-                }
-               
-                break;
-            case 0x45://同步站立历史数据
-
-                // if(get_stand_falg())
-                // {
-                //     memcpy(buf+size,&creationTime,4);
-                    //     size+=4;
-                // }
-               
-                break;
-            case 0x46://同步卡路里历史数据
-                if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
-                {   
-                    if(f_value>0)
-                    {
-                        memcpy(buf+size,&creationTime,4);
-                        size+=4;
-                        memcpy(buf+size,&f_value,4);
-                        size+=4;
-                    }
-                }
-              
-                break;
-            case 0x47://同步距离历史数据
-                if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
-                {
-                    if(f_value>0)
-                    {
-                        memcpy(buf+size,&creationTime,4);
-                        size+=4;
-                        memcpy(buf+size,&f_value,4);
-                        size+=4;
-                    }
-                }
-               
-                break;
-            default:
-                break;
-        }
-
-    }
-
-    //   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"fread %d \r\n",ret);
-    for(int i=0;i<size;i++)
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," %02X",(uint8_t)buf[i]);
-    }
-    *len=size;
-    if(buf && size==0)
-    {
-        free(buf);
-        buf=NULL;
-    }
-   
-    return buf;
-}
-
-
-
-
-
-void ble_set_sleep_remind(msg_get_sleep_param_info_t data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data.schedule);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP,data.schedule);
-    //if(data.schedule)
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data.bedtime_hour);
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data.bedtime_min);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_BEDTIME,data.bedtime_hour<<16|data.bedtime_min);
-       
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data.waketime_hour);
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data.waketime_min);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_GET_UP,data.waketime_hour<<16|data.waketime_min);
-
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"睡前提醒 %d\r\n",data.bedtime_alarm);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_REMIND,data.bedtime_alarm);
-
-        //更新睡眠配置
-        OHOS::SleepModel::GetInstance().set_sleep_goal();
-        set_sleep_and_wake_time();
-        //OHOS::clean_sleep_file();  //重设睡眠时间段 删除历史文件
-        get_sleep_time_notify();
-    }  
-    return;
-}
-
-
-void ble_get_sleep_remind(msg_get_sleep_param_info_t *data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    data->schedule = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data->schedule);
-
-    uint32_t bedtime= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_BEDTIME);
-    data->bedtime_hour=bedtime>>16;
-    data->bedtime_min=bedtime&0x00ff;
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data->bedtime_hour);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data->bedtime_min);
-    
-    uint32_t wakettime= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_GET_UP);
-    data->waketime_hour=wakettime>>16;
-    data->waketime_min=wakettime&0x00ff;
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data->waketime_hour);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data->waketime_min);
-       
-    data->bedtime_alarm= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_REMIND);
-
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"睡前提醒 %d\r\n",data->bedtime_alarm);
-       
-    return;
-}
-
-
-
-
-
-void ble_set_drink_remind(msg_drink_info_t data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data.drink_on);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK,data.drink_on);
-    if(data.drink_on)
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标:%d\r\n",data.goal);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_GOAL,data.goal);
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data.time_start);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_START,data.time_start);
-        if(data.drink_on==2)
-        {
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data.time_end);
-            p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_END,data.time_end);
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"频率:%d\r\n",data.freq);
-            p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_FREQ,data.freq);
-        }
-    }
-    set_drinkreminder_data();/*更新喝水提醒时间*/
-    return;
-}
-
-void ble_get_drink_remind(msg_drink_info_t *data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    data->drink_on = p_ConfigModel-> get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK);
-    if(data->drink_on)
-    data->drink_on=1;
-
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data->drink_on);
-    
-    return;
-}
-
-// 闹钟数据:
-// {
-//     //"code":1,
-// "alarms":
-// [
-//         {
-//             "id":0,
-//             "repeat":[0],
-//             "hour":10,
-//             "minute":0,
-//             "enable":1
-static const char *alarmName[6] = {"clock1", "clock2", "clock3", "clock4", "clock5", "clock6"}; // 闹钟名字的最大个数为6
-
-void ble_delet_all_AlarmInfo(void)
-{
-    AlarmClockManagement  data;
-    if( 0==AlmmgrGetManagement(&data))
-    {
-     
-        for(int i=0;i<EVENT_ALARM_CLOCK_MAX;i++)
-        {
-            delete_alarm_id(i);//将指定id的闹钟标记为已删除状态
-            if(data.eventAlarmInfo[i].alarmClockId==i && data.eventAlarmInfo[i].alarmType==TYPE_EVENT_ALARM_CLOCK)
-            AlmmgrDeleteAlarmClock(&data.eventAlarmInfo[i]);
-        }
-    }
-}
-
-void ble_SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_t week,uint8_t id,uint8_t enable)
-{
-   // OHOS::uapi_connect_pbap_pce();
-
-    AlarmClockInfo eventAlarmInfo;
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmInfo!");
-   
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "hour = %u, minute = %u", time_hour, time_min);
-    eventAlarmInfo.alarmTime = ((time_hour << 16) | time_min); // 闹钟时间数据的小时位右边16位
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewAlarmTime eventAlarmInfo.alarm_time = %u",
-        eventAlarmInfo.alarmTime);
-    eventAlarmInfo.alarmClockId = id;
-    eventAlarmInfo.alarmClockEnable = enable;
-    eventAlarmInfo.alarmType = 1;
-    eventAlarmInfo.delayNum = 0;
-    eventAlarmInfo.nameLen = strlen(alarmName[id]);
-    eventAlarmInfo.index = id;
-    eventAlarmInfo.repeatPeriod = week;
-    if (strcpy_s(eventAlarmInfo.alarmClockName, strlen(alarmName[id]) + 1,
-        alarmName[id]) != 0) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmInfo copy alarmname error!");
-        return;
-    }
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::NewAlarmTime clock name = %s, id = %u",
-        eventAlarmInfo.alarmClockName, eventAlarmInfo.alarmClockId);
-        
-    if ( id+1 >= AlmmgrGetEventAlarmCnt()) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek new time!");
-        int ret = AlmmgrAddAlarmClock(&eventAlarmInfo);
-        set_alarm_id(id);//将指定id的闹钟标记为已设置状态
-    } else {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmClockModel::SetAlarmWeek modify time!");
-        AlmmgrUpdataAlarmClock(&eventAlarmInfo);
-    }
-}
-
-void ble_AlarmClock_refresh(void)
-{
-    SendMsgToUIService(UI_UPDATE_ALARM_INFO, 0, nullptr, 0);
-}
-
-
-char * struct_to_json_buf_malloc_Alarm(void)
-{
-    AlarmClockManagement  data;
-    cJSON *dataJSON = cJSON_CreateObject();
-    cJSON* data_arryJSON = cJSON_CreateArray();
-
-    if( 0==AlmmgrGetManagement(&data))
-    {
-     
-
-        for(int i=0;i<EVENT_ALARM_CLOCK_MAX;i++)
-        {
-            if(data.eventAlarmInfo[i].alarmClockId==i && data.eventAlarmInfo[i].alarmType==TYPE_EVENT_ALARM_CLOCK)
-            {
-                cJSON* itemJSON = cJSON_CreateObject();
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"闹钟数据:%d\r\n",data.eventAlarmInfo[i].alarmClockId);
-                cJSON_AddNumberToObject(itemJSON,"id",data.eventAlarmInfo[i].alarmClockId);
-
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"闹钟使能:%d\r\n",data.eventAlarmInfo[i].alarmClockEnable);
-                cJSON_AddNumberToObject(itemJSON,"enable",data.eventAlarmInfo[i].alarmClockEnable);
-
-                WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"闹钟重复:%d\r\n",data.eventAlarmInfo[i].repeatPeriod);
-                int anNum[7] = {0};
-                int repeatPeriod_num=0;
-                for(int j=0 ; j<7;j++)
-                {
-                    if(data.eventAlarmInfo[i].repeatPeriod & 0b00000001<<j)
-                    {
-                        if(j==0)
-                        {
-                            anNum[repeatPeriod_num]=7;
-                        }
-                        else
-                        {
-                            anNum[repeatPeriod_num]=j;
-                        }
-                    
-                        
-                        repeatPeriod_num++;
-                    }
-                }
-                if(repeatPeriod_num==0)
-                {
-                    repeatPeriod_num=1;
-                }
-                cJSON* repeatPeriod= cJSON_CreateIntArray(anNum,repeatPeriod_num);
-                
-                cJSON_AddItemToObject(itemJSON,"repeat",repeatPeriod);
-
-
-                uint8_t refreshHour = data.eventAlarmInfo[i].alarmTime >> 16; // 闹钟存储小时位需要右移16位
-                
-                uint8_t refreshMin = data.eventAlarmInfo[i].alarmTime & 0x00FF; // 得出闹钟时间的分钟位需要将左置位16位清零
-
-                cJSON_AddNumberToObject(itemJSON,"hour",refreshHour);
-
-                cJSON_AddNumberToObject(itemJSON,"minute",refreshMin);
-
-                cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
-
-            }
-           
-             //cJSON_AddNumberToObject(itemJSON,"src",data->src);
-        }
-       
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"闹钟数据:%d\r\n",data.alarmTime);
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"闹钟数据:%d\r\n",data.repeatPeriod);
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"闹钟数据:%d\r\n",data.alarmClockEnable);
-       // i++;
-    }
-     else
-    {
-            
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"获取闹钟失败\r\n");
-    }
-
-    cJSON_AddItemToObject(dataJSON,"alarms",data_arryJSON);
-
-    char *json_format = cJSON_PrintUnformatted(dataJSON);
-   
-    int pSize = cJSON_GetArraySize(dataJSON);
-     cJSON_Delete(dataJSON);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"闹钟数据 :%s\r\n",json_format);
-    return json_format;
-}
-
-char *  struct_to_json_buf_malloc_(uint8_t day)
-{
-    cJSON *dataJSON = cJSON_CreateObject();
-    cJSON* data_arryJSON = cJSON_CreateArray();
-    struct Trainingdata * data=NULL;
-    int i=0;
-    //char file_path[128] = {0};
-    char timeday[12] = {0};
-    uapi_get_YYMMDD_Time_extend(timeday, '_',day);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%s\r\n",timeday);
-    //sprintf(file_path, "%s%s.bin", TRAINING_PATH_BLE, timeday);
-
-    while(data=read_Trainingdata_data(timeday, i))
-    {
-        cJSON* itemJSON = cJSON_CreateObject();
-        if(data!=NULL)
-        {
-            cJSON_AddNumberToObject(itemJSON,"src",data->src);
-            cJSON_AddNumberToObject(itemJSON,"bt",data->bt);
-            cJSON_AddNumberToObject(itemJSON,"ty",data->ty);
-            cJSON_AddNumberToObject(itemJSON,"st",data->st);
-            cJSON_AddNumberToObject(itemJSON,"sp",data->sp);
-            cJSON_AddNumberToObject(itemJSON,"tgt",data->tgt);
-            cJSON_AddNumberToObject(itemJSON,"tg",data->tg);
-            cJSON_AddNumberToObject(itemJSON,"pg",data->pg);
-            cJSON_AddNumberToObject(itemJSON,"du",data->du);
-            cJSON_AddNumberToObject(itemJSON,"ca",data->ca);
-            cJSON_AddNumberToObject(itemJSON,"di",data->di);
-            cJSON_AddNumberToObject(itemJSON,"hr",data->hr);
-            cJSON_AddNumberToObject(itemJSON,"stp",data->stp);
-            cJSON_AddNumberToObject(itemJSON,"ti",data->ti);
-            cJSON_AddNumberToObject(itemJSON,"cir",data->cir);
-            cJSON_AddNumberToObject(itemJSON,"alt",data->alt);
-            cJSON_AddNumberToObject(itemJSON,"apc",data->apc);
-            cJSON_AddNumberToObject(itemJSON,"fpc",data->fpc);
-            cJSON_AddNumberToObject(itemJSON,"spc",data->spc);
-            cJSON_AddNumberToObject(itemJSON,"std",data->std);
-            cJSON_AddNumberToObject(itemJSON,"cdc",data->cdc);
-
-            cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
-            free(data);
-            data=NULL;
-        }
-        else{
-            break;
-        }
-        i++;
-    }
-    cJSON_AddItemToObject(dataJSON,"recs",data_arryJSON);
-
-    char *json_format = cJSON_PrintUnformatted(dataJSON);
-   
-    int pSize = cJSON_GetArraySize(dataJSON);
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"训练历史数据:%s\r\n",json_format);
-    cJSON_Delete(dataJSON);
-    return json_format;
-}
-
-#define TAR_PATH EXC_TAR_PATH
-
-
-static uint8_t Calculate_CRC_file(char *path)//
-{
-    uint8_t crcbuf  = 0;
-    uint8_t lrcValue = 0x00;
-       lrcValue = calculate_lrc_file(path);
-
-    crcbuf = get_crc_from_lrc(lrcValue);
-    return crcbuf;
-}
-
-static uint8_t file_count=0;
-
-static uint8_t file_index=1;
-
-void get_tar_dir_file_count(void)
-{
-    char dir_path[128]={0};
-    sprintf_s(dir_path,128,"%s",TAR_PATH);
-    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"TAR_PATH  %s\r\n",dir_path);
-    struct DIR *dir;
-    struct dirent *ent;
-
-  
-    file_count=0;
-
-    if ((dir = opendir(dir_path)) != NULL)
-    {
-        while ((ent = readdir(dir)) != NULL)
-        {
-            std::string fileName = ent->d_name;
-
-            if (fileName != "." && fileName != "..")
-            {
-             
-                if (ent->d_type == DT_REG || ent->d_type == DT_UNKNOWN ) // 普通文件
-                {
-                    //if(strstr(fileName.c_str(),".tar"))
-                    file_count++;
-
-                }
-            }
-            else if (ent->d_type == DT_DIR) // 目录
-            {
-                continue;
-            }
-        }
-        closedir(dir);
-    }
-    else
-    {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"enenenenen \r\n");
-    }
-    file_index=1;
-    return;
-}
-
-uint32_t tar_rmove(char *tar_path)
-{
-    
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"remove  %s\r\n",tar_path);
-    if(0==remove(tar_path))
-    return 1;
-    else
-    return 0;
-}
-
-char * tar_dir_to_json_buf_malloc_(char* file_name,uint32_t *file_size)
-{
-    char dir_path[256]={0};
-    sprintf_s(dir_path,256,"%s",TAR_PATH);
-
-    cJSON *dataJSON = cJSON_CreateObject();
-    cJSON* data_arryJSON = cJSON_CreateArray();
-
-    struct DIR *dir;
-    struct dirent *ent;
-   
-    if ((dir = opendir(dir_path)) != NULL)
-    {
-        while ((ent = readdir(dir)) != NULL)
-        {
-            std::string fileName = ent->d_name;
-
-            if (fileName != "." && fileName != "..")
-            {
-                if (ent->d_type == DT_REG || ent->d_type == DT_UNKNOWN ) // 普通文件
-                {
-                   
-                    //*file_size=ent->d_reclen;
-                    char file_path[300]={0};
-                    sprintf_s(file_path,256,"%s/%s",TAR_PATH,ent->d_name);
-                    
-                    FILE * fp = fopen(file_path,"rb+");
-                    if(fp==NULL)
-                    {
-                        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
-                        return NULL;
-                    }
-                    if (fp != NULL)
-                    {
-                        fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-                        *file_size = ftell(fp);       // 获取当前文件指针位置,即文件大小
-                        fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-                    }
-                    fclose(fp);
-
-
-                    memcpy(file_name,file_path,strlen(file_path));
-                    uint8_t crc= Calculate_CRC_file(file_name);
-
-                    cJSON* itemJSON = cJSON_CreateObject();
-
-                    cJSON_AddNumberToObject(itemJSON,"index",file_index);
-                    cJSON_AddNumberToObject(itemJSON,"count",file_count);
-
-                    cJSON_AddNumberToObject(itemJSON,"crc",crc);
-
-                    cJSON_AddStringToObject(itemJSON,"name",fileName.c_str());
-                    cJSON_AddNumberToObject(itemJSON,"size",*file_size);
-
-                    char *json_format = cJSON_PrintUnformatted(itemJSON);
-                 
-                    int pSize = cJSON_GetArraySize(dataJSON);
-                      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"文件数据:%s\r\n",json_format);
-                    cJSON_Delete(dataJSON);
-                    file_index++;
-
-                    return json_format;
-
-                    //cJSON_AddItemReferenceToArray(data_arryJSON,itemJSON);
-
-                }
-                else if (ent->d_type == DT_DIR) // 目录
-                {
-                    continue;
-                }
-
-            }
-
-        }
-        closedir(dir);
-    }
-    else
-    {
-
-           WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"opendir fail\r\n");
-    }
-    cJSON_Delete(dataJSON);
-    cJSON_Delete(data_arryJSON);
-     
-    return NULL;
-}
-
-
-
-
-
-
-void add_addressbookToRead(char *data) 
-{
-    if(data == NULL) 
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error: data is NULL\n");
-        return;
-    }
-    
-    char *name = NULL;
-    char *phone = NULL;
-    name = strtok(data, ",");
-    
-    if(name == NULL) 
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error: Unable to get name\n");
-        return;
-    }
-
-    phone = strtok(NULL, ",");
-
-    if(phone == NULL) 
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error: Unable to get phone number\n");
-        return;
-    }
-
-    PRINT("phone : %s \r\n", phone);
-    OHOS::add_addressbook_by_AT(name, phone);
-    return;
-}
-
-static uint32_t languaage_id=0;
-void set_languaage(uint32_t id)
-{//OHOS:: language language;
-    languaage_id=id;
-    SendMsgToUIService(UI_UPDATE_LANGUAGE, 0, &languaage_id, sizeof(uint32_t));
-}
-
-char *addressbook(void)//获取通讯录保存文件地址路径
-{
-    return ADDRESS_BOOK_PATH;
-}
-
-void addressbookToRead(char *buf)//转化用于·c文件
-{
-    if(buf!=NULL)
-    OHOS::read_addressbook_to_struct(buf);
-    else
-    OHOS::read_addressbook_bin_file();
-    return;
-}
-
-void addressbookTowrite(void)//转化用于·c文件
-{
-    OHOS::write_addressbook_bin_flle();
-    return;
-}
-
-// struct Weather_data
-// {
-//     int humidity;
-//     char* windScale;
-//     char* textNight; 
-//     int uvIndex;
-//     int temp;
-//     int iconNight;
-// };
-uint8_t ble_falg=0;
-
-void set_user_data(msg_user_info_t *data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"高:%d\r\n",data->height);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_HEIGHT,data->height);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"重:%d\r\n",data->weight);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_WEIGHT,data->weight);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"性别:%d\r\n",data->gender);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_SEX,data->gender);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"年纪:%d\r\n",data->age);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data->age);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标步数:%d\r\n",data->target_step);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,data->target_step);
-    
-    //目标站立
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标站立 %d\r\n",data->target_stand);
-    if(data->target_stand)
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES,data->target_stand);
-    //目标燃脂
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标燃脂 %d\r\n",data->fat_time);
-    if(data->fat_time)
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION,data->fat_time);
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标卡路里 %d\r\n",data->fat_time);
-    if(data->calorie)
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES,data->calorie);
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标距离 %d\r\n",data->fat_time);
-    if(data->distance)
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE,data->distance);
-
-    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SET_USER_INFO, NULL);
-
-    // app端不修改手表端时间显示
-    // if(data->timeformat==0)
-    // p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_24HOUR,24);
-    // else
-    // p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_24HOUR,12);
-
-
-
-   
-
-     SendMsgToUIService(UI_UPDATE_GOAL, 0, nullptr, 0);
-    
-}
-
-int get_goal_stepcount(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT);
-}
-int get_goal_caloriescount(void)//获取运动目标卡路里
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES);
-}
-int get_goal_discount(void)//获取运动目标卡路里
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE);
-}
-int get_vibrationremiander(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->GetVibrationReminder();
-}
-
-int get_SilentMode(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->GetSilentMode();
-}
-void set_quick_auxiliary_paramters(uint8_t id)//设置快捷辅助功能参数id
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS,id);
-} 
-int get_quick_auxiliary_paramters(void)//获取快捷辅助功能参数id
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS);
-} 
-void set_goal_stepcount(uint32_t step)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,step);
-    return ;
-}
-void set_goal_caloriescount(uint32_t kcal)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES,kcal);
-
-   
-    return ;
-}
-void set_notify_switch(bool on)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_NOTIFY,on);
-    return ;
-}
-bool get_notify_switch(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_NOTIFY);
-}
-
-uint8_t get_other_goal_notify_switch(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_OTHER);
-}
-
-
-uint8_t get_step_goal_notify_switch(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEP);
-}
-
-
-
-void set_goal_discount(uint32_t dis)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE,dis);
-    return ;
-}
-void set_goal_durationcount(uint32_t time)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION,time);
-    return ;
-}
-int get_goal_durationcount(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION);
-}
-void set_goal_standupcount(uint32_t time)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES,time);
-    return ;
-}
-int get_goal_standupcount(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES);
-}
-
-void set_vibrationremiander(uint8_t falg)//设置震动模式
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->SetVibrationReminder(falg);
-    // uapi_vibrationModeSet(falg);
-    ui_api_vibrate_once_func();
-    SendMsgToUIService(UI_UPDATE_VIBRATION_MODE,0,nullptr,0);
-    return ;
-}
-
-void set_SilentMode(uint8_t falg)//设置静音模式
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->SetSilentMode(falg);
-    SendMsgToUIService(UI_UPDATE_SILENT_MODE,0,nullptr,0);
-    return;
-}
-/*设置自动获取实时数据开关*/
-void set_traning_updata_auto(uint8_t traingauto)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO,traingauto);
-    return;
-}
-
-void set_goal_other_notification(uint8_t data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_OTHER,data);
-    if(data==1)
-    {
-        OHOS::set_Is_show_flag(1,OHOS::GOAL_CALOREIE);
-        OHOS::set_Is_show_flag(1,OHOS::GOAL_STAND);
-        OHOS::set_Is_show_flag(1,OHOS::GOAL_FAT);
-        OHOS::set_Is_show_flag(1,OHOS::GOAL_DISTANCE);
-
-    }
-
-    SendMsgToUIService(UI_UPDATE_GOAL, 0, nullptr, 0);
-
-    return;
-}
-
-void set_goal_step_notification(uint8_t data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEP,data);
-    if(data==1)
-    {
-        OHOS::set_Is_show_flag(1,OHOS::GOAL_STEP);
-    }
-
-    SendMsgToUIService(UI_UPDATE_GOAL, 0, nullptr, 0);
-    return;
-}
-
-
-
-
-
-/*设置获取实时数据频率*/
-void set_traning_updata_freq(uint8_t freq)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ,freq);
-    return;
-}
-
-/*设置最大心率提醒*/
-void set_traning_heart_max(uint8_t data)
-{
-    OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
-    OHOS::TraingModel::GetInstance()->SetMaxHeart(data);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX,data);
-    return;
-}
-void set_brigthness(uint8_t data) //设置屏幕亮度
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    const uint8_t minbrightness =51;
-    const uint8_t maxbrightness =0xff;
-    if(data<=minbrightness)
-        data = minbrightness;
-    else if(data >= maxbrightness)
-        data = maxbrightness;
-    p_ConfigModel->SetBrightness(data);
-    uapi_setScreenBrightness(data);
-    SendMsgToUIService(UI_UPDATE_BRIGHTNESS_VALUE,0,nullptr,0);
-    return;
-}
-void Set_DmpChangeMode(int state)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->SetDmpChangeMode(state);
-}
-
-void Set_heart_cmd(msg_get_heart_set_param_info_t *data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED,data->frequence);
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_REMIND,data->remind_on);
-    if(data->remind_on)
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"set_condigData_Int data->max_min %d\r\n",data->max_min);
-
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN,data->max_min);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE,data->heart);
-    }
-   
-}
-
-
-void Get_heart_cmd(msg_get_heart_set_param_info_t *data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    data->frequence = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED);
-    data->remind_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_REMIND);
-    data->max_min= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Get_heart_cmd data->max_min %d\r\n",data->max_min);
-    data->heart = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE);
-  
-}
-
-void Set_oxygen_cmd(msg_get_spo2_set_param_info_t *data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_DETECTED,data->frequence);
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_REMIND,data->remind_on);
-   
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_THRESHOLD_VALUE,data->spo2);
- 
-
-}
-
-void Get_oxygen_cmd(msg_get_spo2_set_param_info_t *data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    data->frequence = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_DETECTED);
-    data->remind_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_REMIND);
-    data->spo2= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_THRESHOLD_VALUE);
-}
-
-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();
-    
-    return p_ConfigModel->GetBrightness();
-}
-void set_ScreenDuration(int data) //设置亮屏时长
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->SetScreenDuration(data);
-    uapi_setScreenDuration(data);
-    SendMsgToUIService(UI_UPDATE_SCREEN_DURATION,0,nullptr,0);
-    return;
-}
-
-int get_ScreenDuration(void) //获取亮屏时长
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    return p_ConfigModel->GetScreenDuration();
-}
-void Set_RaiseToWake(bool value) //抬婉亮屏开关 
-{
-    if(uapi_sleep_mode_flag_get())
-    {
-        return;
-    }
-
-    mmi_flip_wrist_switch_set(value);
-    if(true == value)
-    {
-        uapi_take_to_wake(1);
-    }
-    else
-    {
-        uapi_take_to_wake(0);
-    }
-
-    SendMsgToUIService(UI_UPDATE_RAISETOBRIGHTNESS,0,nullptr,0);
-    return;
-}
-
-int Get_RaiseToWake(void) //获取抬婉亮屏开关 
-{
-    return mmi_flip_wrist_switch_get();
-}
-void Set_SystemVolume(int value) //设置系统音量
-{
-    uapi_systemVolumeSet(value);
-    SendMsgToUIService(UI_UPDATE_SYSTEM_VOLUME,0,nullptr,0);
-    return;
-}
-
-int Get_SystemVolume(void) //获取系统音量
-{
-    return uapi_systemVolumeGet();
-}
-void Set_CallVolume(int value) //设置通话音量
-{
-    uapi_callVolumeSet(value);
-    SendMsgToUIService(UI_UPDATE_CALL_VOLUME,0,nullptr,0);
-    return;
-}
-
-int Get_CallVolume(void) //获取通话音量
-{
-    return uapi_callVolumeGet();
-}
-
-uint8_t ble_is_ready(void)
-{
-    return ble_falg;
-}
-
-uint8_t ble_is_connect_ready(void)
-{
-    return Bleconnect;
-}
-
-void set_ble_falg(bool falg)
-{
-    ble_falg=falg;
-}
-
-void get_health_HEART_data_path(char *path, uint8_t day,uint16_t max_size)
-{
- 
-    char timeday[12] = {0};
-    uapi_get_YYMMDD_Time_extend(timeday,'\0',day);
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"%s\r\n",timeday);
-
-    sprintf_s(path,max_size,"%s%s.bin",OHOS::GET_HEALTH_JSON_PATH_C_STR_HEART(),timeday);
-
-   return ;
-}
-
-
-void get_health_OXYGEN_data_path(char *path, uint8_t day,uint16_t max_size)
-{
-
-    char timeday[12] = {0};
-    uapi_get_YYMMDD_Time_extend(timeday,'\0',day);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%s\r\n",timeday);
-
-    sprintf_s(path,max_size,"%s%s.bin",OHOS::GET_HEALTH_JSON_PATH_C_STR_OXYGEN(),timeday);
-   return ;
-}
-
-void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight)
-{
-    //UpdateWeatherViewData();
-    return OHOS::UI_set_weather_now_data(humidity, windScale, textNight,uvIndex,temp,iconNight);
-}
-
-void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon)
-{
-    return OHOS::UI_set_weather_address_data(lat, atm, city,subLocality,lon);
-}
-// struct ONE_DAY_DATA
-// {
-//     int tempMin;
-//     int iconDay;
-//     int fxDate;
-//     char textDay[16];
-//     int tempMax;
-// };
-
-void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int count) 
-{
-    OHOS::ONE_DAY_DATA data_t;
-
-    data_t.tempMin=tempMin;
-    data_t.iconDay=iconDay;
-    data_t.fxDate=fxDate;
-    data_t.tempMax=tempMax;
-    memset((void*)data_t.textDay,0,weather_short_len);
-    strcpy_s(data_t.textDay,weather_short_len,textDay);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"set_weather_one_data  %d\n",count);
-    return UI_set_weather_seven_day_data(data_t ,count);
-}
-
-
-void  ble_UpdateMainWeatherData(void)
-{
-    SendMsgToUIService(UI_UPDATE_WEATHER_DATA,0,nullptr,0);
-}
-
-void ble_add_message_index(uint32_t old_index)
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    old_index++;
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_MESSAGE_INDEX,old_index);
-}
-
-uint32_t ble_get_message_index()
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_MESSAGE_INDEX);
-}
-void SendDtfmStrNumberToCat1(char ch) // ble发送单个字符到CAT1 DTMF功能
-{
-    #ifdef SUPPORT_CAT1_SERVICE
-    send_dtfm_number_toCat1(ch);
-    #endif
-}
-
-void ble_mp3_list_update(void)
-{
-    SendMsgToUIService(UI_UPDATE_MUSIC_PLAYER_LIST,0,nullptr,0);
-} 
-
-bool IS_free_save_Mp3(uint32_t size)
-{
-    return canSyncMusic(size);
-}
-#else
-
-uint16_t get_str_nodisplay_number(char *str, uint32_t max_len) {
-
-  
-    return 0;
-  
-}
-
-
-char * get_dial_path(void)
-{
-    return DIAL_DATA_DIR;
-}
-
-errcode_t get_dial_file_path(char* input_dialname ,uint32_t input_size, char* output_file_path , uint32_t max_output_size)
-{
-    if(input_dialname == NULL || output_file_path == NULL)
-    {
-        return ERRCODE_FAIL;
-    }
-
-    int ret = sprintf_s(output_file_path,max_output_size,"%s/%s.bin",DIAL_DATA_DIR,input_dialname);
-    if (ret < 0)
-        return ERRCODE_FAIL;
-
-    return ERRCODE_SUCC;
-} 
-
-
-
-uint8_t get_dial_num()
-{
-    
-    return 0;
-}
-
-bool ble_is_Alipay_bind(void)
-{
-    return true;
-}
-
-void set_ota_upgrade(void)
-{
-   OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-   p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OTA_UPGRADE,1);
-}
-
-void test_paly(uint8_t falg)
-{
-
-}
-bool get_training_spead_path(char *path ,uint32_t time,uint32_t max_len)
-{
-    
-   return true;
-
-}
-
-
-bool get_training_heart_path(char *path ,uint32_t time,uint32_t max_len)
-{
-   
-   return true;
-}
-
-
-void ble_sos_data_save(void)
-{
-   
-}
-
-void ble_SOS_data_init(void)
-{
-}
-
-void ota_updata_init(void)
-{
-   
-}
-
-
-uint8_t * ble_get_sos_all_data_malloc(uint32_t *len)
-{   
-    
-    return NULL;
-}
-
-//sos 
-void ble_sos_number_clean(void)
-{
-    
-}
-
-bool ble_add_sos_number(uint8_t sex,char *name,char *number)
-{
-    
-    return true;
-}
-
-
-#define before_file_day 30
-
-
-void ble_Alipayunbind(void)
-{
-    const alipay_svr_api_t *alipay_api = alipay_svr_get_api();
-    alipay_api->remove_bind();
-}
-
-
-void get_music_path(char *buf,uint8_t max_len)
-{
-   
-}
-
-bool is_first_pair(void)
-{
-    return OHOS::ConfigModel::GetInstance()->GetisFirstTimeStart(); 
-}
-
-
-bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_end,char *title,char *data,bool is_end)
-{
-
-    
-    return true;
-}
-
-
-
-//在此处实现,给UI回复消息。
-void ble_app_reply(bool data)
-{
-   
-}
-
-
-void ble_connect_ok(void)
-{
-    
-}
-
-void ble_disconnect_ok(void)
-{
-}
-
-void hand_watch_first_time_Paired(void)
-{
-}
-
-void ble_set_ai_Question_str(char *buf)
-{
-}
-
-void ble_set_ai_Answer_str(char *buf,uint8_t type)
-{
-}
-
-char* ble_get_ai_audio_path_str(void)
-{
-    return NULL;
-}
-
-void ble_set_pair(uint8_t falg)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID,falg);
-    return;
-}
-
-uint8_t get_ble_pair(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID);
-    
-}
-
-uint8_t get_br_is_pair(void)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BR_PAIR);
-}
-
-void set_br_pair(uint8_t data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BR_PAIR,data);
-    return;
-}
-
-bool get_lcd_state(void)
-{
-    const power_display_svr_api_t *display_api = power_display_svr_get_api();
-    if (display_api->get_screen_state() != SCREEN_ON)
-    return false;
-    else
-    return true;
-}
-
-uint8_t ble_get_heart_data()
-{
-    uint8_t heart=0;
-    return heart;
-}
-
-uint8_t ble_get_oxygen_data()
-{
-    return 0;
-}
-
-
-cJSON* ble_get_recs_data()
-{
-   
-    return NULL;
-}
-
-//通过时间戳获取训练数据
-cJSON* ble_get_Trainingdata_by_timetamp(uint32_t timetamp)
-{
-    
-    return NULL;
-}
-Tag_Trailer_t Mp3Trailer;
-Tag_ID3V2_TAG_T TAG_T;
-
-void Tag_read_ID3V2( FILE *fp)
-{
-// Get Header
-    fseek(fp,10,SEEK_CUR);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Tag_read_ID2V3\r\n");
-
-    for(int i=7;i>0;i--)
-    {
-        memset_s(&TAG_T,sizeof(TAG_T),0,sizeof(TAG_T));
-        uint32_t size =fread(TAG_T.ID,4,1,fp);
-
-        if(strcmp("TPE1",TAG_T.ID)==0)
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Header :%d %s\r\n",size,TAG_T.ID);
-      
-       
-        fread(TAG_T.Size,4,1,fp);
-        size = TAG_T.Size[0]*0x100000000 + TAG_T.Size[1]*0x10000+ TAG_T.Size[2]*0x100 +TAG_T.Size[3];
-
-        if(strcmp("TPE1",TAG_T.ID)==0)
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Size :%d\r\n",size);
-        
-
-        fread(TAG_T.Flags,2,1,fp);
-        
-        char buf[124]={0};
-        if(strcmp("TPE1",TAG_T.ID)==0)
-        {
-           
-            fread(Mp3Trailer.Artist,1,size,fp);
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"data : %s\r\n",Mp3Trailer.Artist);
-        }
-        else
-        {
-            if(size>=128)
-            {
-                fseek(fp,size,SEEK_CUR);
-            }
-            else
-            {
-                fread(buf,1,size,fp);
-                //  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"data : %s\r\n",buf);
-            }
-        }
-    }
-     return;
-    
+    return bleInstruct_t .ble_get_Trainingdata_by_timetamp(timetamp);
 }
 
-
-bool delete_MP3_file_By_ID(uint16_t id)
-{
-   
-    return true;
-   
-
+bool delete_MP3_file_By_ID(uint16_t id)
+{
+   return bleInstruct_t .delete_MP3_file_By_ID(id);
 }
 
-char * dir_to_json_buf_malloc_(uint8_t type)
+char * dir_to_json_buf_malloc(uint8_t type)
 {
-    
-    return NULL;
-    
+    return bleInstruct_t .dir_to_json_buf_malloc(type);
 }
 
 
@@ -2737,13 +265,12 @@ char * dir_to_json_buf_malloc_(uint8_t type)
 
 uint8_t ble_AT_add_nap_data(uint16_t time)
 {
-    return 0;
+    return bleInstruct_t .ble_AT_add_nap_data(time);
 }
 
 uint8_t ble_get_sleep_data(uint32_t file_size,uint8_t day_,uint8_t *data)
 {
-    
-    return 0;
+    return bleInstruct_t .ble_get_sleep_data(file_size,day_,data);
 }
 
 
@@ -2751,257 +278,117 @@ uint8_t ble_get_sleep_data(uint32_t file_size,uint8_t day_,uint8_t *data)
 
 uint8_t ble_get_sleep_data_dir(uint32_t *file_size,uint8_t day_)
 {
-    char dir_path[64]={0};
-    char day[12]={0};
-    uapi_get_YYMMDD_Time_extend(day,'\0', day_);
-    sprintf_s(dir_path,64,SLEEP_DIR_PATH,day);
-
-    struct DIR *dir;
-    struct dirent *ent;
-
-   
-    uint8_t file_count=0;
-
-    if ((dir = opendir(dir_path)) != NULL)
-    {
-        while ((ent = readdir(dir)) != NULL)
-        {
-             std::string fileName = ent->d_name;
-            if (fileName != "." && fileName != "..")
-            {
-             
-                if (ent->d_type == DT_REG || ent->d_type == DT_UNKNOWN ) // 普通文件
-                {
-                    
-                    if(fileName=="sleep_time.bin")
-                    {
-                        char file_path[128]={0};
-                        sprintf_s(file_path,128,"%s/%s",dir_path,ent->d_name);
-                        
-                        FILE * fp = fopen(file_path,"rb+");
-                        if(fp==NULL)
-                        {
-                              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
-                            return file_count;
-                        }
-                    
-                        if (fp != NULL)
-                        {
-                            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-                            *file_size += ftell(fp)+3;       // 获取当前文件指针位置,即文件大小
-                            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-                            fclose(fp);
-                        }
-                        file_count++;
-                    }
-                    else if (fileName=="sleep_status.bin")
-                    {
-                        char file_path[128]={0};
-                        sprintf_s(file_path,128,"%s/%s",dir_path,ent->d_name);
-                        FILE * fp = fopen(file_path,"rb+");
-                        if(fp==NULL)
-                        {
-                              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
-                            return file_count;
-                        }
-                        if (fp != NULL)
-                        {
-                            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-                            *file_size += ftell(fp);       // 获取当前文件指针位置,即文件大小
-                            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-                            fclose(fp);
-                        }
-                    }
-                    else if(fileName=="nap.bin")
-                    {
-                        char file_path[128]={0};
-                        sprintf_s(file_path,128,"%s/%s",dir_path,ent->d_name);
-                        
-                        FILE * fp = fopen(file_path,"rb+");
-                        if(fp==NULL)
-                        {
-                              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," fopen fail %s\r\n",file_path);
-                            return file_count;
-                        }
-                    uint32_t size=0;
-                        if (fp != NULL)
-                        {
-                            fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
-                            size= ftell(fp);       // 获取当前文件指针位置,即文件大小
-                            fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-                            fclose(fp);
-                        }
-                        int mod_value=0;
-                       
-                        mod_value=size%14;
-                        if(mod_value!=0)
-                        return 0;
-
-                        uint8_t nap_count=size/14;
-                        *file_size+=nap_count*14;
-                        
-                        file_count+=nap_count;
-                    }
-                    
-                }
-            }
-            else if (ent->d_type == DT_DIR) // 目录
-            {
-                continue;
-            }
-        }
-    }
-    else
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP," opendir fail %s\r\n",dir_path);
-        return file_count;
-    }
-    closedir(dir);
-
-    return file_count;
+      return bleInstruct_t .ble_get_sleep_data_dir(file_size,day_);
 }
 
 void ble_set_password(uint8_t falg, char * data)
 {
-   
+    return bleInstruct_t .ble_set_password(falg,data);
 }
 
 uint8_t ble_get_password(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    std::string str =p_ConfigModel->get_configData_string(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD);
-    uint8_t falg =p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD_SWITCH);
-
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"获取手表密码 %d %s \r\n",falg,str.c_str());
-
-    return falg;
-   
+   return bleInstruct_t .ble_get_password();
 }
 
-void set_sedent_param(  msg_sedent_set_param_info_t * data)
-{
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_SWITCH,data->sedent_on);
-   
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_REMINDERTIME,data->sedent_time );
-       
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_INTERVAL,data->frequenc);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data->sedent_on);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"久坐提醒时间段:%d\r\n",data->sedent_time);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"久坐提醒时间间隔(单位小时):%d\r\n",data->frequenc);
-    
-    set_sedentary_data();
-    return;
-}
+// void set_sedent_param(msg_sedent_set_param_info_t * data)
+// {
+//      return bleInstruct_t .set_sedent_param(data);
+// }
 
 
 void get_sedent_param(  msg_sedent_set_param_info_t * data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-
-    data->sedent_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_SWITCH);
-
-    data->sedent_time = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_REMINDERTIME);
-
-    data->frequenc = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_INTERVAL);
-    return;
+  
+    return bleInstruct_t.get_sedent_param(data);
 }
 
 bool check_dial_freespace(uint16_t id,uint32_t dial_size) {
-    return false;
+   return bleInstruct_t.check_dial_freespace(id,dial_size);
 }
 
 void ble_get_dial_path(char * buf,uint16_t id)
 {
+    return bleInstruct_t.ble_get_dial_path(buf,id);
 }
 
 void ble_save_dial_custom(msg_recv_custom_dial_info_t *data)
 {
-
+   return bleInstruct_t.ble_save_dial_custom(data);
 }
 
-void ble_set_dial_by_id_(uint16_t id)
-{
-
+// void ble_set_dial_by_id_(uint16_t id)
+// {
+//      return bleInstruct_t.ble_set_dial_by_id_(id);
    
-}
+// }
 void ble_set_dial_by_id(uint16_t id)
 {
-
+    // printf("ble_set_dial_by_id %d\n",id);
+     return bleInstruct_t.ble_set_dial_by_id(id);
 }
 
 void ble_get_custom_dial(uint16_t id,char *buf)
 {
-
+    return bleInstruct_t.ble_get_custom_dial(id,buf);
 }
+
 uint16_t ble_get_dial_id(void)
 {
-
-    return 0;
-
+   return bleInstruct_t.ble_get_dial_id();
 }
 
 
 
 bool ble_is_dial_install_by_id(uint16_t id)
 {
-
-    return false;
-
+   return bleInstruct_t.ble_is_dial_install_by_id(id);
 }
 
 int ble_get_dial_num(void)
 {
-
-    return 1;
-
+   return bleInstruct_t.ble_get_dial_num();
 }
 
-void ble_delete_dial_(uint16_t id)
-{
-
-}
+// void ble_delete_dial_(uint16_t id)
+// {
+//      return bleInstruct_t.ble_delete_dial_(id);
+// }
 
 bool ble_delete_dial(uint16_t id)
 {
 
-    return false;
-
+    return bleInstruct_t.ble_delete_dial(id);
+    
 }
 
 int get_all_dial_id( char * buf,uint16_t MAX_LEN)
 {
-
-return 0;
-
+    return bleInstruct_t.get_all_dial_id(buf,MAX_LEN);
 }
 
 bool dial_file_save(void )
 {
-
-    return true;
-
+     return bleInstruct_t.dial_file_save();
 }
 
-void install_Register_dial_( char * name,uint16_t id)
-{
- 
+// void install_Register_dial_( char * name,uint16_t id)
+// {
+//     return bleInstruct_t.install_Register_dial_(name,id);
 
-}
+// }
 void install_Register_dial( char * name,uint16_t id)
 {
-
-    return ;
+   return bleInstruct_t.install_Register_dial(name,id);
 
 }
 
-#include "cywee_ble_Service.h"
+// #include "cywee_ble_Service.h"
 
 void delete_before_file(uint8_t type)
 {
-    time_t currtime;
+    #ifdef CYWEE_SPORT
+   time_t currtime;
     struct tm *timeinfo;
     time(&currtime);
     timeinfo = localtime(&currtime);
@@ -3117,14 +504,15 @@ void delete_before_file(uint8_t type)
     }
     closedir(dir);
 
-
+    #endif
 
 
 }
 
 char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
 {
-    char path_[64]={0};
+    #ifdef CYWEE_SPORT
+   char path_[64]={0};
     char timeday[12] = {0};
     uapi_get_YYMMDD_Time_extend(timeday, '_',day);
     uint8_t day_now_data_size=0;
@@ -3294,64 +682,20 @@ char * ble_sywee_history(uint8_t day,uint16_t *len ,uint8_t type)
     }
    
     return buf;
-}
-
-
-
+    #endif
+    return NULL;
 
+}
 
 void ble_set_sleep_remind(msg_get_sleep_param_info_t data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data.schedule);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP,data.schedule);
-    //if(data.schedule)
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data.bedtime_hour);
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data.bedtime_min);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_BEDTIME,data.bedtime_hour<<16|data.bedtime_min);
-       
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data.waketime_hour);
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data.waketime_min);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_GET_UP,data.waketime_hour<<16|data.waketime_min);
-
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"睡前提醒 %d\r\n",data.bedtime_alarm);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_REMIND,data.bedtime_alarm);
-
-        //更新睡眠配置
-        #ifdef FD230
-            OHOS::SleepModel::GetInstance().set_sleep_goal();
-        #endif
-
-    }  
-    return;
+   return bleInstruct_t.ble_set_sleep_remind(data);
 }
 
 
 void ble_get_sleep_remind(msg_get_sleep_param_info_t *data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    data->schedule = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data->schedule);
-
-    uint32_t bedtime= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_BEDTIME);
-    data->bedtime_hour=bedtime>>16;
-    data->bedtime_min=bedtime&0x00ff;
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data->bedtime_hour);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data->bedtime_min);
-    
-    uint32_t wakettime= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_GET_UP);
-    data->waketime_hour=wakettime>>16;
-    data->waketime_min=wakettime&0x00ff;
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data->waketime_hour);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data->waketime_min);
-       
-    data->bedtime_alarm= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_REMIND);
-
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"睡前提醒 %d\r\n",data->bedtime_alarm);
-       
-    return;
+  return bleInstruct_t.ble_get_sleep_remind(data);
 }
 
 
@@ -3360,37 +704,14 @@ void ble_get_sleep_remind(msg_get_sleep_param_info_t *data)
 
 void ble_set_drink_remind(msg_drink_info_t data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data.drink_on);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK,data.drink_on);
-    if(data.drink_on)
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标:%d\r\n",data.goal);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_GOAL,data.goal);
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data.time_start);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_START,data.time_start);
-        if(data.drink_on==2)
-        {
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data.time_end);
-            p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_END,data.time_end);
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"频率:%d\r\n",data.freq);
-            p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_FREQ,data.freq);
-        }
-    }
-    set_drinkreminder_data();/*更新喝水提醒时间*/
-    return;
+    
+   return bleInstruct_t.ble_set_drink_remind(data);
 }
 
 void ble_get_drink_remind(msg_drink_info_t *data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    data->drink_on = p_ConfigModel-> get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK);
-    if(data->drink_on)
-    data->drink_on=1;
-
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data->drink_on);
     
-    return;
+    return bleInstruct_t.ble_get_drink_remind(data);
 }
 
 // 闹钟数据:
@@ -3408,28 +729,30 @@ static const char *alarmName[6] = {"clock1", "clock2", "clock3", "clock4", "cloc
 
 void ble_delet_all_AlarmInfo(void)
 {
-   
+    return bleInstruct_t.ble_delet_all_AlarmInfo();
 }
 
 void ble_SetAlarmInfo(uint32_t time_hour, uint32_t time_min, uint8_t week,uint8_t id,uint8_t enable)
 {
-  
+  // OHOS::uapi_connect_pbap_pce();
+     return bleInstruct_t.ble_SetAlarmInfo(time_hour,time_min,week,id,enable);
+
 }
 
 void ble_AlarmClock_refresh(void)
 {
+    // SendMsgToUIService(UI_UPDATE_ALARM_INFO, 0, nullptr, 0);
 }
 
 
 char * struct_to_json_buf_malloc_Alarm(void)
 {
-
-    return NULL;
+    return bleInstruct_t.struct_to_json_buf_malloc_Alarm();
 }
 
 char *  struct_to_json_buf_malloc_(uint8_t day)
 {
-    return NULL;
+   return bleInstruct_t.struct_to_json_buf_malloc_(day);
 }
 
 #define TAR_PATH EXC_TAR_PATH
@@ -3437,11 +760,11 @@ char *  struct_to_json_buf_malloc_(uint8_t day)
 
 static uint8_t Calculate_CRC_file(char *path)//
 {
-    uint8_t crcbuf  = 0;
+uint8_t crcbuf  = 0;
     uint8_t lrcValue = 0x00;
        lrcValue = calculate_lrc_file(path);
-
-    crcbuf = get_crc_from_lrc(lrcValue);
+   
+crcbuf = get_crc_from_lrc(lrcValue);
     return crcbuf;
 }
 
@@ -3524,7 +847,7 @@ char * tar_dir_to_json_buf_malloc_(char* file_name,uint32_t *file_size)
                 {
                    
                     //*file_size=ent->d_reclen;
-                    char file_path[256]={0};
+                    char file_path[300]={0};
                     sprintf_s(file_path,256,"%s/%s",TAR_PATH,ent->d_name);
                     
                     FILE * fp = fopen(file_path,"rb+");
@@ -3558,7 +881,7 @@ char * tar_dir_to_json_buf_malloc_(char* file_name,uint32_t *file_size)
                     char *json_format = cJSON_PrintUnformatted(itemJSON);
                  
                     int pSize = cJSON_GetArraySize(dataJSON);
-                      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"文件数据:%s\r\n",json_format);
+                      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"文件数据:%s\r\n",json_format);
                     cJSON_Delete(dataJSON);
                     file_index++;
 
@@ -3579,405 +902,251 @@ char * tar_dir_to_json_buf_malloc_(char* file_name,uint32_t *file_size)
     }
     else
     {
-           WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"opendir fail\r\n");
+
+           WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"opendir fail\r\n");
     }
+    cJSON_Delete(dataJSON);
+    cJSON_Delete(data_arryJSON);
+     
     return NULL;
 }
 
 
 
-void add_addressbookToRead(char *data) 
-{
-    if(data == NULL) 
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error: data is NULL\n");
-        return;
-    }
-    
-    char *name = NULL;
-    char *phone = NULL;
-    name = strtok(data, ",");
-    
-    if(name == NULL) 
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error: Unable to get name\n");
-        return;
-    }
-
-    phone = strtok(NULL, ",");
 
-    if(phone == NULL) 
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Error: Unable to get phone number\n");
-        return;
-    }
 
-    PRINT("phone : %s \r\n", phone);
 
-    return;
+void add_addressbookToRead(char *data) 
+{
+   
+    return bleInstruct_t.add_addressbookToRead(data);
 }
 
 static uint32_t languaage_id=0;
 void set_languaage(uint32_t id)
 {//OHOS:: language language;
-
+    languaage_id=id;
+    // SendMsgToUIService(UI_UPDATE_LANGUAGE, 0, &languaage_id, sizeof(uint32_t));
 }
 
 char *addressbook(void)//获取通讯录保存文件地址路径
 {
-    #ifdef FD230
     return ADDRESS_BOOK_PATH;
-    #endif
-    return NULL;
 }
 
 void addressbookToRead(char *buf)//转化用于·c文件
 {
-
+   return bleInstruct_t.addressbookToRead(buf);
 }
 
 void addressbookTowrite(void)//转化用于·c文件
 {
+    return bleInstruct_t.addressbookTowrite();
 }
 
 uint8_t ble_falg=0;
 
 void set_user_data(msg_user_info_t *data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"高:%d\r\n",data->height);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_HEIGHT,data->height);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"重:%d\r\n",data->weight);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_WEIGHT,data->weight);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"性别:%d\r\n",data->gender);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_SEX,data->gender);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"年纪:%d\r\n",data->age);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data->age);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标步数:%d\r\n",data->target_step);
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,data->target_step);
+     return bleInstruct_t.set_user_data(data);
     
-    //目标站立
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标站立 %d\r\n",data->target_stand);
-    if(data->target_stand)
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES,data->target_stand);
-    //目标燃脂
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标燃脂 %d\r\n",data->fat_time);
-    if(data->fat_time)
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION,data->fat_time);
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标卡路里 %d\r\n",data->fat_time);
-    if(data->calorie)
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES,data->calorie);
-
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标距离 %d\r\n",data->fat_time);
-    if(data->distance)
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE,data->distance);
-
-    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SET_USER_INFO, NULL);
-
 }
 
 int get_goal_stepcount(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT);
+     return bleInstruct_t.get_goal_stepcount();
 }
 int get_goal_caloriescount(void)//获取运动目标卡路里
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES);
+    return bleInstruct_t.get_goal_caloriescount();
 }
 int get_goal_discount(void)//获取运动目标卡路里
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE);
+    return bleInstruct_t.get_goal_discount();
 }
 int get_vibrationremiander(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->GetVibrationReminder();
+    return bleInstruct_t.get_vibrationremiander();
 }
 
 int get_SilentMode(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->GetSilentMode();
+    return bleInstruct_t.get_SilentMode();
 }
 void set_quick_auxiliary_paramters(uint8_t id)//设置快捷辅助功能参数id
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS,id);
+   return bleInstruct_t.set_quick_auxiliary_paramters(id);
 } 
 int get_quick_auxiliary_paramters(void)//获取快捷辅助功能参数id
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS);
+    return bleInstruct_t.get_quick_auxiliary_paramters();
 } 
 void set_goal_stepcount(uint32_t step)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,step);
-    return ;
+   return bleInstruct_t.set_goal_stepcount(step);
 }
 void set_goal_caloriescount(uint32_t kcal)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES,kcal);
-
-   
-    return ;
+    return bleInstruct_t.set_goal_caloriescount(kcal);
 }
 void set_notify_switch(bool on)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_NOTIFY,on);
-    return ;
+    return bleInstruct_t.set_notify_switch(on);
 }
 bool get_notify_switch(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_NOTIFY);
+   return bleInstruct_t.get_notify_switch();
 }
 
 uint8_t get_other_goal_notify_switch(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_OTHER);
+   return bleInstruct_t.get_other_goal_notify_switch();
 }
 
 
 uint8_t get_step_goal_notify_switch(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEP);
+     return bleInstruct_t.get_step_goal_notify_switch();
 }
 
 
 
 void set_goal_discount(uint32_t dis)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE,dis);
-    return ;
+   return bleInstruct_t.set_goal_discount(dis);
 }
 void set_goal_durationcount(uint32_t time)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION,time);
-    return ;
+   return bleInstruct_t.set_goal_durationcount(time);
 }
 int get_goal_durationcount(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION);
+   return bleInstruct_t.get_goal_durationcount();
 }
 void set_goal_standupcount(uint32_t time)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES,time);
-    return ;
+    return bleInstruct_t.set_goal_standupcount(time);
 }
 int get_goal_standupcount(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES);
+   return bleInstruct_t.get_goal_standupcount();
 }
 
 void set_vibrationremiander(uint8_t falg)//设置震动模式
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->SetVibrationReminder(falg);
-    // uapi_vibrationModeSet(falg);
-    ui_api_vibrate_once_func();
-
-    return ;
+    return bleInstruct_t.set_vibrationremiander(falg);
 }
 
 void set_SilentMode(uint8_t falg)//设置静音模式
 {
-    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->SetSilentMode(falg);
-
-    return;
+   return bleInstruct_t.set_SilentMode(falg);
 }
 /*设置自动获取实时数据开关*/
 void set_traning_updata_auto(uint8_t traingauto)
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO,traingauto);
-    return;
+   return bleInstruct_t.set_traning_updata_auto(traingauto);
 }
 
 void set_goal_other_notification(uint8_t data)
 {
+    return bleInstruct_t.set_goal_other_notification(data);
 }
 
 void set_goal_step_notification(uint8_t data)
 {
-
+    return bleInstruct_t.set_goal_step_notification(data);
 }
 
+
+
+
+
 /*设置获取实时数据频率*/
 void set_traning_updata_freq(uint8_t freq)
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ,freq);
-    return;
+   return bleInstruct_t.set_traning_updata_freq(freq);
 }
 
 /*设置最大心率提醒*/
 void set_traning_heart_max(uint8_t data)
 {
-    OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX,data);
-    return;
+    return bleInstruct_t.set_traning_heart_max(data);
 }
 void set_brigthness(uint8_t data) //设置屏幕亮度
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    const uint8_t minbrightness =51;
-    const uint8_t maxbrightness =0xff;
-    if(data<=minbrightness)
-        data = minbrightness;
-    else if(data >= maxbrightness)
-        data = maxbrightness;
-    p_ConfigModel->SetBrightness(data);
-    uapi_setScreenBrightness(data);
-    return;
+   return bleInstruct_t.set_brigthness(data);
 }
 void Set_DmpChangeMode(int state)
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->SetDmpChangeMode(state);
+    return bleInstruct_t.Set_DmpChangeMode(state);
 }
 
 void Set_heart_cmd(msg_get_heart_set_param_info_t *data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED,data->frequence);
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_REMIND,data->remind_on);
-    if(data->remind_on)
-    {
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"set_condigData_Int data->max_min %d\r\n",data->max_min);
-
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN,data->max_min);
-        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE,data->heart);
-    }
+   return bleInstruct_t.Set_heart_cmd(data);
    
 }
 
 
 void Get_heart_cmd(msg_get_heart_set_param_info_t *data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    data->frequence = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED);
-    data->remind_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_REMIND);
-    data->max_min= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN);
-      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Get_heart_cmd data->max_min %d\r\n",data->max_min);
-    data->heart = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE);
+   return bleInstruct_t.Get_heart_cmd(data);
   
 }
 
 void Set_oxygen_cmd(msg_get_spo2_set_param_info_t *data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_DETECTED,data->frequence);
-    
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_REMIND,data->remind_on);
-   
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_THRESHOLD_VALUE,data->spo2);
- 
-
+    return bleInstruct_t.Set_oxygen_cmd(data);
 }
 
 void Get_oxygen_cmd(msg_get_spo2_set_param_info_t *data)
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    data->frequence = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_DETECTED);
-    data->remind_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_REMIND);
-    data->spo2= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_THRESHOLD_VALUE);
+    return bleInstruct_t.Get_oxygen_cmd(data);
 }
 
 int Get_DmpChangeMode(void)
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->GetDmpChangeMode();
+    return bleInstruct_t.Get_DmpChangeMode();
 }
 int get_brigthness(void) //获取屏幕亮度
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    return p_ConfigModel->GetBrightness();
+   return bleInstruct_t.get_brigthness();
 }
 void set_ScreenDuration(int data) //设置亮屏时长
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    p_ConfigModel->SetScreenDuration(data);
-    uapi_setScreenDuration(data);
-    return;
+    return bleInstruct_t.set_ScreenDuration(data);
 }
 
 int get_ScreenDuration(void) //获取亮屏时长
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    
-    return p_ConfigModel->GetScreenDuration();
+     return bleInstruct_t.get_ScreenDuration();
 }
 void Set_RaiseToWake(bool value) //抬婉亮屏开关 
 {
-    if(uapi_sleep_mode_flag_get())
-    {
-        return;
-    }
-
-    mmi_flip_wrist_switch_set(value);
-    if(true == value)
-    {
-        uapi_take_to_wake(1);
-    }
-    else
-    {
-        uapi_take_to_wake(0);
-    }
-
-    return;
+     return bleInstruct_t.Set_RaiseToWake(value);
 }
 
 int Get_RaiseToWake(void) //获取抬婉亮屏开关 
 {
-    return mmi_flip_wrist_switch_get();
+   return bleInstruct_t.Get_RaiseToWake();
 }
 void Set_SystemVolume(int value) //设置系统音量
 {
-    uapi_systemVolumeSet(value);
-    return;
+    return bleInstruct_t.Set_SystemVolume(value);
 }
 
 int Get_SystemVolume(void) //获取系统音量
 {
-    return uapi_systemVolumeGet();
+   return bleInstruct_t.Get_SystemVolume();
 }
 void Set_CallVolume(int value) //设置通话音量
 {
-    uapi_callVolumeSet(value);
-    return;
+    return bleInstruct_t.Set_CallVolume(value);
 }
 
 int Get_CallVolume(void) //获取通话音量
 {
-    return uapi_callVolumeGet();
+    return bleInstruct_t.Get_CallVolume();
 }
 
 uint8_t ble_is_ready(void)
@@ -3985,11 +1154,6 @@ uint8_t ble_is_ready(void)
     return ble_falg;
 }
 
-uint8_t ble_is_connect_ready(void)
-{
-    return Bleconnect;
-}
-
 void set_ble_falg(bool falg)
 {
     ble_falg=falg;
@@ -3997,62 +1161,72 @@ void set_ble_falg(bool falg)
 
 void get_health_HEART_data_path(char *path, uint8_t day,uint16_t max_size)
 {
-
+ 
+   return bleInstruct_t.get_health_HEART_data_path(path,day,max_size);
 }
 
 
 void get_health_OXYGEN_data_path(char *path, uint8_t day,uint16_t max_size)
 {
 
+    return bleInstruct_t.get_health_OXYGEN_data_path(path,day,max_size);
 }
 
 void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight)
 {
-  
+    //UpdateWeatherViewData();
+     return bleInstruct_t.set_weather_now_data(humidity,windScale,textNight,uvIndex,temp,iconNight);
 }
 
 void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon)
 {
-
+    return bleInstruct_t.set_weather_address_data(lat,atm,city,subLocality,lon);
 }
+// struct ONE_DAY_DATA
+// {
+//     int tempMin;
+//     int iconDay;
+//     int fxDate;
+//     char textDay[16];
+//     int tempMax;
+// };
 
-void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int x) 
+void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int count) 
 {
-
+     return bleInstruct_t.set_weather_one_data(tempMin,iconDay,fxDate,tempMax,textDay,count);
 }
 
+
 void  ble_UpdateMainWeatherData(void)
 {
-
+    // SendMsgToUIService(UI_UPDATE_WEATHER_DATA,0,nullptr,0);
 }
 
-
 void ble_add_message_index(uint32_t old_index)
 {
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    old_index++;
-    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_MESSAGE_INDEX,old_index);
+     return bleInstruct_t.ble_add_message_index(old_index);
 }
 
-uint32_t ble_get_message_index()
-{
-    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
-    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_MESSAGE_INDEX);
-}
 void SendDtfmStrNumberToCat1(char ch) // ble发送单个字符到CAT1 DTMF功能
 {
-    send_dtfm_number_toCat1(ch);
+    #ifdef SUPPORT_CAT1_SERVICE
+    // send_dtfm_number_toCat1(ch);
+    #endif
 }
 
 void ble_mp3_list_update(void)
 {
+    // SendMsgToUIService(UI_UPDATE_MUSIC_PLAYER_LIST,0,nullptr,0);
 } 
 
 bool IS_free_save_Mp3(uint32_t size)
 {
-    return true;
+     return bleInstruct_t.IS_free_save_Mp3(size);
 }
 
+
+
+
 #endif
 #ifdef __cplusplus
 #if __cplusplus
index 53b85df..a5c0fd2 100644 (file)
@@ -103,6 +103,12 @@ typedef struct
 }msg_drink_info_t;
 
 
+typedef enum {
+    CYWEE_SAVE_DATA_STEP,
+    CYWEE_SAVE_DATA_DISTANCE,
+    CYWEE_SAVE_DATA_CALORIES,
+    CYWEE_SAVE_DATA_FAT,
+} CYWEE_SAVE_DATA_TYPE;
 
 
 void read_message_data(void);//读内存信息数据开机读一次
@@ -312,9 +318,9 @@ typedef struct Tag_ID3V2_TAG
 
 void ble_mp3_list_update(void);
 
-char * dir_to_json_buf_malloc_(uint8_t type);
+char * dir_to_json_buf_malloc(uint8_t type);
 
-char * dir_to_json_buf_malloc_(uint8_t type);
+// char * dir_to_json_buf_malloc_(uint8_t type);
 
 void get_music_path(char *buf,uint8_t max_len);
 
@@ -406,6 +412,228 @@ errcode_t get_dial_file_path(char* input_dialname ,uint32_t input_size, char* ou
 
 uint16_t get_str_nodisplay_number(char *str, uint32_t max_len);
 
+
+typedef struct bleInstruct
+{
+    uint16_t (*get_str_nodisplay_number_cb)(char *str, uint32_t max_len);
+    uint8_t (*get_dial_num_cb)(void);
+    void (*set_ota_upgrade_cb)(void);
+    bool (*get_training_spead_path_cb)(char *path ,uint32_t time,uint32_t max_len);
+    bool (*get_training_heart_path_cb)(char *path ,uint32_t time,uint32_t max_len);
+
+    void (*ble_sos_data_save_cb)(void);
+
+    void (*ble_SOS_data_init_cb)(void);
+    void (*ota_updata_init_cb)(void);
+
+    uint8_t * (*ble_get_sos_all_data_malloc_cb)(uint32_t *len);
+
+    void (*ble_sos_number_clean_cb)(void);
+
+    bool (*ble_add_sos_number_cb)(uint8_t sex,char *name,char *number);
+
+    void (*ble_Alipayunbind_cb)(void);
+
+    void (*get_music_path_cb)(char *buf,uint8_t max_len);
+    bool (*is_first_pair_cb)(void);
+    bool (*Ble_Set_ScheduleInfo_cb)(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_end,char *title,char *data,bool is_end);
+
+    void (*ble_set_ai_Question_str)(char *buf);
+    void (*ble_set_ai_Answer_str)(char *buf,uint8_t type);
+
+    char* (*ble_get_ai_audio_path_str)(void);
+
+    void (*ble_set_pair)(uint8_t falg);
+
+    uint8_t (*get_ble_pair)(void);
+
+    uint8_t (*get_br_is_pair)(void);
+
+    void (*set_br_pair)(uint8_t data);
+
+    bool (*get_lcd_state)(void);
+
+    uint8_t (*ble_get_heart_data)();
+    uint8_t (*ble_get_oxygen_data)();
+
+
+    cJSON* (*ble_get_recs_data)();
+
+    cJSON* (*ble_get_Trainingdata_by_timetamp)(uint32_t timetamp);
+
+    bool (*delete_MP3_file_By_ID)(uint16_t id);
+
+    char * (*dir_to_json_buf_malloc)(uint8_t type);
+
+    uint8_t (*ble_AT_add_nap_data)(uint16_t time);
+
+    uint8_t (*ble_get_sleep_data)(uint32_t file_size,uint8_t day_,uint8_t *data);
+
+
+    uint8_t (*ble_get_sleep_data_dir)(uint32_t *file_size,uint8_t day_);
+    void (*ble_set_password)(uint8_t falg, char * data);
+    uint8_t (*ble_get_password)(void);
+
+    void (*set_sedent_param)(msg_sedent_set_param_info_t * data);
+
+
+    void (*get_sedent_param)(  msg_sedent_set_param_info_t * data);
+
+    bool (*check_dial_freespace)(uint16_t id,uint32_t dial_size) ;
+    void (*ble_get_dial_path)(char * buf,uint16_t id);
+
+    void (*ble_save_dial_custom)(msg_recv_custom_dial_info_t *data);
+
+    // void (*ble_set_dial_by_id_)(uint16_t id);
+
+    void (*ble_set_dial_by_id)(uint16_t id);
+
+    void (*ble_get_custom_dial)(uint16_t id,char *buf);
+    uint16_t (*ble_get_dial_id)(void);
+
+    bool (*ble_is_dial_install_by_id)(uint16_t id);
+
+    int (*ble_get_dial_num)(void);
+    // void (*ble_delete_dial_)(uint16_t id);
+
+    bool (*ble_delete_dial)(uint16_t id);
+
+    int (*get_all_dial_id)( char * buf,uint16_t MAX_LEN);
+    bool (*dial_file_save)(void );
+    // void (*install_Register_dial_)( char * name,uint16_t id);
+    void (*install_Register_dial)( char * name,uint16_t id);
+
+    void (*delete_before_file)(uint8_t type);
+
+    char * (*ble_sywee_history)(uint8_t day,uint16_t *len ,uint8_t type);
+
+    void (*ble_set_sleep_remind)(msg_get_sleep_param_info_t data);
+
+    void (*ble_get_sleep_remind)(msg_get_sleep_param_info_t *data);
+
+    void (*ble_set_drink_remind)(msg_drink_info_t data);
+
+    void (*ble_get_drink_remind)(msg_drink_info_t *data);
+    void (*ble_delet_all_AlarmInfo)(void);
+    void (*ble_SetAlarmInfo)(uint32_t time_hour, uint32_t time_min, uint8_t week,uint8_t id,uint8_t enable);
+    void (*ble_AlarmClock_refresh)(void);
+
+    char * (*struct_to_json_buf_malloc_Alarm)(void);
+
+    char *  (*struct_to_json_buf_malloc_)(uint8_t day);
+
+    void (*get_tar_dir_file_count)(void);
+    void (*add_addressbookToRead)(char *data);
+
+
+    void (*addressbookToRead)(char *buf);
+
+    void (*addressbookTowrite)(void);
+
+    void (*set_user_data)(msg_user_info_t *data);
+
+    int (*get_goal_stepcount)(void);
+
+    int (*get_goal_caloriescount)(void);
+
+    int (*get_goal_discount)(void);
+    int (*get_vibrationremiander)(void);
+
+    int (*get_SilentMode)(void);
+    void (*set_quick_auxiliary_paramters)(uint8_t id);
+    int (*get_quick_auxiliary_paramters)(void);
+    void (*set_goal_stepcount)(uint32_t step);
+    void (*set_goal_caloriescount)(uint32_t kcal);
+    void (*set_notify_switch)(bool on);
+    bool (*get_notify_switch)(void);
+    uint8_t (*get_other_goal_notify_switch)(void);
+    uint8_t (*get_step_goal_notify_switch)(void);
+
+
+    void (*set_goal_discount)(uint32_t dis);
+    void (*set_goal_durationcount)(uint32_t time);
+    int (*get_goal_durationcount)(void);
+    void (*set_goal_standupcount)(uint32_t time);
+    int (*get_goal_standupcount)(void);
+
+    void (*set_vibrationremiander)(uint8_t falg);
+
+    void (*set_SilentMode)(uint8_t falg);
+    /*设置自动获取实时数据开关*/
+    void (*set_traning_updata_auto)(uint8_t traingauto);
+
+    void (*set_goal_other_notification)(uint8_t data);
+
+    void (*set_goal_step_notification)(uint8_t data);
+
+
+
+
+    /*设置获取实时数据频率*/
+    void (*set_traning_updata_freq)(uint8_t freq);
+    /*设置最大心率提醒*/
+    void (*set_traning_heart_max)(uint8_t data);
+    void (*set_brigthness)(uint8_t data);
+    void (*Set_DmpChangeMode)(int state);
+    void (*Set_heart_cmd)(msg_get_heart_set_param_info_t *data);
+
+    void (*Get_heart_cmd)(msg_get_heart_set_param_info_t *data);
+
+    void (*Set_oxygen_cmd)(msg_get_spo2_set_param_info_t *data);
+
+    void (*Get_oxygen_cmd)(msg_get_spo2_set_param_info_t *data);
+
+    int (*Get_DmpChangeMode)(void);
+    int (*get_brigthness)(void);
+    void (*set_ScreenDuration)(int data) ;
+
+    int (*get_ScreenDuration)(void) ;
+    void (*Set_RaiseToWake)(bool value);
+
+    int (*Get_RaiseToWake)(void) ;
+    void (*Set_SystemVolume)(int value) ;
+
+    int (*Get_SystemVolume)(void);
+    void (*Set_CallVolume)(int value);
+
+    int (*Get_CallVolume)(void);
+    uint8_t (*ble_is_ready)(void);
+
+    void (*set_ble_falg)(bool falg);
+    void (*get_health_HEART_data_path)(char *path, uint8_t day,uint16_t max_size);
+
+
+    void (*get_health_OXYGEN_data_path)(char *path, uint8_t day,uint16_t max_size);
+
+    void (*set_weather_now_data)(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
+    void (*set_weather_address_data)(int lat, char* atm, char* city,char* subLocality,int lon);
+
+    void (*set_weather_one_data)(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int count) ;
+
+
+    void  (*ble_UpdateMainWeatherData)(void);
+    void (*ble_add_message_index)(uint32_t old_index);
+
+    uint32_t (*ble_get_message_index)();
+    void (*SendDtfmStrNumberToCat1)(char ch) ;
+
+    void (*ble_mp3_list_update)(void);
+    bool (*IS_free_save_Mp3)(uint32_t size);
+
+    void (*ble_app_reply)(bool data);
+
+    void (*ble_connect_ok)(void);
+
+    void (*ble_disconnect_ok)(void);
+    void (*hand_watch_first_time_Paired)(void);
+
+
+
+}  bleInstruct_t_;
+
+extern bleInstruct_t_ bleInstruct_t;
+
+
 #ifdef __cplusplus
 #if __cplusplus
 }
diff --git a/code/sdk/zhihui/services/ble_service/blemoder/ble_congfig_adapt.cpp b/code/sdk/zhihui/services/ble_service/blemoder/ble_congfig_adapt.cpp
new file mode 100644 (file)
index 0000000..3bfd43e
--- /dev/null
@@ -0,0 +1,588 @@
+#ifdef SUPPORT_CUSTOM_CONFIG
+
+#include "../../../../../../zhihui/config/include/ConfigModelC.h"
+
+
+
+#include "ConfigModel.h"
+#include "bleEvent.h"
+#include "bleInstruct.h"
+
+#include "ui_service.h"
+#include "custom_utils.h"
+
+void set_ota_upgrade_(void)
+{
+   OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+   p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OTA_UPGRADE,1);
+}
+
+bool is_first_pair_(void)
+{
+    return OHOS::ConfigModel::GetInstance()->GetisFirstTimeStart(); 
+}
+
+
+void ble_set_pair_(uint8_t falg)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID,falg);
+    return;
+}
+
+uint8_t get_ble_pair_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BLE_IOS_OR_ANDROID);
+    
+}
+
+uint8_t get_br_is_pair_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BR_PAIR);
+}
+
+void set_br_pair_(uint8_t data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_BR_PAIR,data);
+    return;
+}
+
+uint8_t ble_get_password_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+
+    std::string str =p_ConfigModel->get_configData_string(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD);
+    uint8_t falg =p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_PASSWORD_SWITCH);
+
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"获取手表密码 %d %s \r\n",falg,str.c_str());
+
+    return falg;
+   
+}
+
+void get_sedent_param_(msg_sedent_set_param_info_t * data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+
+    data->sedent_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_SWITCH);
+
+    data->sedent_time = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_REMINDERTIME);
+
+    data->frequenc = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SEDENTARY_INTERVAL);
+    return;
+}
+
+
+void ble_set_sleep_remind_(msg_get_sleep_param_info_t data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data.schedule);
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP,data.schedule);
+    //if(data.schedule)
+    {
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data.bedtime_hour);
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data.bedtime_min);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_BEDTIME,data.bedtime_hour<<16|data.bedtime_min);
+       
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data.waketime_hour);
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data.waketime_min);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_GET_UP,data.waketime_hour<<16|data.waketime_min);
+
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"睡前提醒 %d\r\n",data.bedtime_alarm);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_REMIND,data.bedtime_alarm);
+    #ifdef SUPPORT_SLEEP_MODEL
+        //更新睡眠配置
+        OHOS::SleepModel::GetInstance().set_sleep_goal();
+        set_sleep_and_wake_time();
+        //OHOS::clean_sleep_file();  //重设睡眠时间段 删除历史文件
+        get_sleep_time_notify();
+    #endif
+    }  
+    return;
+}
+
+
+void ble_get_sleep_remind_(msg_get_sleep_param_info_t *data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    
+    data->schedule = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP);
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data->schedule);
+
+    uint32_t bedtime= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_BEDTIME);
+    data->bedtime_hour=bedtime>>16;
+    data->bedtime_min=bedtime&0x00ff;
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data->bedtime_hour);
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data->bedtime_min);
+    
+    uint32_t wakettime= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_GET_UP);
+    data->waketime_hour=wakettime>>16;
+    data->waketime_min=wakettime&0x00ff;
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data->waketime_hour);
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data->waketime_min);
+       
+    data->bedtime_alarm= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_REMIND);
+
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"睡前提醒 %d\r\n",data->bedtime_alarm);
+       
+    return;
+}
+
+
+void ble_set_drink_remind_(msg_drink_info_t data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data.drink_on);
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK,data.drink_on);
+    if(data.drink_on)
+    {
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标:%d\r\n",data.goal);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_GOAL,data.goal);
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开始时间:%d\r\n",data.time_start);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_START,data.time_start);
+        if(data.drink_on==2)
+        {
+              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"结束时间:%d\r\n",data.time_end);
+            p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_END,data.time_end);
+              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"频率:%d\r\n",data.freq);
+            p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK_FREQ,data.freq);
+        }
+    }
+    // set_drinkreminder_data();/*更新喝水提醒时间*/
+    return;
+}
+
+void ble_get_drink_remind_(msg_drink_info_t *data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    data->drink_on = p_ConfigModel-> get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_DRINK);
+    if(data->drink_on)
+    data->drink_on=1;
+
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"开关:%d\r\n",data->drink_on);
+    
+    return;
+}
+
+void set_user_data_(msg_user_info_t *data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"高:%d\r\n",data->height);
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_HEIGHT,data->height);
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"重:%d\r\n",data->weight);
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_WEIGHT,data->weight);
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"性别:%d\r\n",data->gender);
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_SEX,data->gender);
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"年纪:%d\r\n",data->age);
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_CUSTOM_DATA_AGE,data->age);
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标步数:%d\r\n",data->target_step);
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,data->target_step);
+    
+    //目标站立
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标站立 %d\r\n",data->target_stand);
+    if(data->target_stand)
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES,data->target_stand);
+    //目标燃脂
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标燃脂 %d\r\n",data->fat_time);
+    if(data->fat_time)
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION,data->fat_time);
+
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标卡路里 %d\r\n",data->fat_time);
+    if(data->calorie)
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES,data->calorie);
+
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"目标距离 %d\r\n",data->fat_time);
+    if(data->distance)
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE,data->distance);
+
+#ifdef CYWEE_SPORT
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SET_USER_INFO, NULL);
+#endif
+
+    // app端不修改手表端时间显示
+    // if(data->timeformat==0)
+    // p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_24HOUR,24);
+    // else
+    // p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_24HOUR,12);
+
+
+
+   
+
+    //  SendMsgToUIService(UI_UPDATE_GOAL, 0, nullptr, 0);
+    
+}
+
+int get_goal_stepcount_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT);
+}
+int get_goal_caloriescount_(void)//获取运动目标卡路里
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES);
+}
+int get_goal_discount_(void)//获取运动目标卡路里
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE);
+}
+int get_vibrationremiander_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->GetVibrationReminder();
+}
+
+int get_SilentMode_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->GetSilentMode();
+}
+void set_quick_auxiliary_paramters_(uint8_t id)//设置快捷辅助功能参数id
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS,id);
+} 
+int get_quick_auxiliary_paramters_(void)//获取快捷辅助功能参数id
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS);
+} 
+void set_goal_stepcount_(uint32_t step)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT,step);
+    return ;
+}
+void set_goal_caloriescount_(uint32_t kcal)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES,kcal);
+
+   
+    return ;
+}
+void set_notify_switch_(bool on)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_NOTIFY,on);
+    return ;
+}
+bool get_notify_switch_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_NOTIFY);
+}
+
+uint8_t get_other_goal_notify_switch_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_OTHER);
+}
+
+
+uint8_t get_step_goal_notify_switch_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEP);
+}
+
+
+
+void set_goal_discount_(uint32_t dis)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE,dis);
+    return ;
+}
+void set_goal_durationcount_(uint32_t time)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION,time);
+    return ;
+}
+int get_goal_durationcount_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION);
+}
+void set_goal_standupcount_(uint32_t time)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES,time);
+    return ;
+}
+int get_goal_standupcount_(void)
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES);
+}
+
+void set_vibrationremiander_(uint8_t falg)//设置震动模式
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->SetVibrationReminder(falg);
+    // uapi_vibrationModeSet(falg);
+    #ifdef SUPPORT_VIBRATE
+    ui_api_vibrate_once_func();
+    SendMsgToUIService(UI_UPDATE_VIBRATION_MODE,0,nullptr,0);
+    #endif
+    return ;
+}
+
+void set_SilentMode_(uint8_t falg)//设置静音模式
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->SetSilentMode(falg);
+
+    // SendMsgToUIService(UI_UPDATE_SILENT_MODE,0,nullptr,0);
+
+    return;
+}
+/*设置自动获取实时数据开关*/
+void set_traning_updata_auto_(uint8_t traingauto)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRANING_AUTO,traingauto);
+    return;
+}
+
+void set_goal_other_notification_(uint8_t data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_OTHER,data);
+    if(data==1)
+    {
+        // OHOS::set_Is_show_flag(1,OHOS::GOAL_CALOREIE);
+        // OHOS::set_Is_show_flag(1,OHOS::GOAL_STAND);
+        // OHOS::set_Is_show_flag(1,OHOS::GOAL_FAT);
+        // OHOS::set_Is_show_flag(1,OHOS::GOAL_DISTANCE);
+
+    }
+
+    // SendMsgToUIService(UI_UPDATE_GOAL, 0, nullptr, 0);
+
+    return;
+}
+
+void set_goal_step_notification_(uint8_t data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STEP,data);
+    if(data==1)
+    {
+        // OHOS::set_Is_show_flag(1,OHOS::GOAL_STEP);
+    }
+
+    // SendMsgToUIService(UI_UPDATE_GOAL, 0, nullptr, 0);
+    return;
+}
+
+
+
+
+
+/*设置获取实时数据频率*/
+void set_traning_updata_freq_(uint8_t freq)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRANING_FREQ,freq);
+    return;
+}
+
+/*设置最大心率提醒*/
+void set_traning_heart_max_(uint8_t data)
+{
+    OHOS::ConfigModel *p_ConfigModel = OHOS::ConfigModel::GetInstance();
+    #ifdef SUPPORT_TraingModel
+    OHOS::TraingModel::GetInstance()->SetMaxHeart(data);
+    #endif
+
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX,data);
+    return;
+}
+void set_brigthness_(uint8_t data) //设置屏幕亮度
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    const uint8_t minbrightness =51;
+    const uint8_t maxbrightness =0xff;
+    if(data<=minbrightness)
+        data = minbrightness;
+    else if(data >= maxbrightness)
+        data = maxbrightness;
+    p_ConfigModel->SetBrightness(data);
+
+    uapi_setScreenBrightness(data);
+
+    // SendMsgToUIService(UI_UPDATE_BRIGHTNESS_VALUE,0,nullptr,0);
+
+    return;
+}
+void Set_DmpChangeMode_(int state)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->SetDmpChangeMode(state);
+}
+
+void Set_heart_cmd_(msg_get_heart_set_param_info_t *data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED,data->frequence);
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_REMIND,data->remind_on);
+    if(data->remind_on)
+    {
+          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"set_condigData_Int data->max_min %d\r\n",data->max_min);
+
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN,data->max_min);
+        p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE,data->heart);
+    }
+   
+}
+
+
+void Get_heart_cmd_(msg_get_heart_set_param_info_t *data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    
+    data->frequence = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED);
+    data->remind_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_REMIND);
+    data->max_min= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN);
+      WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"Get_heart_cmd data->max_min %d\r\n",data->max_min);
+    data->heart = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE);
+  
+}
+
+void Set_oxygen_cmd_(msg_get_spo2_set_param_info_t *data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_DETECTED,data->frequence);
+    
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_REMIND,data->remind_on);
+   
+    p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_THRESHOLD_VALUE,data->spo2);
+ 
+
+}
+
+void Get_oxygen_cmd_(msg_get_spo2_set_param_info_t *data)
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    
+    data->frequence = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_DETECTED);
+    data->remind_on = p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_REMIND);
+    data->spo2= p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_OXYGEN_THRESHOLD_VALUE);
+}
+
+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();
+    
+    return p_ConfigModel->GetBrightness();
+}
+void set_ScreenDuration_(int data) //设置亮屏时长
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->SetScreenDuration(data);
+    uapi_setScreenDuration(data);
+    // SendMsgToUIService(UI_UPDATE_SCREEN_DURATION,0,nullptr,0);
+
+    return;
+}
+
+int get_ScreenDuration_(void) //获取亮屏时长
+{
+    OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+    
+    return p_ConfigModel->GetScreenDuration();
+}
+
+// void ble_add_message_index(uint32_t old_index)
+// {
+//     OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+//     old_index++;
+//     p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_MESSAGE_INDEX,old_index);
+// }
+
+// uint32_t ble_get_message_index()
+// {
+//     OHOS::ConfigModel *p_ConfigModel  =  OHOS::ConfigModel::GetInstance();
+//     return p_ConfigModel->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_MESSAGE_INDEX);
+// }
+
+extern bleInstruct_t_ bleInstruct_t;
+
+void ble_config_init()
+{
+    bleInstruct_t.set_ota_upgrade_cb=set_ota_upgrade_;
+    bleInstruct_t.is_first_pair_cb=is_first_pair_;
+    bleInstruct_t.ble_set_pair=ble_set_pair_;
+    bleInstruct_t.get_ble_pair=get_ble_pair_;
+    bleInstruct_t.get_br_is_pair=get_br_is_pair_;
+    bleInstruct_t.set_br_pair=set_br_pair_;
+    bleInstruct_t.ble_get_password=ble_get_password_;
+    bleInstruct_t.get_sedent_param=get_sedent_param_;
+    bleInstruct_t.ble_set_sleep_remind= ble_set_sleep_remind_;
+    bleInstruct_t.ble_get_sleep_remind=ble_get_sleep_remind_;
+    bleInstruct_t. ble_set_drink_remind=ble_set_drink_remind_;
+    bleInstruct_t. ble_get_drink_remind=ble_get_drink_remind_;
+    bleInstruct_t. set_user_data=set_user_data_;
+    bleInstruct_t. get_goal_stepcount=get_goal_stepcount_;
+    bleInstruct_t. get_goal_caloriescount=get_goal_caloriescount_;
+    bleInstruct_t. get_goal_discount=get_goal_discount_;
+    bleInstruct_t.get_vibrationremiander= get_vibrationremiander_;
+    bleInstruct_t.get_SilentMode= get_SilentMode_;
+    bleInstruct_t. set_quick_auxiliary_paramters=set_quick_auxiliary_paramters_;
+    bleInstruct_t. get_quick_auxiliary_paramters=get_quick_auxiliary_paramters_;
+    bleInstruct_t. set_goal_stepcount=set_goal_stepcount_;
+    bleInstruct_t.set_goal_caloriescount= set_goal_caloriescount_;
+    bleInstruct_t.set_notify_switch= set_notify_switch_;
+    bleInstruct_t.get_notify_switch= get_notify_switch_;
+    bleInstruct_t.get_other_goal_notify_switch= get_other_goal_notify_switch_;
+    bleInstruct_t. get_step_goal_notify_switch=get_step_goal_notify_switch_;
+    bleInstruct_t. set_goal_discount=set_goal_discount_;
+    bleInstruct_t.set_goal_durationcount= set_goal_durationcount_;
+    bleInstruct_t. get_goal_durationcount=get_goal_durationcount_;
+    bleInstruct_t.set_goal_standupcount= set_goal_standupcount_;
+    bleInstruct_t.get_goal_standupcount= get_goal_standupcount_;
+    bleInstruct_t.set_vibrationremiander= set_vibrationremiander_;
+    bleInstruct_t.set_SilentMode= set_SilentMode_;
+    bleInstruct_t.set_traning_updata_auto= set_traning_updata_auto_;
+    bleInstruct_t.set_goal_other_notification= set_goal_other_notification_;
+    bleInstruct_t.set_goal_step_notification= set_goal_step_notification_;
+    bleInstruct_t.set_traning_updata_freq= set_traning_updata_freq_;
+    bleInstruct_t.set_traning_heart_max= set_traning_heart_max_;
+    bleInstruct_t.set_brigthness= set_brigthness_;
+    bleInstruct_t. Set_DmpChangeMode=Set_DmpChangeMode_;
+    bleInstruct_t. Set_heart_cmd=Set_heart_cmd_;
+    bleInstruct_t.Get_heart_cmd= Get_heart_cmd_;
+    bleInstruct_t.Set_oxygen_cmd= Set_oxygen_cmd_;
+    bleInstruct_t.Get_oxygen_cmd= Get_oxygen_cmd_;
+    bleInstruct_t.Get_DmpChangeMode= Get_DmpChangeMode_;
+    bleInstruct_t.get_brigthness= get_brigthness_;
+    bleInstruct_t.set_ScreenDuration= set_ScreenDuration_;
+    bleInstruct_t. get_ScreenDuration=get_ScreenDuration_;
+}
+#endif
\ No newline at end of file
index 29e6890..675f7d8 100644 (file)
@@ -28,6 +28,7 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui
     ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativelauncher/include
     ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui/screennotify/include
+    ${ROOT_DIR}/application/wearable/fd230/service/broadcast/include
 )
 else()
 set(PRIVATE_HEADER
@@ -37,7 +38,7 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/application/wearable/nativeapp/nativeui
     ${ROOT_DIR}/application/wearable/nativeapp/nativelauncher/include
     ${ROOT_DIR}/application/wearable/nativeapp/nativeui/screennotify/include
-)
+    )
 endif()
 if("FD230" IN_LIST DEFINES)
 set(SOURCES
@@ -60,6 +61,20 @@ set(COMPONENT_PUBLIC_CCFLAGS
 )
 
 set(COMPONENT_CCFLAGS
+# -std=c++11
+-Wno-error
+-Wno-unused-parameter
+-fno-exceptions
+-fno-unwind-tables
+-fno-asynchronous-unwind-tables
+-Wno-undef
+-Wno-bitwise-op-parentheses
+-Wno-shift-op-parentheses
+-nostdlibinc
+-nostdinc
+-nostdlib
+-Wno-c++11-narrowing
+-Wno-error=unused-function
 )
 
 set(WHOLE_LINK
index add967e..eda776e 100644 (file)
 #include "battery_hal.h"
 #include "bleService.h"
 #include "alipay_feature.h"
-#include "alipay_bluetooth.h"
+// #include "alipay_bluetooth.h"
 #include "bts_a2dp_sink.h"
 #include "osal_timer.h"
 #include "bleEvent.h"
-#include "hidService.h"
-#include "factorytestService.h"
-#include "ppgBleService.h"
+// #include "hidService.h"
+// #include "factorytestService.h"
+// #include "ppgBleService.h"
 #include "build_version.h"
 #include "custom_runtime.h"
 #include "custom_utils.h"
@@ -69,7 +69,7 @@ typedef enum {
 
 static uint8_t g_client_id=0;
 /* 命令处理函数接口 */
-#define filtration_data_count 20
+
 filtration_data filtration_data_T[filtration_data_count]={0};
 //*com.tencent.qqmail
 // com.apple.mobilephone
@@ -91,19 +91,39 @@ filtration_data filtration_data_T[filtration_data_count]={0};
 // ph.telegra.Telegraph
 // com.others
 //消息过滤文件保存,在此列的消息未打开,不发消息给手表,不在此列默认开
-void filtration_on_get(char *buf,uint8_t len)
+
+static uint8_t filtration_count=0;
+
+void filtration_on_get(uint8_t *buf,uint8_t *len)
 {
-    for (size_t i = 0; i < len; i++)
+    uint8_t filtration_on_get_len=0;
+    for (size_t i = 0; i < filtration_data_count; i++)
+    {
+        if(strlen( filtration_data_T[i].name)!=0)
+        {
+            filtration_on_get_len+=1;
+        }
+    }
+    if(filtration_on_get_len==0)
+    {
+        filtration_on_get_len=18;
+    }
+
+    for (size_t i = 0; i < filtration_on_get_len; i++)
     {
       if(strlen( filtration_data_T[i].name)!=0 && filtration_data_T[i].on==0)
       {
         buf[i]=0;
+        printf("name:%s on:%d\r\n",filtration_data_T[i].name,0);
       }
       else
       {
         buf[i]=1;
+        printf("name:%s on:%d\r\n",filtration_data_T[i].name,1);
       }
     }
+    *len=filtration_on_get_len;
+
 }
 void filtration_file_save(void)
 {
@@ -130,26 +150,35 @@ void filtration_file_read(void)
 }
 
 
-void filtration_file_updata(filtration_data *data)
+void filtration_file_updata(filtration_data *data,uint8_t count)
 {
-    for (size_t i = 0; i < filtration_data_count; i++)
-    {
-        if(strlen( filtration_data_T[i].name)==0)
-        {
-            filtration_data_T[i].on=data->on;
-            filtration_data_T[i].len=data->len;
-            memset(filtration_data_T[i].name,0,filtration_data_max_len);
-            memcpy_s(filtration_data_T[i].name,filtration_data_max_len, data->name,strlen( data->name));
-            break;
-           // printf("name:%s on:%d\r\n",data->name,data->on);
-        }
-        else if (strcmp(data->name,filtration_data_T[i].name)==0)
-        {
-            filtration_data_T[i].on=data->on;
-            break;
-            //printf("name:%s on:%d\r\n",data->name,data->on);
-        }
-    }
+    // for (size_t i = 0; i < filtration_data_count; i++)
+    // {
+    //     if(strlen( filtration_data_T[i].name)==0)
+    //     {
+    //         printf("strlen name:%s on:%d\r\n",data->name,data->on);
+    //         filtration_data_T[i].on=data->on;
+    //         filtration_data_T[i].len=data->len;
+    //         memset(filtration_data_T[i].name,0,filtration_data_max_len);
+    //         memcpy_s(filtration_data_T[i].name,filtration_data_max_len, data->name,strlen( data->name));
+    //         break;
+    //        // 
+    //     }
+    //     else if (strcmp(data->name,filtration_data_T[i].name)==0)
+    //     {
+    //         printf("strcmp name:%s on:%d\r\n",data->name,data->on);
+    //         filtration_data_T[i].on=data->on;
+    //         break;
+    //         //
+    //     }
+    // }
+    printf("strlen name:%s on:%d\r\n",data->name,data->on);
+    filtration_data_T[count].on=data->on;
+    filtration_data_T[count].len=data->len;
+    memset(filtration_data_T[count].name,0,filtration_data_max_len);
+    memcpy_s(filtration_data_T[count].name,filtration_data_max_len, data->name,strlen( data->name));
+    filtration_count=count;
+
 }
 
 static uint8_t get_other_filtration()
@@ -325,7 +354,7 @@ static void ble_ancs_client_notification_attr_rsp_cbk(uint8_t client_id, uint16_
         printf("[ANCSClientNotifyATTRSPCBK]conn_id:%d status:0x%x notify_uid:%lu\r\n",  
             conn_id, status, notify_attr_rsp->notification_uid);  
 
-        ble_ancs_attr_rsp_t *node = (ble_ancs_attr_rsp_t *)notify_attr_rsp->attr_rsp_lst.head;  
+        ble_ancs_attr_rsp_t *node = NULL ;//(ble_ancs_attr_rsp_t *)notify_attr_rsp->attr_rsp_lst.head;  
         uint16_t att_num = 0;  
         time_t timestamp = 0;  
 
@@ -389,7 +418,7 @@ static void ble_ancs_client_app_attr_rsp_cbk(uint8_t client_id, uint16_t conn_id
 {
     printf("[ANCSClientAPPATTRSPCBK]conn_id:%d status:0x%x\r\n", conn_id, status);
     if (status == ERRCODE_BT_SUCCESS) {
-        ble_ancs_attr_rsp_t *node = (ble_ancs_attr_rsp_t *)app_attr_rsp->attr_rsp_lst.head;
+        ble_ancs_attr_rsp_t *node = NULL;//(ble_ancs_attr_rsp_t *)app_attr_rsp->attr_rsp_lst.head;
         uint16_t att_num = 1;
         while (node != NULL) {
             if (node != NULL && node->att_id == ANCS_APP_ATT_DISPLAY_NAME) {
index dd0cafa..05f8146 100644 (file)
@@ -42,13 +42,14 @@ typedef struct ancs_data_info
     int msglen;
 }ancs_data_info_t;
 
+#define filtration_data_count 20
 
 void gattc_reg_id(void);
 uint8_t ble_ancs_client_cmd_setup_and_subscribe(uint16_t conn_id);
 uint8_t ble_ancs_client_subscribe_notify(uint16_t conn_id,uint8_t sub_flag);
 uint8_t ble_ancs_client_subscribe_data(uint16_t conn_id,uint8_t sub_flag);
-void filtration_file_updata(filtration_data *data);
-void filtration_on_get(char *buf,uint8_t len);
+void filtration_file_updata(filtration_data *data,uint8_t count);
+void filtration_on_get(uint8_t *buf,uint8_t *len);
 void filtration_file_save(void);
 void filtration_file_read(void);
 uint8_t ble_ancs_client_clear(uint16_t conn_id);
index 47edc72..634c38d 100644 (file)
@@ -25,16 +25,17 @@ extern "C" {
 #include "battery_hal.h"\r
 #include "bleService.h"\r
 #include "alipay_feature.h"\r
-#include "alipay_bluetooth.h"\r
+\r
+// #include "alipay_bluetooth.h"\r
+\r
 #include "bts_a2dp_sink.h"\r
 #include "osal_timer.h"\r
 #include "bleEvent.h"\r
-#include "ppg_service.h"\r
 #include "broadcast_feature.h"\r
 #include <sys/stat.h>\r
 #if 1//#ifdef //SUPPORT_BLE_SERVICE\r
 #include "app_common_api.h"\r
-#include "hidService.h"\r
+// #include "hidService.h"\r
 #include "../../../../../open_source/openharmony/third_party/cJSON/cJSON.h"\r
 #include "errcode.h"\r
 #include "sys/statfs.h"\r
@@ -264,8 +265,34 @@ bool bigDataBufState=false;//大数据传输状态
 /**\r
  * 计算crc时的求和函数,可以递归,从而实现多段数据的组合计算\r
 */\r
+// uint8_t calculate_lrc(uint8_t *data,uint16_t len,uint8_t _lrcValue)\r
+// {\r
+//     uint8_t lrcValue = _lrcValue;\r
+//     if(data == NULL)\r
+//     {\r
+//         return false;   \r
+//     }\r
+//     for(uint16_t i = 0; i < len; i++)\r
+//     {\r
+//             lrcValue =lrcValue+ data[i];\r
+//         //   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%02x ",data[i]);\r
+//     }\r
+//     return lrcValue;\r
+// }\r
 \r
 \r
+/***\r
+ * 根据求和后的数据计算crc 值 \r
+*/\r
+// uint8_t get_crc_from_lrc(uint8_t lrcValue)\r
+// {\r
+//     uint8_t crcbuf  = 0;\r
+//     crcbuf = lrcValue%256;\r
+//     crcbuf = 256-crcbuf;\r
+//     crcbuf = crcbuf%256;\r
+//     return crcbuf;\r
+// }\r
+\r
 uint8_t  calculate_lrc_file(char *file_path)\r
 {\r
     uint8_t lrcValue =0;\r
@@ -330,6 +357,28 @@ static bool Check_CRC(uint8_t *data,uint16_t len,uint8_t crcvalue)//计算20byte
 }\r
 \r
 \r
+// uint8_t Calculate_CRC(uint8_t *data,uint16_t len)//计算20byte\r
+// {\r
+//     uint8_t crcbuf  = 0;\r
+//     uint8_t lrcValue = 0x00;\r
+//     lrcValue = calculate_lrc(data+17,len-17,0x00);\r
+//     crcbuf = get_crc_from_lrc(lrcValue);\r
+//     return crcbuf;\r
+// }\r
+\r
+uint8_t Calculate_CRC_AI(uint8_t *data,uint16_t len)\r
+{\r
+       return Calculate_CRC(data,len);\r
+}\r
+\r
+// uint8_t Calculate_CRC_Big(uint8_t *data,uint16_t len)//计算20byte\r
+// {\r
+//     uint8_t crcbuf  = 0;\r
+//     uint8_t lrcValue = 0x00;\r
+//     lrcValue = calculate_lrc(data,len,0x00);\r
+//     crcbuf = get_crc_from_lrc(lrcValue);\r
+//     return crcbuf;\r
+// }\r
 \r
 static cJSON *cjson_json_tmp = NULL;\r
 //发送ble数据\r
@@ -2225,8 +2274,10 @@ void SetmsgfiltrationCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalD
 \r
        if(Check_CRC(data,len,crcvalue))\r
        {\r
-          WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"总长%d\r\n",len);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"总长%d\r\n",len);\r
+        // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"数据%s\r\n",data);\r
         uint32_t offset=0;\r
+        uint8_t count=0;\r
         while (offset<len)\r
         {\r
             filtration_data data_t={0};\r
@@ -2236,8 +2287,9 @@ void SetmsgfiltrationCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalD
             offset++;\r
             memcpy_s(data_t.name,filtration_data_max_len,&data[offset],data_t.len);\r
             offset+=data_t.len;\r
-              WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"%s\r\n",data_t.name);\r
-            filtration_file_updata(&data_t);\r
+            // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"%s\r\n",data_t.name);\r
+            filtration_file_updata(&data_t,count);\r
+            count++;\r
         } \r
         filtration_file_save();\r
         \r
@@ -5378,14 +5430,14 @@ static void GetmsgconfigCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *tot
     memcpy(value+15,&tmp_data,2);\r
     if(1)\r
     {\r
-        uint8_t data_buf[18]={1};\r
-       \r
+        uint8_t data_buf[filtration_data_count];\r
+        uint8_t  data_buf_len=0;\r
         // memset(data,1,18);\r
-        filtration_on_get((char*)data_buf,18);\r
-        memcpy(&value[17],data_buf,18);//\r
-     \r
-        value[35] = Calculate_CRC(value,35);\r
-        sendBleData(value,36);\r
+        filtration_on_get((uint8_t*)data_buf,&data_buf_len);\r
+        // printf("data_buf_len %d\r\n",data_buf_len);\r
+        memcpy(&value[17],data_buf,data_buf_len);//\r
+        value[17+data_buf_len] = Calculate_CRC(value,17+data_buf_len);\r
+        sendBleData(value,18+data_buf_len);\r
     }else\r
     {\r
         value[17] = 0;\r
@@ -5633,7 +5685,7 @@ static void Send_json_Data_Cmd(uint8_t day,uint16_t pack_size,uint8_t id)
                 json_format=struct_to_json_buf_malloc_Alarm();\r
                 break;\r
             case 0x21:\r
-                json_format=dir_to_json_buf_malloc_(day);\r
+                json_format=dir_to_json_buf_malloc(day);\r
                 break;\r
 \r
             default:\r
@@ -6173,8 +6225,8 @@ void Read_BIN_file_buf_send_bin_Data(uint8_t day,uint32_t pack_size,uint16_t id)
     int check_num=data_len%single_data;\r
     if(check_num!=0)\r
     {\r
-          WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"数据有误 %d \r\n",id);\r
-\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"数据有误 %d \r\n",id);\r
+        free(data);\r
         ble_data_type type_={0x01,id,0,1,1};\r
         send_big_data(type_,NULL,0);\r
 \r
@@ -6959,6 +7011,19 @@ errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t da
                     BR_TRANSFER_timer = NULL;\r
                     return ERRCODE_FAIL;\r
                 }\r
+\r
+                {\r
+                    if(buffer_handle->file_recv_stat.file_type==3)\r
+                    TRANSMIT_DATA=TRANS_DIAL_TRANSMITTING;\r
+                    \r
+                    if(buffer_handle->file_recv_stat.file_type==1)\r
+                    TRANSMIT_DATA=TRANS_OTA_TRANSMITTING;\r
+                \r
+                    if(buffer_handle->file_recv_stat.file_type==2)\r
+                    TRANSMIT_DATA=TRANS_MP3_TRANSMITTING;\r
+                    \r
+                    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                }\r
             }\r
             ///////////////////////////////////////////////////////////\r
         }\r
@@ -6978,10 +7043,9 @@ errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t da
 \r
                 buffer_handle->file_recv_stat.lrcvalue = calculate_lrc(data_,datalen,buffer_handle->file_recv_stat.lrcvalue);\r
                         buffer_handle->file_recv_stat.received_size += datalen;\r
-                  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"handle_recv_file received_size %d\n",buffer_handle->file_recv_stat.received_size);\r
-\r
                 OTA_FILE_value= ((float) buffer_handle->file_recv_stat.received_size / (float)buffer_handle->file_recv_stat.file_size) *100;\r
-\r
+                  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"handle_recv_file received_size %d %0.3lf\n",buffer_handle->file_recv_stat.received_size\r
+                  ,(float) buffer_handle->file_recv_stat.received_size / (float)buffer_handle->file_recv_stat.file_size);\r
 \r
             }else{\r
                   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"handle_recv_file write file failed! ret %d != %d\n",writtensize,datalen);\r
@@ -7031,7 +7095,10 @@ errcode_t decode_ota_data(ble_read_data *buffer_handle,uint8_t *data,uint16_t da
             else if (last_package_id!=package_id)\r
             {\r
                 uint32_t replydata= last_package_id+1;\r
-                ble_reply_msgarr(6,4,&replydata,4);\r
+                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"包错漏\r\n");\r
+                \r
+\r
+                ble_reply_msgarr(0x06,0x04,&replydata,4);\r
             }\r
             return ERRCODE_SUCC;\r
         }\r
@@ -7067,6 +7134,8 @@ errcode_t decode_ota_json(ble_read_data *buffer_handle) {
             {\r
                 TRANSMIT_DATA=TRANS_OTA_FAIL;\r
                 CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+                cJSON_Delete(root);\r
+\r
                 return ERRCODE_FAIL;\r
             }\r
         }\r
@@ -7205,6 +7274,8 @@ errcode_t decode_mp3_json(ble_read_data *buffer_handle)
         if(IS_free_save_Mp3(ota_size_json->valueint)==false)\r
         {\r
             free(buffer_handle->file_recv_stat.file_name);\r
+            buffer_handle->file_recv_stat.file_name=NULL;\r
+\r
             TRANSMIT_DATA=TRANS_MP3_MAX_FAIL;\r
             CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
 \r
@@ -7216,8 +7287,8 @@ errcode_t decode_mp3_json(ble_read_data *buffer_handle)
             buffer_handle->file_recv_stat.lrcvalue = 0;\r
             buffer_handle->receive_file_flag = 1;\r
             uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH);\r
-            TRANSMIT_DATA=TRANS_MP3_TRANSMITTING;\r
-            CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+            // TRANSMIT_DATA=TRANS_MP3_TRANSMITTING;\r
+            // CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
 \r
             return ERRCODE_SUCC;\r
         }\r
@@ -7398,8 +7469,8 @@ errcode_t decode_single_dial_info(ble_read_data *buffer_handle)
     buffer_handle->receive_file_flag = 1;\r
     uapi_ble_connect_param_update(BLE_CONNECT_INTERVAL_HIGH);\r
 \r
-    TRANSMIT_DATA=TRANS_DIAL_TRANSMITTING;\r
-    CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+    // TRANSMIT_DATA=TRANS_DIAL_TRANSMITTING;\r
+    // CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
     return ERRCODE_SUCC;\r
     \r
 \r
@@ -8265,6 +8336,20 @@ errcode_t handle_recv_file(ble_read_data *buffer_handle,uint8_t *data, uint16_t
             BR_TRANSFER_timer = NULL;\r
             return ERRCODE_FAIL;\r
         }\r
+        //  if(buffer_handle->file_recv_stat.received_size==0)\r
+    {\r
+        if(buffer_handle->file_recv_stat.file_type==3)\r
+        TRANSMIT_DATA=TRANS_DIAL_TRANSMITTING;\r
+        \r
+        if(buffer_handle->file_recv_stat.file_type==1)\r
+        TRANSMIT_DATA=TRANS_OTA_TRANSMITTING;\r
+    \r
+        if(buffer_handle->file_recv_stat.file_type==2)\r
+        TRANSMIT_DATA=TRANS_MP3_TRANSMITTING;\r
+\r
+        CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+    }\r
+    \r
         ///////////////////////////////////////////////////////////\r
     }\r
     if (buffer_handle->file_recv_stat.file == NULL)\r
index 43fe179..a599c1c 100644 (file)
@@ -25,18 +25,22 @@ extern "C" {
 \r
 #include "bts_le_gap.h"\r
 #include "bts_br_gap.h"\r
-#include "battery_hal.h"\r
+// #include "battery_hal.h"\r
 #include "bleService.h"\r
 #include "alipay_feature.h"\r
-#include "alipay_bluetooth.h"\r
+// #include "alipay_bluetooth.h"\r
 #include "bts_a2dp_sink.h"\r
 #include "osal_timer.h"\r
 #include "bleEvent.h"\r
 #ifdef SUPPORT_HID_SERVICE\r
 #include "hidService.h"\r
 #endif\r
+#ifdef FACTORYTEST_SERVICE\r
 #include "factorytestService.h"\r
-#include "ppgBleService.h"\r
+#endif\r
+\r
+// #include "ppgBleService.h"\r
+\r
 #include "build_version.h"\r
 #include "custom_runtime.h"\r
 #include "custom_utils.h"\r
@@ -66,6 +70,8 @@ extern "C" {
 #define BLE_ZHIHUI_OTA_ID 0x2ae6\r
 #define BLE_ZHIHUI_OTA_REPLY_ID 0x2ae7\r
 \r
+#define BLE_ZHIHUI_AI_ID 0x2ae8\r
+\r
 #define BLE_CHARACTERISTIC_RECV_ID 0x2ae5\r
 #define BLE_CHARACTERISTIC_SNED_SHORT_ID 0x2ae3\r
 \r
@@ -141,7 +147,7 @@ uint16_t data2ae1Cmd = 0;//安卓消息来电
 uint16_t data2ae0Cmd = 0;//OTA\r
 uint16_t data2ae6Cmd = 0;//自定义OTA \r
 uint16_t data2ae7Cmd = 0;//自定义OTA \r
-\r
+uint16_t data2ae8Cmd = 0;//AI\r
 \r
 #define handle_max_len 40\r
 \r
@@ -232,7 +238,7 @@ enum{
     BLE_CHARACTERISTIC_SNED_ANDRIOD_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
     BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ|GATT_CHARACTER_PROPERTY_BIT_NOTIFY,\r
     BLE_ZHIHUI_OTA_ID_ID_PROPERTIES=GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
-\r
+    BLE_ZHIHUI_AI_ID_ID_PROPERTIES=GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ,\r
     BLE_ZHIHUI_OTA_REPLY_ID_PROPERTIES=GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ,\r
 };\r
 static uint8_t ble_adv_falg = 0;\r
@@ -867,6 +873,45 @@ static void srv_ble_add_chart_decr_Zhihui_ota(uint8_t server_id,uint16_t srv_han
     }\r
 }\r
 \r
+static void srv_ble_add_Zhihui_AI(uint8_t server_id,uint16_t srv_handle)\r
+{\r
+    errcode_t ret = 0;\r
+    static uint8_t battery_point_val[] = {0x00, 0x00};\r
+    gatts_add_chara_info_t character;\r
+    gatts_add_desc_info_t descriptor;\r
+\r
+    bts_data_to_uuid_len2(BLE_ZHIHUI_AI_ID, &character.chara_uuid);\r
+    character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+    character.properties = BLE_ZHIHUI_AI_ID_ID_PROPERTIES;\r
+    character.value_len = (uint16_t)sizeof(battery_point_val);\r
+    character.value = battery_point_val;\r
+\r
+    ret = gatts_add_characteristic(server_id, srv_handle, &character);\r
+    if (ret != ERRCODE_SUCC) {\r
+        // ALIPAY_PRINT_ERR(0, "gatts_add_characteristic fail, ret:%u.\r\n", ret);\r
+    }\r
+    bts_data_to_uuid_len2(BLE_UUID_CLIENT_CHARACTERISTIC_CONF, &descriptor.desc_uuid);\r
+    descriptor.permissions =  GATT_ATTRIBUTE_PERMISSION_WRITE;\r
+    descriptor.value_len = (uint16_t)sizeof(battery_point_val);\r
+    descriptor.value = battery_point_val;\r
+    \r
+    ret = gatts_add_descriptor(server_id, srv_handle, &descriptor);\r
+    if (ret != ERRCODE_SUCC) {\r
+        // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
+    }\r
+\r
+    bts_data_to_uuid_len2(BLE_UUID_USER_CHARACTERISTIC_CONF, &descriptor.desc_uuid);\r
+    descriptor.permissions =  GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ;;\r
+    descriptor.value_len = (uint16_t)sizeof(battery_point_val);\r
+    descriptor.value = battery_point_val;\r
+    \r
+    ret = gatts_add_descriptor(server_id, srv_handle, &descriptor);\r
+    if (ret != ERRCODE_SUCC) {\r
+        // ALIPAY_PRINT_ERR(0, "gatts_add_descriptor fail, ret:%u.\r\n", ret);\r
+    }\r
+}\r
+\r
+\r
 //用于adnriod发送消息添加特征值和描述符\r
 static void srv_ble_add_chart_decr_andriod(uint8_t server_id,uint16_t srv_handle)\r
 {   \r
@@ -1100,6 +1145,7 @@ static void srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(uint8_t server_id,ui
 static uint8_t g_alipay_character_buf[256] = {0};\r
 static void alipay_add_chart_decr_recv_cmd1(uint8_t server_id,uint16_t srv_handle)\r
 {\r
+    #ifdef AILPAY_SUPPORT\r
     errcode_t ret = 0;\r
     // uint16_t id = ALIPAYY_CHARACTERISTIC_ID;\r
     gatts_add_chara_info_t character;\r
@@ -1155,6 +1201,7 @@ static void alipay_add_chart_decr_recv_cmd1(uint8_t server_id,uint16_t srv_handl
     if (ret != ERRCODE_SUCC) {\r
         ALIPAY_PRINT_ERR(0, "gatts_add_descriptor second fail, ret:%u.\r\n", ret);\r
     }\r
+    #endif\r
 }\r
 \r
 \r
@@ -1196,10 +1243,16 @@ static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid,
     uint16_t uuid_tmp = *((uint16_t*)uuid->uuid);\r
     uuid_tmp = SWAP_U16(uuid_tmp);\r
     if ( uuid_tmp == BLE_SERVICE_UUID \r
-        || uuid_tmp == BLE_UUID_HUMAN_INTERFACE_DEVICE \r
+\r
+        // || uuid_tmp == BLE_UUID_HUMAN_INTERFACE_DEVICE \r
+#ifdef FACTORYTEST_SERVICE\r
         || uuid_tmp == BLE_UUID_ATE_FACTORYTEST_SERVICE \r
+#endif\r
+#ifdef PPG_SERVICE_SUPPORT\r
         || uuid_tmp == BLE_UUID_PPG_BLE_SERVICE \r
-        || uuid_tmp == ALIPAYY_SERVICE_ID\r
+#endif\r
+\r
+        // || uuid_tmp == ALIPAYY_SERVICE_ID\r
 #ifdef SUPPORT_AT_CYWEE\r
         || uuid_tmp == BLE_UUID_CYWEE_REPORT_SERVICE\r
 #endif\r
@@ -1221,17 +1274,20 @@ static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid,
     bt_uuid_t ble_service_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_SERVICE_UUID, &ble_service_uuid);\r
 \r
-    bt_uuid_t hid_service_uuid = {0};\r
-    bts_data_to_uuid_len2(BLE_UUID_HUMAN_INTERFACE_DEVICE, &hid_service_uuid);\r
+    // bt_uuid_t hid_service_uuid = {0};\r
+    // bts_data_to_uuid_len2(BLE_UUID_HUMAN_INTERFACE_DEVICE, &hid_service_uuid);\r
 \r
-    // bt_uuid_t alipay_service_uuid = {0};\r
-    // bts_data_to_uuid_len2(ALIPAYY_SERVICE_ID, &alipay_service_uuid);//0x3802\r
+    // // bt_uuid_t alipay_service_uuid = {0};\r
+    // // bts_data_to_uuid_len2(ALIPAYY_SERVICE_ID, &alipay_service_uuid);//0x3802\r
 \r
+#ifdef FACTORYTEST_SERVICE\r
     bt_uuid_t factory_service_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_ATE_FACTORYTEST_SERVICE, &factory_service_uuid);\r
-\r
+#endif\r
+#ifdef PPG_SERVICE_SUPPORT\r
     bt_uuid_t ppg_service_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_PPG_BLE_SERVICE, &ppg_service_uuid);\r
+#endif\r
 \r
 \r
 #ifdef SUPPORT_AT_CYWEE\r
@@ -1252,26 +1308,32 @@ static void svr_ble_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid,
         srv_ble_add_chart_decr_long_cmd(server_id,srv_handle);\r
         srv_ble_add_chart_decr_recv_cmd(server_id,srv_handle);\r
         srv_ble_add_chart_decr_Zhihui_ota(server_id,srv_handle);\r
+        srv_ble_add_Zhihui_AI(server_id,srv_handle);\r
+        \r
+        // srv_ble_add_chart_decr_Zhihui_AI(server_id,srv_handle);\r
         srv_ble_add_ZHIHUIOTA_REPLY_chart_decr_recv_cmd(server_id,srv_handle);\r
         gatts_start_service(server_id, srv_handle);\r
     }\r
-    if (ble_gatts_cmp_uuid(uuid, &hid_service_uuid) == true){\r
-        ble_hid_add_characters_and_descriptors(server_id, srv_handle);\r
-        ret = gatts_start_service(server_id, srv_handle);\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "hid service svr_ble_bt_gatts_service_add_cb ret:%d\r\n",ret);\r
-    }\r
+\r
+    // if (ble_gatts_cmp_uuid(uuid, &hid_service_uuid) == true){\r
+    //     ble_hid_add_characters_and_descriptors(server_id, srv_handle);\r
+    //     ret = gatts_start_service(server_id, srv_handle);\r
+    //     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "hid service svr_ble_bt_gatts_service_add_cb ret:%d\r\n",ret);\r
+    // }\r
+#ifdef FACTORYTEST_SERVICE\r
     if (ble_gatts_cmp_uuid(uuid, &factory_service_uuid) == true){\r
         ble_factorytest_add_characters_and_descriptors(server_id,srv_handle);\r
         ret = gatts_start_service(server_id, srv_handle);\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "factorytest service svr_ble_bt_gatts_service_add_cb ret:%d\r\n",ret);\r
     }\r
-\r
+#endif\r
+#ifdef PPG_SERVICE_SUPPORT\r
     if (ble_gatts_cmp_uuid(uuid, &ppg_service_uuid) == true){\r
         ble_ppgtest_add_characters_and_descriptors(server_id,srv_handle);\r
         ret = gatts_start_service(server_id, srv_handle);\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ppg ble service svr_ble_bt_gatts_service_add_cb ret:%d\r\n",ret);\r
     }\r
-\r
+#endif\r
 #ifdef SUPPORT_AT_CYWEE\r
     if (ble_gatts_cmp_uuid(uuid, &cywee_ble_service_uuid) == true){\r
         ble_cywee_add_characters_and_descriptors(server_id,srv_handle);\r
@@ -1313,21 +1375,35 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
     \r
     bt_uuid_t chara_uuid_data_2ae2 = {0};\r
     bts_data_to_uuid_len2(BLE_CHARACTERISTIC_READ_BATTERY_ID, &chara_uuid_data_2ae2);\r
-\r
+#ifdef FACTORYTEST_SERVICE\r
     bt_uuid_t hid_report_uuid_2a4d = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_REPORT, &hid_report_uuid_2a4d);\r
-\r
+#endif\r
     bt_uuid_t hid_report_uuid_2ae6 = {0};\r
     bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_ID, &hid_report_uuid_2ae6);\r
 \r
     bt_uuid_t chara_uuid_data_2ae7 = {0};\r
     bts_data_to_uuid_len2(BLE_ZHIHUI_OTA_REPLY_ID, &chara_uuid_data_2ae7);\r
 \r
+    bt_uuid_t chara_uuid_data_2ae8 = {0};\r
+    bts_data_to_uuid_len2(BLE_ZHIHUI_AI_ID, &chara_uuid_data_2ae8);\r
+\r
+    if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae8))\r
+    {\r
+        if(data2ae8Cmd==0)\r
+        {\r
+            data2ae8Cmd=result->value_handle;\r
+        }\r
+        Is_value_handle[handle_num]=result->value_handle;\r
+        handle_num++;\r
+    }\r
+\r
     if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae7))\r
     {\r
         if(data2ae7Cmd==0)\r
         {\r
             data2ae7Cmd=result->value_handle;\r
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "data2ae7Cmd");\r
         }\r
         Is_value_handle[handle_num]=result->value_handle;\r
         handle_num++;\r
@@ -1414,6 +1490,7 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         handle_num++;\r
         //  = result->value_handle;\r
     }\r
+    #ifdef FACTORYTEST_SERVICE\r
     if (ble_gatts_cmp_uuid(uuid, &hid_report_uuid_2a4d) == true) {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "result->hid_report_uuid_2a4d  %d\r\n",result->value_handle);\r
         if(g_hid_server_handle == 0){\r
@@ -1457,7 +1534,8 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         ble_factorytest_store_ota_recv_handle(result->value_handle) ;\r
         // }\r
     }\r
-\r
+    #endif\r
+    #ifdef FACTORYTEST_SERVICE\r
     bt_uuid_t factorytest_ota_report_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_OTA_RX, &factorytest_ota_report_uuid);\r
 \r
@@ -1468,8 +1546,9 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         ble_factorytest_store_ota_report_handle(result->value_handle);\r
         // }\r
     }\r
+    #endif \r
 \r
-\r
+#ifdef PPG_SERVICE_SUPPORT\r
     bt_uuid_t ppgtest_report_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_PPG_NOTIFY, &ppgtest_report_uuid);\r
     if (ble_gatts_cmp_uuid(uuid, &ppgtest_report_uuid) == true) {\r
@@ -1478,7 +1557,7 @@ static void svr_ble_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t
         handle_num++;\r
         ble_ppgtest_store_report_handle(result->value_handle);\r
     }\r
-    \r
+#endif\r
 #ifdef SUPPORT_AT_CYWEE\r
     bt_uuid_t cywee_report_uuid = {0};\r
     bts_data_to_uuid_len2(BLE_UUID_CYWEE_RX, &cywee_report_uuid);\r
@@ -1540,7 +1619,41 @@ errcode_t svr_ble_bt_gatts_noyify_zhihui(uint8_t *data, uint16_t data_len)//这
     data_info.value = data;\r
     data_info.value_len = data_len;\r
      if (g_ble_conn_id == 0)\r
-      return 0;\r
+     {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_ble_conn_id");\r
+        // return 0;\r
+     }\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_ble_conn_id %d g_ble_conn_id %d",g_ble_server_id,g_ble_conn_id);\r
+    errcode_t ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+    if(ret!=ERRCODE_SUCC)\r
+    {\r
+        msleep(50);\r
+        ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+        if(ret!=ERRCODE_SUCC)\r
+        {\r
+            msleep(100);\r
+            ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+\r
+            if(ret!=ERRCODE_SUCC)\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
+                    g_ble_conn_id, g_ble_server_handle,data_len);\r
+        }\r
+    }\r
+    return ret;  \r
+}\r
+\r
+errcode_t svr_ble_bt_gatts_noyify_AI(uint8_t *data, uint16_t data_len)//这里是设备数据上报给app手机端\r
+{\r
+    gatts_ntf_ind_t data_info;\r
+    data_info.attr_handle = data2ae8Cmd;\r
+    data_info.value = data;\r
+    data_info.value_len = data_len;\r
+     if (g_ble_conn_id == 0)\r
+     {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_ble_conn_id");\r
+        // return 0;\r
+     }\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_ble_conn_id %d g_ble_conn_id %d",g_ble_server_id,g_ble_conn_id);\r
     errcode_t ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
     if(ret!=ERRCODE_SUCC)\r
     {\r
@@ -1552,7 +1665,7 @@ errcode_t svr_ble_bt_gatts_noyify_zhihui(uint8_t *data, uint16_t data_len)//这
             ret=gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
 \r
             if(ret!=ERRCODE_SUCC)\r
-                    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
                     g_ble_conn_id, g_ble_server_handle,data_len);\r
         }\r
     }\r
@@ -1937,7 +2050,9 @@ void svr_ble_bluetooth_init(void)
     #ifdef SUPPORT_HID_SERVICE\r
     // ble_hid_server_init();\r
     #endif\r
+    #ifdef AILPAY_SUPPORT\r
     svr_alipay_bluetooth_init(g_ble_server_id);\r
+    #endif\r
 \r
     ble_factory_server_init(g_ble_server_id);\r
     \r
@@ -2219,6 +2334,400 @@ void Check_ble_adv_status(void)
     return;\r
 }\r
 \r
+static unsigned long g_ble_Ai_record_queue = 0xFFFFFFFF;\r
+static uint8_t g_ble_Ai_record_queue_created = 0;\r
+\r
+void create_Ai_record_queue(void)\r
+{\r
+    if (osal_msg_queue_create("Ai_record_queue", BLESRV_APP_BOARD_MSG_COUNT, &g_ble_Ai_record_queue,\r
+                              0, MAX_BUF_LEN) != ERRCODE_SUCC)\r
+    {\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"[blesrv][service] app create mail fail g_blesrv_queue:%d\n",g_ble_Ai_record_queue);\r
+        g_ble_Ai_record_queue_created = 0;\r
+    }else{\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"[blesrv][service] app create mail success g_blesrv_queue:%d\n",g_ble_Ai_record_queue);\r
+        g_ble_Ai_record_queue_created = 1;\r
+    }\r
+\r
+}\r
+\r
+\r
+#define Ai_TEST 0\r
+static uint32_t AI_data_count=0;\r
+\r
+\r
+static uint8_t AI_interval=5;\r
+\r
+void set_AI_interval(uint8_t data)\r
+{\r
+    AI_interval=data;\r
+}\r
+\r
+void send_Ai_record(uint16_t len,uint8_t *data,uint32_t count)\r
+{\r
+    uint8_t ai_buf[SDK_BLE_MTU_MAX]={0};\r
+    if(count)\r
+    {\r
+        \r
+        memcpy_s(ai_buf,SDK_BLE_MTU_MAX,&count,4);\r
+        memcpy_s(&ai_buf[4],SDK_BLE_MTU_MAX-4,data,len);\r
+        len+=4;\r
+    }\r
+    else\r
+    {\r
+        memcpy_s(ai_buf,SDK_BLE_MTU_MAX,data,len);\r
+    }\r
+   \r
+    svr_ble_bt_gatts_noyify_AI(ai_buf,len);\r
+\r
+    LOS_Msleep(AI_interval+get_ble_interval());\r
+}\r
+\r
+\r
+static void blesrvAi_send_service_task(void const *arg)\r
+{\r
+    unused(arg);\r
+    int32_t ret;\r
+    blesrv_custom_cmd_t mail={0};\r
+    uint32_t msgsize = MAX_BUF_LEN;\r
+\r
+    #if Ai_TEST\r
+        FILE* fp= fopen("user/airecord.pcm","wb+");\r
+    #endif\r
+    while (1)\r
+    {\r
+        ret = osal_msg_queue_read_copy(g_ble_Ai_record_queue, (void *)&mail, &msgsize,\r
+                                       OSAL_MSGQ_WAIT_FOREVER);\r
+        if (ret != OSAL_SUCCESS)\r
+        {\r
+            continue;\r
+        }\r
+        \r
+\r
+        uint8_t *p_msgbuf = (mail.msg_data);\r
+        uint16_t server_handle = mail.service_handle;\r
+        uint32_t msg_len = mail.msg_len;\r
+\r
+        if(server_handle==1 || server_handle==2)\r
+        {\r
+            AI_data_count=0;\r
+        }\r
+        else\r
+        {\r
+            AI_data_count++;\r
+        }\r
+\r
+        #if Ai_TEST\r
+            fwrite(fp,1,mail.msg_len,mail.msg_data);\r
+        #endif\r
+        // if(get_ble_connect())\r
+        \r
+\r
+        if(mail.msg_data && mail.msg_len!=0)\r
+        send_Ai_record(mail.msg_len,mail.msg_data,AI_data_count);\r
+       \r
+\r
+        if(mail.msg_data)\r
+        {\r
+            free(mail.msg_data);\r
+            mail.msg_data = NULL;\r
+        }\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ble_recv:end\r\n");\r
+    }\r
+}\r
+\r
+\r
+static blesrv_custom_cmd_t g_blesrv_mail={0};\r
+\r
+errcode_t uapi_Ai_send_service_init(void)\r
+{\r
+\r
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"uapi_blesrv_service_init !\r\n");\r
+    app_task_definition_t taskcfg = {0};\r
+    taskcfg.create_queue_handle = create_Ai_record_queue;\r
+    taskcfg.attr.name = "Ai_record_queue_service";\r
+    taskcfg.attr.priority = osPriorityNormal;\r
+    // taskcfg.attr.stack_size = BLESRV_APP_BOARD_TASK_SIZE;\r
+    taskcfg.attr.stack_size = 0x1500;\r
+    taskcfg.func = blesrvAi_send_service_task;\r
+    taskcfg.use_mem = USE_EXTEND_MEM;\r
+\r
+    g_blesrv_mail.msg_len=0;\r
+    g_blesrv_mail.msg_data=NULL;\r
+\r
+\r
+    errcode_t ret = uapi_create_osThread_custom(&taskcfg);\r
+    if (ret != ERRCODE_SUCC)\r
+    {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"create blesrv_service failed %d!\r\n", ret);\r
+        return ERRCODE_FAIL;\r
+    }\r
+\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+\r
+uint32_t send_msg_data_into_Ai_msg_queue_count=0;\r
+\r
+\r
+void AI_data_assembly(uint8_t type,uint8_t *buf,uint8_t aitype)\r
+{\r
+   \r
+    memset_s(buf,ble_nus_max_data_len,0,19);\r
+    // 设置消息头部信息\r
+    buf[0] = 0x72; // 消息头\r
+    buf[1] = 0x08; // 类型\r
+    if(type)\r
+    buf[2] = 0x01; // 类型ID\r
+    else\r
+    buf[2] = 0x02; // 类型ID\r
+    uint32_t temp_data=1;\r
+    memcpy(buf + 3, &temp_data, 4); // 总包数\r
+    memcpy(buf + 7, &temp_data, 4); // 总数据长度\r
+    memcpy(buf + 11, &temp_data, 4); // 数据包ID\r
+    memcpy(buf + 15, &temp_data, 2); // 包数据长度\r
+    \r
+    buf[17] = aitype;\r
+    buf[18] = Calculate_CRC_AI(buf,18);; // 计算CRC\r
+}\r
+\r
+static uint8_t g_blesrv_mail_flag=0;\r
+\r
+\r
+\r
+int send_msg_data_into_Ai_msg_queue(void *buff,uint16_t len,uint8_t type)\r
+{\r
+    blesrv_custom_cmd_t blesrv_mail={0};\r
+     uint32_t ret ;\r
+    if( g_blesrv_queue_created == 0) return ERRCODE_FAIL;\r
+    if (buff == NULL) return ERRCODE_FAIL;\r
+\r
+    uint32_t sendlen = sizeof(blesrv_custom_cmd_t);\r
+    uint32_t singlebuflen= ble_nus_max_data_len-20;\r
+    blesrv_mail.msg_data=0;\r
+\r
+    if(len<=singlebuflen)\r
+    {\r
+        if(type==1)\r
+        {\r
+            blesrv_mail.service_handle = 1;\r
+            blesrv_mail.msg_len = len;\r
+            blesrv_mail.msg_data = (uint8_t*)malloc(len);\r
+\r
+            if(blesrv_mail.msg_data==NULL)\r
+            {\r
+                return  ERRCODE_FAIL;\r
+            }\r
+            memcpy_s((void *)(blesrv_mail.msg_data),len,buff,len);\r
+\r
+            ret  = osal_msg_queue_write_copy(g_ble_Ai_record_queue, (void *)&blesrv_mail, sendlen , 0);\r
+            if (ret != OSAL_SUCCESS)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"len<=singlebuflen Error blesrv Check send failed! err=0x%X %d! \r\n", ret,send_msg_data_into_Ai_msg_queue_count);\r
+            }\r
+\r
+            if(g_blesrv_mail.msg_data)\r
+            {\r
+                free(g_blesrv_mail.msg_data);\r
+                g_blesrv_mail.msg_data=NULL;\r
+                g_blesrv_mail.msg_len=0;\r
+            }\r
+            return OSAL_SUCCESS;\r
+\r
+        }\r
+        else if(type==2)\r
+        {\r
+\r
+             blesrv_custom_cmd_t blesrv_mail_end={0};\r
+\r
+            if(g_blesrv_mail.msg_len!=0 && g_blesrv_mail.msg_data!=NULL)\r
+            {\r
+                blesrv_mail_end.msg_len=g_blesrv_mail.msg_len;\r
+                blesrv_mail_end.msg_data=malloc(g_blesrv_mail.msg_len);\r
+                if(blesrv_mail_end.msg_data==NULL)\r
+                {\r
+                    return  ERRCODE_FAIL;\r
+                }\r
+\r
+                memcpy_s( blesrv_mail_end.msg_data,singlebuflen,g_blesrv_mail.msg_data,g_blesrv_mail.msg_len);\r
+                free(g_blesrv_mail.msg_data);\r
+                g_blesrv_mail.msg_data=NULL;\r
+                g_blesrv_mail.msg_len=0;\r
+\r
+                ret  = osal_msg_queue_write_copy(g_ble_Ai_record_queue, (void *)&blesrv_mail_end, sendlen , 0);\r
+                if (ret != OSAL_SUCCESS)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"len<=singlebuflen Error blesrv Check send failed! err=0x%X %d! \r\n", ret,send_msg_data_into_Ai_msg_queue_count);\r
+                }\r
+            }\r
+           \r
+\r
+            blesrv_mail.service_handle = 2;\r
+            blesrv_mail.msg_len = len;\r
+            blesrv_mail.msg_data = (uint8_t*)malloc(len);\r
+\r
+            if(blesrv_mail.msg_data==NULL)\r
+            {\r
+                return  ERRCODE_FAIL;\r
+            }\r
+            memcpy_s((void *)(blesrv_mail.msg_data),len,buff,len);\r
+\r
+            ret  = osal_msg_queue_write_copy(g_ble_Ai_record_queue, (void *)&blesrv_mail, sendlen , 0);\r
+            if (ret != OSAL_SUCCESS)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"len<=singlebuflen Error blesrv Check send failed! err=0x%X %d! \r\n", ret,send_msg_data_into_Ai_msg_queue_count);\r
+            }\r
+            return OSAL_SUCCESS;\r
+        }\r
+        //以下为文件数据处理\r
+        if(g_blesrv_mail.msg_len+len<singlebuflen)\r
+        {\r
+           if (g_blesrv_mail.msg_len!=0 || g_blesrv_mail.msg_data!=NULL)\r
+           {\r
+                // g_blesrv_mail.msg_data=realloc( g_blesrv_mail.msg_data,g_blesrv_mail.msg_len+len);\r
+                uint8_t* temp_g_blesrv_mail_msg_data=malloc(g_blesrv_mail.msg_len+len);\r
+                if(temp_g_blesrv_mail_msg_data==NULL)\r
+                {\r
+                    return  ERRCODE_FAIL;\r
+                }\r
+                memcpy_s(temp_g_blesrv_mail_msg_data+ g_blesrv_mail.msg_len,singlebuflen,buff,len);\r
+                memcpy_s(temp_g_blesrv_mail_msg_data,singlebuflen,g_blesrv_mail.msg_data,g_blesrv_mail.msg_len);\r
+\r
+                free(g_blesrv_mail.msg_data);\r
+                g_blesrv_mail.msg_data=temp_g_blesrv_mail_msg_data;\r
+                g_blesrv_mail.msg_len+=len;\r
+           }\r
+           else\r
+           {\r
+                g_blesrv_mail.msg_data=malloc(len);\r
+                if(g_blesrv_mail.msg_data==NULL)\r
+                {\r
+                    return  ERRCODE_FAIL;\r
+                }\r
+\r
+                memcpy_s(g_blesrv_mail.msg_data+ g_blesrv_mail.msg_len,singlebuflen,buff,len);\r
+                g_blesrv_mail.msg_len=len;\r
+           }\r
+           \r
+            \r
+            return OSAL_SUCCESS;\r
+        }\r
+        else if(g_blesrv_mail.msg_len+len==singlebuflen)\r
+        {\r
+            // g_blesrv_mail.msg_data=realloc( g_blesrv_mail.msg_data,g_blesrv_mail.msg_len+len);\r
+\r
+            blesrv_mail.msg_len = singlebuflen;\r
+            blesrv_mail.msg_data = (uint8_t*)malloc(singlebuflen);\r
+             if(blesrv_mail.msg_data==NULL)\r
+            {\r
+                return  ERRCODE_FAIL;\r
+            }\r
+\r
+            memcpy_s( blesrv_mail.msg_data,singlebuflen,g_blesrv_mail.msg_data,g_blesrv_mail.msg_len);\r
+            memcpy_s( blesrv_mail.msg_data+ g_blesrv_mail.msg_len,singlebuflen,buff,len);\r
+\r
+            g_blesrv_mail.msg_len=0;\r
+            free( g_blesrv_mail.msg_data);\r
+            g_blesrv_mail.msg_data=NULL;\r
+\r
+            ret  = osal_msg_queue_write_copy(g_ble_Ai_record_queue, (void *)&blesrv_mail, sendlen , 0);\r
+            if (ret != OSAL_SUCCESS)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"len<=singlebuflen Error blesrv Check send failed! err=0x%X %d! \r\n", ret,send_msg_data_into_Ai_msg_queue_count);\r
+            }\r
+            return OSAL_SUCCESS; \r
+\r
+        }\r
+        else\r
+        {\r
+            if(g_blesrv_mail.msg_len!=0 && g_blesrv_mail.msg_data!=NULL)\r
+            {\r
+                blesrv_mail.msg_len=g_blesrv_mail.msg_len;\r
+                blesrv_mail.msg_data=malloc(g_blesrv_mail.msg_len);\r
+                if(blesrv_mail.msg_data==NULL)\r
+                {\r
+                    return  ERRCODE_FAIL;\r
+                }\r
+                \r
+                memcpy_s( blesrv_mail.msg_data,singlebuflen,g_blesrv_mail.msg_data,g_blesrv_mail.msg_len);\r
+                free(g_blesrv_mail.msg_data);\r
+\r
+                ret  = osal_msg_queue_write_copy(g_ble_Ai_record_queue, (void *)&blesrv_mail, sendlen , 0);\r
+                if (ret != OSAL_SUCCESS)\r
+                {\r
+                    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"len<=singlebuflen Error blesrv Check send failed! err=0x%X %d! \r\n", ret,send_msg_data_into_Ai_msg_queue_count);\r
+                }\r
+\r
+            }\r
+        \r
+            g_blesrv_mail.msg_len=len;\r
+            g_blesrv_mail.msg_data=malloc(len);\r
+            memcpy_s( g_blesrv_mail.msg_data,singlebuflen,buff,len);\r
+     \r
+           \r
+            return OSAL_SUCCESS; \r
+        }\r
+\r
+    }\r
+    else\r
+    {\r
+        uint8_t count=len/singlebuflen;\r
+        if(len%singlebuflen)\r
+        {\r
+            count++;\r
+        }\r
+        uint16_t residue_len=len;\r
+        for(int i=0;i<count;i++)\r
+        {\r
+            blesrv_mail.service_handle = 0;\r
+            if(residue_len>=singlebuflen)\r
+            {\r
+                blesrv_mail.msg_len = singlebuflen;\r
+                blesrv_mail.msg_data = (uint8_t*)malloc(singlebuflen);\r
+                \r
+                if(blesrv_mail.msg_data==NULL)\r
+                {\r
+                    return ERRCODE_FAIL;\r
+                }\r
+                memcpy_s((void *)(blesrv_mail.msg_data),singlebuflen,buff+i*singlebuflen,singlebuflen);\r
+                residue_len-=singlebuflen;\r
+            }\r
+            else if(len%singlebuflen)\r
+            {\r
+                blesrv_mail.msg_len = len%singlebuflen;\r
+                blesrv_mail.msg_data = (uint8_t*)malloc( len%singlebuflen);\r
+                \r
+                if(blesrv_mail.msg_data==NULL)\r
+                {\r
+                    return ERRCODE_FAIL;\r
+                }\r
+                memcpy_s((void *)(blesrv_mail.msg_data),len%singlebuflen,buff+i*singlebuflen,len%singlebuflen);\r
+            }\r
+          \r
+\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"g_blesrv_queue:%d ble_recv:mail.msg_data %X %02X %02X %02X msg_data:%02X %02X %02X\r\n",\r
+                g_ble_Ai_record_queue,\r
+                blesrv_mail.msg_data,\r
+                blesrv_mail.msg_data[0],\r
+                blesrv_mail.msg_data[1],\r
+                blesrv_mail.msg_data[2],\r
+                msg_data[0],\r
+                msg_data[1],\r
+                msg_data[2]\r
+                );\r
+            ret  = osal_msg_queue_write_copy(g_ble_Ai_record_queue, (void *)&blesrv_mail, sendlen , 0);\r
+            if (ret != OSAL_SUCCESS)\r
+            {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"else Error blesrv Check send failed! err=0x%X %d %d! \r\n", ret,send_msg_data_into_Ai_msg_queue_count,len);\r
+            }\r
+        }\r
+    }\r
+  \r
+   \r
+    return ret;\r
+}\r
+\r
+\r
 \r
 #ifdef __cplusplus\r
 }\r
index 8cf27f5..5b7eaf7 100644 (file)
@@ -27,6 +27,7 @@ extern uint16_t data2ae5Cmd;
 extern uint16_t data2ae1Cmd;//安卓消息来电
 extern uint16_t data2ae0Cmd;//OTA
 extern uint16_t data2ae6Cmd;//自定义OTA
+extern uint16_t data2ae8Cmd;//AI
 extern uint16_t ble_nus_max_data_len;
 extern uint16_t alipay_handle;
 extern uint16_t g_ble_conn_id;
@@ -90,11 +91,18 @@ errcode_t svr_ble_read_data_value_updata_noyify_test(uint8_t test);
 
 errcode_t svr_ble_bt_gatts_noyify_zhihui(uint8_t *data, uint16_t data_len);
 
+errcode_t svr_ble_bt_gatts_noyify_AI(uint8_t *data, uint16_t data_len);
+
 uint16_t get_ble_interval(void);
 
 
 void Check_ble_adv_status(void);
 
+int send_msg_data_into_Ai_msg_queue(void *buff,uint16_t len,uint8_t type);
+
+void AI_data_assembly(uint8_t type,uint8_t *buf,uint8_t aitype);
+
+void set_AI_interval(uint8_t data);
 
 #ifdef __cplusplus
 }
index 3afdbad..e41c221 100644 (file)
@@ -41,7 +41,7 @@
 
 #else
 void HandleUpdatelcdMode(int f){}
-void set_ota_upgrade(void){}
+// void set_ota_upgrade(void){}
 void custom_timer_callback(void){}
 // void Check_ble_adv_status(void){}
 // void check_dial_space(void){}
index df1eecd..c8e27d7 100644 (file)
@@ -46,9 +46,9 @@
 #include "system/include/SystemLogModelC.h"
 #include "ConfigModelC.h"
 #else
-void ble_SOS_data_init(void){}
-uint8_t read_jsonHistory_weather(void){return 0;}
-void ota_updata_init(void){}
+// void ble_SOS_data_init(void){}
+// uint8_t read_jsonHistory_weather(void){return 0;}
+// void ota_updata_init(void){}
 // void start_report_log(void){}
 // void stop_report_log(void){}
 // void resume_report_log(void){}