不带屏时,蓝牙一直保持高性能广播,灰卡测试增加4路数据 3137/1 3137/head 3138/target/1
author1624952103 <pl@DESKTOP-EN9LKR5.localdomain>
Tue, 27 Jan 2026 06:52:32 +0000 (14:52 +0800)
committer1624952103 <pl@DESKTOP-EN9LKR5.localdomain>
Tue, 27 Jan 2026 06:52:32 +0000 (14:52 +0800)
code/sdk/zhihui/UI/producttest/src/testhrsenson.cpp
code/sdk/zhihui/drivers/ppg/hal/ppg_hal.c
code/sdk/zhihui/drivers/ppg/hal/ppg_hal.h
code/sdk/zhihui/drivers/ppg/hx3695/hx3695.c
code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.c
code/sdk/zhihui/drivers/ppg/hx3695/hx3695_factory_test.h
code/sdk/zhihui/services/ble_service/bleservice/bleService.c
code/sdk/zhihui/services/factorytest_service/factorytest_protocol.c

index d4227f0..1fe56d9 100644 (file)
@@ -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);
index faaafc2..34bfacc 100644 (file)
@@ -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
index cc30047..97c964e 100644 (file)
@@ -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);
index 36205d5..c241bd5 100644 (file)
@@ -552,7 +552,7 @@ bool hx3695_check_wear(ppg_sensor_data_t *ppg_sensor_dat,uint8_t count)
             }\r
             // printf("wear_status:%d\n",wear_status);\r
 \r
