From 22203ab1b812ad2373db6bf026f16f195bba2732 Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Thu, 10 Jul 2025 10:55:36 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E8=A1=80=E5=8E=8B=E6=B5=8B?= =?utf8?q?=E9=87=8F=E7=BB=93=E6=9E=9C=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../boards/brandy_evb/board_config/board_w9.h | 4 ++ 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 +++++- .../peripheral/ppg/service/ppg_service.cpp | 7 +-- .../drivers/peripheral/utils/custom_utils.c | 36 +++++++----- .../drivers/peripheral/utils/custom_utils.h | 2 +- 7 files changed, 86 insertions(+), 61 deletions(-) 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..e42d63cbd 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,8 +336,12 @@ 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}, #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/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