From: p15692025051 <846603105@qq.com> Date: Thu, 4 May 2023 08:02:07 +0000 (+0800) Subject: gsensor参数调整 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=db6cff20710576e2f0fba79a876c44b41e836661;p=mirrors%2FASR1603_G5.git gsensor参数调整 hsensor线程调整 --- diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modGsensor_SC7A20.c b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modGsensor_SC7A20.c index cd61787c..08b5aa89 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modGsensor_SC7A20.c +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modGsensor_SC7A20.c @@ -100,7 +100,7 @@ static bool SL_SWAY_STATUS = 0; static bool SL_SWAY_ENABLE = 0; static unsigned char SL_INT_TIME_CNT = 0; -#define SL_INT_TIME_TH 20 //per lsb is 0.5s +#define SL_INT_TIME_TH 12 //per lsb is 0.5s unsigned char sl_sleep_sys_hour; typedef struct _SC7A20_obj_t @@ -190,7 +190,7 @@ unsigned int SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(void) SC7A20_INT_STATUS=SL_INT_STATUS_READ(); if((SC7A20_INT_STATUS==1)||(SL_STEP_TEMP!= SL_STEP)) { - if(SL_INT_TIME_CNT>=SL_INT_TIME_TH) SC7A20_ODR_SET(1); + //if(SL_INT_TIME_CNT>=SL_INT_TIME_TH) SC7A20_ODR_SET(1); SL_INT_TIME_CNT =0; SL_STEP_TEMP =SL_STEP; } @@ -202,7 +202,7 @@ unsigned int SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(void) } } - if(SL_INT_TIME_CNT 32) @@ -335,7 +335,7 @@ signed char SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_INIT(void) unsigned char fifo_status =0; unsigned char sl_person_para[4] ={178,60,26,1}; unsigned char Turn_Wrist_Para[2]={1,3};//refer pdf - unsigned char s_pedo_th_set[5] = {26,10,0,40,50}; + unsigned char s_pedo_th_set[5] = {20,9,0,40,50}; unsigned char s_pedo_int_set[3] = {3,2,1} ; /*****if use spi mode please config first******/ #if SL_SC7A20_SPI_IIC_MODE == 0//spi @@ -461,6 +461,7 @@ STATIC mp_obj_t mp_SC7A20_deinit(mp_obj_t self_in); **功能:初始化SC7A20 */ extern void sensor_thread_entry(void * argv); +extern Helios_ThreadAttr ThreadAttr; // extern void sensor_timerout_cb(void); int SC7A20_init(void) { @@ -493,15 +494,9 @@ int SC7A20_init(void) } SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_INIT(); - // Helios_ThreadAttr ThreadAttr = { - // .name = "GH3018", - // .stack_size = 1024*10, - // .priority = 300, - // .entry = sensor_thread_entry, - // .argv = NULL - // }; - // if(sensor_thread_id == 0) - // sensor_thread_id = Helios_Thread_Create(&ThreadAttr);//和hsensor一个iic,必须在一个线程读数据 + + if(sensor_thread_id == 0) + sensor_thread_id = Helios_Thread_Create(&ThreadAttr);//和hsensor一个iic,必须在一个线程读数据 Gsensor_init_flag = 1; return 1; } @@ -529,7 +524,7 @@ STATIC mp_obj_t mp_SC7A20_poll(mp_obj_t self_in) //获取步数 STATIC mp_obj_t mp_SC7A20_get_step(mp_obj_t self_in) { - SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(); + //SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(); return mp_obj_new_int(SL_STEP); } //清空步数,建议隔天清空 diff --git a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modHsensor_GH3018.c b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modHsensor_GH3018.c index 6e1f2365..917eaf52 100644 --- a/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modHsensor_GH3018.c +++ b/2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modHsensor_GH3018.c @@ -74,7 +74,7 @@ extern unsigned char Gsensor_init_flag ; extern void hal_gh30x_int_handler(void); // int test_count1 = 0; // int test_count2 = 0; -int32_t gh3018_run_mode = 0; + void sensor_timerout_cb(void); Helios_ThreadAttr ThreadAttr = { .name = "GH3018", @@ -164,23 +164,7 @@ void sensor_thread_entry(void * argv) { //GH3018_LOG("sensor_thread_entry: 11111111!!!!!!!!\r\n"); - int ret = gh30x_module_init(); - - GH3018_LOG("mp_GH3018_open_heart gh30x_module_init:ret:%d\r\n",ret); - if(ret == 1) - { - gh30x_module_stop(); - Helios_msleep(10); - gh30x_module_start_without_adt(gh3018_run_mode); - //gh30x_module_start(gh3018_run_mode); - is_open_gh3018 = 1; - if(sensor_timer== 0) - { - sensor_timer = Helios_Timer_init( (void* )sensor_timerout_cb, NULL); - } - - Helios_Timer_Start(sensor_timer, TIMER_TIME_MS, IS_CYCLICAL); - } + while(1) { if(is_gh3018 == 1 && is_open_gh3018 == 1)//处理Hsensor中断数据 @@ -196,13 +180,14 @@ void sensor_thread_entry(void * argv) timer_Gsensor_count = 0; SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(); } - - - + } + else + { + SL_SC7A20_PEDO_KCAL_WRIST_SLEEP_SWAY_L_ALGO(); + Helios_msleep(1000); } Helios_msleep(1); } - } void sensor_timerout_cb(void) @@ -278,7 +263,11 @@ mp_obj_t mp_GH3018_init(mp_obj_t self_in) { sensor_timer = Helios_Timer_init( (void* )sensor_timerout_cb, NULL); } - + if(sensor_thread_id == 0) + { + GH3018_LOG("mp_GH3018_open_heart Helios_Thread_Create\r\n"); + sensor_thread_id = Helios_Thread_Create(&ThreadAttr); + } int ret = 0; @@ -311,11 +300,8 @@ STATIC mp_obj_t mp_GH3018_deinit(mp_obj_t self_in) return mp_const_none; } -//打开心律测试 -STATIC mp_obj_t mp_GH3018_open_heart(mp_obj_t self_in) +void GH3018_test(mp_obj_t self_in,uint32_t mode) { - int ret = 0 ; - s_gh3018_heart_rate = 0x0; s_gh3018_heart_rate_buff_count = 0; s_gh3018_high_blood = 0x0; @@ -323,72 +309,53 @@ STATIC mp_obj_t mp_GH3018_open_heart(mp_obj_t self_in) s_gh3018_HRV = 0; s_gh3018_wear_status = 0; s_gh3018_blood_oxygen = 0x0; - if(sensor_thread_id == 0) - { - GH3018_LOG("mp_GH3018_open_heart Helios_Thread_Create\r\n"); - sensor_thread_id = Helios_Thread_Create(&ThreadAttr); - } + + GH3018_obj_t *self = MP_OBJ_TO_PTR(self_in); Helios_GPIO_SetLevel(self->power, HELIOS_LVL_LOW); Helios_msleep(10); Helios_GPIO_SetLevel(self->power, HELIOS_LVL_HIGH); Helios_msleep(20); - - gh3018_run_mode = GH30X_RUN_MODE_HB; + int ret = gh30x_module_init(); + GH3018_LOG("mp_GH3018_open_heart gh30x_module_init:ret:%d\r\n",ret); + if(ret == 1) + { + gh30x_module_stop(); + Helios_msleep(10); + gh30x_module_start_without_adt(mode); + //gh30x_module_start(gh3018_run_mode); + is_open_gh3018 = 1; + if(sensor_timer== 0) + { + sensor_timer = Helios_Timer_init( (void* )sensor_timerout_cb, NULL); + } + + Helios_Timer_Start(sensor_timer, TIMER_TIME_MS, IS_CYCLICAL); + } + //gh3018_run_mode = GH30X_RUN_MODE_HB; +} +//打开心律测试 +STATIC mp_obj_t mp_GH3018_open_heart(mp_obj_t self_in) +{ + GH3018_test(self_in,GH30X_RUN_MODE_HB); return mp_obj_new_int(1); } //打开血氧测试 STATIC mp_obj_t mp_GH3018_open_blood_oxygen(mp_obj_t self_in) { - int ret = 0 ; - s_gh3018_heart_rate = 0x0; - s_gh3018_heart_rate_buff_count = 0; - s_gh3018_high_blood = 0x0; - s_gh3018_low_blood = 0x0; - s_gh3018_HRV = 0; - s_gh3018_wear_status = 0; - s_gh3018_blood_oxygen = 0x0; - if(sensor_thread_id == 0) - sensor_thread_id = Helios_Thread_Create(&ThreadAttr); - gh3018_run_mode = GH30X_RUN_MODE_SPO2; - GH3018_obj_t *self = MP_OBJ_TO_PTR(self_in); - Helios_GPIO_SetLevel(self->power, HELIOS_LVL_LOW); - Helios_msleep(10); - Helios_GPIO_SetLevel(self->power, HELIOS_LVL_HIGH); - Helios_msleep(20); - + GH3018_test(self_in,GH30X_RUN_MODE_SPO2); return mp_obj_new_int(1); } //打开HRV测试 STATIC mp_obj_t mp_GH3018_open_hrv(mp_obj_t self_in) { - int ret = 0 ; - s_gh3018_heart_rate = 0x0; - s_gh3018_heart_rate_buff_count = 0; - s_gh3018_high_blood = 0x0; - s_gh3018_low_blood = 0x0; - s_gh3018_HRV = 0; - s_gh3018_wear_status = 0; - s_gh3018_blood_oxygen = 0x0; - if(sensor_thread_id == 0) - sensor_thread_id = Helios_Thread_Create(&ThreadAttr); - gh3018_run_mode = GH30X_RUN_MODE_HRV; - GH3018_obj_t *self = MP_OBJ_TO_PTR(self_in); - Helios_GPIO_SetLevel(self->power, HELIOS_LVL_LOW); - Helios_msleep(10); - Helios_GPIO_SetLevel(self->power, HELIOS_LVL_HIGH); - Helios_msleep(20); + GH3018_test(self_in,GH30X_RUN_MODE_HRV); return mp_obj_new_int(1); } //关闭hsensor STATIC mp_obj_t mp_GH3018_close(mp_obj_t self_in) { GH3018_obj_t *self = MP_OBJ_TO_PTR(self_in); - if(sensor_thread_id != 0) - { - Helios_Thread_Delete(sensor_thread_id); - sensor_thread_id = 0; - } if(is_open_gh3018 == 1) { gh30x_module_stop(); @@ -396,14 +363,9 @@ STATIC mp_obj_t mp_GH3018_close(mp_obj_t self_in) { Helios_Timer_Stop(sensor_timer); } - - } - is_open_gh3018 = 0; //Helios_GPIO_SetLevel(self->power, HELIOS_LVL_LOW); - - return mp_obj_new_int(1); } //获取心律