From a1699bb5d079dd7f8573403050244fe2b9db65b4 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BD=AD=E7=A3=8A?= <1624952103@qq.com> Date: Mon, 7 Jul 2025 01:41:14 +0000 Subject: [PATCH] Merge #1933 into sdk602patch0911 from refs/changes/1933/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Code review from 彭磊 * refs/changes/1933/head: (8 commits squashed) - 优化血压测试流程(è¡¥) - Merge branch 'sdk602patch0911' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911 - 优化血压测试流程补 - 优化W9光电编码器响应 - 优化4G开关 - 优化4G开关(è¡¥) - 优化原像心率佩戴检测 - Merge branch 'sdk602patch0911' of https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230 into sdk602patch0911 Signed-off-by: aliyun6865282430 <1624952103@qq.com> Reviewed-by: Caisking <3449750381@qq.com> Reviewed-by: 罗正 <1732036298@qq.com> Reviewed-by: aliyun8003852482 <1224667075@qq.com> Reviewed-by: snickersun@163.com Reviewed-by: aliyun6865282430 <1624952103@qq.com> Reviewed-by: 薛文强 Merged-by: Caisking <3449750381@qq.com> CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1933 --- .../ppg/pah8009/sensor/pah800x_main.c | 46 +++++++------------ .../peripheral/rotary_encoder/mixo/mixo_hal.c | 2 +- .../rotary_encoder/mixo/mixo_ots_access.c | 8 ++-- .../rotary_encoder/mixo/mixo_ots_driver.c | 32 ++++++++++--- .../rotary_encoder/mixo/mixo_service.c | 10 ++-- .../drivers/peripheral/utils/custom_utils.c | 34 ++++++++++---- 6 files changed, 77 insertions(+), 55 deletions(-) diff --git a/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.c b/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.c index b1225c649..e5d067957 100644 --- a/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.c +++ b/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.c @@ -87,9 +87,7 @@ static osTimerId_t g_pah8009_timer = NULL; static uint8_t time_cnt = 0; -static uint8_t history_wear_status = 2; - -static uint8_t cywee_wear_status = 0; +static int history_wear_status = -1; //============================================================================ // Private function @@ -109,16 +107,6 @@ static void report_stress_data(const ppg_mems_data_t *ppg_mems_data_alg, uint8_t static void error_handle(void); -static void pah8009_wearstatus_update(void) -{ - if(history_wear_status != cywee_wear_status) - { - history_wear_status = cywee_wear_status; -#ifdef SUPPORT_CYWEE_SERVICE - do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_wear_status); -#endif - } -} static void pah8009_unwearstatus_update(void) { @@ -133,17 +121,24 @@ static void pah8009_unwearstatus_update(void) func(PPG_MSG_TYPE_WEARSTAT_UPDATE,&data,1); func(PPG_MSG_TYPE_WEARSTAT_UPDATE,&data,1); } +#endif +} - if(uapi_dev_runtime_get_train_status()) +static void pah8009_wearstatus_update(int wear_status) +{ + if(history_wear_status != wear_status) { - cywee_wear_status = 0; - pah8009_wearstatus_update(); + history_wear_status = wear_status; #ifdef SUPPORT_CYWEE_SERVICE - do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_CHANGE,&data); + do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,(uint8_t *)&history_wear_status); #endif } -#endif -} + + if(wear_status != 1) + { + pah8009_unwearstatus_update(); + } +} static void bubblesort(float *input,int count) { @@ -1325,16 +1320,7 @@ static void process(uint64_t timestamp) // PRINT("touch_flag : %d\n",touch_flag); -#ifdef SUPPORT_PPG_SERVICE - // ppg_msg_callback_t func = ppg_get_send_msg_callback_func(); - - // if(func != NULL) - // { - // uint8_t data = (uint8_t)touch_flag; - // cywee_wear_status = data; - // func(PPG_MSG_TYPE_WEARSTAT_UPDATE, &data, 1); - // } -#endif + pah8009_wearstatus_update(touch_flag); if (_main.ppg_is_enabled) { @@ -1688,7 +1674,7 @@ void pah8009_control(char *mode,uint8_t enable) pah_sensor_stop(); if(uapi_dev_runtime_get_sleep_monitoring_status() && uapi_dev_runtime_get_hrs_passivity_flag()) { - pah8009_wearstatus_update(); + pah8009_wearstatus_update(history_wear_status); uapi_dev_runtime_set_hrs_passivity(0); } } diff --git a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_hal.c b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_hal.c index 551e98e85..e4d7dcebb 100644 --- a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_hal.c +++ b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_hal.c @@ -24,7 +24,7 @@ void mixo_int_callback(pin_t pin, uintptr_t param) void mixo_check(void) { - if(mixo_get_check_mode() == TIMER_MODE) + // if(mixo_get_check_mode() == TIMER_MODE) mixo_ots_timer_callback(); // else if(mixo_get_check_mode() == INT_MODE) // { diff --git a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_access.c b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_access.c index 60782603f..58955adbf 100644 --- a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_access.c +++ b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_access.c @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2025-01-04 10:53:54 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2025-01-04 16:38:46 + * @LastEditTime: 2025-07-05 15:32:27 * @FilePath: /sdk615/code/sdk/zhihui/drivers/rotary_encoder/mixo/src/mixo_ots_access.c * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -37,7 +37,8 @@ int mixo_ots_reg_read(uint8_t regAddr, uint8_t* regData) *regData = 0x00; // 清空数据 // printf("<-%02X,%02X,%02X\r\n",slave_addr,regAddr,*regData); // return mixo_gpio_i2c_write_read(slave_addr, ®Addr, 1, regData, 1); - return custom_i2c_read_regs(slave_addr, regAddr, 1, regData, 1,MIXO_OTS_I2C_BUS); + custom_i2c_read_regs(slave_addr, regAddr, 1, regData, 1,MIXO_OTS_I2C_BUS); + return 0; } int mixo_ots_reg_consecutive_read(uint8_t regStartAddr,int len,uint8_t* regData) @@ -57,6 +58,7 @@ int mixo_ots_reg_write(uint8_t regAddr, uint8_t regData) // uint8_t tmp[2] = {regAddr, regData}; // printf("->%02X,%02X,%02X\r\n",slave_addr,regAddr,regData); // return mixo_gpio_i2c_write_read(slave_addr, tmp, 2, NULL, 0); - return custom_i2c_write_reg(slave_addr, regAddr, 1, ®Data, 1,MIXO_OTS_I2C_BUS); + custom_i2c_write_reg(slave_addr, regAddr, 1, ®Data, 1,MIXO_OTS_I2C_BUS); + return 0; } diff --git a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_driver.c b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_driver.c index be7f6998f..844e511eb 100644 --- a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_driver.c +++ b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_driver.c @@ -32,9 +32,9 @@ static void put_crown_result(int16_t x) { return; } - if(abs(x)>=16 ) + if(abs(x)>=8 ) { - ots_result += x/16; //大于4的值除以4, 代表角度, 单位0.5° + ots_result += x/8; //大于4的值除以4, 代表角度, 单位0.5° } else { @@ -52,12 +52,19 @@ static void put_crown_result(int16_t x) g_encoder_callback(); } +static void report_zero_data_for_start_stop_flag(void) +{ + ots_result = 0; + + if (g_encoder_callback != NULL) + g_encoder_callback(); +} void mixo_ots_timer_callback(void) { uint8_t mot_status = 0x00; mixo_ots_get_mot_status(&mot_status); - + // printf("mot_status:0x%x\n",mot_status); if ((mot_status & 0x80) == 0x80) { timer_cnt = 0; @@ -71,11 +78,19 @@ void mixo_ots_timer_callback(void) // printf("%ld,%d,%d,%d,%d\r\n", timestamp, raw_data.dx, raw_data.dy, mot_status, dx_sum); // PRINT("%d,%d,%d,%d\r\n",raw_data.dx, raw_data.dy, mot_status, dx_sum); - put_crown_result(raw_data.dx); + // ots_result = raw_data.dx; + + if (stand_still == 1) + { + //上次是静止,上报状态改变 + report_zero_data_for_start_stop_flag(); + } stand_still = 0; - if (g_encoder_callback != NULL) - g_encoder_callback(); + put_crown_result(raw_data.dx); + + // if (g_encoder_callback != NULL) + // g_encoder_callback(); } else @@ -92,6 +107,11 @@ void mixo_ots_timer_callback(void) // mixo_ots_forced_clear_int(); // 强制拉高MOT脚 // int_mode = 1; // } + if (stand_still == 0) + { + //上次是转动,上报状态改变 + report_zero_data_for_start_stop_flag(); + } stand_still = 1; } } diff --git a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_service.c b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_service.c index f9225cecc..ad62a5b46 100644 --- a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_service.c +++ b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_service.c @@ -19,7 +19,7 @@ */ #define MIXO_SERVICE_CMD_TIMER_CHECK 0x11 -#define MIXO_SERVICE_TIMER_CHECK_MS 30 +#define MIXO_SERVICE_TIMER_CHECK_MS 20 static bool g_mixo_service_initialled = false; @@ -53,7 +53,7 @@ void mixo_service_timer_stop(void) if(mixo_service_timer_running == true && g_mixo_service_timer) { mixo_suspend(); - mixo_clean_result(); + // mixo_clean_result(); osTimerStop(g_mixo_service_timer); mixo_service_timer_running = false; } @@ -118,7 +118,7 @@ void create_mixo_queue(void) } } -#define MIXO_BOARD_TASK_SIZE 0x500 +#define MIXO_BOARD_TASK_SIZE 0x1000 errcode_t uapi_mixo_service_init(void) { PRINT("uapi_mixo_service_init !\r\n"); @@ -134,7 +134,7 @@ errcode_t uapi_mixo_service_init(void) app_task_definition_t taskcfg={0}; taskcfg.create_queue_handle = create_mixo_queue; taskcfg.attr.name="mixo_service"; - taskcfg.attr.priority = osPriorityBelowNormal4; + taskcfg.attr.priority = osPriorityNormal1; taskcfg.attr.stack_size = MIXO_BOARD_TASK_SIZE; taskcfg.func = mixo_service_check_task; taskcfg.use_mem = USE_EXTEND_MEM; @@ -146,7 +146,7 @@ errcode_t uapi_mixo_service_init(void) return ERRCODE_FAIL; } - mixo_init(); + // mixo_init(); g_mixo_service_timer = osTimerNew((osTimerFunc_t)mixo_service_timer_callback, osTimerPeriodic, NULL, NULL); diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 3fab3d019..81e180f35 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -1430,10 +1430,10 @@ int uapi_callVolumeGet(void) void power_on_cat1(void) { - #if defined(FD230) && !(defined(BOARD_W9) || defined(BOARD_N9)) + #if defined(BOARD_FD230) uapi_cat1_power_on(1); uapi_cat1_reset(0); - #else + #elif (defined(BOARD_W9) || defined(BOARD_N9)) uapi_cat1_reset(0); uapi_cat1_power_on(1); uapi_cat1_bat_on(1); @@ -1445,10 +1445,10 @@ void power_on_cat1(void) void power_off_cat1(void) { - #if defined(FD230) && !(defined(BOARD_W9) || defined(BOARD_N9)) + #if defined(BOARD_FD230) uapi_cat1_reset(1); uapi_cat1_power_on(0); - #else + #elif (defined(BOARD_W9) || defined(BOARD_N9)) uapi_cat1_bat_on(0); uapi_cat1_reset(1); uapi_cat1_power_on(1); @@ -1466,6 +1466,13 @@ void uapi_set4GCapability(bool isopen) { return; } + + uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1); + if (cnt == 0) + { + uapi_pm_add_sleep_veto(PM_ID_CAT1); + } + uapi_save_runtime_log(RUNTIME_LOG_CAT1_4G_OPEN); power_on_cat1(); // if(!uapi_dev_runtime_get_saveele_status()) @@ -1487,6 +1494,12 @@ void uapi_set4GCapability(bool isopen) } #endif + + cnt = pm_veto_get_id_cnt(PM_ID_CAT1); + if (cnt == 1) + { + uapi_pm_remove_sleep_veto(PM_ID_CAT1); + } } else { @@ -1503,12 +1516,6 @@ void uapi_set4GCapability(bool isopen) /*4G 开电有时有干扰进日志串口,因此关闭4G才开启日志串口*/ // uapi_custom_set_uart_rx_enable_flag(true); - uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1); - if (cnt == 1) - { - uapi_pm_remove_sleep_veto(PM_ID_CAT1); - } - #ifdef SUPPORT_TCPIP tcp_thread_id = tcp_get_thread_id(); if(tcp_thread_id != NULL) @@ -1520,6 +1527,13 @@ void uapi_set4GCapability(bool isopen) PRINT("tcpip_thread_suspend succed\n"); } #endif + + uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1); + if (cnt == 1) + { + uapi_pm_remove_sleep_veto(PM_ID_CAT1); + } + } } -- 2.17.1