| | |
| | | #include "global_param.h" |
| | | #include "board.h" |
| | | #include "lora_1268.h" |
| | | #include "PCA9555.h" |
| | | |
| | | #define TAG_KEEPTIMES 30 |
| | | #define REPORT_TAG_KEEPTIMES 1 |
| | |
| | | //tagofflinetime[i] = 0; |
| | | return i; |
| | | } |
| | | |
| | | |
| | | static void resp_msg_set_ts(uint8_t *ts_field, int64_t ts) |
| | | { |
| | | int i,ts2; |
| | |
| | | uint32_t wltag_statetimer,wltag_uwbtimer; |
| | | int uwb_app_poll(void) |
| | | { |
| | | // switch(wltag_state) |
| | | // { |
| | | // case RANGE: |
| | | // if(HIDO_TimerGetTick()-wltag_uwbtimer>2&&uwb_rx_flag==0) |
| | | // { |
| | | // wltag_uwbtimer = HIDO_TimerGetTick(); |
| | | // OpenUWB(); |
| | | // } |
| | | // else if(HIDO_TimerGetTick()-wltag_uwbtimer>1&&uwb_rx_flag==1) |
| | | // { |
| | | // wltag_uwbtimer = HIDO_TimerGetTick(); |
| | | // CloseUWB(); |
| | | // } |
| | | // if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME]) |
| | | // { |
| | | // wltag_statetimer = HIDO_TimerGetTick(); |
| | | // if(uwb_rx_flag==0)//若要切换到搜索模式时没有开启则开启UWB |
| | | // { |
| | | // OpenUWB(); |
| | | // } |
| | | // wltag_state = SEARCH; |
| | | // } |
| | | // break; |
| | | // case SEARCH: |
| | | // if(HIDO_TimerGetTick()-wltag_statetimer>1) |
| | | // { |
| | | // wltag_statetimer = HIDO_TimerGetTick(); |
| | | // wltag_state = CLOSE; |
| | | // CloseUWB(); |
| | | // } |
| | | // break; |
| | | // case CLOSE: |
| | | // if(HIDO_TimerGetTick()-wltag_statetimer>g_com_map[UWB_WAIT_TIME]) |
| | | // { |
| | | // wltag_statetimer = HIDO_TimerGetTick(); |
| | | // wltag_state = SEARCH; |
| | | // OpenUWB(); |
| | | // } |
| | | // break; |
| | | // } |
| | | switch(wltag_state) |
| | | { |
| | | |
| | | case RANGE: |
| | | // time_flag=HIDO_TimerGetTick()-wltag_uwbtimer; |
| | | if(HIDO_TimerGetTick()-wltag_uwbtimer>2&&uwb_rx_flag==0) |
| | | { |
| | | UWB_LED_ON; |
| | | wltag_uwbtimer = HIDO_TimerGetTick(); |
| | | if(UWB_STATE==UWB_STATE_IDLE) |
| | | { |
| | | UWB_STATE=UWB_RX_STATE_BUSY; |
| | | OpenUWB(); |
| | | } |
| | | } |
| | | else if(HIDO_TimerGetTick()-wltag_uwbtimer>1&&uwb_rx_flag==1) |
| | | { |
| | | // time_flag=HIDO_TimerGetTick()-wltag_uwbtimer; |
| | | UWB_LED_OFF; |
| | | wltag_uwbtimer = HIDO_TimerGetTick(); |
| | | CloseUWB(); |
| | | UWB_STATE=UWB_STATE_IDLE; |
| | | } |
| | | if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME]) |
| | | { |
| | | wltag_statetimer = HIDO_TimerGetTick(); |
| | | if(uwb_rx_flag==0)//若要切换到搜索模式时没有开启则开启UWB |
| | | { |
| | | if(UWB_STATE==UWB_STATE_IDLE) |
| | | { |
| | | UWB_STATE=UWB_RX_STATE_BUSY; |
| | | OpenUWB(); |
| | | } |
| | | } |
| | | wltag_state = SEARCH; |
| | | } |
| | | break; |
| | | case SEARCH: |
| | | if(HIDO_TimerGetTick()-wltag_statetimer>1) |
| | | { |
| | | wltag_statetimer = HIDO_TimerGetTick(); |
| | | wltag_state = CLOSE; |
| | | CloseUWB(); |
| | | UWB_STATE=UWB_STATE_IDLE; |
| | | } |
| | | break; |
| | | case CLOSE: |
| | | if(HIDO_TimerGetTick()-wltag_statetimer>g_com_map[UWB_WAIT_TIME]) |
| | | { |
| | | wltag_statetimer = HIDO_TimerGetTick(); |
| | | wltag_state = SEARCH; |
| | | if(UWB_STATE==UWB_STATE_IDLE) |
| | | { |
| | | UWB_STATE=UWB_RX_STATE_BUSY; |
| | | OpenUWB(); |
| | | } |
| | | } |
| | | break; |
| | | } |
| | | UWBIdleTask(); |
| | | } |
| | | int Anchor_App(void) |
| | |
| | | memcpy(rec_ancidlist,&rx_buf[FZ_NEARBASEID_INDEX],2*rec_nearbase_num); |
| | | memcpy(rec_ancdistlist,&rx_buf[FZ_NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num); |
| | | memcpy(&rec_antdelay,&rx_buf[FZ_NEARBASEID_INDEX+rec_nearbase_num*4],2); |
| | | // for(i=0; i<rec_nearbase_num; i++) |
| | | // { |
| | | // if(rec_ancidlist[i] == dev_id) |
| | | // { temp_recdist_before_offset=rec_ancdistlist[i]; |
| | | // rec_ancdistlist[i]+=(int16_t)g_com_map[DIST_OFFSET]; |
| | | // PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],battary); |
| | | // } |
| | | // } |
| | | // for(i=0; i<rec_nearbase_num; i++) |
| | | // { |
| | | // memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2); |
| | | // if(tempid==dev_id)//也是比id如果有就更新没有就抢占 |
| | | // { |
| | | // seize_anchor=0; //非抢占。已存在列表中 |
| | | // Anchor_RecNearPoll(i); |
| | | // break; |
| | | // } |
| | | // } |
| | | |
| | | // if(i==rec_nearbase_num) |
| | | // { |
| | | // seize_anchor=1; //抢占anchor |
| | | // Anchor_RecNearPoll(i); |
| | | // } |
| | | taglist_pos=CmpTagInList(tag_id_recv); |
| | | taglist_pos=CmpTagInList(tag_id_recv); |
| | | if(taglist_num>=ANC_MAX_NUM) |
| | | return 0; |
| | | for(i=0; i<rec_nearbase_num; i++) |