修改蓝牙代码结构
authorhcj <1224667075@qq.com>
Thu, 15 May 2025 10:36:04 +0000 (18:36 +0800)
committerhcj <1224667075@qq.com>
Thu, 15 May 2025 10:36:04 +0000 (18:36 +0800)
code/sdk/application/wearable/fd230/nativeapp/nativeui/alarm/src/AlarmClockModel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/heart_blood/health_service/health_service.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/phone/src/phoneaddressmodel.cpp
code/sdk/application/wearable/fd230/nativeapp/nativeui/weather/src/WeatherModel.cpp
code/sdk/zhihui/services/ble_service/blemoder/bleinstruct_sample.cpp [new file with mode: 0644]

index fe9fec7..a5b21c0 100644 (file)
@@ -973,6 +973,176 @@ void PushAlarmClockDataToModel(AlarmClockQueueMsg alarmClockMsg)
     OHOS::AlarmClockModel::GetInstance()->PushAlarmClockData(alarmClockMsg);
 }
 
+////////////////////////////////////////////////////////////////////////////
+
+#ifdef BLE_INSTRUCT
+
+#include "bleEvent.h"
+#include "bleInstruct.h"
+
+
+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;
+}
+
+
+extern bleInstruct_t_ bleInstruct_t;
+
+void ble_alarm_init()
+{
+    bleInstruct_t.ble_delet_all_AlarmInfo= ble_delet_all_AlarmInfo_;
+
+    bleInstruct_t.ble_SetAlarmInfo=ble_SetAlarmInfo_;
+
+    bleInstruct_t.ble_AlarmClock_refresh =ble_AlarmClock_refresh_;
+
+    bleInstruct_t.struct_to_json_buf_malloc_Alarm =struct_to_json_buf_malloc_Alarm_;
+}
+
+#endif
+
+
 #ifdef __cplusplus
 }
 #endif
index cea17e9..86015ee 100644 (file)
@@ -666,6 +666,43 @@ std::string HealthService::get_heart_data() {
                               : result.str(); // 检查是否读取到数据
 }
 
+#ifdef BLE_INSTRUCT
+
+#include "bleEvent.h"
+#include "bleInstruct.h"
+
+
+
+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 ;
+}
+
+
+extern bleInstruct_t_ bleInstruct_t;
+
+void ble_HEART_init()
+{    
+  bleInstruct_t .get_health_HEART_data_path= get_health_HEART_data_path_;
+  bleInstruct_t .get_health_OXYGEN_data_path= get_health_OXYGEN_data_path_;
+
+}
+
+#endif
 // 存储血氧数据
 // bool HealthService::save_bin_blood(const BloodOxygenData &bloodoxygen) {
 //   /* 存储bin文件[协议使用] */
index 578a873..825398c 100644 (file)
@@ -476,4 +476,80 @@ namespace OHOS
         return instance;
     }
 
+////////////////////////////////
+
+
+#ifdef BLE_INSTRUCT
+
+#include "bleEvent.h"
+#include "bleInstruct.h"
+
+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;
+}
+
+
+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;
+}
+
+
+
+extern bleInstruct_t_ bleInstruct_t;
+
+void ble_addressbook_init()
+{    
+    bleInstruct_t .add_addressbookToRead=add_addressbookToRead_;
+
+    // bleInstruct_t .addressbook=addressbook_;
+
+    bleInstruct_t .addressbookToRead=addressbookToRead_;
+    bleInstruct_t .addressbookTowrite=addressbookTowrite_;
+}
+
+#endif
+
 }
\ No newline at end of file
index cd291e2..d0fc5db 100644 (file)
@@ -392,4 +392,67 @@ namespace OHOS
             p_MainWeatherView->GetWeatherView()->UpdateWeatherTime();
         }
     }
