From 0f03eaba8e5ebc323567c15e236c607043566973 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BD=AD=E7=A3=8A?= <1624952103@qq.com> Date: Fri, 9 Jan 2026 09:14:04 +0000 Subject: [PATCH] Merge #3053 into fd272 from refs/changes/3053/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 自动清除UI历史睡眠时间戳 * refs/changes/3053/head: (2 commits squashed) - 自动清除UI历史睡眠时间戳 - 优化272心率突然掉0的情况(补) Signed-off-by: aliyun6865282430 <1624952103@qq.com> Merged-by: Caisking <3449750381@qq.com> CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/3053 --- code/sdk/zhihui/drivers/cywee/dml/cywee_dml.c | 2 + code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c | 41 ++++++++++++++----- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/code/sdk/zhihui/drivers/cywee/dml/cywee_dml.c b/code/sdk/zhihui/drivers/cywee/dml/cywee_dml.c index e20c5c58d..9ee3a7e80 100644 --- a/code/sdk/zhihui/drivers/cywee/dml/cywee_dml.c +++ b/code/sdk/zhihui/drivers/cywee/dml/cywee_dml.c @@ -343,6 +343,8 @@ static void clean_sleep_data(void) memset(status_file_path, 0, sizeof(status_file_path)); memset(dir_path, 0, sizeof(dir_path)); memset(nap_file_path, 0, sizeof(nap_file_path)); + memset(&ui_nap_data, 0, sizeof(ui_nap_data)); + memset(&ui_sleep_data, 0, sizeof(ui_nap_data)); wake_up_flag = 0; } diff --git a/code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c b/code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c index 3ae5fc629..4ba09374d 100644 --- a/code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c +++ b/code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c @@ -368,7 +368,7 @@ uint16_t hx3695_read_fifo_data(ppg_sensor_data_t *ppg_sensor_dat) uint16_t fifo_read_length = 0; uint16_t fifo_read_bytes = 0; uint16_t fifo_out_count = 0; - + uint8_t retry_cnt = 0; data_len_h = hx3695_read_reg(0x21); data_len_l = hx3695_read_reg(0x20); fifo_data_length = (((data_len_h&0x01)<<8)|data_len_l); @@ -388,13 +388,23 @@ uint16_t hx3695_read_fifo_data(ppg_sensor_data_t *ppg_sensor_dat) // printf("threshold : %d\n",threshold); - if(fifo_data_length > threshold) - { - data_len_h = hx3695_read_reg(0x21); - data_len_l = hx3695_read_reg(0x20); - fifo_data_length = (((data_len_h&0x01)<<8)|data_len_l); - // printf("222 fifo data length again %d %d %d\n", data_len_h, data_len_l, fifo_data_length); - } + if(fifo_data_length > threshold) + { + for(int i = 0 ; i < 3; i++) + { + data_len_h = hx3695_read_reg(0x21); + data_len_l = hx3695_read_reg(0x20); + fifo_data_length = (((data_len_h&0x01)<<8)|data_len_l); + // printf("222 fifo data length again %d %d %d\n", data_len_h, data_len_l, fifo_data_length); + if(fifo_data_length > threshold) + { + retry_cnt ++; + } + else + break; + } + } + if (fifo_data_length>FIFO_DATA_LENGTH) { @@ -417,6 +427,15 @@ uint16_t hx3695_read_fifo_data(ppg_sensor_data_t *ppg_sensor_dat) hx3695_get_led_para(ppg_sensor_dat); + if(retry_cnt >= 3) + { + if(work_mode_flag == WEAR_MODE) + fifo_out_count = 25; + else + fifo_out_count = 8; + } + + return fifo_out_count; } @@ -501,11 +520,11 @@ void hx3695_software_reset(void) #endif } -bool hx3695_check_wear(ppg_sensor_data_t *ppg_sensor_dat) +bool hx3695_check_wear(ppg_sensor_data_t *ppg_sensor_dat,uint8_t count) { uint8_t ii = 0; - for(ii=0;iiled_data[3].data_count;ii++) + for(ii=0;iiled_data[3].data_val[ii] > CHECK_WEAR_THRE) { @@ -1570,7 +1589,7 @@ void hx3695_ppg_Int_handle(ppg_sensor_data_t *ppg_sensor_dat) // printf("count:%d\n",count); if(count > 0) { - hx3695_check_wear(ppg_sensor_dat); + hx3695_check_wear(ppg_sensor_dat,count); if(wear_status == MSG_WEAR) { hx3695_alg_send_data(ppg_sensor_dat,work_mode_flag,count); -- 2.17.1