From b1e737a915ade2b263a8fc7f59ebfca458d79fb3 Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Tue, 13 Aug 2024 20:14:25 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=E6=B4=BB=E4=BD=93=E6=A3=80?= =?utf8?q?=E6=B5=8B=E4=BB=A5=E4=BC=98=E5=8C=96=E4=BD=A9=E6=88=B4=E6=A3=80?= =?utf8?q?=E6=B5=8B,=E5=85=B3=E9=97=AD=E7=BA=AF=E4=BD=A9=E6=88=B4=E6=A3=80?= =?utf8?q?=E6=B5=8B=E6=A8=A1=E5=BC=8F.=20=E4=BD=BF=E7=94=A8=E5=BF=83?= =?utf8?q?=E7=8E=87=E6=95=B0=E6=8D=AE=E8=BE=85=E5=8A=A9=E7=9D=A1=E7=9C=A0?= =?utf8?q?=E7=9B=91=E6=B5=8B.=20=E6=B7=BB=E5=8A=A0=E9=9F=B3=E9=87=8F?= =?utf8?q?=E8=AE=BE=E7=BD=AEAT=E6=8C=87=E4=BB=A4.=20=E6=B7=BB=E5=8A=A0?= =?utf8?q?=E9=A9=AC=E8=BE=BE=E6=B5=8B=E8=AF=95=E8=93=9D=E7=89=99=E6=8C=87?= =?utf8?q?=E4=BB=A4.=20=E4=BC=98=E5=8C=96=E5=88=9B=E5=BB=BA=E7=BA=BF?= =?utf8?q?=E7=A8=8B=E6=89=A7=E8=A1=8C=E9=A1=BA=E5=BA=8F.=E5=BB=B6=E5=90=8E?= =?utf8?q?mag=20cywee=20ppg=20task=20=E5=88=9B=E5=BB=BA=E6=97=B6=E9=97=B4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../battery/service/battery_service.cpp | 11 +- .../brandy/brandy_standard/thread_pri_init.c | 46 ++-- .../factorytest_protocol.c | 18 +- .../drivers/peripheral/cywee/CMakeLists.txt | 3 +- .../drivers/peripheral/cywee/Inc/cywee_hal.h | 2 +- .../peripheral/cywee/Inc/cywee_service.h | 6 +- .../peripheral/cywee/service/cywee_service.c | 25 +-- .../peripheral/cywee/src/board_yh601s.c | 2 + .../drivers/peripheral/cywee/src/main_dml.c | 40 ++-- .../drivers/peripheral/ppg/hx3695/hx3695.c | 206 ++++++++++-------- .../peripheral/ppg/service/ppg_service.cpp | 2 +- .../peripheral/utils/custom_cmd_service.c | 3 + .../drivers/peripheral/utils/custom_utils.h | 1 + .../peripheral/utils/custom_utils_at_cmd.c | 54 +++++ .../peripheral/utilscpp/custom_utilscpp.cpp | 30 +++ .../peripheral/utilscpp/custom_utilscpp.h | 11 + 16 files changed, 280 insertions(+), 180 deletions(-) diff --git a/code/sdk/application/battery/service/battery_service.cpp b/code/sdk/application/battery/service/battery_service.cpp index 4f18e211e..f18191536 100644 --- a/code/sdk/application/battery/service/battery_service.cpp +++ b/code/sdk/application/battery/service/battery_service.cpp @@ -90,8 +90,6 @@ static unsigned long g_app_queue; static uint8_t g_check_count = 0; -static int oncharging_status = -1; - static void battery_check_timer_callback(void* data); errcode_t charger_plug_event_notify(uint8_t plugged); errcode_t charger_plug_event_ui_sendmsg_toUI(uint8_t plugged); @@ -291,8 +289,7 @@ static void battery_check_task(void *arg) int32_t ret; common_notify_mail_t mail; uint32_t msgsize = (uint32_t)sizeof(common_notify_mail_t); - int sendbuf[2] = {0}; - + int oncharging_status = 0; #ifdef DISABLE_VBUS_CHECK disable_charge(); uapi_tcxo_delay_ms(1000); @@ -359,16 +356,14 @@ static void battery_check_task(void *arg) }else if (mail.comm.event == BATTERY_CMD_CHARGE_PLUG) { // PRINT("[battery][service] charger_plug_event_ui_sendmsg_toUI plugged \n"); oncharging_status = 1; - sendbuf[0] = oncharging_status; - do_cywee_service_check_msg(CYWEE_SERVICE_CMD_ONCHARGING_CHANGE,sendbuf); + do_cywee_service_check_msg(CYWEE_SERVICE_CMD_ONCHARGING_CHANGE,&oncharging_status); battery_check_chargement(); charger_plug_event_ui_sendmsg_toUI(1); }else if (mail.comm.event == BATTERY_CMD_CHARGE_UNPLUG) { // PRINT("[battery][service] charger_plug_event_ui_sendmsg_toUI unplugged \n"); oncharging_status = 0; - sendbuf[0] = oncharging_status; - do_cywee_service_check_msg(CYWEE_SERVICE_CMD_ONCHARGING_CHANGE,sendbuf); + do_cywee_service_check_msg(CYWEE_SERVICE_CMD_ONCHARGING_CHANGE,&oncharging_status); #ifndef DISABLE_VBUS_CHECK disable_charge(); #endif diff --git a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c index 90c422c76..2c3062d86 100755 --- a/code/sdk/application/brandy/brandy_standard/thread_pri_init.c +++ b/code/sdk/application/brandy/brandy_standard/thread_pri_init.c @@ -434,30 +434,6 @@ uapi_pm_remove_sleep_veto(PM_ID_DEBUG); uapi_battery_init(); #endif -#ifdef ENABLE_CUSTOM_I2C - errcode_t result = custom_iic_init(); - if(result != SUCC) - PRINT("custom_iic_init failed !!! \r\n"); - else - { - PRINT("custom_iic_init succed !!! \r\n"); - #ifdef MAG_MMC5603 - uapi_mag_service_init(); - #endif - - #ifdef SUPPORT_PPG_SERVICE - uapi_ppg_service_init(); - #endif - - #ifdef ENABLE_CYWEE - uapi_cywee_service_init(); - #endif - - } - -#endif - - #ifdef ACC_LIS2DOC // uapi_acc_service_init(); #endif @@ -481,6 +457,28 @@ uapi_pm_remove_sleep_veto(PM_ID_DEBUG); start_custom_ble_service(); +#ifdef ENABLE_CUSTOM_I2C + errcode_t result = custom_iic_init(); + if(result != SUCC) + PRINT("custom_iic_init failed !!! \r\n"); + else + { + PRINT("custom_iic_init succed !!! \r\n"); + #ifdef MAG_MMC5603 + uapi_mag_service_init(); + #endif + + #ifdef SUPPORT_PPG_SERVICE + uapi_ppg_service_init(); + #endif + + #ifdef ENABLE_CYWEE + uapi_cywee_service_init(); + #endif + + } +#endif + #ifdef SUPPORT_ALIPAY_SEC #if !defined(A5133_DEMO_SERVER) && !defined(A5133_DEMO_CLIENT) uapi_alipay_svr_init(); diff --git a/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c b/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c index f7c9e886a..5fdacdbaf 100644 --- a/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c +++ b/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2024-06-17 14:31:08 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2024-07-26 16:46:54 + * @LastEditTime: 2024-08-13 09:47:02 * @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c * @Description: * @@ -603,11 +603,9 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint { //打开周期性马达 uint8_t send_data = 0x00; - - g_ble_vibrator_timer = osTimerNew((osTimerFunc_t)ble_vibrator_check_timer_callback, osTimerPeriodic, NULL, NULL); - - osTimerStart(g_ble_vibrator_timer,1000); - + // g_ble_vibrator_timer = osTimerNew((osTimerFunc_t)ble_vibrator_check_timer_callback, osTimerPeriodic, NULL, NULL); + // osTimerStart(g_ble_vibrator_timer,1000); + do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_VIBRATOR_TEST,NULL,0); factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR, 0x03, @@ -618,9 +616,11 @@ void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint { //关闭周期性马达 uint8_t send_data = 0x00; - osTimerStop(g_ble_vibrator_timer); - osTimerDelete(g_ble_vibrator_timer); - + if(g_ble_vibrator_timer != NULL) + { + osTimerStop(g_ble_vibrator_timer); + osTimerDelete(g_ble_vibrator_timer); + } factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST, BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR, 0x04, diff --git a/code/sdk/drivers/peripheral/cywee/CMakeLists.txt b/code/sdk/drivers/peripheral/cywee/CMakeLists.txt index aa4808b4b..3b96e9755 100644 --- a/code/sdk/drivers/peripheral/cywee/CMakeLists.txt +++ b/code/sdk/drivers/peripheral/cywee/CMakeLists.txt @@ -14,6 +14,7 @@ set(SOURCES ${SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_service.c ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_at_cmd.c ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_hal.c + ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_ble_Service.c # ${CMAKE_CURRENT_SOURCE_DIR}/../acc/lis2doc_STdC/examples/lis2doc_read_data_single.c # ${CMAKE_CURRENT_SOURCE_DIR}/../acc/lis2doc_STdC/lis2doc_porting.c @@ -30,7 +31,7 @@ set(PRIVATE_DEFINES ) set(PUBLIC_DEFINES -SUPPORT_AT_CYWEE + ) # use this when you want to add ccflags like -include xxx diff --git a/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h b/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h index ad6b1fbed..2e05d19a8 100644 --- a/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h +++ b/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h @@ -520,7 +520,7 @@ cywee_msg_callback_t cywee_get_send_msg_callback_func(void); void activity_mode_setstatus(int cmd); void cywee_oncharging_update(int oncharging_status); void cywee_wearstatus_update(int wearstatus); -void cywee_hrs_wearstatus_update(int hrs_data,int wearstatus); +void cywee_hrs_update(int hrs_data); void cywee_set_user_info(void); void cywee_get_sleep_data(void); void cywee_reset_daily_data(void); diff --git a/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h b/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h index 04227ab72..5a4d01b58 100644 --- a/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h +++ b/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2024-03-26 20:29:58 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2024-07-05 18:11:57 + * @LastEditTime: 2024-08-12 12:08:23 * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h * @Description: * @@ -58,7 +58,7 @@ extern "C" { #define CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE 0x1F #define CYWEE_SERVICE_CMD_ONCHARGING_CHANGE 0x20 -#define CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE 0x21 +#define CYWEE_SERVICE_CMD_HRS_CHANGE 0x21 #define CYWEE_SERVICE_CMD_SEDENTARY_MODE 0x22 #define CYWEE_SERVICE_CMD_NAP_MODE 0x32 @@ -99,7 +99,7 @@ void uapi_cywee_service_deinit(void); /** * 测试指令 参数cmd 选项: ACC_SERVICE_CMD_START_CHECK,ACC_SERVICE_CMD_STOP_CHECK */ -void do_cywee_service_check_msg(int cmd, int data[2]); +void do_cywee_service_check_msg(int cmd, int *data); void cywee_int_callback(pin_t pin, uintptr_t param); #ifdef __cplusplus diff --git a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c index 68169f54e..2849854a4 100644 --- a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c +++ b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c @@ -41,7 +41,7 @@ typedef struct { uint8_t cmd; - uint8_t data[2]; + uint8_t data; } cywee_cmd_t; /*** * 其他cmd在Header里定义,对外开放 @@ -218,7 +218,7 @@ void uapi_cywee_service_deinit(void) } static unsigned long g_cywee_queue = 0xFFFFFFFF; static uint8_t g_cywee_queue_created = 0; -void do_cywee_service_check_msg(int cmd, int data[2]) +void do_cywee_service_check_msg(int cmd, int *data) { int ret; @@ -228,15 +228,10 @@ void do_cywee_service_check_msg(int cmd, int data[2]) cywee_cmd_t mail = {0}; mail.cmd = cmd; if (data != NULL) - { - mail.data[0] = data[0]; - mail.data[1] = data[1]; - } + mail.data = *data; else - { - mail.data[0] = 0; - mail.data[1] = 0; - } + mail.data = 0; + ret = osal_msg_queue_write_copy(g_cywee_queue, (void *)&mail, sizeof(cywee_cmd_t), 0); if (ret != OSAL_SUCCESS) { @@ -324,15 +319,15 @@ static void cywee_service_check_task(void const *arg) break; case CYWEE_SERVICE_CMD_ONCHARGING_CHANGE: - cywee_oncharging_update(mail.data[0]); + cywee_oncharging_update(mail.data); break; case CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE: - cywee_wearstatus_update(mail.data[0]); + cywee_wearstatus_update(mail.data); break; - case CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE: - cywee_hrs_wearstatus_update(mail.data[0], mail.data[1]); + case CYWEE_SERVICE_CMD_HRS_CHANGE: + cywee_hrs_update(mail.data); break; case CYWEE_SERVICE_CMD_SEDENTARY_MODE: @@ -383,7 +378,7 @@ static void cywee_service_check_task(void const *arg) break; case CYWEE_SERVICE_CMD_SET_SEDENTARY_INTERVAL: - cywee_set_sedentary_interval(mail.data[0]); + cywee_set_sedentary_interval(mail.data); break; case CYWEE_SERVICE_CMD_SET_USER_INFO: diff --git a/code/sdk/drivers/peripheral/cywee/src/board_yh601s.c b/code/sdk/drivers/peripheral/cywee/src/board_yh601s.c index 5bde8342c..957803b8a 100644 --- a/code/sdk/drivers/peripheral/cywee/src/board_yh601s.c +++ b/code/sdk/drivers/peripheral/cywee/src/board_yh601s.c @@ -239,7 +239,9 @@ void CWM_OS_free(void *ptr) int CWM_OS_dbgOutput(const char * format) { PRINT("%s", format); +#if 0 ble_cywee_server_send_input_report((uint8_t *)format,strlen(format)); +#endif return 0; } diff --git a/code/sdk/drivers/peripheral/cywee/src/main_dml.c b/code/sdk/drivers/peripheral/cywee/src/main_dml.c index 80d7e6d1a..930b49fca 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main_dml.c +++ b/code/sdk/drivers/peripheral/cywee/src/main_dml.c @@ -381,24 +381,14 @@ void cywee_time_sync(void) CWM_SettingControl(SCL_DATE_TIME, &scl); } -void cywee_hrs_wearstatus_update(int hrs_data,int wearstatus) +void cywee_hrs_update(int hrs_data) { - uint8_t wear_status = 0; hrs = hrs_data; - wear_status = wearstatus; CWM_OS_dbgPrintf("hrs : %d\r\n",hrs); - CWM_OS_dbgPrintf("wear_status : %d\r\n",wear_status); - memset(&csd, 0, sizeof(CUSTOM_HEARTRATE)); csd.sensorType = CUSTOM_HEARTRATE; csd.fData[0] = hrs; - CWM_CustomSensorInput(&csd); - - memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT)); - csd.sensorType = CUSTOM_OFFBODY_DETECT; - csd.fData[0] = wear_status; - CWM_CustomSensorInput(&csd); - + CWM_CustomSensorInput(&csd); } void cywee_oncharging_update(int oncharging_status) @@ -464,6 +454,13 @@ void cywee_inactivity_mode_change(int mode) //睡眠 case INACTIVITY_MODE_SLEEPING: CWM_OS_dbgPrintf("INACTIVITY_MODE_SLEEPING\r\n"); + + //设置睡眠 + memset(&scl, 0, sizeof(scl)); + scl.iData[0] = 1; + scl.iData[2] = 1; // 0.不使用心率 1.使用心率 + CWM_SettingControl(SCL_SLEEP_CONFIG, &scl); + memset(&scl, 0, sizeof(scl)); scl.iData[0] = 1; scl.iData[1] = 2; @@ -1110,10 +1107,6 @@ int cywee_main_dml(void) scl.iData[0] = 1; CWM_SettingControl(SCL_ACTIVITY_CONFIG, &scl); - //设置睡眠 - memset(&scl, 0, sizeof(scl)); - scl.iData[0] = 1; - CWM_SettingControl(SCL_SLEEP_CONFIG, &scl); //设置久坐 memset(&scl, 0, sizeof(scl)); @@ -1132,13 +1125,14 @@ int cywee_main_dml(void) scl.iData[1] = 1;// 0 关闭运动识别 1 打开运动识别 CWM_SettingControl(SCL_AR_ALERT_CONFIG, &scl); - // memset(&scl, 0, sizeof(scl)); - // scl.iData[0] = 1; - // scl.iData[3] = 9; - // scl.iData[4] = 5; - // scl.iData[7] = -1; - // CWM_SettingControl(SCL_LOG, &scl); - +#if 0 + memset(&scl, 0, sizeof(scl)); + scl.iData[0] = 1; + scl.iData[3] = 9; + scl.iData[4] = 5; + scl.iData[7] = -1; + CWM_SettingControl(SCL_LOG, &scl); +#endif //呼叫任一個CWM_Sensor_Enable 前呼叫此指令 设置手动或自动模式 memset(&scl, 0, sizeof(scl)); diff --git a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c index ba9408382..29d3cc832 100644 --- a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c +++ b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c @@ -123,8 +123,7 @@ uint8_t alg_ram[11 * 1024] __attribute__((aligned(4))); //uint8_t alg_ram[10] = {0}; ppg_sensor_data_t ppg_s_data; -int cywee_data[2] = {0}; - +static int cywee_data = 0; int wear_mode_status = -1; static uint8_t hx3695_chip_id = 0; @@ -2706,26 +2705,23 @@ static void get_avg_hrs(int32_t hrs) max_hrs = hrs_data[i]; } avg_hrs = (sum_hrs - max_hrs - min_hrs) / (hrs_num - 2); - } - - hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func(); - if(func != NULL) - { - hrsresult.lastesthrs = avg_hrs; - func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t)); - func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t)); - if(uapi_get_cywee_static_state()) - { - func(HX3695_MSG_TYPE_STATIC_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t)); - } - } - - if(hrs_mode_state) - { - cywee_data[0] = hrsresult.lastesthrs; - cywee_data[1] = hrsresult.wearstatus; - - do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE,cywee_data); + //PRINT("max_hrs[%d],min_hrs[%d],avg_hrs[%d]\n",max_hrs,min_hrs,avg_hrs); + hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func(); + if(func != NULL) + { + hrsresult.lastesthrs = avg_hrs; + func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t)); + if(uapi_get_cywee_static_state()) + { + func(HX3695_MSG_TYPE_STATIC_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t)); + } + } + + if(hrs_mode_state || uapi_dev_runtime_get_sleep_status() == 1) + { + cywee_data = hrsresult.lastesthrs; + do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_CHANGE,&cywee_data); + } } } @@ -2802,38 +2798,39 @@ void hx3695_hrs_ppg_Int_handle(void) // result.ir_data_final = hrs_s_dat.ir_data[0]; // hx3695_factory_test_process(NULL, APP_FACTORY_TEST_HR_START, &result); //PRINT("*count : %d \r\n",*count); - if(*count < 10) + if(*count < 7 || *count > 9) { - memset(gsensordata,0.0f,sizeof(gsenson_t) * 8); + return; + } + memset(gsensordata,0.0f,sizeof(gsenson_t) * 8); - gsensor_get_n_data(8,gsensordata); + gsensor_get_n_data(8,gsensordata); - for(ii=0; ii<*count; ii++) - { - if(ii == 8) - { - gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1]; - gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1]; - gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1]; - } - else - { - gsen_fifo_x_send[ii] = gsensordata[ii].x * 4096 / 10; - gsen_fifo_y_send[ii] = gsensordata[ii].y * 4096 / 10; - gsen_fifo_z_send[ii] = gsensordata[ii].z * 4096 / 10; - } - //PRINT("hxdata:%d/%d %d %d %.3f %.3f %.3f %d\r\n" ,1+ii,*count,PPG_buf[ii],ir_buf[0],gsen_fifo_x_send[ii],gsen_fifo_y_send[ii],gsen_fifo_z_send[ii],ppg_s_data.green_cur); - //PRINT("hxdata:%d/%d %d %d %d %d %d %d\r\n" ,1+ii,*count,PPG_buf[ii],ir_buf[0],gsen_fifo_x_send[ii],gsen_fifo_y_send[ii],gsen_fifo_z_send[ii],ppg_s_data.green_cur); - - } - hrs_wear_status = hx3695_hrs_get_wear_status(); - //PRINT("hrs_wear_status: %d !!\r\n", hrs_wear_status); - - if(hrs_wear_status == MSG_HRS_WEAR) + for(ii=0; ii<*count; ii++) + { + if(ii == 8) { - tyhx_hrs_alg_send_data(PPG_buf, *count, gsen_fifo_x_send, gsen_fifo_y_send, - gsen_fifo_z_send, cal.Group1_Ledidac); + gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1]; + gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1]; + gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1]; } + else + { + gsen_fifo_x_send[ii] = gsensordata[ii].x * 4096 / 10; + gsen_fifo_y_send[ii] = gsensordata[ii].y * 4096 / 10; + gsen_fifo_z_send[ii] = gsensordata[ii].z * 4096 / 10; + } + //PRINT("hxdata:%d/%d %d %d %.3f %.3f %.3f %d\r\n" ,1+ii,*count,PPG_buf[ii],ir_buf[0],gsen_fifo_x_send[ii],gsen_fifo_y_send[ii],gsen_fifo_z_send[ii],ppg_s_data.green_cur); + //PRINT("hxdata:%d/%d %d %d %d %d %d %d\r\n" ,1+ii,*count,PPG_buf[ii],ir_buf[0],gsen_fifo_x_send[ii],gsen_fifo_y_send[ii],gsen_fifo_z_send[ii],ppg_s_data.green_cur); + + } + hrs_wear_status = hx3695_hrs_get_wear_status(); + //PRINT("hrs_wear_status: %d !!\r\n", hrs_wear_status); + + if(hrs_wear_status == MSG_HRS_WEAR) + { + tyhx_hrs_alg_send_data(PPG_buf, *count, gsen_fifo_x_send, gsen_fifo_y_send, + gsen_fifo_z_send, cal.Group1_Ledidac); } #endif @@ -2859,8 +2856,8 @@ void hx3695_hrs_ppg_Int_handle(void) // #endif // } - uint8_t curr_wear = 1; - //uint8_t last_wear = cwm_get_wear_status(); + uint8_t curr_wear = 1; + //uint8_t last_wear = cwm_get_wear_status(); alg_results = tyhx_hrs_alg_get_results(); hrsresult.lastesthrs = alg_results.hr_result; @@ -2868,8 +2865,27 @@ void hx3695_hrs_ppg_Int_handle(void) hrsresult.hr_living_qu = alg_results.hr_result_qual; hrsresult.hr_living_std = alg_results.hr_result_std; hrsresult.wearstatus = hrs_wear_status; - if(hrsresult.lastesthrs > 50) - get_avg_hrs(hrsresult.lastesthrs); + + if(hrs_wear_status == MSG_HRS_WEAR && hrsresult.hr_living == MSG_LIVING_TRUE) + { + if(hrsresult.lastesthrs > 50) + get_avg_hrs(hrsresult.lastesthrs); + hrsresult.wearstatus = MSG_HRS_WEAR; + } + else + { + hrsresult.wearstatus = MSG_HRS_NO_WEAR; + } + hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func(); + if(func != NULL) + func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t)); + + if(wear_mode_status != hrsresult.wearstatus) + { + wear_mode_status = hrsresult.wearstatus; + cywee_data = wear_mode_status; + do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_data); + } //PRINT("hx3695 data_cnt: %d, hr_living: %d, hr_living_qu: %d, hr_living_std: %d, hr_result:%d \r\n", //alg_results.data_cnt, hrsresult.hr_living, hrsresult.hr_living_qu, hrsresult.hr_living_std, hrsresult.lastesthrs); @@ -3238,51 +3254,52 @@ void hx3695_spo2_ppg_Int_handle(void) #ifndef GSEN_40MS_TIMMER // readFifoByHrsModule(); #endif - DEBUG_PRINTF("\r\n send1 jlink cnt=%d\r\n",*count); + //DEBUG_PRINTF("\r\n send1 jlink cnt=%d\r\n",*count); /*屏蔽*/ //("*count[%d] \r\n",*count); - if(*count < 10) + if(*count < 7 || *count > 9) + { + return; + } + //gsensor_get_n_data(8,gsensordata); + for(ii=0; ii<*count; ii++) { - //gsensor_get_n_data(8,gsensordata); - for(ii=0; ii<*count; ii++) - { - - // if(ii == 8) - // { - // gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1]; - // gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1]; - // gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1]; - // } - // else - // { - // gsen_fifo_x_send[ii] = gsensordata[ii].x * 2048; - // gsen_fifo_y_send[ii] = gsensordata[ii].y * 2048; - // gsen_fifo_z_send[ii] = gsensordata[ii].z * 2048; - // } - //("hxdata:%d/%d %d %d %d %d %d %d\r\n", - //1+ii,*count,red_buf[ii],ir_buf[ii],green_buf[ii],gsen_fifo_x_send[ii],gsen_fifo_y_send[ii],gsen_fifo_z_send[ii]); - //printf("FFF==>spo2 red_buf : %d, %d, %d, %d \n", 1+ii, *count, red_buf[ii], ir_buf[0]); - } - - // ft_ppg_iir = spo2_s_dat.red_data[0]; - // hx3695_factory_test_process(NULL, APP_FACTORY_TEST_SPO2_START, &ft_ppg_iir); - - ft_test_result_t result = {0}; - result.gr_data_final = spo2_s_dat.green_data[0]; - result.red_data_final = spo2_s_dat.red_data[0]; - result.ir_data_final = spo2_s_dat.ir_data1[0]; - //hx3695_factory_test_process(NULL, APP_FACTORY_TEST_SPO2_START, &result); - - //("hx3695 current value: %d %d %d %d %d %d\r\n", cal.R_LED, cal.IR_LED1, cal.G_LED, cal.R_LEDDAC, cal.IR_LEDDAC1, cal.G_LEDDAC); - spo2_wear_status = hx3695_spo2_get_wear_status(); - //PRINT("spo2_wear_status : %d\r\n",spo2_wear_status); - if(spo2_wear_status == MSG_SPO2_WEAR) - { - tyhx_spo2_alg_send_data(red_buf, ir_buf, green_buf, cal.R_LEDDAC, cal.IR_LEDDAC1, cal.G_LEDDAC, - gsen_fifo_x_send, gsen_fifo_y_send, gsen_fifo_z_send, *count); - } + // if(ii == 8) + // { + // gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1]; + // gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1]; + // gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1]; + // } + // else + // { + // gsen_fifo_x_send[ii] = gsensordata[ii].x * 2048; + // gsen_fifo_y_send[ii] = gsensordata[ii].y * 2048; + // gsen_fifo_z_send[ii] = gsensordata[ii].z * 2048; + // } + //("hxdata:%d/%d %d %d %d %d %d %d\r\n", + //1+ii,*count,red_buf[ii],ir_buf[ii],green_buf[ii],gsen_fifo_x_send[ii],gsen_fifo_y_send[ii],gsen_fifo_z_send[ii]); + //printf("FFF==>spo2 red_buf : %d, %d, %d, %d \n", 1+ii, *count, red_buf[ii], ir_buf[0]); + } + + // ft_ppg_iir = spo2_s_dat.red_data[0]; + // hx3695_factory_test_process(NULL, APP_FACTORY_TEST_SPO2_START, &ft_ppg_iir); + + ft_test_result_t result = {0}; + result.gr_data_final = spo2_s_dat.green_data[0]; + result.red_data_final = spo2_s_dat.red_data[0]; + result.ir_data_final = spo2_s_dat.ir_data1[0]; + //hx3695_factory_test_process(NULL, APP_FACTORY_TEST_SPO2_START, &result); + + + //("hx3695 current value: %d %d %d %d %d %d\r\n", cal.R_LED, cal.IR_LED1, cal.G_LED, cal.R_LEDDAC, cal.IR_LEDDAC1, cal.G_LEDDAC); + spo2_wear_status = hx3695_spo2_get_wear_status(); + //PRINT("spo2_wear_status : %d\r\n",spo2_wear_status); + if(spo2_wear_status == MSG_SPO2_WEAR) + { + tyhx_spo2_alg_send_data(red_buf, ir_buf, green_buf, cal.R_LEDDAC, cal.IR_LEDDAC1, cal.G_LEDDAC, + gsen_fifo_x_send, gsen_fifo_y_send, gsen_fifo_z_send, *count); } #endif @@ -3625,12 +3642,11 @@ void hx3695_wear_ppg_Int_handle(void) hx3695_check_touch_read(&ppg_s_data); hx3695_wear_status = hx3695_check_touch_send_data(ir_buf,*count); - hrsresult.wearstatus = hx3695_wear_status; // PRINT("hx3695_wear_status : %d \r\n",hx3695_wear_status); if(wear_mode_status != hx3695_wear_status) { wear_mode_status = hx3695_wear_status; - cywee_data[0] = wear_mode_status; + cywee_data = wear_mode_status; do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_data); } diff --git a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp index 202688d74..cacb6631a 100644 --- a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp +++ b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp @@ -68,7 +68,7 @@ static bool ppg_service_running_stat = false; static bool ppg_sensor_exist = false; static uint8_t wear_mode_state = 0; -static uint8_t keep_in_wear_det_mod = 1; //持续坚持 佩戴检测模式 +static uint8_t keep_in_wear_det_mod = 0; //持续坚持 佩戴检测模式 void set_keep_in_wear_det_mode(uint8_t mod) diff --git a/code/sdk/drivers/peripheral/utils/custom_cmd_service.c b/code/sdk/drivers/peripheral/utils/custom_cmd_service.c index 8353b9b94..ca43334c4 100644 --- a/code/sdk/drivers/peripheral/utils/custom_cmd_service.c +++ b/code/sdk/drivers/peripheral/utils/custom_cmd_service.c @@ -191,6 +191,9 @@ static void custom_cmd_service_check_task(void const *arg) uapi_factorytest_enter_test_view(0); } break; + case CUSTOM_CMD_MSG_TYPE_VIBRATOR_TEST: + uapi_vibrator_test(2 * 60 * 60); + break; default: PRINT("Unknown CUSTOM_CMD_MSG cmd 0x%02X \r\n", mail.cmd); break; diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index 9514c4204..0ad7f7308 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -203,6 +203,7 @@ uint32_t uapi_calendar_store_date(void); #define CUSTOM_CMD_MSG_TYPE_LCD_COLOR_TEST 0x08 #define CUSTOM_CMD_MSG_TYPE_TP_TEST 0x09 #define CUSTOM_CMD_MSG_TYPE_CROWN_TEST 0x0A +#define CUSTOM_CMD_MSG_TYPE_VIBRATOR_TEST 0x0B errcode_t uapi_custom_cmd_service_init(void); void do_custom_cmd_service_check_msg(int cmd, void *params, int paramlen); diff --git a/code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c b/code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c index 3519938c2..a81a165c3 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c @@ -1049,6 +1049,32 @@ static uint32_t BLE_TEST(uint8_t *para, uint32_t paraLen, char *strCommonCmd) case 0: //delete_before_file(atoi( (char *)argv[1])); break; + case 1: + uapi_reconnect(); + break; + // case 2: + // custom_ble_service_start(); + // break; + case 3: + custom_ble_service_start_(atoi( (char *)argv[1])); + break; + case 4: + uapi_a2dp_snk_connect(); + break; + // case 5: + // svr_ble_adv_stop(); + // break; + // case 6: + // uapi_disconnect_remote_device(); + // break; + // case 7: + // uapi_ble_disconnect_device(); + // break; + + // case 3: + // gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 20);; + // break; + default: break; } @@ -1057,6 +1083,33 @@ static uint32_t BLE_TEST(uint8_t *para, uint32_t paraLen, char *strCommonCmd) return ERRCODE_SUCC; } +static uint32_t custom_volume_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd) +{ + + UNUSED(strCommonCmd); + uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 }; + uint32_t argc = 0; + uint8_t send_data[8] = {0}; + + + int ret = ConvertCmdToParam(para, paraLen, argv, &argc); + if (ret != CUSTOM_UTILS_SUCCESS) { + wstp_print("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n"); + return ERRCODE_FAIL; + } + + if (argc != 2) { + wstp_print("CUSTOM_UTILSTEST power_test ATCMD Set Parameter Failed argc %d\r\nPM_DSP_POWER_UP_AND_RUN=2 PM_DSP_POWER_OFF=3\r\n",argc); + return ERRCODE_FAIL; + } + + uint8_t channel = atol((char*)argv[0]); + int32_t sounding = atol((char*)argv[1]); + + custom_set_volume(channel,sounding); + + return ERRCODE_SUCC; +} static const at_cmd_table_t g_custom_utils_cmd[] = { { (char *)"AT^CUSTOM_SN", custom_utils_setsn, (char *)"123456789ABCDEF2345678" }, @@ -1131,6 +1184,7 @@ static const at_cmd_table_t g_custom_utils_cmd[] = { { (char *)"AT^PBAP_PULL", PBAP_PULL, (char *)" " }, { (char *)"AT^PBAP_LS", PBAP_LS, (char *)" " }, { (char *)"AT^BLE_TEST", BLE_TEST, (char *)" " }, + { (char *)"AT^SETVOLUME", custom_volume_test, (char *)" " }, }; diff --git a/code/sdk/drivers/peripheral/utilscpp/custom_utilscpp.cpp b/code/sdk/drivers/peripheral/utilscpp/custom_utilscpp.cpp index 61bc6630e..ecad63122 100644 --- a/code/sdk/drivers/peripheral/utilscpp/custom_utilscpp.cpp +++ b/code/sdk/drivers/peripheral/utilscpp/custom_utilscpp.cpp @@ -19,6 +19,9 @@ // #include "thread_adapter.h" #include "graphic_service.h" +#include "audio_manager.h" +#include "audio_base_type.h" + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -62,6 +65,8 @@ extern "C" { #include "upg_alloc.h" + + #define IN_BUF_SIZE (1 << 8) #define OUT_BUF_SIZE (1 << 8) @@ -297,6 +302,31 @@ void CustomEventPublish(uint16_t topic, uint8_t *data , uint32_t size) return; } +void custom_set_volume(uint8_t channel,int32_t sounding) +{ + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "audio volume = %d", sounding); + AudioStreamType stream; + switch(channel) + { + case 0: + stream = AUDIO_STREAM_A2DP_MUSIC; + break; + case 1: + stream = AUDIO_STREAM_VOICE_CALL_VOLTE; + break; + case 2: + stream = AUDIO_STREAM_VOICE_CALL; + break; + case 3: + stream = AUDIO_STREAM_VOICE_CALL_BT_SCO; + default: + break; + } + Audio::AudioManager::GetInstance().SetVolume(stream, sounding); // 本地音量设置 +} + + + #ifdef __cplusplus } #endif /* __cplusplus */ \ No newline at end of file diff --git a/code/sdk/drivers/peripheral/utilscpp/custom_utilscpp.h b/code/sdk/drivers/peripheral/utilscpp/custom_utilscpp.h index 410b68803..b41868610 100644 --- a/code/sdk/drivers/peripheral/utilscpp/custom_utilscpp.h +++ b/code/sdk/drivers/peripheral/utilscpp/custom_utilscpp.h @@ -1,3 +1,13 @@ +/* + * @Author: penglei 1624952103@qq.com + * @Date: 2024-07-09 20:22:54 + * @LastEditors: penglei 1624952103@qq.com + * @LastEditTime: 2024-08-10 12:13:13 + * @FilePath: /FD230/code/sdk/drivers/peripheral/utilscpp/custom_utilscpp.h + * @Description: + * + * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. + */ /** * Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved. \n * @@ -18,6 +28,7 @@ errcode_t uapi_dial_pkg_decompress(const char* dial_pkg_path,char* dial_bin_path void uapi_dump_meminfo(void); void CustomEventPublish(uint16_t topic, uint8_t *data , uint32_t size); +void custom_set_volume(uint8_t channel,int32_t sounding); #ifdef __cplusplus } #endif /* __cplusplus */ -- 2.17.1