-            // if(!uapi_dev_runtime_get_train_status())\r
+            if(!uapi_dev_runtime_get_factory_test_status_flag())\r
             {\r
                 if(wear_status == MSG_NO_WEAR)\r
                 {\r
index 8bebf06..01d4ca0 100644 (file)
 \r
 int32_t phase_result[10][8];\r
 \r
-static uint32_t factory_green = 0;\r
-static uint32_t factory_red = 0;\r
-static uint32_t factory_ir = 0;\r
+static uint32_t factory_led0 = 0;\r
+static uint32_t factory_led1 = 0;\r
+static uint32_t factory_led2 = 0;\r
+\r
+static uint32_t factory_led3 = 0;\r
 \r
 void hx3695_factory_ft_card_test_config(void)//�ҿ�15mm�߶Ȳ�������\r
 {\r
@@ -2597,9 +2599,9 @@ FT_RESULTS_t hx3695_factroy_test(TEST_MODE_t  test_mode)
         // hrsresult.leak_ldr1 = ft_result.ldr1_data_final;\r
         // hrsresult.leak_ldr2 = ft_result.ldr2_data_final;\r
 \r
-        factory_green = ft_result.ldr0_data_final;\r
-        factory_red = ft_result.ldr1_data_final;\r
-        factory_ir = ft_result.ldr2_data_final;\r
+        factory_led0 = ft_result.ldr0_data_final;\r
+        factory_led1 = ft_result.ldr1_data_final;\r
+        factory_led2 = ft_result.ldr2_data_final;\r
         // TYHX_LOG("leak LDR0=%d\r\n",hrsresult.leak_ldr0);\r
 \r
         TYHX_LOG("leak LDR0=%d\r\n",ft_result.ldr0_data_final);\r
@@ -2615,15 +2617,18 @@ FT_RESULTS_t hx3695_factroy_test(TEST_MODE_t  test_mode)
         // hrsresult.card_ldr0 = ft_result.ldr0_data_final;\r
         // hrsresult.card_ldr1 = ft_result.ldr1_data_final;\r
         // hrsresult.card_ldr2 = ft_result.ldr2_data_final;\r
+               // hrsresult.card_ldr3 = ft_result.ldr3_data_final;\r
 \r
-        factory_green = ft_result.ldr0_data_final;\r
-        factory_red = ft_result.ldr1_data_final;\r
-        factory_ir = ft_result.ldr2_data_final;\r
+        factory_led0 = ft_result.ldr0_data_final;\r
+        factory_led1 = ft_result.ldr1_data_final;\r
+        factory_led2 = ft_result.ldr2_data_final;\r
+        factory_led3 = ft_result.ldr3_data_final;\r
 \r
                // hrsresult.card_ldr3 = ft_result.ldr3_data_final;\r
         TYHX_LOG("leak LDR0=%d\r\n",ft_result.ldr0_data_final);\r
         TYHX_LOG("leak LDR1=%d\r\n",ft_result.ldr1_data_final);\r
         TYHX_LOG("leak LDR2=%d\r\n",ft_result.ldr2_data_final);\r
+        TYHX_LOG("leak LDR3=%d\r\n",ft_result.ldr3_data_final);\r
         break;\r
     case GNOISE_TEST:\r
         hx3695_factory_Gnoise_config();\r
@@ -2650,13 +2655,20 @@ FT_RESULTS_t hx3695_factroy_test(TEST_MODE_t  test_mode)
     return ft_result;\r
 }\r
 \r
-void hx3695_get_factory_data(uint32_t *green,uint32_t *red,uint32_t *ir)\r
+void hx3695_get_factory_data(uint32_t *led0,uint32_t *led1,uint32_t *led2,uint32_t *led3)\r
 {\r
-    *green = factory_green;\r
-    *red = factory_red;\r
-    *ir = factory_ir;\r
-\r
-    factory_green = 0;\r
-    factory_red = 0;\r
-    factory_ir = 0;\r
+    if(led0)\r
+        *led0 = factory_led0;\r
+    if(led1)\r
+        *led1 = factory_led1;\r
+    if(led2)    \r
+        *led2 = factory_led2;\r
+    if(led3)\r
+        *led3 = factory_led3;\r
+\r
+\r
+    factory_led0 = 0;\r
+    factory_led1 = 0;\r
+    factory_led2 = 0;\r
+    factory_led3 = 0;\r
 }\r
index f2f9d54..f5fe380 100644 (file)
@@ -99,7 +99,7 @@ FT_RESULTS_t hx3695_factroy_test(TEST_MODE_t  test_mode);
 void hx3695_lab_test(uint32_t  test_mode);\r
 void hx3695_lab_test_read(void);\r
 \r
-void hx3695_get_factory_data(uint32_t *green,uint32_t *red,uint32_t *ir);\r
+void hx3695_get_factory_data(uint32_t *led0,uint32_t *led1,uint32_t *led2,uint32_t *led3);\r
 \r
 \r
 #endif // _HX3695_FACTORY_TEST_H_\r
index d70087b..b4f96c3 100644 (file)
@@ -67,7 +67,7 @@ extern "C" {
 #include "BluetoothWrapper.h"\r
 #endif\r
 #include "custom_save_runtime.h"\r
-\r
+#include "soc_lcd_api.h"\r
 \r
 // extern void bts_data_to_uuid_len2(uint16_t uuid_data, bt_uuid_t *out_uuid);\r
 // extern void bts_init_128bit_uuid(const bt_uuid_t *uuid);\r
@@ -503,7 +503,7 @@ static void  ble_adv_Timer_CallBack(int data)
             {\r
                 ret=gap_ble_start_adv(adv_id);\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ble adv need restart , gap_ble_start_adv ret %x\n",ret);\r
-            }\r
+           }\r
           \r
 \r
         }\r
@@ -560,23 +560,26 @@ void svr_ble_adv_start_param(void)
         adv_para.duration = 0;\r
         gap_ble_set_adv_param(adv_id, &adv_para);//设置广播参数\r
 \r
-        uint32_t tick;\r
-        osStatus_t retTimer;\r
-        if(ble_adv_timer!=NULL)\r
+        if(uapi_is_lcd_connect())\r
         {\r
-            osTimerStop(ble_adv_timer);\r
-            osTimerDelete(ble_adv_timer);\r
-            ble_adv_timer = NULL;\r
-        }\r
+            uint32_t tick;\r
+            osStatus_t retTimer;\r
+            if(ble_adv_timer!=NULL)\r
+            {\r
+                osTimerStop(ble_adv_timer);\r
+                osTimerDelete(ble_adv_timer);\r
+                ble_adv_timer = NULL;\r
+            }\r
 \r
-        ble_adv_timer = osTimerNew((osTimerFunc_t)ble_adv_Timer_CallBack, osTimerPeriodic, NULL, NULL);\r
-        tick =osMs2Tick(1000);\r
-        retTimer = osTimerStart(ble_adv_timer, tick);\r
-        if (retTimer != osOK && ble_adv_timer != NULL) {\r
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer);\r
-            osTimerDelete(ble_adv_timer);\r
-            ble_adv_timer = NULL;\r
-            return;\r
+            ble_adv_timer = osTimerNew((osTimerFunc_t)ble_adv_Timer_CallBack, osTimerPeriodic, NULL, NULL);\r
+            tick =osMs2Tick(1000);\r
+            retTimer = osTimerStart(ble_adv_timer, tick);\r
+            if (retTimer != osOK && ble_adv_timer != NULL) {\r
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer);\r
+                osTimerDelete(ble_adv_timer);\r
+                ble_adv_timer = NULL;\r
+                return;\r
+            }\r
         }\r
 \r
     }\r
index 7fd10c2..19c55ff 100644 (file)
@@ -648,7 +648,7 @@ void aging_task(void)
 #ifdef SUPPORT_PPG_SERVICE\r
             send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_LEAKLIGHT_TEST);\r
             LOS_Msleep(2000);\r
-            ppg_get_factory_data(&green,&red,&ir);\r
+            ppg_get_factory_data(&green,&red,&ir,NULL);\r
             send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);\r
 #endif\r
             PRINT("green : %d , red : %d , ir : %d\r\n",green,red,ir);\r
@@ -1909,39 +1909,54 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
             } else if(testitem == 0x05)\r
             {\r
                 //灰卡测试\r
-                uint8_t databuf[12] = {0};\r
+                uint8_t databuf[16] = {0};\r
 \r
-                uint32_t green = 0;\r
-                uint32_t red = 0;\r
-                uint32_t ir = 0;\r
+                uint32_t led0 = 0;\r
+                uint32_t led1 = 0;\r
+                uint32_t led2 = 0;\r
+                uint32_t led3 = 0;\r
 \r
 #ifdef SUPPORT_PPG_SERVICE\r
                 send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_GRAYCARD_TEST);\r
                 LOS_Msleep(2000);\r
-                ppg_get_factory_data(&green,&red,&ir);\r
+                // ppg_get_factory_data(&green,&red,&ir);\r
+                ppg_get_factory_data(&led0,&led1,&led2,&led3);\r
                 send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);\r
 #endif\r
-                PRINT("%d %d %d \r\n",green,red,ir);\r
-                databuf[0] = (uint8_t)((green & 0xFF000000) >> 24);\r
-                databuf[1] = (uint8_t)((green & 0x00FF0000) >> 16);\r
-                databuf[2] = (uint8_t)((green & 0x0000FF00) >> 8);\r
-                databuf[3] = (uint8_t)((green & 0x000000FF) >> 0);\r
-\r
-                databuf[4] = (uint8_t)((red & 0xFF000000) >> 24);\r
-                databuf[5] = (uint8_t)((red & 0x00FF0000) >> 16);\r
-                databuf[6] = (uint8_t)((red & 0x0000FF00) >> 8);\r
-                databuf[7] = (uint8_t)((red & 0x000000FF) >> 0);\r
+                databuf[0] = (uint8_t)((led0 & 0xFF000000) >> 24);\r
+                databuf[1] = (uint8_t)((led0 & 0x00FF0000) >> 16);\r
+                databuf[2] = (uint8_t)((led0 & 0x0000FF00) >> 8);\r
+                databuf[3] = (uint8_t)((led0 & 0x000000FF) >> 0);\r
+\r
+                databuf[4] = (uint8_t)((led1 & 0xFF000000) >> 24);\r
+                databuf[5] = (uint8_t)((led1 & 0x00FF0000) >> 16);\r
+                databuf[6] = (uint8_t)((led1 & 0x0000FF00) >> 8);\r
+                databuf[7] = (uint8_t)((led1 & 0x000000FF) >> 0);\r
+\r
+                databuf[8] = (uint8_t)((led2 & 0xFF000000) >> 24);\r
+                databuf[9] = (uint8_t)((led2 & 0x00FF0000) >> 16);\r
+                databuf[10] = (uint8_t)((led2 & 0x0000FF00) >> 8);\r
+                databuf[11] = (uint8_t)((led2 & 0x000000FF) >> 0);\r
+\r
+                databuf[12] = (uint8_t)((led3 & 0xFF000000) >> 24);\r
+                databuf[13] = (uint8_t)((led3 & 0x00FF0000) >> 16);\r
+                databuf[14] = (uint8_t)((led3 & 0x0000FF00) >> 8);\r
+                databuf[15] = (uint8_t)((led3 & 0x000000FF) >> 0);\r
+\r
+                PRINT("databuf:%2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X %2X\r\n",\r
+                databuf[0],databuf[1],databuf[2],databuf[3],\r
+                databuf[4],databuf[5],databuf[6],databuf[7],\r
+                databuf[8],databuf[9],databuf[10],databuf[11],\r
+                databuf[12],databuf[13],databuf[14],databuf[15]\r
+                );\r
 \r
-                databuf[8] = (uint8_t)((ir & 0xFF000000) >> 24);\r
-                databuf[9] = (uint8_t)((ir & 0x00FF0000) >> 16);\r
-                databuf[10] = (uint8_t)((ir & 0x0000FF00) >> 8);\r
-                databuf[11] = (uint8_t)((ir & 0x000000FF) >> 0);\r
+                PRINT("led0:%d, led1:%d, led2:%d, led3:%d\r\n",led0,led1,led2,led3);\r
 \r
                 factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
                     BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS,\r
                     0x05,\r
                     databuf,\r
-                    12);\r
+                    16);\r
 \r
 \r
             } else if(testitem == 0x06)\r
@@ -1956,7 +1971,7 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint
 #ifdef SUPPORT_PPG_SERVICE\r
                 send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_LEAKLIGHT_TEST);\r
                 LOS_Msleep(2000);\r
-                ppg_get_factory_data(&green,&red,&ir);\r
+                ppg_get_factory_data(&green,&red,&ir,NULL);\r
                 send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);\r
 #endif\r
                 databuf[0] = (uint8_t)((green & 0xFF000000) >> 24);\r