| | |
| | | |
| | | u16 anclist_num=0,anclist_pos; //list æ»æ°éåå½åä½ç½® |
| | | u16 ancid_list[TAG_NUM_IN_SYS]; |
| | | u8 nearbase_num=0; |
| | | u8 nearbase_num=0,last_nearbase_num,next_nearbase_num; |
| | | u16 nearbaseid_list[MAX_NEARBASE_NUM],mainbase_id,true_nearbase_idlist[MAX_NEARBASE_NUM]; |
| | | int32_t mainbase_dist,nearbase_distlist[MAX_NEARBASE_NUM],true_nearbase_distlist[MAX_NEARBASE_NUM]; |
| | | uint8_t trygetnearmsg_times; |
| | |
| | | dwt_setrxtimeout(RESP_RX_TIMEOUT_UUS); |
| | | tag_succ_times = 0; |
| | | GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_SET); |
| | | if(nearbase_num>=MAX_NEARBASE_NUM) |
| | | if(next_nearbase_num>=MAX_NEARBASE_NUM) |
| | | { |
| | | nearbase_num = MAX_NEARBASE_NUM-1; |
| | | next_nearbase_num = MAX_NEARBASE_NUM-1; |
| | | } |
| | | //nearbase_num=0; |
| | | last_nearbase_num=next_nearbase_num; |
| | | recbase_num=0; |
| | | tx_nearpoll_msg[BATTARY_IDX] = Get_Battary(); |
| | | tx_nearpoll_msg[BUTTON_IDX] = !READ_KEY0; |
| | |
| | | dwt_writetxdata(13+2*nearbase_num, tx_nearpoll_msg, 0);//å°Pollå
æ°æ®ä¼ ç»DW1000ï¼å°å¨å¼å¯åéæ¶ä¼ åºå» |
| | | dwt_writetxfctrl(13+2*nearbase_num, 0);//设置è¶
宽带åéæ°æ®é¿åº¦ |
| | | dwt_starttx(DWT_START_TX_IMMEDIATE | DWT_RESPONSE_EXPECTED);//å¼å¯åéï¼åé宿åçå¾
䏿®µæ¶é´å¼å¯æ¥æ¶ï¼çå¾
æ¶é´å¨dwt_setrxaftertxdelayä¸è®¾ç½® |
| | | |
| | | for(i=0;i<MAX_NEARBASE_NUM;i++) |
| | | exsistbase_list[i]=0; |
| | | |
| | | flag_finalsend=0; |
| | | flag_rxon=1; |
| | |
| | | memcpy(&rec_nearbaseid,&rx_buffer[ANCHOR_ID_IDX],2); |
| | | if(nearbase_num==0) |
| | | { |
| | | nearbaseid_list[0]=rec_nearbaseid; |
| | | nearbase_num=1; |
| | | memcpy(&tx_nearfinal_msg[ANCHOR_ID_IDX],&rec_nearbaseid,2); |
| | | nearbaseid_list[0]=rec_nearbaseid; |
| | | nearbase_num=1; |
| | | memcpy(&tx_nearfinal_msg[ANCHOR_ID_IDX],&rec_nearbaseid,2); |
| | | } |
| | | if(rec_nearbaseid==nearbaseid_list[0]) |
| | | { |
| | |
| | | memcpy(&temp_sync_timer1,&rx_buffer[ANCTIMEMS],2); |
| | | memcpy(&tmp_time,&rx_buffer[ANCTIMEUS],2); |
| | | sync_timer=temp_sync_timer1; |
| | | exsistbase_list[0]=1; |
| | | exsistbase_list[0]=10; |
| | | //// memcpy(&tagslotpos,&rx_buffer[TAGSLOTPOS],2); |
| | | // |
| | | tmp_time=tmp_time+450; |
| | |
| | | // tyncpoll_time=(tagslotpos-1)*slottime; |
| | | //////////////////////////// |
| | | rec_nearbasepos=0; |
| | | exsistbase_list[rec_nearbasepos]=1; |
| | | exsistbase_list[rec_nearbasepos]=10; |
| | | memcpy(&temp_dist,&rx_buffer[DIST_IDX],4); |
| | | nearbase_distlist[rec_nearbasepos]=temp_dist; |
| | | |
| | |
| | | memcpy(&tx_nearfinal_msg[ANCHOR_ID_IDX],&rec_nearbaseid,2); |
| | | } |
| | | |
| | | exsistbase_list[rec_nearbasepos]=1; |
| | | exsistbase_list[rec_nearbasepos]=10; |
| | | memcpy(&temp_dist,&rx_buffer[DIST_IDX],4); |
| | | nearbase_distlist[rec_nearbasepos]=temp_dist; |
| | | |
| | |
| | | } |
| | | tyncpoll_time=(random_value%max_slotpos)*slottime; |
| | | } |
| | | for(i=0;i<MAX_NEARBASE_NUM;i++) |
| | | next_nearbase_num=0; |
| | | for(i=0;i<last_nearbase_num;i++) |
| | | { |
| | | if(exsistbase_list[i]==1) |
| | | if(exsistbase_list[i]-->0) |
| | | { |
| | | next_nearbase_num++; |
| | | true_nearbase_idlist[j]=nearbaseid_list[i]; |
| | | true_nearbase_distlist[j++]=nearbase_distlist[i]; |
| | | } |
| | | |
| | | } |
| | | |
| | | for(i=0;i<nearbase_num-1;i++) |
| | | for(i=0;i<last_nearbase_num-1;i++) |
| | | { |
| | | for(j=0;j<nearbase_num-1;j++) |
| | | for(j=0;j<last_nearbase_num-1;j++) |
| | | { |
| | | if(true_nearbase_distlist[j]>true_nearbase_distlist[j+1]) |
| | | { |
| | |
| | | report_num++; |
| | | } |
| | | } |
| | | for(i=0;i<MAX_NEARBASE_NUM;i++) |
| | | { |
| | | nearbase_distlist[i]=0x1ffff; |
| | | } |
| | | // printf("%d,%d",temp_sync_timer2,temp_sync_timer1); |
| | | #ifdef USART_INTEGRATE_OUTPUT |
| | | usart_send[2] = 4;//æ£å¸¸æ¨¡å¼ |