From 846030804bf1f0f90eb504692b9cd10969eb2650 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Mon, 1 Jul 2024 19:50:54 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E5=BF=83=E7=8E=87=E6=A3=80?= =?utf8?q?=E6=B5=8B=20=E7=9D=A1=E7=9C=A0=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../include/AlarmClockTimerConfig.h | 1 + .../src/AlarmClockTimerConfig.cpp | 428 +++++++++++------- .../nativeui/rtcservice/src/rtc_at_cmd.cpp | 12 - .../service/ble_service/blemoder/bletest.cpp | 5 +- .../peripheral/config/include/ConfigModelC.h | 3 + 5 files changed, 261 insertions(+), 188 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/include/AlarmClockTimerConfig.h b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/include/AlarmClockTimerConfig.h index b799dcb46..978755cbc 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/include/AlarmClockTimerConfig.h +++ b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/include/AlarmClockTimerConfig.h @@ -67,6 +67,7 @@ int32_t SetZeroAlarm(void); int32_t SetAlarm(AlarmType type, uint8_t week, uint8_t hour, uint8_t minute); int32_t AlarmGetCurrentTimeInfo(struct tm *timeInfo); void set_sleep_and_wake_time(void); +void get_sleep_time_notify(void); #ifdef __cplusplus } #endif diff --git a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp index 935aa7abe..3779fb4b8 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp @@ -1,3 +1,9 @@ +/*** + * @Date: 2024-06-29 15:06:13 + * @LastEditors: Caisking 3449750381@qq.com + * @LastEditTime: 2024-07-01 17:31:58 + * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp + */ /* * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved. * Description: AlarmClockTimer @@ -19,215 +25,287 @@ #include "AlarmClockTimerConfig.h" #include "cywee_service.h" #include "ConfigModelC.h" +#include "ConfigModel.h" +#include "heartrate/include/HeartModel.h" #ifdef __cplusplus -extern "C" { +extern "C" +{ #endif -static AlarmCtrl g_alarmCtrA; -static AlarmCtrl g_alarmCtrB; -static osTimerId_t g_AlarmHandle = nullptr; + static AlarmCtrl g_alarmCtrA; + static AlarmCtrl g_alarmCtrB; + static osTimerId_t g_AlarmHandle = nullptr; -static int sleep_time = 0; -static int wake_up_time = 0; +#define SLEPPNOTIFY 20 -void set_sleep_and_wake_time(void) -{ - sleep_time = get_sleep_time_from_config_model(); - wake_up_time = get_wake_up_time_from_config_model(); -} + static int sleep_time = 0; + static int wake_up_time = 0; + static int sleep_time_hour = 0; + static int sleep_time_min = 0; -void AlarmTimerEventPublish(uint16 topic, AlarmClockEventData data) -{ - int32 ret; - uint32 size = sizeof(AlarmClockEventData); - Request *request = nullptr; - BroadcastApi *broadcastApi = nullptr; - IUnknown *api = nullptr; - - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish topic=%u!!", topic); - - /* alloc request */ - request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, BROADCAST_SVR_ID, size); - if (request == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SAMGR_AllocRequestMsg failed"); - return; - } - request->msgId = topic; - ret = memcpy_s(request->data, size, (const void *)&data, size); - if (ret != EOK) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish memcpy_s rateDataTmp fail! ret = %d", ret); - return; - } - request->len = size; - request->msgValue = 0; - - /* public request */ - api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME); - if (api == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed"); - SAMGR_FreeRequestMsg(request); - return; + // 设置目标睡眠时间 + void set_sleep_and_wake_time(void) + { + sleep_time = get_sleep_time_from_config_model(); + wake_up_time = get_wake_up_time_from_config_model(); } - ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi); - if (ret != 0 || broadcastApi == nullptr) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed"); - SAMGR_FreeRequestMsg(request); - return; + // 设置睡眠提醒时间 + void get_sleep_time_notify(void) + { + int goal_hour = sleep_time >> 16; + int goal_min = (sleep_time & 0X00FF); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "goal_hour:%d goal_min:%d", goal_hour, goal_min); + if ((goal_min - SLEPPNOTIFY) >= 0) + { + sleep_time_hour = goal_hour; + sleep_time_min = goal_min - SLEPPNOTIFY; + } + else + { + sleep_time_hour = goal_hour - 1; + sleep_time_min = goal_min - SLEPPNOTIFY + 60; + } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sleep_time_hour:%d sleep_time_min:%d", sleep_time_hour, sleep_time_min); } - broadcastApi->PublishTopic((IUnknown *)broadcastApi, request); - broadcastApi->Release((IUnknown *)broadcastApi); - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish end!!"); - - return; -} - -static void AlarmCallBackProcA(void) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcA"); - AlarmClockEventData unuse; - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(AlarmTimerEventPublish, TOPIC_EVENT_ALARM_RING, unuse)); -} + void AlarmTimerEventPublish(uint16 topic, AlarmClockEventData data) + { + int32 ret; + uint32 size = sizeof(AlarmClockEventData); + Request *request = nullptr; + BroadcastApi *broadcastApi = nullptr; + IUnknown *api = nullptr; -static void AlarmCallBackProcB(void) -{ - AlarmClockEventData unuse; - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcB"); - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(AlarmTimerEventPublish, TOPIC_EVENT_NEXTDAY_UPDATE, unuse)); - GraphicService::GetInstance()->PostGraphicEvent(SetZeroAlarm); -} + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish topic=%u!!", topic); -static void on_time_CallBackProc(void) -{ - AlarmClockEventData unuse; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "on_time_CallBackProc"); - GraphicService::GetInstance()->PostGraphicEvent( - std::bind(AlarmTimerEventPublish, TOPIC_EVENT_ON_TIME, unuse)); -} + /* alloc request */ + request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, BROADCAST_SVR_ID, size); + if (request == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SAMGR_AllocRequestMsg failed"); + return; + } + request->msgId = topic; + ret = memcpy_s(request->data, size, (const void *)&data, size); + if (ret != EOK) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish memcpy_s rateDataTmp fail! ret = %d", ret); + return; + } + request->len = size; + request->msgValue = 0; + /* public request */ + api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME); + if (api == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed"); + SAMGR_FreeRequestMsg(request); + return; + } + ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi); + if (ret != 0 || broadcastApi == nullptr) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed"); + SAMGR_FreeRequestMsg(request); + return; + } + broadcastApi->PublishTopic((IUnknown *)broadcastApi, request); + broadcastApi->Release((IUnknown *)broadcastApi); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish end!!"); -void AlarmScan(void *arg) -{ - struct tm curTime; - int32_t ret = AlarmGetCurrentTimeInfo(&curTime); - if (ret != ERRCODE_SUCC) { return; } - if (g_alarmCtrA.state == ALARM_STATUS_RUNNING) { - if ((g_alarmCtrA.callback != nullptr) && - (g_alarmCtrA.info.hour == curTime.tm_hour) && - (g_alarmCtrA.info.minute == curTime.tm_min)) { - g_alarmCtrA.callback(); - g_alarmCtrA.state = ALARM_STATUS_CREATED; - } + static void AlarmCallBackProcA(void) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcA"); + AlarmClockEventData unuse; + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(AlarmTimerEventPublish, TOPIC_EVENT_ALARM_RING, unuse)); } - if (g_alarmCtrB.state == ALARM_STATUS_RUNNING) { - if ((g_alarmCtrB.callback != NULL) && - //(g_alarmCtrB.info.week == curTime.tm_wday) && - (g_alarmCtrB.info.hour == curTime.tm_hour) && - (g_alarmCtrB.info.minute == curTime.tm_min) && - (g_alarmCtrB.info.second == curTime.tm_sec)) { - g_alarmCtrB.callback(); - g_alarmCtrB.state = ALARM_STATUS_CREATED; - } - } - if(curTime.tm_min==0 && curTime.tm_sec==0) + static void AlarmCallBackProcB(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "time: %d : %d",curTime.tm_hour,curTime.tm_min); - on_time_CallBackProc(); + AlarmClockEventData unuse; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmCallBackProcB"); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(AlarmTimerEventPublish, TOPIC_EVENT_NEXTDAY_UPDATE, unuse)); + GraphicService::GetInstance()->PostGraphicEvent(SetZeroAlarm); } - else if(curTime.tm_hour == ( ( sleep_time & 0XFF00) >> 16 ) && curTime.tm_min == ( sleep_time & 0X00FF )) + + static void on_time_CallBackProc(void) { - do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SLEEPING_MODE,NULL); + AlarmClockEventData unuse; + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "on_time_CallBackProc"); + GraphicService::GetInstance()->PostGraphicEvent( + std::bind(AlarmTimerEventPublish, TOPIC_EVENT_ON_TIME, unuse)); } - else if(curTime.tm_hour == ( ( wake_up_time & 0XFF00) >> 16 ) && curTime.tm_min == ( wake_up_time & 0X00FF )) + + void AlarmScan(void *arg) { - do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE,NULL); - } -} + struct tm curTime; + int32_t ret = AlarmGetCurrentTimeInfo(&curTime); + if (ret != ERRCODE_SUCC) + { + return; + } -static int32_t AlarmCreate(AlarmCtrl *alarmCtrl, AlarmCallBack callback) -{ - if (alarmCtrl == nullptr) { - return ERRCODE_FAIL; - } - if (alarmCtrl->state == ALARM_STATUS_UNUSED) { - alarmCtrl->state = ALARM_STATUS_CREATED; - alarmCtrl->callback = callback; - } - return ERRCODE_SUCC; -} + if (g_alarmCtrA.state == ALARM_STATUS_RUNNING) + { + if ((g_alarmCtrA.callback != nullptr) && + (g_alarmCtrA.info.hour == curTime.tm_hour) && + (g_alarmCtrA.info.minute == curTime.tm_min)) + { + g_alarmCtrA.callback(); + g_alarmCtrA.state = ALARM_STATUS_CREATED; + } + } -int32_t AlarmTimerInit(void) -{ - int32_t timerStatus; - int32_t ret; - - g_alarmCtrA.state = ALARM_STATUS_UNUSED; - g_alarmCtrB.state = ALARM_STATUS_UNUSED; - g_AlarmHandle = osTimerNew(AlarmScan, osTimerPeriodic, nullptr, nullptr); - if (g_AlarmHandle == nullptr) { - return ERRCODE_FAIL; - } - timerStatus = osTimerStart(g_AlarmHandle, ALARM_INTERVAL_MS); - if (timerStatus != osOK) { - return ERRCODE_FAIL; + if (g_alarmCtrB.state == ALARM_STATUS_RUNNING) + { + if ((g_alarmCtrB.callback != NULL) && + //(g_alarmCtrB.info.week == curTime.tm_wday) && + (g_alarmCtrB.info.hour == curTime.tm_hour) && + (g_alarmCtrB.info.minute == curTime.tm_min) && + (g_alarmCtrB.info.second == curTime.tm_sec)) + { + g_alarmCtrB.callback(); + g_alarmCtrB.state = ALARM_STATUS_CREATED; + } + } + // 整点回调 + if (curTime.tm_min == 0 && curTime.tm_sec == 0) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "time: %d : %d", curTime.tm_hour, curTime.tm_min); + on_time_CallBackProc(); + } + // 进入睡眠模式 + if (curTime.tm_hour == ((sleep_time >> 16) && curTime.tm_min == (sleep_time & 0X00FF))) + { + do_cywee_service_check_msg(CYWEE_SERVICE_CMD_SLEEPING_MODE, NULL); + } + // 退出睡眠模式 + if (curTime.tm_hour == ((wake_up_time >> 16) && curTime.tm_min == (wake_up_time & 0X00FF))) + { + do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE, NULL); + } + // 睡眠提醒[前提开启睡眠提醒] + if (OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_REMIND)) + { + // 提醒一次 + if (curTime.tm_hour == sleep_time_hour && curTime.tm_min == sleep_time_min && curTime.tm_sec == 0) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "It's bedtime in 20 minutes"); + printf("20分钟后要睡觉啦!\r\n"); + } + } + // 早安提醒[前提开启睡眠提醒] + + // 心率周期检测 [0 1 5 10] + if (OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED)) + { + if (curTime.tm_min % (OHOS::ConfigModel::GetInstance()->get_configData_int(OHOS::ConfigModel::CONFIGMODEL_ITEM_HEARTRATE_DETECTED)) == 0 && curTime.tm_sec == 0) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Automatic heart rate detection starts"); + // 开启心率检测 如果有其他心率检测在进行,则不会进行检测[低优先级] + OHOS::HeartModel::GetInstance()->Heart_Control(OHOS::HeartState::Start, OHOS::HeartCheck::PASSIVITY); + } + } } - ret = AlarmCreate(&g_alarmCtrA, AlarmCallBackProcA); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; + + static int32_t AlarmCreate(AlarmCtrl *alarmCtrl, AlarmCallBack callback) + { + if (alarmCtrl == nullptr) + { + return ERRCODE_FAIL; + } + if (alarmCtrl->state == ALARM_STATUS_UNUSED) + { + alarmCtrl->state = ALARM_STATUS_CREATED; + alarmCtrl->callback = callback; + } + return ERRCODE_SUCC; } - ret = AlarmCreate(&g_alarmCtrB, AlarmCallBackProcB); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; + + int32_t AlarmTimerInit(void) + { + int32_t timerStatus; + int32_t ret; + + g_alarmCtrA.state = ALARM_STATUS_UNUSED; + g_alarmCtrB.state = ALARM_STATUS_UNUSED; + g_AlarmHandle = osTimerNew(AlarmScan, osTimerPeriodic, nullptr, nullptr); + if (g_AlarmHandle == nullptr) + { + return ERRCODE_FAIL; + } + timerStatus = osTimerStart(g_AlarmHandle, ALARM_INTERVAL_MS); + if (timerStatus != osOK) + { + return ERRCODE_FAIL; + } + ret = AlarmCreate(&g_alarmCtrA, AlarmCallBackProcA); + if (ret != ERRCODE_SUCC) + { + return ERRCODE_FAIL; + } + ret = AlarmCreate(&g_alarmCtrB, AlarmCallBackProcB); + if (ret != ERRCODE_SUCC) + { + return ERRCODE_FAIL; + } + set_sleep_and_wake_time(); + get_sleep_time_notify(); + return ERRCODE_SUCC; } - set_sleep_and_wake_time(); - return ERRCODE_SUCC; -} -int32_t SetAlarm(AlarmType type, uint8_t week, uint8_t hour, uint8_t minute) -{ - WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetAlarm %d %d %d %d", type, week, hour, minute); - if (type == ALARM_A) { - g_alarmCtrA.state = ALARM_STATUS_RUNNING; - g_alarmCtrA.info.hour = hour; - g_alarmCtrA.info.minute = minute; - } else if (type == ALARM_B) { - g_alarmCtrB.state = ALARM_STATUS_RUNNING; - g_alarmCtrB.info.week = week; - g_alarmCtrB.info.hour = hour; - g_alarmCtrB.info.minute = minute; - g_alarmCtrB.info.second = 1; - } else { - return ERRCODE_FAIL; + int32_t SetAlarm(AlarmType type, uint8_t week, uint8_t hour, uint8_t minute) + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetAlarm %d %d %d %d", type, week, hour, minute); + if (type == ALARM_A) + { + g_alarmCtrA.state = ALARM_STATUS_RUNNING; + g_alarmCtrA.info.hour = hour; + g_alarmCtrA.info.minute = minute; + } + else if (type == ALARM_B) + { + g_alarmCtrB.state = ALARM_STATUS_RUNNING; + g_alarmCtrB.info.week = week; + g_alarmCtrB.info.hour = hour; + g_alarmCtrB.info.minute = minute; + g_alarmCtrB.info.second = 1; + } + else + { + return ERRCODE_FAIL; + } + return ERRCODE_SUCC; } - return ERRCODE_SUCC; -} -int32_t SetZeroAlarm(void) -{ - struct tm curTime; - int32_t ret = AlarmGetCurrentTimeInfo(&curTime); - if (ret != ERRCODE_SUCC) { - return ERRCODE_FAIL; + int32_t SetZeroAlarm(void) + { + struct tm curTime; + int32_t ret = AlarmGetCurrentTimeInfo(&curTime); + if (ret != ERRCODE_SUCC) + { + return ERRCODE_FAIL; + } + int32_t weekday = (++curTime.tm_wday) % 7; + return SetAlarm(ALARM_B, weekday, 0, 0); } - int32_t weekday = (++curTime.tm_wday) % 7; - return SetAlarm(ALARM_B, weekday, 0, 0); -} -int32_t AlarmGetCurrentTimeInfo(struct tm *timeInfo) -{ - if (timeInfo == nullptr) { - return ERRCODE_FAIL; + int32_t AlarmGetCurrentTimeInfo(struct tm *timeInfo) + { + if (timeInfo == nullptr) + { + return ERRCODE_FAIL; + } + time_t sec = time(nullptr); + localtime_r(&sec, timeInfo); + return ERRCODE_SUCC; } - time_t sec = time(nullptr); - localtime_r(&sec, timeInfo); - return ERRCODE_SUCC; -} #ifdef __cplusplus } diff --git a/code/sdk/application/wearable/fd230app/nativeui/rtcservice/src/rtc_at_cmd.cpp b/code/sdk/application/wearable/fd230app/nativeui/rtcservice/src/rtc_at_cmd.cpp index 1ae2202be..c38fb8d93 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/rtcservice/src/rtc_at_cmd.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/rtcservice/src/rtc_at_cmd.cpp @@ -97,22 +97,10 @@ extern "C" } return ERRCODE_SUCC; } - static uint32_t rtc_restore_factory_settings(uint8_t *para, uint32_t paraLen, char *strCommonCmd) - { - UNUSED(para); - UNUSED(paraLen); - UNUSED(strCommonCmd); - - // 执行恢复出厂设置的操作 - uapi_restore_factory_setting(); - PRINT("Restoring Factory Settings...\n"); - return ERRCODE_SUCC; - } static const at_cmd_table_t g_rtc_cmd[] = { {(char *)"AT^RTCTEST", rtc_do_test, (char *)"enable"}, - {(char *)"AT^RESTORE", rtc_restore_factory_settings, NULL}, }; at_cmd_table_t *get_rtc_cmd_table(uint32_t *cmd_count) diff --git a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp index ac646ef41..1055a74e8 100644 --- a/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp +++ b/code/sdk/application/wearable/service/ble_service/blemoder/bletest.cpp @@ -32,6 +32,7 @@ #endif #include "AlmmgrAlarmClockManage.h" +#include "AlarmClockTimerConfig.h" #include "AlarmClockManage.h" #include "SetDialModel.h" @@ -393,7 +394,9 @@ void ble_set_sleep_remind(msg_get_sleep_param_info_t data) p_ConfigModel->set_condigData_Int(OHOS::ConfigModel::CONFIGMODEL_ITEM_SLEEP_REMIND,data.bedtime_alarm); //更新睡眠配置 - OHOS:: SleepModel::GetInstance().set_sleep_goal(); + OHOS::SleepModel::GetInstance().set_sleep_goal(); + set_sleep_and_wake_time(); + get_sleep_time_notify(); } return; } diff --git a/code/sdk/drivers/peripheral/config/include/ConfigModelC.h b/code/sdk/drivers/peripheral/config/include/ConfigModelC.h index ad22bc2cd..dbcd21222 100644 --- a/code/sdk/drivers/peripheral/config/include/ConfigModelC.h +++ b/code/sdk/drivers/peripheral/config/include/ConfigModelC.h @@ -98,6 +98,9 @@ void get_user_info_from_config_model(int user_info[5]); int get_sleep_time_from_config_model(void); int get_wake_up_time_from_config_model(void); +//设置睡眠频率 +void set_config_heart(int heartRateDetectionFreq); + #ifdef __cplusplus #if __cplusplus } -- 2.17.1