--- /dev/null
+/**
+ * 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 */