使用心率数据辅助睡眠监测.
添加音量设置AT指令.
添加马达测试蓝牙指令.
优化创建线程执行顺序.延后mag cywee ppg task 创建时间.
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);
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);
}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
uapi_battery_init();\r
#endif\r
\r
-#ifdef ENABLE_CUSTOM_I2C\r
- errcode_t result = custom_iic_init();\r
- if(result != SUCC)\r
- PRINT("custom_iic_init failed !!! \r\n");\r
- else\r
- {\r
- PRINT("custom_iic_init succed !!! \r\n");\r
- #ifdef MAG_MMC5603\r
- uapi_mag_service_init();\r
- #endif\r
-\r
- #ifdef SUPPORT_PPG_SERVICE\r
- uapi_ppg_service_init();\r
- #endif\r
-\r
- #ifdef ENABLE_CYWEE\r
- uapi_cywee_service_init();\r
- #endif \r
-\r
- }\r
-\r
-#endif\r
-\r
-\r
#ifdef ACC_LIS2DOC\r
// uapi_acc_service_init();\r
#endif\r
\r
start_custom_ble_service();\r
\r
+#ifdef ENABLE_CUSTOM_I2C\r
+ errcode_t result = custom_iic_init();\r
+ if(result != SUCC)\r
+ PRINT("custom_iic_init failed !!! \r\n");\r
+ else\r
+ {\r
+ PRINT("custom_iic_init succed !!! \r\n");\r
+ #ifdef MAG_MMC5603\r
+ uapi_mag_service_init();\r
+ #endif\r
+\r
+ #ifdef SUPPORT_PPG_SERVICE\r
+ uapi_ppg_service_init();\r
+ #endif\r
+\r
+ #ifdef ENABLE_CYWEE\r
+ uapi_cywee_service_init();\r
+ #endif \r
+\r
+ }\r
+#endif\r
+\r
#ifdef SUPPORT_ALIPAY_SEC\r
#if !defined(A5133_DEMO_SERVER) && !defined(A5133_DEMO_CLIENT)\r
uapi_alipay_svr_init();\r
* @Author: penglei 1624952103@qq.com\r
* @Date: 2024-06-17 14:31:08\r
* @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2024-07-26 16:46:54\r
+ * @LastEditTime: 2024-08-13 09:47:02\r
* @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
* @Description: \r
* \r
{\r
//打开周期性马达\r
uint8_t send_data = 0x00;\r
-\r
- g_ble_vibrator_timer = osTimerNew((osTimerFunc_t)ble_vibrator_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
-\r
- osTimerStart(g_ble_vibrator_timer,1000);\r
-\r
+ // g_ble_vibrator_timer = osTimerNew((osTimerFunc_t)ble_vibrator_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
+ // osTimerStart(g_ble_vibrator_timer,1000);\r
+ do_custom_cmd_service_check_msg(CUSTOM_CMD_MSG_TYPE_VIBRATOR_TEST,NULL,0);\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR,\r
0x03,\r
{\r
//关闭周期性马达\r
uint8_t send_data = 0x00;\r
- osTimerStop(g_ble_vibrator_timer);\r
- osTimerDelete(g_ble_vibrator_timer);\r
-\r
+ if(g_ble_vibrator_timer != NULL)\r
+ {\r
+ osTimerStop(g_ble_vibrator_timer);\r
+ osTimerDelete(g_ble_vibrator_timer);\r
+ }\r
factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR,\r
0x04,\r
${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
)
set(PUBLIC_DEFINES
-SUPPORT_AT_CYWEE
+
)
# use this when you want to add ccflags like -include xxx
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);
* @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:
*
#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
/**
* 测试指令 参数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
typedef struct
{
uint8_t cmd;
- uint8_t data[2];
+ uint8_t data;
} cywee_cmd_t;
/***
* 其他cmd在Header里定义,对外开放
}
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;
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)
{
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:
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:
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;
}
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)
//睡眠
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;
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));
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));
//uint8_t alg_ram[10] = {0};\r
ppg_sensor_data_t ppg_s_data;\r
\r
-int cywee_data[2] = {0};\r
-\r
+static int cywee_data = 0;\r
int wear_mode_status = -1;\r
\r
static uint8_t hx3695_chip_id = 0;\r
max_hrs = hrs_data[i];\r
}\r
avg_hrs = (sum_hrs - max_hrs - min_hrs) / (hrs_num - 2);\r
- }\r
-\r
- hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
- if(func != NULL)\r
- {\r
- hrsresult.lastesthrs = avg_hrs;\r
- func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- if(uapi_get_cywee_static_state())\r
- {\r
- func(HX3695_MSG_TYPE_STATIC_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
- }\r
- }\r
- \r
- if(hrs_mode_state)\r
- {\r
- cywee_data[0] = hrsresult.lastesthrs;\r
- cywee_data[1] = hrsresult.wearstatus;\r
-\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE,cywee_data);\r
+ //PRINT("max_hrs[%d],min_hrs[%d],avg_hrs[%d]\n",max_hrs,min_hrs,avg_hrs);\r
+ hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
+ if(func != NULL)\r
+ {\r
+ hrsresult.lastesthrs = avg_hrs;\r
+ func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ if(uapi_get_cywee_static_state())\r
+ {\r
+ func(HX3695_MSG_TYPE_STATIC_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+ }\r
+ }\r
+ \r
+ if(hrs_mode_state || uapi_dev_runtime_get_sleep_status() == 1)\r
+ {\r
+ cywee_data = hrsresult.lastesthrs;\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_CHANGE,&cywee_data);\r
+ }\r
}\r
}\r
\r
// result.ir_data_final = hrs_s_dat.ir_data[0];\r
// hx3695_factory_test_process(NULL, APP_FACTORY_TEST_HR_START, &result);\r
//PRINT("*count : %d \r\n",*count);\r
- if(*count < 10)\r
+ if(*count < 7 || *count > 9)\r
{\r
- memset(gsensordata,0.0f,sizeof(gsenson_t) * 8);\r
+ return;\r
+ }\r
+ memset(gsensordata,0.0f,sizeof(gsenson_t) * 8);\r
\r
- gsensor_get_n_data(8,gsensordata); \r
+ gsensor_get_n_data(8,gsensordata); \r
\r
- for(ii=0; ii<*count; ii++)\r
- {\r
- if(ii == 8)\r
- {\r
- gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1];\r
- gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1];\r
- gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1];\r
- }\r
- else\r
- {\r
- gsen_fifo_x_send[ii] = gsensordata[ii].x * 4096 / 10;\r
- gsen_fifo_y_send[ii] = gsensordata[ii].y * 4096 / 10;\r
- gsen_fifo_z_send[ii] = gsensordata[ii].z * 4096 / 10;\r
- }\r
- //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);\r
- //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);\r
-\r
- }\r
- hrs_wear_status = hx3695_hrs_get_wear_status();\r
- //PRINT("hrs_wear_status: %d !!\r\n", hrs_wear_status);\r
- \r
- if(hrs_wear_status == MSG_HRS_WEAR)\r
+ for(ii=0; ii<*count; ii++)\r
+ {\r
+ if(ii == 8)\r
{\r
- tyhx_hrs_alg_send_data(PPG_buf, *count, gsen_fifo_x_send, gsen_fifo_y_send, \r
- gsen_fifo_z_send, cal.Group1_Ledidac);\r
+ gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1];\r
+ gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1];\r
+ gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1];\r
}\r
+ else\r
+ {\r
+ gsen_fifo_x_send[ii] = gsensordata[ii].x * 4096 / 10;\r
+ gsen_fifo_y_send[ii] = gsensordata[ii].y * 4096 / 10;\r
+ gsen_fifo_z_send[ii] = gsensordata[ii].z * 4096 / 10;\r
+ }\r
+ //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);\r
+ //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);\r
+\r
+ }\r
+ hrs_wear_status = hx3695_hrs_get_wear_status();\r
+ //PRINT("hrs_wear_status: %d !!\r\n", hrs_wear_status);\r
+\r
+ if(hrs_wear_status == MSG_HRS_WEAR)\r
+ {\r
+ tyhx_hrs_alg_send_data(PPG_buf, *count, gsen_fifo_x_send, gsen_fifo_y_send, \r
+ gsen_fifo_z_send, cal.Group1_Ledidac);\r
}\r
#endif\r
\r
// #endif\r
// }\r
\r
- uint8_t curr_wear = 1;\r
- //uint8_t last_wear = cwm_get_wear_status();\r
+ uint8_t curr_wear = 1;\r
+ //uint8_t last_wear = cwm_get_wear_status();\r
\r
alg_results = tyhx_hrs_alg_get_results();\r
hrsresult.lastesthrs = alg_results.hr_result;\r
hrsresult.hr_living_qu = alg_results.hr_result_qual;\r
hrsresult.hr_living_std = alg_results.hr_result_std;\r
hrsresult.wearstatus = hrs_wear_status;\r
- if(hrsresult.lastesthrs > 50)\r
- get_avg_hrs(hrsresult.lastesthrs);\r
+\r
+ if(hrs_wear_status == MSG_HRS_WEAR && hrsresult.hr_living == MSG_LIVING_TRUE)\r
+ {\r
+ if(hrsresult.lastesthrs > 50)\r
+ get_avg_hrs(hrsresult.lastesthrs);\r
+ hrsresult.wearstatus = MSG_HRS_WEAR;\r
+ }\r
+ else\r
+ {\r
+ hrsresult.wearstatus = MSG_HRS_NO_WEAR;\r
+ }\r
+ hx3695_msg_callback_t func = hx3695_get_send_msg_callback_func();\r
+ if(func != NULL)\r
+ func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+\r
+ if(wear_mode_status != hrsresult.wearstatus)\r
+ {\r
+ wear_mode_status = hrsresult.wearstatus;\r
+ cywee_data = wear_mode_status;\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_data);\r
+ }\r
//PRINT("hx3695 data_cnt: %d, hr_living: %d, hr_living_qu: %d, hr_living_std: %d, hr_result:%d \r\n",\r
//alg_results.data_cnt, hrsresult.hr_living, hrsresult.hr_living_qu, hrsresult.hr_living_std, hrsresult.lastesthrs);\r
\r
#ifndef GSEN_40MS_TIMMER\r
// readFifoByHrsModule();\r
#endif\r
- DEBUG_PRINTF("\r\n send1 jlink cnt=%d\r\n",*count); \r
+ //DEBUG_PRINTF("\r\n send1 jlink cnt=%d\r\n",*count); \r
\r
/*屏蔽*/\r
//("*count[%d] \r\n",*count);\r
- if(*count < 10)\r
+ if(*count < 7 || *count > 9)\r
+ {\r
+ return;\r
+ }\r
+ //gsensor_get_n_data(8,gsensordata);\r
+ for(ii=0; ii<*count; ii++)\r
{\r
- //gsensor_get_n_data(8,gsensordata);\r
- for(ii=0; ii<*count; ii++)\r
- {\r
- \r
- // if(ii == 8)\r
- // {\r
- // gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1];\r
- // gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1];\r
- // gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1];\r
- // }\r
- // else\r
- // {\r
- // gsen_fifo_x_send[ii] = gsensordata[ii].x * 2048;\r
- // gsen_fifo_y_send[ii] = gsensordata[ii].y * 2048;\r
- // gsen_fifo_z_send[ii] = gsensordata[ii].z * 2048;\r
- // }\r
- //("hxdata:%d/%d %d %d %d %d %d %d\r\n",\r
- //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]);\r
- //printf("FFF==>spo2 red_buf : %d, %d, %d, %d \n", 1+ii, *count, red_buf[ii], ir_buf[0]);\r
- }\r
-\r
- // ft_ppg_iir = spo2_s_dat.red_data[0];\r
- // hx3695_factory_test_process(NULL, APP_FACTORY_TEST_SPO2_START, &ft_ppg_iir);\r
-\r
- ft_test_result_t result = {0};\r
- result.gr_data_final = spo2_s_dat.green_data[0];\r
- result.red_data_final = spo2_s_dat.red_data[0];\r
- result.ir_data_final = spo2_s_dat.ir_data1[0];\r
- //hx3695_factory_test_process(NULL, APP_FACTORY_TEST_SPO2_START, &result);\r
\r
- \r
- //("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);\r
- spo2_wear_status = hx3695_spo2_get_wear_status();\r
- //PRINT("spo2_wear_status : %d\r\n",spo2_wear_status);\r
- if(spo2_wear_status == MSG_SPO2_WEAR)\r
- {\r
- tyhx_spo2_alg_send_data(red_buf, ir_buf, green_buf, cal.R_LEDDAC, cal.IR_LEDDAC1, cal.G_LEDDAC, \r
- gsen_fifo_x_send, gsen_fifo_y_send, gsen_fifo_z_send, *count);\r
- }\r
+ // if(ii == 8)\r
+ // {\r
+ // gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1];\r
+ // gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1];\r
+ // gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1];\r
+ // }\r
+ // else\r
+ // {\r
+ // gsen_fifo_x_send[ii] = gsensordata[ii].x * 2048;\r
+ // gsen_fifo_y_send[ii] = gsensordata[ii].y * 2048;\r
+ // gsen_fifo_z_send[ii] = gsensordata[ii].z * 2048;\r
+ // }\r
+ //("hxdata:%d/%d %d %d %d %d %d %d\r\n",\r
+ //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]);\r
+ //printf("FFF==>spo2 red_buf : %d, %d, %d, %d \n", 1+ii, *count, red_buf[ii], ir_buf[0]);\r
+ }\r
+\r
+ // ft_ppg_iir = spo2_s_dat.red_data[0];\r
+ // hx3695_factory_test_process(NULL, APP_FACTORY_TEST_SPO2_START, &ft_ppg_iir);\r
+\r
+ ft_test_result_t result = {0};\r
+ result.gr_data_final = spo2_s_dat.green_data[0];\r
+ result.red_data_final = spo2_s_dat.red_data[0];\r
+ result.ir_data_final = spo2_s_dat.ir_data1[0];\r
+ //hx3695_factory_test_process(NULL, APP_FACTORY_TEST_SPO2_START, &result);\r
+\r
+\r
+ //("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);\r
+ spo2_wear_status = hx3695_spo2_get_wear_status();\r
+ //PRINT("spo2_wear_status : %d\r\n",spo2_wear_status);\r
+ if(spo2_wear_status == MSG_SPO2_WEAR)\r
+ {\r
+ tyhx_spo2_alg_send_data(red_buf, ir_buf, green_buf, cal.R_LEDDAC, cal.IR_LEDDAC1, cal.G_LEDDAC, \r
+ gsen_fifo_x_send, gsen_fifo_y_send, gsen_fifo_z_send, *count);\r
}\r
\r
#endif\r
\r
hx3695_check_touch_read(&ppg_s_data);\r
hx3695_wear_status = hx3695_check_touch_send_data(ir_buf,*count);\r
- hrsresult.wearstatus = hx3695_wear_status;\r
// PRINT("hx3695_wear_status : %d \r\n",hx3695_wear_status);\r
if(wear_mode_status != hx3695_wear_status)\r
{\r
wear_mode_status = hx3695_wear_status;\r
- cywee_data[0] = wear_mode_status;\r
+ cywee_data = wear_mode_status;\r
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_data);\r
}\r
\r
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)
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;
#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);
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;
}
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" },
{ (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 *)" " },
};
// #include "thread_adapter.h"
#include "graphic_service.h"
+#include "audio_manager.h"
+#include "audio_base_type.h"
+
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include "upg_alloc.h"
+
+
#define IN_BUF_SIZE (1 << 8)
#define OUT_BUF_SIZE (1 << 8)
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
+/*
+ * @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
*
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 */