From 5b0a11d3772b9797390d145504c811f54ad7c7fe Mon Sep 17 00:00:00 2001 From: 1624952103 Date: Tue, 27 Jan 2026 14:52:32 +0800 Subject: [PATCH] =?utf8?q?=E4=B8=8D=E5=B8=A6=E5=B1=8F=E6=97=B6=EF=BC=8C?= =?utf8?q?=E8=93=9D=E7=89=99=E4=B8=80=E7=9B=B4=E4=BF=9D=E6=8C=81=E9=AB=98?= =?utf8?q?=E6=80=A7=E8=83=BD=E5=B9=BF=E6=92=AD=EF=BC=8C=E7=81=B0=E5=8D=A1?= =?utf8?q?=E6=B5=8B=E8=AF=95=E5=A2=9E=E5=8A=A04=E8=B7=AF=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../UI/producttest/src/testhrsenson.cpp | 2 +- code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c | 4 +- code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h | 3 +- code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c | 2 +- .../drivers/ppg/hx3695/hx3695_factory_test.c | 46 +++++++++------ .../drivers/ppg/hx3695/hx3695_factory_test.h | 2 +- .../ble_service/bleservice/bleService.c | 37 ++++++------ .../factorytest_protocol.c | 59 ++++++++++++------- 8 files changed, 92 insertions(+), 63 deletions(-) diff --git a/code/sdk/zhihui/UI/producttest/src/testhrsenson.cpp b/code/sdk/zhihui/UI/producttest/src/testhrsenson.cpp index d4227f03f..1fe56d9cd 100644 --- a/code/sdk/zhihui/UI/producttest/src/testhrsenson.cpp +++ b/code/sdk/zhihui/UI/producttest/src/testhrsenson.cpp @@ -124,7 +124,7 @@ namespace OHOS uint32_t ch0 = 0; uint32_t ch1 = 0; uint32_t ch2 = 0; - ppg_get_factory_data(&ch0,&ch1,&ch2); + ppg_get_factory_data(&ch0,&ch1,&ch2,NULL); send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST); sprintf(buf,"leaklight:\ngreen:%d\nred:%d\nir:%d",ch0,ch1,ch2); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",buf); diff --git a/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c b/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c index faaafc25d..34bfacc12 100644 --- a/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c +++ b/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c @@ -202,10 +202,10 @@ void ppg_get_graycard_data(uint32_t *ch0,uint32_t *ch1,uint32_t *ch2) #endif } -void ppg_get_factory_data(uint32_t *ch0,uint32_t *ch1,uint32_t *ch2) +void ppg_get_factory_data(uint32_t *ch0,uint32_t *ch1,uint32_t *ch2,uint32_t *ch3) { #ifdef PPG_HX3695 - hx3695_get_factory_data(ch0,ch1,ch2); + hx3695_get_factory_data(ch0,ch1,ch2,ch3); #elif defined PPG_VC9202 vc9202_get_leaklight_data(ch0,ch1,ch2); #elif defined PPG_PAH8009 diff --git a/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h b/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h index cc300472d..97c964e6f 100644 --- a/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h +++ b/code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h @@ -57,9 +57,8 @@ void ppg_wear_status_update(uint8_t status); void ppg_power_on(void); void ppg_power_off(void); void ppg_int_handler(void); -void ppg_get_factory_data(uint32_t *ch0,uint32_t *ch1,uint32_t *ch2); +void ppg_get_factory_data(uint32_t *ch0,uint32_t *ch1,uint32_t *ch2,uint32_t *ch3); int32_t ppg_get_led_data(void); -void ppg_ble_send(uint8_t hr); void ppg_check_int(void); void ppg_set_factory_log_switch(uint8_t cmd); diff --git a/code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c b/code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c index 36205d505..c241bd5d0 100644 --- a/code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c +++ b/code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c @@ -552,7 +552,7 @@ bool hx3695_check_wear(ppg_sensor_data_t *ppg_sensor_dat,uint8_t count) } // printf("wear_status:%d\n",wear_status); - // if(!uapi_dev_runtime_get_train_status()) + if(!uapi_dev_runtime_get_factory_test_status_flag()) { if(wear_status == MSG_NO_WEAR) { diff --git a/code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.c b/code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.c index 8bebf06b9..01d4ca0a3 100644 --- a/code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.c +++ b/code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.c @@ -10,9 +10,11 @@ int32_t phase_result[10][8]; -static uint32_t factory_green = 0; -static uint32_t factory_red = 0; -static uint32_t factory_ir = 0; +static uint32_t factory_led0 = 0; +static uint32_t factory_led1 = 0; +static uint32_t factory_led2 = 0; + +static uint32_t factory_led3 = 0; void hx3695_factory_ft_card_test_config(void)//�ҿ�15mm�߶Ȳ������� { @@ -2597,9 +2599,9 @@ FT_RESULTS_t hx3695_factroy_test(TEST_MODE_t test_mode) // hrsresult.leak_ldr1 = ft_result.ldr1_data_final; // hrsresult.leak_ldr2 = ft_result.ldr2_data_final; - factory_green = ft_result.ldr0_data_final; - factory_red = ft_result.ldr1_data_final; - factory_ir = ft_result.ldr2_data_final; + factory_led0 = ft_result.ldr0_data_final; + factory_led1 = ft_result.ldr1_data_final; + factory_led2 = ft_result.ldr2_data_final; // TYHX_LOG("leak LDR0=%d\r\n",hrsresult.leak_ldr0); TYHX_LOG("leak LDR0=%d\r\n",ft_result.ldr0_data_final); @@ -2615,15 +2617,18 @@ FT_RESULTS_t hx3695_factroy_test(TEST_MODE_t test_mode) // hrsresult.card_ldr0 = ft_result.ldr0_data_final; // hrsresult.card_ldr1 = ft_result.ldr1_data_final; // hrsresult.card_ldr2 = ft_result.ldr2_data_final; + // hrsresult.card_ldr3 = ft_result.ldr3_data_final; - factory_green = ft_result.ldr0_data_final; - factory_red = ft_result.ldr1_data_final; - factory_ir = ft_result.ldr2_data_final; + factory_led0 = ft_result.ldr0_data_final; + factory_led1 = ft_result.ldr1_data_final; + factory_led2 = ft_result.ldr2_data_final; + factory_led3 = ft_result.ldr3_data_final; // hrsresult.card_ldr3 = ft_result.ldr3_data_final; TYHX_LOG("leak LDR0=%d\r\n",ft_result.ldr0_data_final); TYHX_LOG("leak LDR1=%d\r\n",ft_result.ldr1_data_final); TYHX_LOG("leak LDR2=%d\r\n",ft_result.ldr2_data_final); + TYHX_LOG("leak LDR3=%d\r\n",ft_result.ldr3_data_final); break; case GNOISE_TEST: hx3695_factory_Gnoise_config(); @@ -2650,13 +2655,20 @@ FT_RESULTS_t hx3695_factroy_test(TEST_MODE_t test_mode) return ft_result; } -void hx3695_get_factory_data(uint32_t *green,uint32_t *red,uint32_t *ir) +void hx3695_get_factory_data(uint32_t *led0,uint32_t *led1,uint32_t *led2,uint32_t *led3) { - *green = factory_green; - *red = factory_red; - *ir = factory_ir; - - factory_green = 0; - factory_red = 0; - factory_ir = 0; + if(led0) + *led0 = factory_led0; + if(led1) + *led1 = factory_led1; + if(led2) + *led2 = factory_led2; + if(led3) + *led3 = factory_led3; + + + factory_led0 = 0; + factory_led1 = 0; + factory_led2 = 0; + factory_led3 = 0; } diff --git a/code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.h b/code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.h index f2f9d54a0..f5fe380ff 100644 --- a/code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.h +++ b/code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.h @@ -99,7 +99,7 @@ FT_RESULTS_t hx3695_factroy_test(TEST_MODE_t test_mode); void hx3695_lab_test(uint32_t test_mode); void hx3695_lab_test_read(void); -void hx3695_get_factory_data(uint32_t *green,uint32_t *red,uint32_t *ir); +void hx3695_get_factory_data(uint32_t *led0,uint32_t *led1,uint32_t *led2,uint32_t *led3); #endif // _HX3695_FACTORY_TEST_H_ diff --git a/code/sdk/zhihui/services/ble_service/bleservice/bleService.c b/code/sdk/zhihui/services/ble_service/bleservice/bleService.c index d70087b9f..b4f96c397 100644 --- a/code/sdk/zhihui/services/ble_service/bleservice/bleService.c +++ b/code/sdk/zhihui/services/ble_service/bleservice/bleService.c @@ -67,7 +67,7 @@ extern "C" { #include "BluetoothWrapper.h" #endif #include "custom_save_runtime.h" - +#include "soc_lcd_api.h" // extern void bts_data_to_uuid_len2(uint16_t uuid_data, bt_uuid_t *out_uuid); // extern void bts_init_128bit_uuid(const bt_uuid_t *uuid); @@ -503,7 +503,7 @@ static void ble_adv_Timer_CallBack(int data) { ret=gap_ble_start_adv(adv_id); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_start_adv ret %x\n",ret); - } + } } @@ -560,23 +560,26 @@ void svr_ble_adv_start_param(void) adv_para.duration = 0; gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数 - uint32_t tick; - osStatus_t retTimer; - if(ble_adv_timer!=NULL) + if(uapi_is_lcd_connect()) { - osTimerStop(ble_adv_timer); - osTimerDelete(ble_adv_timer); - ble_adv_timer = NULL; - } + uint32_t tick; + osStatus_t retTimer; + if(ble_adv_timer!=NULL) + { + osTimerStop(ble_adv_timer); + osTimerDelete(ble_adv_timer); + ble_adv_timer = NULL; + } - ble_adv_timer = osTimerNew((osTimerFunc_t)ble_adv_Timer_CallBack, osTimerPeriodic, NULL, NULL); - tick =osMs2Tick(1000); - retTimer = osTimerStart(ble_adv_timer, tick); - if (retTimer != osOK && ble_adv_timer != NULL) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer); - osTimerDelete(ble_adv_timer); - ble_adv_timer = NULL; - return; + ble_adv_timer = osTimerNew((osTimerFunc_t)ble_adv_Timer_CallBack, osTimerPeriodic, NULL, NULL); + tick =osMs2Tick(1000); + retTimer = osTimerStart(ble_adv_timer, tick); + if (retTimer != osOK && ble_adv_timer != NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer); + osTimerDelete(ble_adv_timer); + ble_adv_timer = NULL; + return; + } } } diff --git a/code/sdk/zhihui/services/factorytest_service/factorytest_protocol.c b/code/sdk/zhihui/services/factorytest_service/factorytest_protocol.c index 7fd10c216..19c55ffe2 100644 --- a/code/sdk/zhihui/services/factorytest_service/factorytest_protocol.c +++ b/code/sdk/zhihui/services/factorytest_service/factorytest_protocol.c @@ -648,7 +648,7 @@ void aging_task(void) #ifdef SUPPORT_PPG_SERVICE send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_LEAKLIGHT_TEST); LOS_Msleep(2000); - ppg_get_factory_data(&green,&red,&ir); + ppg_get_factory_data(&green,&red,&ir,NULL); send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST); #endif PRINT("green : %d , red : %d , ir : %d\r\n",green,red,ir); @@ -1909,39 +1909,54 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint } else if(testitem == 0x05) { //灰卡测试 - uint8_t databuf[12] = {0}; + uint8_t databuf[16] = {0}; - uint32_t green = 0; - uint32_t red = 0; - uint32_t ir = 0; + uint32_t led0 = 0; + uint32_t led1 = 0; + uint32_t led2 = 0; + uint32_t led3 = 0; #ifdef SUPPORT_PPG_SERVICE send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_GRAYCARD_TEST); LOS_Msleep(2000); - ppg_get_factory_data(&green,&red,&ir); + // ppg_get_factory_data(&green,&red,&ir); + ppg_get_factory_data(&led0,&led1,&led2,&led3); send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST); #endif - PRINT("%d %d %d \r\n",green,red,ir); - databuf[0] = (uint8_t)((green & 0xFF000000) >> 24); - databuf[1] = (uint8_t)((green & 0x00FF0000) >> 16); - databuf[2] = (uint8_t)((green & 0x0000FF00) >> 8); - databuf[3] = (uint8_t)((green & 0x000000FF) >> 0); - - databuf[4] = (uint8_t)((red & 0xFF000000) >> 24); - databuf[5] = (uint8_t)((red & 0x00FF0000) >> 16); - databuf[6] = (uint8_t)((red & 0x0000FF00) >> 8); - databuf[7] = (uint8_t)((red & 0x000000FF) >> 0); + databuf[0] = (uint8_t)((led0 & 0xFF000000) >> 24); + databuf[1] = (uint8_t)((led0 & 0x00FF0000) >> 16); + databuf[2] = (uint8_t)((led0 & 0x0000FF00) >> 8); + databuf[3] = (uint8_t)((led0 & 0x000000FF) >> 0); + + databuf[4] = (uint8_t)((led1 & 0xFF000000) >> 24); + databuf[5] = (uint8_t)((led1 & 0x00FF0000) >> 16); + databuf[6] = (uint8_t)((led1 & 0x0000FF00) >> 8); + databuf[7] = (uint8_t)((led1 & 0x000000FF) >> 0); + + databuf[8] = (uint8_t)((led2 & 0xFF000000) >> 24); + databuf[9] = (uint8_t)((led2 & 0x00FF0000) >> 16); + databuf[10] = (uint8_t)((led2 & 0x0000FF00) >> 8); + databuf[11] = (uint8_t)((led2 & 0x000000FF) >> 0); + + databuf[12] = (uint8_t)((led3 & 0xFF000000) >> 24); + databuf[13] = (uint8_t)((led3 & 0x00FF0000) >> 16); + databuf[14] = (uint8_t)((led3 & 0x0000FF00) >> 8); + databuf[15] = (uint8_t)((led3 & 0x000000FF) >> 0); + + PRINT("databuf:%2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X\r\n", + databuf[0],databuf[1],databuf[2],databuf[3], + databuf[4],databuf[5],databuf[6],databuf[7], + databuf[8],databuf[9],databuf[10],databuf[11], + databuf[12],databuf[13],databuf[14],databuf[15] + ); - databuf[8] = (uint8_t)((ir & 0xFF000000) >> 24); - databuf[9] = (uint8_t)((ir & 0x00FF0000) >> 16); - databuf[10] = (uint8_t)((ir & 0x0000FF00) >> 8); - databuf[11] = (uint8_t)((ir & 0x000000FF) >> 0); + PRINT("led0:%d, led1:%d, led2:%d, led3:%d\r\n",led0,led1,led2,led3); factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS, 0x05, databuf, - 12); + 16); } else if(testitem == 0x06) @@ -1956,7 +1971,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint #ifdef SUPPORT_PPG_SERVICE send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_LEAKLIGHT_TEST); LOS_Msleep(2000); - ppg_get_factory_data(&green,&red,&ir); + ppg_get_factory_data(&green,&red,&ir,NULL); send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST); #endif databuf[0] = (uint8_t)((green & 0xFF000000) >> 24); -- 2.17.1