From d014ac8a6dbd3f3e13f33da368b9144b304d7ce8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=A2=81=E6=B8=85=E6=A2=A6?= <3449750381@qq.com> Date: Wed, 2 Oct 2024 09:09:17 +0000 Subject: [PATCH] Merge #1079 into sdk602patch0626 from refs/changes/1079/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Code review from 袁清梦 * refs/changes/1079/head: (7 commits squashed) - 语言助手:增加subview的右滑退出 - 心率血氧:关机存储修改为测量完存储 - 心率血氧:同步关闭函数修改 - 系统:增加读写锁状态(由各模块存储决定状态) - 系统:修改Slice栈;保证里面保留默认SliceId - 血氧:增加读写锁状态 - 心率:增加读写锁状态 Signed-off-by: Caisking <3449750381@qq.com> Reviewed-by: snickersun@163.com Merged-by: snickersun@163.com CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1079 --- .../assistant/src/AssistantBleView.cpp | 9 + .../assistant/src/AssistantHfpView.cpp | 10 + .../assistant/src/AssistantPresenter.cpp | 16 +- .../src/AssistantStartFailedView.cpp | 10 + .../health_service/health_service.cpp | 257 +++++++++++------- .../nativeabilityfwk/include/Ability.h | 12 +- .../drivers/peripheral/utils/custom_runtime.c | 63 +++++ .../drivers/peripheral/utils/custom_runtime.h | 33 +++ .../drivers/peripheral/utils/custom_utils.c | 4 +- 9 files changed, 302 insertions(+), 112 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantBleView.cpp b/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantBleView.cpp index 7deda1508..c9015843e 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantBleView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantBleView.cpp @@ -225,6 +225,15 @@ UIScrollView *AssistantBleView::CreateAssistantBleView(void) { scrollView->SetThrowDrag(true); scrollView->SetMaxScrollDistance(1000); scrollView->SetDirection(UIScrollView::VERTICAL); + // 设置拖拽监听器 + UIView::OnDragListener *dragListener = + static_cast(AssistantPresenter::GetInstance()); + if (!dragListener) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "AssistantPresenter::获取实例失败!"); + return nullptr; // 获取失败,返回空指针 + } + scrollView->SetOnDragListener(dragListener); /* --------------------------------- 获取蓝牙名称* * --------------------------------- */ diff --git a/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantHfpView.cpp b/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantHfpView.cpp index ec8558a3a..0973f07fe 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantHfpView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantHfpView.cpp @@ -225,6 +225,7 @@ UIScrollView *AssistantHfpView::CreateAssistantHfpView(void) { scrollView->SetViewId(ASSISTANT_HFP_BLE); scrollView->SetReboundSize(35); scrollView->SetDirection(UIScrollView::VERTICAL); + //设置页面点击监听器 UIView::OnClickListener *buttonClick = static_cast(AssistantPresenter::GetInstance()); if (buttonClick == nullptr) { @@ -232,6 +233,15 @@ UIScrollView *AssistantHfpView::CreateAssistantHfpView(void) { return nullptr; } scrollView->SetOnClickListener(buttonClick); + // 设置拖拽监听器 + UIView::OnDragListener *dragListener = + static_cast(AssistantPresenter::GetInstance()); + if (!dragListener) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "AssistantPresenter::获取实例失败!"); + return nullptr; // 获取失败,返回空指针 + } + scrollView->SetOnDragListener(dragListener); if (!CreateAssistantHfpViewLabel() || !CreateAssistantHfpViewImage() || !CreateAssistantHfpViewButton()) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantPresenter.cpp index 00cc44151..7860d80e7 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantPresenter.cpp @@ -53,11 +53,25 @@ bool AssistantPresenter::OnDrag(UIView &view, const DragEvent &event) { if (&view == p_AssistantView->GetAssistantScrollView(ASSISTANT_MAIN_VIEW)) { NativeAbility::GetInstance().Back(); } + /*在其他界面返回主界面*/ if (&view == p_AssistantView->GetAssistantScrollView(ASSISTANT_ANSWER_VIEW)) { p_AssistantView->ChangeView(ASSISTANT_ANSWER_VIEW, ASSISTANT_MAIN_VIEW); } - /*在其他界面返回主界面*/ + if (&view == + p_AssistantView->GetAssistantScrollView(ASSISTANT_HFP_FAIL_VIEW)) { + p_AssistantView->ChangeView(ASSISTANT_HFP_FAIL_VIEW, ASSISTANT_MAIN_VIEW); + } + if (&view == + p_AssistantView->GetAssistantScrollView(ASSISTANT_BLE_NOTE_VIEW)) { + p_AssistantView->ChangeView(ASSISTANT_BLE_NOTE_VIEW, + ASSISTANT_HFP_FAIL_VIEW); + } + if (&view == + p_AssistantView->GetAssistantScrollView(ASSISTANT_START_FAILED_VIEW)) { + p_AssistantView->ChangeView(ASSISTANT_START_FAILED_VIEW, + ASSISTANT_MAIN_VIEW); + } } return true; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantStartFailedView.cpp b/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantStartFailedView.cpp index 0c57528c6..bf2b3ce55 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantStartFailedView.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/assistant/src/AssistantStartFailedView.cpp @@ -52,6 +52,16 @@ UIScrollView *AssistantStartFailedView::CreateAssistantStartFailedView(void) { scrollView->SetScrollBlankSize(50); scrollView->SetReboundSize(35); scrollView->SetDirection(UIScrollView::VERTICAL); + // 设置拖拽监听器 + UIView::OnDragListener *dragListener = + static_cast( + AssistantPresenter::GetInstance()); + if (!dragListener) { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, + "AssistantPresenter::获取实例失败!"); + return nullptr; // 获取失败,返回空指针 + } + scrollView->SetOnDragListener(dragListener); /* ----------------------- ImageView ---------------------- */ ImageView = new UIImageView(); if (ImageView == nullptr) { diff --git a/code/sdk/application/wearable/fd230app/nativeui/heart_blood/health_service/health_service.cpp b/code/sdk/application/wearable/fd230app/nativeui/heart_blood/health_service/health_service.cpp index 4067f5226..3024db358 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/heart_blood/health_service/health_service.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/heart_blood/health_service/health_service.cpp @@ -6,16 +6,21 @@ #include #include "kv_store.h" #include "custom_utils.h" +#include "custom_runtime.h" #include #include #include #include #include "heartrate/include/HeartModel.h" #include "bloodoxygen/include/BloodOxygenModel.h" + namespace OHOS { extern "C" { + void uapi_dev_runtime_set_bloodoxygen_storage_status(uint8_t status); + void uapi_dev_runtime_set_heartrate_storage_status(uint8_t status); + void save_heart_data() { printf("save_heart_data\r\n"); @@ -275,134 +280,180 @@ namespace OHOS cJSON_Delete(heart_root); return data; } + // 保存血氧数据 - bool HealthService::UpdateHealthData(const BloodOxygenData &data) - { - // 判断文件夹是否存在 - if (!CreateHealthFolder()) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file"); - return false; - } + bool HealthService::UpdateHealthData(const BloodOxygenData &data) + { + // 配置血氧存储状态 + uapi_dev_runtime_set_bloodoxygen_storage_status(1); - // 判断文件是否存在 不存在即创建 并打开以输出模式 - std::ofstream outFile(BLOOD_JSON_PATH, std::ios::trunc); - if (!outFile.is_open()) - { - // 文件创建失败 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create or open JSON file for writing"); - return false; - } + // 判断文件夹是否存在 + if (!CreateHealthFolder()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file"); + uapi_dev_runtime_set_bloodoxygen_storage_status(0); // 恢复状态 + return false; + } - // 创建一个 JSON 对象 - cJSON *oxygen_root = cJSON_CreateObject(); - if (oxygen_root == NULL) - { - outFile.close(); - return false; - } + // 判断文件是否存在,不存在即创建并打开以输出模式 + std::ofstream outFile(BLOOD_JSON_PATH, std::ios::trunc); + if (!outFile.is_open()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create or open JSON file for writing"); + uapi_dev_runtime_set_bloodoxygen_storage_status(0); // 恢复状态 + return false; + } - cJSON_AddItemToObject(oxygen_root, "value", cJSON_CreateNumber(data.SPO2)); - cJSON_AddItemToObject(oxygen_root, "timestamp", cJSON_CreateNumber(data.timestamp)); + // 创建一个 JSON 对象 + cJSON *oxygen_root = cJSON_CreateObject(); + if (oxygen_root == NULL) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create JSON object"); + outFile.close(); + uapi_dev_runtime_set_bloodoxygen_storage_status(0); // 恢复状态 + return false; + } - char *jsonData = cJSON_Print(oxygen_root); - if (jsonData == NULL) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to generate JSON data"); - cJSON_free(oxygen_root); - outFile.close(); - return false; - } + cJSON_AddItemToObject(oxygen_root, "value", cJSON_CreateNumber(data.SPO2)); + cJSON_AddItemToObject(oxygen_root, "timestamp", cJSON_CreateNumber(data.timestamp)); - // 写入 JSON 数据到文件 - outFile << jsonData; + char *jsonData = cJSON_Print(oxygen_root); + if (jsonData == NULL) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to generate JSON data"); + cJSON_Delete(oxygen_root); // 释放内存 + outFile.close(); + uapi_dev_runtime_set_bloodoxygen_storage_status(0); // 恢复状态 + return false; + } - cJSON_free(oxygen_root); - free(jsonData); - outFile.close(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData SPO2 JSON is ok"); + // 写入 JSON 数据到文件 + outFile << jsonData; - /* 存储bin文件[协议使用] */ - std::string binFilePath = GetBinFilePath(HEALTH_TYPE_OXYGEN); - FILE *fp = fopen(binFilePath.c_str(), "ab+"); - if (fp == NULL) - { - return false; - } + // 释放资源 + cJSON_Delete(oxygen_root); + free(jsonData); + outFile.close(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData SPO2 JSON is ok"); + + /* 存储bin文件[协议使用] */ + std::string binFilePath = GetBinFilePath(HEALTH_TYPE_OXYGEN); + FILE *fp = fopen(binFilePath.c_str(), "ab+"); + if (fp == NULL) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open binary file for writing"); + uapi_dev_runtime_set_bloodoxygen_storage_status(0); // 恢复状态 + return false; + } - fwrite(&data.timestamp, 4, 1, fp); - fwrite(&data.SPO2, 1, 1, fp); + // 写入数据 + if (fwrite(&data.timestamp, sizeof(data.timestamp), 1, fp) != 1 || + fwrite(&data.SPO2, sizeof(data.SPO2), 1, fp) != 1) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to write data to binary file"); + fclose(fp); + uapi_dev_runtime_set_bloodoxygen_storage_status(0); // 恢复状态 + return false; + } - fclose(fp); + fclose(fp); - return true; + + uapi_dev_runtime_set_bloodoxygen_storage_status(0); // 恢复状态 + return true; } - // 存储心率 - bool HealthService::UpdateHealthData(const HeartRateData &data) - { - // 判断文件夹是否存在 - if (!CreateHealthFolder()) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file"); - return false; - } + //存储心率 + bool HealthService::UpdateHealthData(const HeartRateData &data) + { + // 配置心率存储状态 + uapi_dev_runtime_set_heartrate_storage_status(1); - // 判断文件是否存在 不存在即创建 并打开以输出模式 - std::ofstream outFile(HEART_JSON_PATH, std::ios::trunc); - if (!outFile.is_open()) - { - // 文件创建失败 - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create or open JSON file for writing"); - return false; - } + // 判断文件夹是否存在 + if (!CreateHealthFolder()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateHealthFolder file"); + uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态 + return false; + } - // 创建一个 JSON 对象 - cJSON *heart_root = cJSON_CreateObject(); - if (heart_root == NULL) - { - outFile.close(); - return false; - } + // 判断文件是否存在,不存在即创建并打开以输出模式 + std::ofstream outFile(HEART_JSON_PATH, std::ios::trunc); + if (!outFile.is_open()) + { + // 文件创建失败 + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to create or open JSON file for writing"); + uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态 + return false; + } + + // 创建一个 JSON 对象 + cJSON *heart_root = cJSON_CreateObject(); + if (heart_root == NULL) + { + outFile.close(); + uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态 + return false; + } - cJSON_AddItemToObject(heart_root, "value", cJSON_CreateNumber(data.Heart)); - cJSON_AddItemToObject(heart_root, "timestamp", cJSON_CreateNumber(data.timestamp)); + cJSON_AddItemToObject(heart_root, "value", cJSON_CreateNumber(data.Heart)); + cJSON_AddItemToObject(heart_root, "timestamp", cJSON_CreateNumber(data.timestamp)); - char *jsonData = cJSON_Print(heart_root); - if (jsonData == NULL) - { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to generate JSON data"); - cJSON_free(heart_root); - outFile.close(); - return false; - } + char *jsonData = cJSON_Print(heart_root); + if (jsonData == NULL) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to generate JSON data"); + cJSON_Delete(heart_root); // 使用 cJSON_Delete 释放内存 + outFile.close(); + uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态 + return false; + } - // 写入 JSON 数据到文件 - outFile << jsonData; + // 写入 JSON 数据到文件 + outFile << jsonData; - cJSON_free(heart_root); - free(jsonData); - outFile.close(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData Heart JSON is ok"); + // 释放资源 + cJSON_Delete(heart_root); + free(jsonData); + outFile.close(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHealthData Heart JSON is ok"); - // 写入文件到当天历史数据 + // 写入文件到当天历史数据 UpdateHourlyHeartRate(data.timestamp, data.Heart); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHourlyHeartRate is ok"); - /* 存储bin文件[协议使用] */ - std::string binFilePath = GetBinFilePath(HEALTH_TYPE_HEART); - FILE *fp = fopen(binFilePath.c_str(), "ab+"); - if (fp == NULL) - { - return false; - } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UpdateHourlyHeartRate is ok"); - fwrite(&data.timestamp, 4, 1, fp); - fwrite(&data.Heart, 1, 1, fp); + if (!SaveDailyHeartRate()) // 进行心率历史数据文件存储 + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SaveDailyHeartRate failed"); + uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态 + return false; + } - fclose(fp); + /* 存储 bin 文件 [协议使用] */ + std::string binFilePath = GetBinFilePath(HEALTH_TYPE_HEART); + FILE *fp = fopen(binFilePath.c_str(), "ab+"); + if (fp == NULL) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open binary file for writing"); + uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态 + return false; + } - return true; + // 写入数据 + if (fwrite(&data.timestamp, sizeof(data.timestamp), 1, fp) != 1 || + fwrite(&data.Heart, sizeof(data.Heart), 1, fp) != 1) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to write data to binary file"); + fclose(fp); + uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态 + return false; + } + + fclose(fp); + + uapi_dev_runtime_set_heartrate_storage_status(0); // 恢复状态 + return true; } // 清空健康数据 bool HealthService::CleanHealthData() diff --git a/code/sdk/application/wearable/nativeabilityfwk/include/Ability.h b/code/sdk/application/wearable/nativeabilityfwk/include/Ability.h index 56cea10b6..5db5bcd6c 100755 --- a/code/sdk/application/wearable/nativeabilityfwk/include/Ability.h +++ b/code/sdk/application/wearable/nativeabilityfwk/include/Ability.h @@ -92,11 +92,7 @@ public: /// @param priority 切换优先级 bool Back(const TransitionType transitionId = TransitionType::TRANSITION_INVALID, const uint16_t priority = gSliceDefaultPriority) { - /* - if (backStack_.empty()) { - backStack_.push(defaultSliceId_); // 将默认主界面的 ID 推入栈中 - } - */ + if (!backStack_.empty()) { uint16_t preSlice = backStack_.top(); backStack_.pop(); @@ -105,7 +101,8 @@ public: } else { - // 当backStack为空时,退回到defaultSliceId_ + backStack_.push(defaultSliceId_); // 将默认主界面的 ID 推入栈中 + // 退回到defaultSliceId_ ChangeSlice(defaultSliceId_, transitionId, priority); return false; // 返回false表示无前一个slice,退回到默认slice } @@ -182,6 +179,9 @@ public: { backStack_.pop(); } + if (backStack_.empty()) { + backStack_.push(defaultSliceId_); // 将默认主界面的 ID 推入栈中 + } } /*打印栈中元素*/ diff --git a/code/sdk/drivers/peripheral/utils/custom_runtime.c b/code/sdk/drivers/peripheral/utils/custom_runtime.c index 914c784e4..b59b37457 100644 --- a/code/sdk/drivers/peripheral/utils/custom_runtime.c +++ b/code/sdk/drivers/peripheral/utils/custom_runtime.c @@ -1,5 +1,6 @@ #include "custom_runtime.h" #include "chip_system_time.h" +#include @@ -86,6 +87,12 @@ typedef struct uint8_t repair_download_status;//升级下载状态 uint8_t hrs_passivity_status;//获取被动心率检测状态 uint8_t mmc_status; //是否为指南针页面 + //读写锁 + uint8_t rwlock_status;//手表状态(存储) + uint8_t lock_flag_training;//训练 + uint8_t lock_flag_heartrate;//心率 + uint8_t lock_flag_blood;//血氧 + } runtime_status_t; @@ -440,6 +447,62 @@ uint8_t uapi_dev_runtime_get_safemode_flag(void) return g_runtime.enter_safemode; } +//读写锁状态 +void uapi_dev_runtime_set_rwlock_status(uint8_t status) +{ + // 不能有set + // g_runtime.rwlock_status = status; +} +uint8_t uapi_dev_runtime_get_rwlock_status(void) +{ + //读写状态取决与所有的模块存储状态 + g_runtime.rwlock_status = 0; + if(g_runtime.lock_flag_training) + { + //运动存储 + g_runtime.rwlock_status = 1; + } + if(g_runtime.lock_flag_heartrate) + { + //心率存储 + g_runtime.rwlock_status = 1; + } + if(g_runtime.lock_flag_blood) + { + //血氧存储 + g_runtime.rwlock_status = 1; + } + return g_runtime.rwlock_status; +} +//设置运动存储 +void uapi_dev_runtime_set_train_storage_status(uint8_t status) +{ + g_runtime.lock_flag_training = status; +} +uint8_t uapi_dev_runtime_get_train_storage_status(void) +{ + return g_runtime.lock_flag_training; +} +//设置心率存储 +void uapi_dev_runtime_set_heartrate_storage_status(uint8_t status) +{ + g_runtime.lock_flag_heartrate = status; +} +uint8_t uapi_dev_runtime_get_heartrate_storage_status(void) +{ + return g_runtime.lock_flag_heartrate; +} +//设置血氧存储 +void uapi_dev_runtime_set_bloodoxygen_storage_status(uint8_t status) +{ + g_runtime.lock_flag_blood = status; +} +uint8_t uapi_dev_runtime_get_bloodoxygen_storage_status(void) +{ + return g_runtime.lock_flag_blood; +} +//后续还需要补充。。。 + // 设置被动心率检测状态 void uapi_dev_runtime_set_hrs_passivity(uint8_t status) { diff --git a/code/sdk/drivers/peripheral/utils/custom_runtime.h b/code/sdk/drivers/peripheral/utils/custom_runtime.h index 763edd629..358c2d3f7 100644 --- a/code/sdk/drivers/peripheral/utils/custom_runtime.h +++ b/code/sdk/drivers/peripheral/utils/custom_runtime.h @@ -109,6 +109,39 @@ uint8_t uapi_dev_runtime_get_checkres_status(void); void uapi_dev_runtime_set_repair_download_status(uint8_t status); uint8_t uapi_dev_runtime_get_repair_download_status(void); +/* + 读写锁状态 + 0 未锁定 + 1 锁定 +*/ +void uapi_dev_runtime_set_rwlock_status(uint8_t status); +uint8_t uapi_dev_runtime_get_rwlock_status(void); + +/* + 训练存储 + 0 未存储 + 1 正在存储 +*/ +void uapi_dev_runtime_set_train_storage_status(uint8_t status); +uint8_t uapi_dev_runtime_get_train_storage_status(void); + +/* + 心率存储 + 0 未存储 + 1 正在存储 +*/ +void uapi_dev_runtime_set_heartrate_storage_status(uint8_t status); +uint8_t uapi_dev_runtime_get_heartrate_storage_status(void); + +/* + 血氧存储 + 0 未存储 + 1 正在存储 +*/ +void uapi_dev_runtime_set_bloodoxygen_storage_status(uint8_t status); +uint8_t uapi_dev_runtime_get_bloodoxygen_storage_status(void); + + /*运动识别*/ void uapi_dev_runtime_set_motion_recognition_status(uint8_t status); uint8_t uapi_dev_runtime_get_motion_recognition_status(void); diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 9f5145393..5c5428918 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -200,9 +200,9 @@ void shutdown_reboot_prejobs_task(void) //ble_sos_data_save();//同步数据存储 //保存信息文件 - saveancsdata(); //接收到信息进行保存 + saveancsdata(); //接收到信息进行保存 暂时不修改 //保存当天心率数据 - save_heart_data();//测量完成保存 + // save_heart_data();//测量完成保存 //表盘配置 // dial_file_save(); -- 2.17.1