From: @CHENG <2393524978@qq.com> Date: Mon, 15 Apr 2024 02:12:43 +0000 (+0800) Subject: fall down detect X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=312211fd8950700e2913c1d18b42ea9eb1792116;p=mirrors%2FASR3603_Z5_DS.git fall down detect --- diff --git a/2.sdk/project/Z5_DS_Z12XW_QCB/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h b/2.sdk/project/Z5_DS_Z12XW_QCB/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h index 96ea9916..3ed5dc8c 100644 --- a/2.sdk/project/Z5_DS_Z12XW_QCB/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h +++ b/2.sdk/project/Z5_DS_Z12XW_QCB/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h @@ -634,6 +634,18 @@ #endif #endif + + + + +// fall detect +#define MMI_CUSTOMER_FALL_DETECT_THRESHOLD (7) +#define MMI_CUSTOMER_FALL_COUNTER_THRESHOLD (10) + + + + + #endif diff --git a/2.sdk/project/Z5_Z11/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h b/2.sdk/project/Z5_Z11/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h index 72e6dbfa..7841cc09 100644 --- a/2.sdk/project/Z5_Z11/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h +++ b/2.sdk/project/Z5_Z11/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h @@ -638,8 +638,8 @@ // fall detect -#define MMI_CUSTOMER_FALL_DETECT_THRESHOLD (25) -#define MMI_CUSTOMER_FALL_COUNTER_THRESHOLD (7) +#define MMI_CUSTOMER_FALL_DETECT_THRESHOLD (7) +#define MMI_CUSTOMER_FALL_COUNTER_THRESHOLD (10) diff --git a/2.sdk/project/Z5_Z12/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h b/2.sdk/project/Z5_Z12/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h index 43121be0..f2bdba70 100644 --- a/2.sdk/project/Z5_Z12/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h +++ b/2.sdk/project/Z5_Z12/product/craneg_modem/config/watch/lv_drv_conf_CUSTOM.h @@ -633,6 +633,18 @@ #endif #endif + + + + +// fall detect +#define MMI_CUSTOMER_FALL_DETECT_THRESHOLD (7) +#define MMI_CUSTOMER_FALL_COUNTER_THRESHOLD (10) + + + + + #endif diff --git a/2.sdk/sdk/gui/lv_drivers/indev/my_xMotion.c b/2.sdk/sdk/gui/lv_drivers/indev/my_xMotion.c index ba653a11..2ec0e0c3 100644 --- a/2.sdk/sdk/gui/lv_drivers/indev/my_xMotion.c +++ b/2.sdk/sdk/gui/lv_drivers/indev/my_xMotion.c @@ -9,7 +9,7 @@ #include "my_xMotion.h" #include "lv_drv_conf.h" #if USE_MY_XMOTION - +#include #include #include #include @@ -302,78 +302,71 @@ int Gsensor_xyz_len = 0; #define ACC_0G_X 4096//8192 //4096 #define ACC_0G_Y 4096//8192 #define ACC_0G_Z 4096//8192 -#define FALL_DETECH_LOW_THRESHOLD 7//MMI_FALL_DETECT_THRESHOLD_DEFAULT // 35//8 -#define FALL_COUNTER_THRESHOLD 6//MMI_FALL_COUNTER_THRESHOLD_DEFAULT //7 //4 +#define FALL_DETECH_LOW_THRESHOLD MMI_FALL_DETECT_THRESHOLD_DEFAULT // 35 +#define FALL_COUNTER_THRESHOLD MMI_FALL_COUNTER_THRESHOLD_DEFAULT //7 typedef struct { float x; float y; float z; }acc_g_data_t; - -double distance(acc_g_data_t * acc_1,acc_g_data_t * acc_2) -{ - double d; - d=(acc_1->x - acc_2->x)*(acc_1->x-acc_2->x)+(acc_1->y - acc_2->y)*(acc_1->y - acc_2->y)+(acc_1->z - acc_2->z)*(acc_1->z - acc_2->z); - return d/100; -} - - static uint16_t fall_counter = 0; -uint8_t gsensor_sc7a20_fall_detect(acc_g_data_t * acc_1,acc_g_data_t * acc_2) -{ - double acc_square = (double)((acc_1->x) * (acc_1->x)) + (double)((acc_1->y) * (acc_1->y)) + (double)((acc_1->z) * (acc_1->z)); - +#if fall_detect_debug +extern int count_13 ; +extern int count_14 ; +extern int count_15 ; +extern int count_16 ; + +extern int count_10 ; +extern int count_9 ; +extern int count_8 ; +extern int count_7 ; +#endif +int fall_detect_count = 0; +uint8_t gsensor_sc7a20_fall_detect(acc_g_data_t * acc) +{ + double acc_square_t = (double)((acc->x) * (acc->x)) + (double)((acc->y) * (acc->y)) + (double)((acc->z) * (acc->z)); + double acc_square = sqrt(acc_square_t); // if(MMIApi_IsOpenGsensorTestWin()) // { // memcpy(&s_sc7a20_test_info, acc, sizeof(acc_g_data_t)); // } - //cplog_printf("acc_square:%f,%f,%f,%f\n",acc_square,acc->x,acc->y,acc->z); - //printf("gsensor_sc7a20_fall_detect:%f",acc_square); - - #if 0 - char info_buf [64]={0}; - sprintf(info_buf,"%f",acc_square); - char txt_str[64]={0}; - sprintf(txt_str,"C:/gsensor_sc7a20_fall_detect.txt"); - - uint32_t info_size = sizeof(info_buf); - { - lv_fs_file_t file_p; - lv_fs_res_t res; - uint32_t bytes_write = 0; - - res = lv_fs_open(&file_p,txt_str, LV_FS_MODE_WR | LV_FS_MODE_APPEND); - if(LV_FS_RES_OK != res) - { - printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); - lv_fs_close(&file_p); - return false; - } - printf("[@CHENG_DEBUG][%s][%d]:\n", __FUNCTION__, __LINE__); - res = lv_fs_write(&file_p, info_buf, info_size, &bytes_write); - lv_fs_close(&file_p); - if(LV_FS_RES_OK != res) - { - printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); - return false; - } - printf("[@CHENG_DEBUG][%s][%d]: file_size=%d,write_size=%d\n", __FUNCTION__, __LINE__, info_size, bytes_write); - - //return true; - } - #endif - if(acc_square < FALL_DETECH_LOW_THRESHOLD )// && acc_square > FALL_DETECH_LOW_THRESHOLD-10 ) + +#if fall_detect_debug + if(acc_square<8) + count_7++; + else if(acc_square>8 && acc_square<9) + count_8++; + else if(acc_square>9 && acc_square<10) + count_9++; + else if(acc_square>10 && acc_square<11) + count_10++; + else if(acc_square>13 && acc_square<14) + count_13++; + else if(acc_square>14 && acc_square<15) + count_14++; + else if(acc_square>15 && acc_square<16) + count_15++; + else if(acc_square>16) + count_16++; +#endif + fall_detect_count++ ; + //cplog_printf("acc_square:% 12f,acc_square_t:% 12f,x:% 12f,y:% 12f,z:% 12f\n", + // acc_square,acc_square_t,acc->x,acc->y,acc->z); + //cplog_printf("acc_square:% 12f,count_13:% 4d,count_10:% 4d\n", + // acc_square,count_13,count_10); + + if(acc_square < FALL_DETECH_LOW_THRESHOLD )//7)// { fall_counter++; } - else + if(fall_detect_count >= 32*3) { + fall_detect_count = 0; fall_counter = 0; } - //double fall_d=distance(&acc_1,&acc_2); - if(fall_counter >= FALL_COUNTER_THRESHOLD) + if(fall_counter >= FALL_COUNTER_THRESHOLD) //10)// { fall_counter = 0; @@ -394,8 +387,7 @@ static void My_Motion_Main(VOID * argv) { uint16_t MsgId; lv_driver_msg_xmotion_t * pOsMsg; - acc_g_data_t s_acc_1 = {0}; - acc_g_data_t s_acc_2 = {0}; + acc_g_data_t s_acc = {0}; #if XMOTION_TIMER_DEBUG UINT32 T1, T2; #endif @@ -438,24 +430,17 @@ static void My_Motion_Main(VOID * argv) // s_acc.x = (float)((Gsensor_x[i]*9.8f)/((uint16_t)ACC_0G_X)); // s_acc.y = (float)((Gsensor_y[i]*9.8f)/((uint16_t)ACC_0G_Y)); // s_acc.z = (float)((Gsensor_z[i]*9.8f)/((uint16_t)ACC_0G_Z)); - - s_acc_1.x = ((float)Gsensor_x[i]/100); - s_acc_1.y = ((float)Gsensor_y[i]/100); - s_acc_1.z = ((float)Gsensor_z[i]/100); - - s_acc_2.x = ((float)Gsensor_x[i]/100); - s_acc_2.y = ((float)Gsensor_y[i]/100); - s_acc_2.z = ((float)Gsensor_z[i]/100); - - if(gsensor_sc7a20_fall_detect(&s_acc_1,&s_acc_2) == 1)//跌倒报警 + s_acc.x = ((float)Gsensor_x[i]/100); + s_acc.y = ((float)Gsensor_y[i]/100); + s_acc.z = ((float)Gsensor_z[i]/100); + //cplog_printf("x:%d,y:%d,z:%d!!!\n",Gsensor_x[i],Gsensor_y[i],Gsensor_z[i]); + if(gsensor_sc7a20_fall_detect(&s_acc) == 1)//跌倒报警 { //cplog_printf("mmi_gsensor_sensor_fall_alarm x:%d,y:%d,z:%d!!!\n",Gsensor_x[i],Gsensor_y[i],Gsensor_z[i]); mmi_gsensor_sensor_fall_alarm(); - break; } - //cplog_printf("x:%d,y:%d,z:%d!!!\n",Gsensor_x[i],Gsensor_y[i],Gsensor_z[i]); + } - #if USE_HX3918 hx3918_set_gsen_fifo(Gsensor_x,Gsensor_y,Gsensor_z,Gsensor_xyz_len); #endif diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c index 3932b9b5..e45ecee6 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c @@ -1123,10 +1123,26 @@ static lv_obj_t * factorymode_gps_test_create(lv_obj_t * activity_obj) #endif #if 1 // def __MMI_ZHSX_SUPPORT__ +#if fall_detect_debug +int count_13 = 0; +int count_14 = 0; +int count_15 = 0; +int count_16 = 0; + +int count_10 = 0; +int count_9 = 0; +int count_8 = 0; +int count_7 = 0; +#endif + static void mmi_factorymode_gsensor_status_update(lv_anim_t * anim) { #if 1 char str[128] = {0}; +#if fall_detect_debug + sprintf(str, "13:% 3d 14:% 3d\n15:% 3d 16:% 3d\n10:% 3d 09:% 3d\n08:% 3d 07:% 3d\n", + count_13,count_14,count_15,count_16,count_10,count_9,count_8,count_7); +#else uint8_t id = mmi_gsensor_sensor_id_get(); int16_t chip_x = 0, chip_y = 0, chip_z = 0; @@ -1136,7 +1152,8 @@ static void mmi_factorymode_gsensor_status_update(lv_anim_t * anim) "id :", id, chip_x, chip_y, chip_z, (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_SUCCESS)); - +#endif + lv_label_set_text(anim->var, str); #else