#include "my_xMotion.h"
#include "lv_drv_conf.h"
#if USE_MY_XMOTION
-
+#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
float z;
}acc_g_data_t;
static uint16_t fall_counter = 0;
+#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 = (double)((acc->x) * (acc->x)) + (double)((acc->y) * (acc->y)) + (double)((acc->z) * (acc->z));
-
+ 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);
- if(acc_square < FALL_DETECH_LOW_THRESHOLD )
+
+#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;
}
- if(fall_counter >= FALL_COUNTER_THRESHOLD)
+ if(fall_counter >= FALL_COUNTER_THRESHOLD) //10)//
{
fall_counter = 0;