+
+
+#ifdef BLE_INSTRUCT
+
+#include "bleEvent.h"
+#include "bleInstruct.h"
+
+
+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);
+}
+
+extern bleInstruct_t_ bleInstruct_t;
+
+void ble_weather_init()
+{    
+    bleInstruct_t  .set_weather_now_data =set_weather_now_data_;
+    bleInstruct_t .set_weather_address_data =set_weather_address_data_;
+    bleInstruct_t .set_weather_one_data =set_weather_one_data_;
+    bleInstruct_t .ble_UpdateMainWeatherData = ble_UpdateMainWeatherData_;
+
+}
+
+
+#endif
+
+
+
 }
\ No newline at end of file
diff --git a/code/sdk/zhihui/services/ble_service/blemoder/bleinstruct_sample.cpp b/code/sdk/zhihui/services/ble_service/blemoder/bleinstruct_sample.cpp
new file mode 100644 (file)
index 0000000..986e421
--- /dev/null
@@ -0,0 +1,4054 @@
+/**
+ * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
+ *
+ * Description: Test  source \n
+ * Author: @CompanyNameTag \n
+ * History: \n
+ * 2022-08-16, Create file. \n
+ */
+#include <iostream>
+#include <fstream>
+#include <filesystem>
+#include <string>
+#include "wearable_log.h"
+#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
+
+
+
+
+
+#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>
+
+#include <dirent.h>
+#include <ppg_service.h>
+#include "power_display_service.h"
+#include "alipay_feature.h"
+
+
+// #include "font/base_font.h"
+// #include "uicomponents/UIComponents.h"
+
+//#define APP_DOWNLOAD_DIAL_PATH "/user/dial/offline_dial" /*表盘市场安装路径*/
+#define DIAL_DATA_DIR APP_DOWNLOAD_DIAL_PATH
+
+// #define DIAL_DATA_DIR "/user/dial/offline_dial"
+#ifdef FD230
+
+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_);
+}
+
+
+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 OHOS::SetDialModel::GetInstance().GetDialCount();
+}
+
+bool ble_is_Alipay_bind(void)
+{
+    return is_Alipay_bind();
+}
+
+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)
+{
+
+    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;
+
+}
+
+
+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;
+}
+
+
+void ble_sos_data_save(void)
+{
+    OHOS::SOS_number_save();
+}
+
+void ble_SOS_data_init(void)
+{
+    OHOS::SOS_number_init();
+}
+
+void ota_updata_init(void)
+{
+   OHOS::get_updatafail_data();
+}
+
+
+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;
+}
+
+//sos 
+void ble_sos_number_clean(void)
+{
+    OHOS::sos_number_clean();
+}
+
+bool ble_add_sos_number(uint8_t sex,char *name,char *number)
+{
+    return OHOS::add_sos_number(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();
+}
+
+
+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 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)
+{
+
+    // 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;
+}
+
+
+
+//在此处实现,给UI回复消息。
+void ble_app_reply(bool data)
+{
+    bool state = data;
+    SendMsgToUIService(UI_AI_JUMP_TO_LISTENING_VIEW, 0, &state, sizeof(bool));
+}
+
+
+void ble_connect_ok(void)
+{
+    SendMsgToUIService(PHONE_CONNECTED_TO_UI, 0, nullptr, 0);
+}
+
+void ble_disconnect_ok(void)
+{
+    SendMsgToUIService(PHONE_DISCONNECTED_TO_UI, 0, nullptr, 0);
+}
+
+void hand_watch_first_time_Paired(void)
+{
+    SendMsgToUIService(UI_HAND_WATCH_FIRST_PAIRED, 0, nullptr, 0);
+}
+
+void ble_set_ai_Question_str(char *buf)
+{
+    OHOS::AiVoiceModel::GetInstance().SetUserQuestionStr(std::string(buf));
+}
+
+void ble_set_ai_Answer_str(char *buf,uint8_t type)
+{
+    OHOS::AiVoiceModel::GetInstance().SetAiAnswerStrStr(std::string(buf),type);
+}
+
+char* ble_get_ai_audio_path_str(void)
+{
+    return (char *)OHOS::AiVoiceModel::GetInstance().GetAIAudioPath().c_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;
+}
+
+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()
+{
+    OHOS::HeartRateData data;
+    OHOS::HealthService ::GetInstance()->ReadHeartRateData(data);
+    uint8_t heart=0;
+    heart=data.Heart;
+    return heart;
+}
+
+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;
+}
+
+
+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;
+}
+
+//通过时间戳获取训练数据
+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;
+    
+}
+
+
+bool delete_MP3_file_By_ID(uint16_t id)
+{
+   
+    return true;
+   
+
+}
+
+char * dir_to_json_buf_malloc_(uint8_t type)
+{
+    
+    return NULL;
+    
+}
+
+
+
+
+uint8_t ble_AT_add_nap_data(uint16_t time)
+{
+    return 0;
+}
+
+uint8_t ble_get_sleep_data(uint32_t file_size,uint8_t day_,uint8_t *data)
+{
+    
+    return 0;
+}
+
+
+
+
+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)
+{
+   
+}
+
+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 false;
+}
+
+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)
+{
+
+    return 0;
+
+}
+
+
+
+bool ble_is_dial_install_by_id(uint16_t id)
+{
+
+    return false;
+
+}
+
+int ble_get_dial_num(void)
+{
+
+    return 1;
+
+}
+
+void ble_delete_dial_(uint16_t id)
+{
+
+}
+
+bool ble_delete_dial(uint16_t id)
+{
+
+    return false;
+
+}
+
+int get_all_dial_id( char * buf,uint16_t MAX_LEN)
+{
+
+return 0;
+
+}
+
+bool dial_file_save(void )
+{
+
+    return true;
+
+}
+
+void install_Register_dial_( char * name,uint16_t id)
+{
+ 
+
+}
+void install_Register_dial( char * name,uint16_t 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);
+
+        //更新睡眠配置
+        #ifdef FD230
+            OHOS::SleepModel::GetInstance().set_sleep_goal();
+        #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;
+}
+
+// 闹钟数据:
+// {
+//     //"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)
+{
+   
+}
+
+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)
+{
+
+    return NULL;
+}
+
+char *  struct_to_json_buf_malloc_(uint8_t day)
+{
+    return NULL;
+}
+
+#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[256]={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_LOGD(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_LOGD(WEARABLE_LOG_MODULE_APP,"opendir fail\r\n");
+    }
+    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;
+}
+
+static uint32_t languaage_id=0;
+void set_languaage(uint32_t id)
+{//OHOS:: language language;
+
+}
+
+char *addressbook(void)//获取通讯录保存文件地址路径
+{
+    #ifdef FD230
+    return ADDRESS_BOOK_PATH;
+    #endif
+    return NULL;
+}
+
+void addressbookToRead(char *buf)//转化用于·c文件
+{
+
+}
+
+void addressbookTowrite(void)//转化用于·c文件
+{
+}
+
+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);
+
+}
+
+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();
+
+    return ;
+}
+
+void set_SilentMode(uint8_t falg)//设置静音模式
+{
+    OHOS::ConfigModel *p_ConfigModel  =   OHOS::ConfigModel::GetInstance();
+    p_ConfigModel->SetSilentMode(falg);
+
+    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)
+{
+}
+
+void set_goal_step_notification(uint8_t 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;
+}
+
+/*设置最大心率提醒*/
+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;
+}
+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;
+}
+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);
+    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);
+    }
+
+    return;
+}
+
+int Get_RaiseToWake(void) //获取抬婉亮屏开关 
+{
+    return mmi_flip_wrist_switch_get();
+}
+void Set_SystemVolume(int value) //设置系统音量
+{
+    uapi_systemVolumeSet(value);
+    return;
+}
+
+int Get_SystemVolume(void) //获取系统音量
+{
+    return uapi_systemVolumeGet();
+}
+void Set_CallVolume(int value) //设置通话音量
+{
+    uapi_callVolumeSet(value);
+    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)
+{
+
+}
+
+
+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 x) 
+{
+
+}
+
+void  ble_UpdateMainWeatherData(void)
+{
+
+}
+
+
+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功能
+{
+    send_dtfm_number_toCat1(ch);
+}
+
+void ble_mp3_list_update(void)
+{
+} 
+
+bool IS_free_save_Mp3(uint32_t size)
+{
+    return true;
+}
+
+#endif
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */