From fb52ca562c84cbba25a0ece4e865f6c64c3948d6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BD=AD=E7=A3=8A?= <1624952103@qq.com> Date: Mon, 14 Jul 2025 07:48:05 +0000 Subject: [PATCH] Merge #1950 into sdk602patch0911 from refs/changes/1950/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Code review from 彭磊 * refs/changes/1950/head: (15 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 - 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> Merged-by: Caisking <3449750381@qq.com> CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1950 --- .../config/target_config/brandy/config.py | 2 +- .../boards/brandy_evb/board_config/board_w9.h | 6 +- code/sdk/drivers/peripheral/bp/bn02/bn02.c | 25 ++++---- .../peripheral/bp/service/bp_tcp_server.c | 57 ++++++++++--------- .../peripheral/bp/service/bp_tcp_server.h | 16 +++++- code/sdk/drivers/peripheral/ppg/hal/ppg_hal.c | 4 +- code/sdk/drivers/peripheral/ppg/hal/ppg_hal.h | 6 +- .../peripheral/ppg/pah8009/CMakeLists.txt | 6 +- .../pah8009/algorithm/pah_hr/V303009/pxialg.h | 4 +- .../pah_hr/V303009/test_library_HRD.c | 11 +++- .../ppg/pah8009/sensor/pah800x_main.c | 13 ++++- .../ppg/pah8009/sensor/pah800x_main.h | 6 +- .../peripheral/ppg/service/ppg_service.cpp | 7 +-- .../drivers/peripheral/utils/custom_utils.c | 36 +++++++----- .../drivers/peripheral/utils/custom_utils.h | 2 +- 15 files changed, 121 insertions(+), 80 deletions(-) diff --git a/code/sdk/build/config/target_config/brandy/config.py b/code/sdk/build/config/target_config/brandy/config.py index 58981c17e..c99ad42f6 100755 --- a/code/sdk/build/config/target_config/brandy/config.py +++ b/code/sdk/build/config/target_config/brandy/config.py @@ -599,7 +599,7 @@ target = { 'DOWNLOAD_GNSS_SWITCH', 'TPTYPE_CST86XX', 'NANDFLASH_F35UQA', - #'PPG_GH3X2X', + 'PPG_PAH8009', 'GYRO_SH5001', 'ROTARYENCODER_MIXO', 'ENABLE_GYRO', diff --git a/code/sdk/drivers/boards/brandy_evb/board_config/board_w9.h b/code/sdk/drivers/boards/brandy_evb/board_config/board_w9.h index 92725bf6d..7921e4de3 100644 --- a/code/sdk/drivers/boards/brandy_evb/board_config/board_w9.h +++ b/code/sdk/drivers/boards/brandy_evb/board_config/board_w9.h @@ -336,10 +336,14 @@ const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = { { S_AGPIO_R3, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, bp_int_callback }, #endif #ifdef SUPPORT_PPG_SERVICE +#ifdef PPG_GH3X2X + { S_AGPIO_R6, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_RISING_EDGE, ppg_int_callback}, +#elif defined PPG_PAH8009 { S_AGPIO_R6, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_FALLING_EDGE, ppg_int_callback}, #endif +#endif #ifdef ROTARYENCODER_MIXO - // { S_AGPIO_L0, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_DEDGE, mixo_int_callback}, + // { S_AGPIO_L0, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_FALLING_EDGE, mixo_int_callback}, #endif }; /** diff --git a/code/sdk/drivers/peripheral/bp/bn02/bn02.c b/code/sdk/drivers/peripheral/bp/bn02/bn02.c index bebd4fc3b..3a85e45cb 100644 --- a/code/sdk/drivers/peripheral/bp/bn02/bn02.c +++ b/code/sdk/drivers/peripheral/bp/bn02/bn02.c @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2025-01-16 12:35:15 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2025-07-04 17:18:32 + * @LastEditTime: 2025-07-10 10:45:40 * @FilePath: /sdk615/code/sdk/zhihui/drivers/bp/bn02/bn02.c * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -21,8 +21,8 @@ #define BN02_I2C_BUS I2C_BUS_0 #define I2C_ADDR_BN02_W 0x0a #define I2C_ADDR_BN02_R 0x0b -#define P_EN S_AGPIO_L19 -#define P_INT S_AGPIO_R3 +#define BP_EN S_AGPIO_L19 +#define BP_INT S_AGPIO_R3 #define POWER_EN S_AGPIO_R0 @@ -119,17 +119,17 @@ void Bn02_Power_Ctrl(int onoff) uapi_gpio_set_dir(POWER_EN, GPIO_DIRECTION_OUTPUT); uapi_gpio_set_val(POWER_EN, GPIO_LEVEL_HIGH); LOS_Mdelay(1); - uapi_pin_set_mode(P_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO); - uapi_gpio_set_dir(P_EN, GPIO_DIRECTION_OUTPUT); - uapi_gpio_set_val(P_EN, GPIO_LEVEL_HIGH); + uapi_pin_set_mode(BP_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO); + uapi_gpio_set_dir(BP_EN, GPIO_DIRECTION_OUTPUT); + uapi_gpio_set_val(BP_EN, GPIO_LEVEL_HIGH); // delay_ms(20); LOS_Mdelay(50); } else { - uapi_pin_set_mode(P_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO); - uapi_gpio_set_dir(P_EN, GPIO_DIRECTION_OUTPUT); - uapi_gpio_set_val(P_EN, GPIO_LEVEL_LOW); + uapi_pin_set_mode(BP_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO); + uapi_gpio_set_dir(BP_EN, GPIO_DIRECTION_OUTPUT); + uapi_gpio_set_val(BP_EN, GPIO_LEVEL_LOW); LOS_Mdelay(1); uapi_pin_set_mode(POWER_EN, (pin_mode_t)HAL_PIO_FUNC_GPIO); uapi_gpio_set_dir(POWER_EN, GPIO_DIRECTION_OUTPUT); @@ -140,12 +140,12 @@ void Bn02_Power_Ctrl(int onoff) void bn02_int_init(void) { - uapi_pin_set_ie(P_INT,HAL_PIO_IE_ENBALE); + uapi_pin_set_ie(BP_INT,HAL_PIO_IE_ENBALE); } void bn02_int_deinit(void) { - uapi_pin_set_ie(P_INT,HAL_PIO_IE_DISABLE); + uapi_pin_set_ie(BP_INT,HAL_PIO_IE_DISABLE); } void bn02_int_handle(void) @@ -169,7 +169,8 @@ void bn02_int_handle(void) // printf("0x%x 0x%x 0x%x 0x%x\n",i,bn02_buf[i],bn02_buf[i+1],bn02_buf[i+2],reply_data[cnt]); } - do_bp_tcp_server_send_data(BP_TCP_SERVICE_CMD_DATA_UPLOAD,(void *)reply_data,cnt); + if(uapi_cat1_get_power_stat()) + do_bp_tcp_server_send_data(BP_TCP_SERVICE_CMD_DATA_UPLOAD,(void *)reply_data,cnt); if(bn02_data && fp) { diff --git a/code/sdk/drivers/peripheral/bp/service/bp_tcp_server.c b/code/sdk/drivers/peripheral/bp/service/bp_tcp_server.c index 38d344276..020db01a6 100644 --- a/code/sdk/drivers/peripheral/bp/service/bp_tcp_server.c +++ b/code/sdk/drivers/peripheral/bp/service/bp_tcp_server.c @@ -47,7 +47,10 @@ -#define MAX_CNT 16 * 5 * 60 +// #define MAX_CNT 16 * 5 * 60 +#define MAX_CNT 16 * 5 * 50 + + static unsigned long g_app_queue= 0xFFFFFFFF; static int *tcp_data = NULL; @@ -58,11 +61,7 @@ static int g_listen_sock = -1; static uint8_t LK_STATUS = 0; static uint8_t BP_GET_STATUS = 0; -static int bp_sbp = 0; -static int bp_dbp = 0; -static int bp_pressure = 0; -static int bp_fatigue = 0; -static int bp_emo = 0; +static bp_data_t bp_data = {0}; static char *imei = NULL; @@ -84,8 +83,8 @@ struct bp_ipaddr_t void bp_set_adjust_data(int sbp,int dbp) { - bp_sbp = sbp; - bp_dbp = dbp; + bp_data.sbp = sbp; + bp_data.dbp = dbp; } void bp_set_measure_type(uint8_t type) @@ -93,14 +92,12 @@ void bp_set_measure_type(uint8_t type) bp_measure_type = type; } -void bp_get_data(int *sbp,int *dbp) +void bp_get_data(bp_data_t *data) { - if(sbp == NULL || dbp == NULL) + if(data == NULL) return; - *sbp = bp_sbp; - *dbp = bp_dbp; - bp_sbp = 0; - bp_dbp = 0; + + memcpy_s(data,sizeof(bp_data_t),&bp_data,sizeof(bp_data_t)); } static void bp_save_request_code(char *reqeust_code,int len) @@ -511,19 +508,19 @@ void tcp_recv_data_handler(const char *input, int input_len) if (sbp && dbp && emo && pressure && fatigue) { printf("sbp: %d\n", sbp->valueint); - bp_sbp = sbp->valueint; + bp_data.sbp = sbp->valueint; printf("dbp: %d\n", dbp->valueint); - bp_dbp = dbp->valueint; + bp_data.dbp = dbp->valueint; - printf("emo: %d\n", emo->valueint); - bp_emo = emo->valueint; + printf("emo: %s\n", emo->valuestring); + memcpy_s(bp_data.emo,sizeof(bp_data.emo),emo->valuestring,strlen(emo->valuestring)); printf("pressure: %d\n", pressure->valueint); - bp_pressure = pressure->valueint; + bp_data.pressure = pressure->valueint; printf("fatigue: %d\n", fatigue->valueint); - bp_fatigue = fatigue->valueint; + bp_data.fatigue = fatigue->valueint; BP_GET_STATUS = 1; @@ -1312,14 +1309,21 @@ FAILED: } } - temp_len += snprintf(json_data + temp_len, json_len - temp_len,"\"ppg_fs\":\"%d\"}", 81); + // temp_len += snprintf(json_data + temp_len, json_len - temp_len,"\"ppg_fs\":\"%d\"}", 81); // if(bp_measure_type == BP_ADJUST) // { - // temp_len += snprintf(json_data + temp_len, json_len - temp_len, "\"cal_value\":[%d,%d],", 120,80); - // bp_sbp = 0; - // bp_dbp = 0; + // + if(bp_measure_type == BP_ADJUST) + { + temp_len += snprintf(json_data + temp_len, json_len - temp_len,"\"ppg_fs\":\"%d\",", 81); + temp_len += snprintf(json_data + temp_len, json_len - temp_len, "\"cal_value\":[%d,%d]\"}",120,80); + } + else + { + temp_len += snprintf(json_data + temp_len, json_len - temp_len,"\"ppg_fs\":\"%d\"}", 81); + } // } @@ -1409,9 +1413,9 @@ FAILED: // goto FAILED; // } - for(int i = 0; i < send_len; i += 512) + for(int i = 0; i < send_len; i += 1024) { - int chunk_size = (send_len - i > 512) ? 512 : send_len - i; + int chunk_size = (send_len - i > 1024) ? 1024 : send_len - i; ret = tcp_send(g_listen_sock, send_str + i, chunk_size); if(ret != 0) @@ -1892,6 +1896,7 @@ void bp_check_active_code(char *active_code) void bp_tcp_data_clean(void) { + memset(&bp_data,0,sizeof(bp_data)); if(tcp_data != NULL) { free(tcp_data); diff --git a/code/sdk/drivers/peripheral/bp/service/bp_tcp_server.h b/code/sdk/drivers/peripheral/bp/service/bp_tcp_server.h index 7f39ed87e..e5ce290b1 100644 --- a/code/sdk/drivers/peripheral/bp/service/bp_tcp_server.h +++ b/code/sdk/drivers/peripheral/bp/service/bp_tcp_server.h @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2025-02-14 10:30:32 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2025-07-02 14:04:37 + * @LastEditTime: 2025-07-07 16:10:14 * @FilePath: /sdk615/code/sdk/zhihui/drivers/bp/service/bp_ble_service.h * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -26,6 +26,18 @@ typedef struct { uint32_t len; } bp_tcp_data_mail_t; + +#pragma pack(1) +typedef struct +{ + int sbp; + int dbp; + int pressure; //压力 + int fatigue; //疲劳度 + char emo[20]; //情绪 +}bp_data_t; +#pragma pack() + #define BP_TCP_SERVICE_CMD_DATA_UPLOAD 0x1 #define BP_TCP_SERVICE_CMD_SERVER_INIT 0x2 #define BP_TCP_SERVICE_CMD_SERVER_DEINIT 0x3 @@ -38,7 +50,7 @@ int get_active_code(void); int tcp_sign_up(void); int bp_tcp_login(void); void bp_activate_algorithm(void); -void bp_get_data(int *sbp,int *dbp); +void bp_get_data(bp_data_t *data); void bp_set_measure_type(uint8_t type); void bp_set_adjust_data(int sbp,int dbp); diff --git a/code/sdk/drivers/peripheral/ppg/hal/ppg_hal.c b/code/sdk/drivers/peripheral/ppg/hal/ppg_hal.c index a523acfdd..65b7e207a 100644 --- a/code/sdk/drivers/peripheral/ppg/hal/ppg_hal.c +++ b/code/sdk/drivers/peripheral/ppg/hal/ppg_hal.c @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2024-03-13 15:08:38 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2025-06-25 15:10:29 + * @LastEditTime: 2025-07-10 17:18:40 * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c * @Description: * @@ -113,7 +113,7 @@ uint16_t ppg_get_chip_id(void) #elif defined PPG_GH3X2X // chip_id = GH3X2X_AFE_GetChipId(); #endif - ppg_power_off(); + ppg_power_off(); return chip_id; } diff --git a/code/sdk/drivers/peripheral/ppg/hal/ppg_hal.h b/code/sdk/drivers/peripheral/ppg/hal/ppg_hal.h index 8cda8ad72..e2b9ebc31 100644 --- a/code/sdk/drivers/peripheral/ppg/hal/ppg_hal.h +++ b/code/sdk/drivers/peripheral/ppg/hal/ppg_hal.h @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2024-06-07 11:18:26 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2025-06-09 11:26:55 + * @LastEditTime: 2025-07-09 16:12:34 * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/ppg/ppg_hal.h * @Description: * @@ -17,7 +17,7 @@ extern "C" { #endif /* __cplusplus */ #include "stdint.h" -#include "tyhx_hrs_custom.h" + #define AGC_TIMER_MODE 0 #define HRS_TIMER_MODE 1 @@ -28,7 +28,7 @@ extern "C" { #elif defined PPG_PAH8009 #define PPG_CHIP_ID 0x8008 #elif defined PPG_GH3X2X -#define PPG_CHIP_ID GH3X2X_CHIP_ID +#define PPG_CHIP_ID 0x3 #else #define PPG_CHIP_ID 0 #endif diff --git a/code/sdk/drivers/peripheral/ppg/pah8009/CMakeLists.txt b/code/sdk/drivers/peripheral/ppg/pah8009/CMakeLists.txt index ad9805352..6f44d7ee0 100644 --- a/code/sdk/drivers/peripheral/ppg/pah8009/CMakeLists.txt +++ b/code/sdk/drivers/peripheral/ppg/pah8009/CMakeLists.txt @@ -26,7 +26,7 @@ set(PRIVATE_DEFINES ) set(PUBLIC_DEFINES - PPG_PAH8009 + ) # use this when you want to add ccflags like -include xxx @@ -44,10 +44,14 @@ set(MAIN_COMPONENT false ) +if("PPG_PAH8009" IN_LIST DEFINES) + find_library(LIB_PATH_SPO2 algorithm/pah_spo2/V703/libv703_0_1.a ${CMAKE_CURRENT_SOURCE_DIR}) find_library(LIB_PATH_HR algorithm/pah_hr/V303009/libv307009_4.a ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_HR} ${LIB_PATH_SPO2} PRIVATE -Wl,--whole-archive) +endif() + build_component() diff --git a/code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/pxialg.h b/code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/pxialg.h index ac2b98c25..bada56bbf 100644 --- a/code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/pxialg.h +++ b/code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/pxialg.h @@ -689,8 +689,8 @@ PXIALG_API uint8_t PxiAlg_DecodeProcess(uint32_t data, int touch_flag, float tim PXIALG_API uint8_t PxiAlg_Entrance_0(pah8series_data_t *pah8series_data); PXIALG_API uint8_t PxiAlg_Entrance(pah8series_data_t *pah8series_data); PXIALG_API uint8_t PxiAlg_EntranceD(pah8series_data_t *pah8series_data); -PXIALG_API uint32_t PxiAlg_Query_Mem_Size(); -PXIALG_API uint8_t PxiAlg_GetHrUpdateFlag(); +PXIALG_API uint32_t PxiAlg_Query_Mem_Size(void); +PXIALG_API uint8_t PxiAlg_GetHrUpdateFlag(void); PXIALG_API void PxiAlg_SetData_Seg(pah8series_data_t *pah8series_data); PXIALG_API uint8_t PxiAlg_Process_Seg(uint8_t *is_finished); diff --git a/code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/test_library_HRD.c b/code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/test_library_HRD.c index 4cecb6b98..204d61376 100644 --- a/code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/test_library_HRD.c +++ b/code/sdk/drivers/peripheral/ppg/pah8009/algorithm/pah_hr/V303009/test_library_HRD.c @@ -5,12 +5,12 @@ #include "pah800x_main.h" #include "pah800x_bsp.h" #include +#include "pxialg.h" +#include "pxivar.h" + //#include "nrf_delay.h" #define array_szie(arr) (sizeof(arr) / sizeof(arr[0])) - - - void test_library_HRD(void) { int i = 0; @@ -110,3 +110,8 @@ void test_library_HRD(void) return; } + +void log_printf(char *s, float f) +{ + printf("%s: %f\n", s, f); +} \ No newline at end of file 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 e5d067957..2229772e8 100644 --- a/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.c +++ b/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.c @@ -347,8 +347,15 @@ void pah_sensor_stop(void) { touch_sensor_disable(); } - pah_800x_deinit(&_main.pah_800x); - + + if(work_mode == 1) + hr_algorithm_disable(); + else if(work_mode == 2) + spo2_algorithm_disable(); + + pah_800x_deinit(&_main.pah_800x); + + hr = 0; } void ppg_interrupt_handle(void) @@ -1697,7 +1704,7 @@ void pah8009_control(char *mode,uint8_t enable) } else if (strcmp(mode, "spo2") == 0) { // md = SPO2_MODE; pah_sensor_init(diw_4mm_ir_r_ir_spo2); - auto_mode_sensor_start(); + ppg_only_sensor_start(); work_mode = 2; } else if (strcmp(mode, "leaklight") == 0) { // md = FT_LEAK_LIGHT_MODE; diff --git a/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.h b/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.h index 2e51b953c..8445abe1a 100644 --- a/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.h +++ b/code/sdk/drivers/peripheral/ppg/pah8009/sensor/pah800x_main.h @@ -9,13 +9,13 @@ //static hr algotirhm -// #include "pxialg.h" +#include "pxialg.h" // spo2 algorithm -// #include "pxialg_spo2.h" +#include "pxialg_spo2.h" // Stress algorithm -// #include "pxialg_hrv.h" +#include "pxialg_hrv.h" #ifdef PPG_MEMS_Synchronize //MEMS-INT #include "pxi_interp.h" diff --git a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp index b855bdac1..1d934b103 100644 --- a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp +++ b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp @@ -390,22 +390,17 @@ errcode_t uapi_ppg_service_init(void) { PRINT("uapi_ppg_service_init !\r\n"); - ppg_power_on(); - if (ppg_get_chip_id() != PPG_CHIP_ID) { - ppg_power_off(); LOS_Mdelay(10); - ppg_power_on(); if (ppg_get_chip_id() != PPG_CHIP_ID) { PRINT("ppg not exist!\r\n"); - ppg_power_off(); return ERRCODE_FAIL; } } - ppg_power_off(); + ppg_register_msg_callback(ppg_msg_callback);//注册驱动回调 // ppg_send_cmd_to_driver("wear",0); diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 81e180f35..f31e2125b 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -551,6 +551,9 @@ void startup_post_init_task(void) CustomEventPublish(TOPIC_EVENT_NEXTDAY_UPDATE, NULL , 0); //do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESET_DAILY_DATA,NULL); } + + // LOS_Msleep(1000); + // uapi_set4GCapability(true); #ifdef A5133_DEMO_SERVER uapi_button_register_event_cb(a5133_demo_msg_unbind_callback, BUTTON_PWR_CLICKUP_2); a5133_demo_msg_change_callback(); @@ -2657,32 +2660,30 @@ error: return (ret>0) ? ret*-1: ret; } - -errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex) +errcode_t custom_i2c_transfer(uint16_t slaveAddr,uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex) { + + uint8_t cnt = pm_veto_get_id_cnt(PM_ID_GSENSOR); + if (cnt == 0) + { + uapi_pm_add_sleep_veto(PM_ID_GSENSOR); + } + errcode_t ret; uint32_t retry; i2c_data_t data; uint8_t *write_data = NULL; int16_t write_len = 0; - //custom_i2c_init(); - write_len = regLength + writeDataSize; + //custom_iic_init(); + write_len = writeDataSize; write_data = (uint8_t *)osal_kmalloc(write_len, OSAL_GFP_KERNEL); if (write_data == NULL) { PRINT(" send buff malloc fail!"); goto error; } - if( regLength == 2) - { - write_data[0] = ((uint8_t*)®)[0]; - write_data[1] = ((uint8_t*)®)[1]; - }else{ - write_data[0] = (uint8_t)reg; - } - - ret = (uint32_t)memcpy_s(write_data + regLength, writeDataSize, writeData, writeDataSize); + ret = (uint32_t)memcpy_s(write_data, writeDataSize, writeData, writeDataSize); if (ret != EOK) { PRINT("send_buf content copy fail! ret=0x%x\n", ret); goto free_mem; @@ -2699,12 +2700,19 @@ errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, u } } if (ret != ERRCODE_SUCC) { - PRINT("data read fail! ret=0x%x\n", ret); + PRINT("data read fail! ret=0x%x slaveAddr : 0x%x\n", ret,slaveAddr); } free_mem: osal_kfree(write_data); error: + + cnt = pm_veto_get_id_cnt(PM_ID_GSENSOR); + if (cnt == 1) + { + uapi_pm_remove_sleep_veto(PM_ID_GSENSOR); + } + return (ret>0) ? ret*-1: ret; } diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index db7c88e5e..288ce8364 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -324,7 +324,7 @@ void uapi_restore_factory_setting(void); void custom_i2c_reset(uint8_t i2cbus, uint16_t i2c_clock); errcode_t custom_i2c_write_reg(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex); errcode_t custom_i2c_read_regs(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *readData, int readDataSize, int busIndex); -errcode_t custom_i2c_transfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex); +errcode_t custom_i2c_transfer(uint16_t slaveAddr,uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex); errcode_t custom_i2c_test(void); uint32_t custom_i2c_suspend(void); -- 2.17.1