|
@@ -15,7 +15,8 @@ uint16_t g_blinkLedTgtTime; /*RUN LED目
|
|
|
//uint8_t g_bvopen_delay;
|
|
|
|
|
|
uint8_t g_bvopen; // 0: close , 1: open
|
|
|
-uint8_t g_trigger_vo;
|
|
|
+uint8_t g_vo_delay;
|
|
|
+uint8_t g_voiceid;
|
|
|
|
|
|
#define DEFAULT_VO_PERIOD (500) /* 5秒*/
|
|
|
uint16_t g_VoiceOutTime; /*语音播报频率控制时间*/
|
|
@@ -99,8 +100,8 @@ void timer_callback(void)
|
|
|
}
|
|
|
|
|
|
//433 语音输出
|
|
|
- if(g_trigger_vo > 0){
|
|
|
- g_trigger_vo--;
|
|
|
+ if(g_vo_delay > 0){
|
|
|
+ g_vo_delay--;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -122,7 +123,8 @@ void Process_Init(void)
|
|
|
//g_alg_run_count = 0;
|
|
|
g_bvopen_delay = 0;
|
|
|
g_bvopen = BV_CLOSE;
|
|
|
- g_trigger_vo = 0;
|
|
|
+ g_vo_delay = 0;
|
|
|
+ g_voiceid = 0;
|
|
|
g_vo_alarm = 0;
|
|
|
|
|
|
/* acc data */
|
|
@@ -159,38 +161,25 @@ void Process_RunLedPrd(void)
|
|
|
if(g_VoiceOutTime >= DEFAULT_VO_PERIOD){
|
|
|
g_VoiceOutTime = 0;
|
|
|
|
|
|
- if((g_vo_alarm == 1) && (g_trigger_vo == 0)){
|
|
|
- g_trigger_vo = VO_COUNT_DFTT;
|
|
|
+ if((g_vo_alarm == 1) && (g_vo_delay == 0)){
|
|
|
+ g_vo_delay = VO_COUNT_DFTT;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
- if(g_bvopen == BV_OPEN){
|
|
|
- LED4_ON;
|
|
|
- }else{
|
|
|
- LED4_OFF;
|
|
|
- }
|
|
|
+ //if(g_bvopen == BV_OPEN){
|
|
|
+ // LED4_ON;
|
|
|
+ //}else{
|
|
|
+ // LED4_OFF;
|
|
|
+ //}
|
|
|
|
|
|
|
|
|
//433 语音输出
|
|
|
- if(g_trigger_vo > 0){
|
|
|
-
|
|
|
- if(GPIO_DRV_GetPinsOutput(LED2_GPIO)& (1<<LED2_PIN))
|
|
|
- {
|
|
|
-
|
|
|
- }else{
|
|
|
- LED2_ON;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ if(g_vo_delay > 0){
|
|
|
+ Trigger_VoiceOn(g_voiceid);
|
|
|
}else{
|
|
|
-
|
|
|
- if(GPIO_DRV_GetPinsOutput(LED2_GPIO)&(1<<LED2_PIN))
|
|
|
- {
|
|
|
- LED2_OFF;
|
|
|
- }
|
|
|
-
|
|
|
+ Trigger_VoiceOff();
|
|
|
}
|
|
|
|
|
|
|
|
@@ -252,6 +241,9 @@ void autocaculate_mtnoise(axis_info_t* paxis_info)
|
|
|
double accz_sd = 0.0;
|
|
|
|
|
|
uint16_t i=0;
|
|
|
+ int tmp = 0;
|
|
|
+
|
|
|
+ LED4_ON;
|
|
|
|
|
|
detect_info.info[g_samplecount].x = paxis_info->x;
|
|
|
detect_info.info[g_samplecount].y = paxis_info->y;
|
|
@@ -286,10 +278,20 @@ void autocaculate_mtnoise(axis_info_t* paxis_info)
|
|
|
config->xaxis_threshold = 3*fabs(accx_sd);
|
|
|
config->yaxis_threshold = 3*fabs(accy_sd);
|
|
|
config->zaxis_threshold = 3*fabs(accz_sd);
|
|
|
+
|
|
|
+ //截取小数点后3位
|
|
|
+ tmp = (config->xaxis_threshold+0.0005)*1000;
|
|
|
+ config->xaxis_threshold = 1.0*tmp/1000;
|
|
|
+ tmp = (config->yaxis_threshold+0.0005)*1000;
|
|
|
+ config->yaxis_threshold = 1.0*tmp/1000;
|
|
|
+ tmp = (config->zaxis_threshold+0.0005)*1000;
|
|
|
+ config->zaxis_threshold = 1.0*tmp/1000;
|
|
|
+
|
|
|
SaveConfig();
|
|
|
|
|
|
g_samplecount=0;
|
|
|
g_autocalibration=0;
|
|
|
+ LED4_OFF;
|
|
|
|
|
|
}
|
|
|
|
|
@@ -308,11 +310,14 @@ void alg_PreProcess(void)
|
|
|
|
|
|
_bvopen = g_bvopen;
|
|
|
if(BV_OPEN == g_bvopen){
|
|
|
+ LED4_ON;
|
|
|
+
|
|
|
if(ALG_None == g_alg_context.state){
|
|
|
g_alg_context.state = ALG_Start;
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
+ LED4_OFF;
|
|
|
if(ALG_Triggering != g_alg_context.state){
|
|
|
g_alg_context.state = ALG_None;
|
|
|
}
|
|
@@ -388,13 +393,13 @@ void alg_detect(axis_info_t* paxis_info)
|
|
|
paxis_info->z -= g_alg_context.axis_offset.z;
|
|
|
|
|
|
//机械滤波
|
|
|
- if(fabs(paxis_info->x) <= config->xaxis_threshold){
|
|
|
+ if(fabs(paxis_info->x) <= MECHANICAL_NOISE_THRESHOLD){
|
|
|
paxis_info->x = 0.0;
|
|
|
}
|
|
|
- if(fabs(paxis_info->y) <= config->yaxis_threshold){
|
|
|
+ if(fabs(paxis_info->y) <= MECHANICAL_NOISE_THRESHOLD){
|
|
|
paxis_info->y = 0.0;
|
|
|
}
|
|
|
- if(fabs(paxis_info->z) <= config->zaxis_threshold){
|
|
|
+ if(fabs(paxis_info->z) <= MECHANICAL_NOISE_THRESHOLD){
|
|
|
paxis_info->z = 0.0;
|
|
|
}
|
|
|
|
|
@@ -485,6 +490,7 @@ void alg_detect(axis_info_t* paxis_info)
|
|
|
|
|
|
g_VoiceOutTime = DEFAULT_VO_PERIOD-10;
|
|
|
g_vo_alarm = 1;
|
|
|
+ g_voiceid = VOICE_ID_0;
|
|
|
|
|
|
x_keepcount = 0;
|
|
|
y_keepcount = 0;
|
|
@@ -531,6 +537,8 @@ void alg_Triggering(void)
|
|
|
//sv_close();
|
|
|
g_alg_context.state = ALG_Finished;
|
|
|
g_vo_alarm = 0;
|
|
|
+ g_vo_delay = VO_COUNT_DFTT;
|
|
|
+ g_voiceid = VOICE_ID_1;
|
|
|
return ;
|
|
|
}
|
|
|
|
|
@@ -609,7 +617,7 @@ void Process_Alg(void)
|
|
|
axis_info.y = acc_y*2.9/1000;
|
|
|
axis_info.z = acc_z*2.9/1000;
|
|
|
|
|
|
- alg_filter(&axis_info);
|
|
|
+
|
|
|
uint32_t start = OSIF_GetMilliseconds();
|
|
|
|
|
|
//printf("alg:%d ms st: %d \r", start, g_alg_context.state);
|
|
@@ -617,7 +625,9 @@ void Process_Alg(void)
|
|
|
autocaculate_mtnoise(&axis_info);
|
|
|
|
|
|
}else{
|
|
|
-
|
|
|
+
|
|
|
+ alg_filter(&axis_info);
|
|
|
+
|
|
|
switch(g_alg_context.state){
|
|
|
case ALG_Start:
|
|
|
alg_start();
|