| | |
| | | #include "global_param.h" |
| | | #include "dw_app.h" |
| | | |
| | | #define ONTIME1 1 // 100ms |
| | | #define OFFTIME1 0 // 100ms |
| | | |
| | | #define ONTIME2 1 // 100ms |
| | | #define OFFTIME2 0 // 100ms |
| | | |
| | | #define ONTIME3 5 // 500ms |
| | | #define OFFTIME3 5 // 500ms |
| | | |
| | | int32_t min_dist1,min_dist2; |
| | | extern u16 JDQ_time; |
| | | u8 JDQgroup1_state,JDQgroup2_state; |
| | | void Relay1Task(void) |
| | | { |
| | | static u8 distoffset1=0,distoffset2=0; |
| | | static uint8_t beep_state,timer_state,beep_timer,beep_ontime,beep_offtime; |
| | | if (min_dist1 <= g_com_map[ALARM_DISTANCE2]+distoffset1) |
| | | { |
| | | JDQgroup1_state=2; |
| | | } |
| | | else if (min_dist1 <= g_com_map[ALARM_DISTANCE3]+distoffset2) |
| | | { |
| | | JDQgroup1_state=1; |
| | | } |
| | | else{ |
| | | JDQgroup1_state=0; |
| | | } |
| | | |
| | | if (min_dist2 <= g_com_map[RELAY2_DISTANCE2]+distoffset1) |
| | | { |
| | | JDQgroup2_state=2; |
| | | } |
| | | else if (min_dist2 <= g_com_map[RELAY2_DISTANCE3]+distoffset2) |
| | | { |
| | | JDQgroup2_state=1; |
| | | } |
| | | else{ |
| | | JDQgroup2_state=0; |
| | | } |
| | | |
| | | if(JDQgroup1_state==2||JDQgroup2_state==2) |
| | | { |
| | | beep_ontime = 1; |
| | | beep_offtime = 0; |
| | | beep_state=2; |
| | | distoffset1=0; |
| | | distoffset2=0; |
| | | beep_timer = 0; |
| | | timer_state = 1; |
| | | }else if(JDQgroup1_state==1||JDQgroup2_state==1) |
| | | { |
| | | beep_ontime = JDQ_time; |
| | | beep_offtime = JDQ_time; |
| | | beep_state=1; |
| | | distoffset1=0; |
| | | distoffset2=0; |
| | | }else{ |
| | | beep_state=0; |
| | | distoffset1=0; |
| | | distoffset2=0; |
| | | beep_timer = 0; |
| | | timer_state = 1; |
| | | } |
| | | |
| | | if(beep_state!=0) |
| | | { |
| | | if(timer_state==1) |
| | | { |
| | | if(beep_timer++ < beep_ontime) |
| | | { |
| | | RELAY2_ON; |
| | | RELAY1_ON; |
| | | |
| | | }else{ |
| | | timer_state=0; |
| | | beep_timer=0; |
| | | } |
| | | }else{ |
| | | if(beep_timer++ < beep_offtime) |
| | | { |
| | | RELAY2_OFF; |
| | | RELAY1_OFF; |
| | | |
| | | }else{ |
| | | timer_state=1; |
| | | beep_timer=0; |
| | | } |
| | | |
| | | } |
| | | }else { |
| | | RELAY1_OFF; |
| | | RELAY2_OFF; |
| | | } |
| | | } |
| | | void Relay2Task(u16 min_dist) |
| | | { |
| | | static u8 distoffset12=0,distoffset22=0; |
| | | static uint8_t beep_state2,timer_state2,beep_timer2,beep_ontime2,beep_offtime2; |
| | | if (min_dist <= g_com_map[RELAY2_DISTANCE2]+distoffset12) |
| | | { |
| | | beep_ontime2 = 1; |
| | | beep_offtime2 = 0; |
| | | beep_state2=2; |
| | | distoffset12=0; |
| | | distoffset22=0; |
| | | timer_state2=1; |
| | | beep_timer2=0; |
| | | } |
| | | else if (min_dist <= g_com_map[RELAY2_DISTANCE3]+distoffset22) |
| | | { |
| | | beep_ontime2 = JDQ_time; |
| | | beep_offtime2 = JDQ_time; |
| | | beep_state2=1; |
| | | distoffset12=0; |
| | | distoffset22=0; |
| | | } |
| | | else{ |
| | | beep_state2=0; |
| | | distoffset12=0; |
| | | distoffset22=0; |
| | | timer_state2=1; |
| | | beep_timer2=0; |
| | | } |
| | | |
| | | if(beep_state2!=0) |
| | | { |
| | | if(timer_state2==1) |
| | | { |
| | | if(beep_timer2++ < beep_ontime2) |
| | | { |
| | | RELAY2_ON; |
| | | |
| | | }else{ |
| | | timer_state2=0; |
| | | beep_timer2=0; |
| | | } |
| | | }else{ |
| | | if(beep_timer2++ < beep_offtime2) |
| | | { |
| | | RELAY2_OFF; |
| | | |
| | | }else{ |
| | | timer_state2=1; |
| | | beep_timer2=0; |
| | | } |
| | | |
| | | } |
| | | }else { |
| | | // RELAY1_OFF; |
| | | RELAY2_OFF; |
| | | } |
| | | } |
| | | #define RELAY2IDHEAD 9 |
| | | extern u16 tagid_list[TAG_NUM_IN_SYS]; |
| | | void main_logic(void) //主é»è¾å¨è¿éæ§è¡ |
| | | {uint16_t i, min_dist; |
| | | { |
| | | uint16_t i; |
| | | //é¤UWBä¹å¤çå
¶ä»ä»£ç ... |
| | | static uint16_t beep_judge_cnt = 0; |
| | | if(beep_judge_cnt++ >= 200) |
| | | { |
| | | beep_judge_cnt = 0; |
| | | min_dist=0xffff; |
| | | for(i = 0; i < 255;i++) |
| | | { |
| | | if(g_Tagdist[i] < min_dist) |
| | | { |
| | | min_dist=g_Tagdist[i]; |
| | | } |
| | | |
| | | } |
| | | if(min_dist <= g_com_map[ALARM_DISTANCE]) |
| | | { |
| | | switch(g_com_map[ALARM_DEV]) |
| | | { |
| | | case 0: |
| | | BEEP2_ON; |
| | | BEEP_OFF; |
| | | OUT2_OFF; |
| | | break; |
| | | case 1: |
| | | BEEP_ON; |
| | | BEEP2_OFF; |
| | | OUT2_OFF; |
| | | break; |
| | | case 2: |
| | | OUT2_ON; |
| | | BEEP_OFF; |
| | | BEEP2_OFF; |
| | | break; |
| | | default: |
| | | BEEP2_ON; |
| | | BEEP_ON; |
| | | OUT2_ON; |
| | | break; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | switch(g_com_map[ALARM_DEV]) |
| | | { |
| | | case 0: |
| | | BEEP2_OFF; |
| | | break; |
| | | case 1: |
| | | BEEP_OFF; |
| | | break; |
| | | case 2: |
| | | OUT2_OFF; |
| | | break; |
| | | default: |
| | | BEEP2_OFF; |
| | | BEEP_OFF; |
| | | OUT2_OFF; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if(g_com_map[ALARM_DISTANCE1]!=0||g_com_map[ALARM_DISTANCE2]!=0||g_com_map[ALARM_DISTANCE3]!=0||g_com_map[RELAY2_DISTANCE1]!=0||g_com_map[RELAY2_DISTANCE2]!=0||g_com_map[RELAY2_DISTANCE3]!=0) |
| | | { |
| | | if(beep_judge_cnt++ >= 100) |
| | | { |
| | | beep_judge_cnt = 0; |
| | | min_dist1=0x1ffff; |
| | | min_dist2=0x1ffff; |
| | | for(i = 0; i < 255;i++) |
| | | { |
| | | if((tagid_list[i]>>12)!=RELAY2IDHEAD) |
| | | { |
| | | if(g_Tagdist[i] < min_dist1&&g_Tagdist[i]>g_com_map[ALARM_DISTANCE1]) |
| | | { |
| | | min_dist1=g_Tagdist[i]; |
| | | } |
| | | }else{ |
| | | if(g_Tagdist[i] < min_dist2&&g_Tagdist[i]>g_com_map[RELAY2_DISTANCE1]) |
| | | { |
| | | min_dist2=g_Tagdist[i]; |
| | | } |
| | | } |
| | | } |
| | | Relay1Task(); |
| | | // Relay2Task(min_dist2); |
| | | |
| | | } |
| | | }else{ |
| | | if(g_com_map[RELAY1ON_INDEX]==1) |
| | | { |
| | | RELAY1_ON; |
| | | }else if(g_com_map[RELAY1ON_INDEX]==0) |
| | | { |
| | | RELAY1_OFF; |
| | | } |
| | | if(g_com_map[RELAY2ON_INDEX]==1) |
| | | { |
| | | RELAY2_ON; |
| | | }else if(g_com_map[RELAY2ON_INDEX]==0) |
| | | { |
| | | RELAY2_OFF; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |