| | |
| | | } |
| | | return max_slotpos-1; |
| | | } |
| | | u8 test=0; |
| | | u8 test=0,dissucc_flag1,dissucc_flag2,lastdist1,lastdist2; |
| | | u8 anclost_times=0,usartoutput_count,usartoutput_notenough=0; |
| | | u8 exsistbase_list[MAX_NEARBASE_NUM],report_num,get_newbase=0,rec_extratag_battary; |
| | | u16 temp_sync_timer1,temp_sync_timer2,rec_extratag_id; |
| | |
| | | memcpy(&tmp_time,&rx_buffer[ANCTIMEUS],2); |
| | | |
| | | |
| | | if(g_com_map[DEV_ROLE]!=0) |
| | | { |
| | | sync_timer=temp_sync_timer1; |
| | | //// memcpy(&tagslotpos,&rx_buffer[TAGSLOTPOS],2); |
| | | // if(g_com_map[DEV_ROLE]!=0) |
| | | // { |
| | | // sync_timer=temp_sync_timer1; |
| | | ////// memcpy(&tagslotpos,&rx_buffer[TAGSLOTPOS],2); |
| | | //// |
| | | // |
| | | |
| | | tmp_time=tmp_time+650; |
| | | if(tmp_time>999) |
| | | { |
| | | tmp_time-=999; |
| | | sync_timer++; |
| | | if(sync_timer>=1000) |
| | | {sync_timer=0;} |
| | | } |
| | | TIM3->CNT=tmp_time; |
| | | } |
| | | current_slotnum=temp_sync_timer1/g_com_map[COM_INTERVAL]; |
| | | // tmp_time=tmp_time+650; |
| | | // if(tmp_time>999) |
| | | // { |
| | | // tmp_time-=999; |
| | | // sync_timer++; |
| | | // if(sync_timer>=1000) |
| | | // {sync_timer=0;} |
| | | // } |
| | | // TIM3->CNT=tmp_time; |
| | | // } |
| | | // current_slotnum=temp_sync_timer1/g_com_map[COM_INTERVAL]; |
| | | // if(tagslotpos>max_slotpos) |
| | | // tagslotpos=tagslotpos%(max_slotpos+1); |
| | | // tyncpoll_time=(tagslotpos-1)*slottime; |
| | |
| | | dwt_writetxdata(28+nearbase_num*4, tx_nearfinal_msg, 0);//å°åéæ°æ®åå
¥DW1000 |
| | | dwt_writetxfctrl(28+nearbase_num*4, 0);//设å®åéæ°æ®é¿åº¦ |
| | | memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4); |
| | | if(temp_dist!=0x1ffff) |
| | | if(temp_dist!=0x1ffff&&lastdist1!=temp_dist&&!dissucc_flag1)//没ææåæµè·ï¼ä¸è·ç¦»åä¸ä¸æ¬¡ä¸ç¸ç |
| | | { |
| | | dissucc_flag1 = 1; |
| | | lastdist1 = temp_dist; |
| | | |
| | | g_Resttimer=0; |
| | | IWDG_Feed(); |
| | | #ifdef USART_SINGLE_OUTPUT |
| | | usart_send[2] = 1;//æ£å¸¸æ¨¡å¼ |
| | | usart_send[3] = 17;//æ°æ®æ®µé¿åº¦ |
| | | usart_send[4] = frame_seq_nb;//æ°æ®æ®µé¿åº¦ |
| | | if(g_com_map[DEV_ROLE]) |
| | | { |
| | | memcpy(&usart_send[5],&dev_id,2); |
| | | memcpy(&usart_send[7],&rec_nearbaseid,2); |
| | | }else{ |
| | | memcpy(&usart_send[5],&rec_nearbaseid,2); |
| | | memcpy(&usart_send[7],&dev_id,2); |
| | | } |
| | | memcpy(&usart_send[9],&temp_dist,4); |
| | | usart_send[13] = rx_buffer[DIST_IDX+3]; |
| | | usart_send[14] = button; |
| | |
| | | UART_PushFrame(usart_send,21); |
| | | usartoutput_count++; |
| | | #endif |
| | | } |
| | | |
| | | if(rec_extratag_dist!=0x1ffff&&rec_extratag_dist!=0&&rx_buffer[GROUP_ID_IDX]!=supergroupid) |
| | | { |
| | | #ifdef USART_SINGLE_OUTPUT |
| | | usart_send[2] = 1;//æ£å¸¸æ¨¡å¼ |
| | | usart_send[3] = 17;//æ°æ®æ®µé¿åº¦ |
| | | usart_send[4] = frame_seq_nb;//æ°æ®æ®µé¿åº¦ |
| | | if(g_com_map[DEV_ROLE]) |
| | | { |
| | | memcpy(&usart_send[5],&rec_extratag_id,2); |
| | | memcpy(&usart_send[7],&rec_nearbaseid,2); |
| | | }else{ |
| | | memcpy(&usart_send[5],&rec_nearbaseid,2); |
| | | memcpy(&usart_send[7],&rec_extratag_id,2); |
| | | } |
| | | memcpy(&usart_send[9],&rec_extratag_dist,4); |
| | | usart_send[13] = rx_buffer[EXTRA_TAGDIST_INDEX+3]; |
| | | usart_send[14] = button; |
| | |
| | | UART_PushFrame(usart_send,21); |
| | | #endif |
| | | } |
| | | |
| | | } |
| | | |
| | | }else{ |
| | | rec_nearbasepos=FindNearBasePos(rec_nearbaseid); |
| | |
| | | LED0_BLINK; |
| | | // memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4); |
| | | // tagslotpos=GetRandomSlotPos(rec_tagpos_binary); |
| | | if(temp_dist!=0x1ffff) |
| | | if(temp_dist!=0x1ffff&&lastdist2!=temp_dist&&!dissucc_flag2)//没ææåæµè·ï¼ä¸è·ç¦»åä¸ä¸æ¬¡ä¸ç¸ç |
| | | { |
| | | dissucc_flag2 = 1; |
| | | lastdist2 = temp_dist; |
| | | |
| | | #ifdef USART_SINGLE_OUTPUT |
| | | usart_send[2] = 1;//æ£å¸¸æ¨¡å¼ |
| | | usart_send[3] = 17;//æ°æ®æ®µé¿åº¦ |
| | |
| | | //dwt_setdelayedtrxtime(final_tx_time);//设置finalå
åéæ¶é´T5 |
| | | // result=dwt_starttx(DWT_START_TX_DELAYED);//设å®ä¸ºå»¶è¿åé |
| | | //dwt_writetxdata(4,&tx_near_msg[FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos+1)*4], FINAL_MSG_RESP_RX_NEARBASE_IDX+(rec_nearbasepos+1)*4);//å°åéæ°æ®åå
¥DW1000 |
| | | } |
| | | |
| | | if(rec_extratag_dist!=0x1ffff&&rec_extratag_dist!=0&&rx_buffer[GROUP_ID_IDX]!=supergroupid) |
| | | { |
| | | #ifdef USART_SINGLE_OUTPUT |
| | |
| | | memcpy(&usart_send[19],&checksum,2); |
| | | UART_PushFrame(usart_send,21); |
| | | #endif |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | { |
| | | usartoutput_notenough = 0; |
| | | }else{ |
| | | if(usartoutput_notenough++>10) |
| | | sync_timer += time32_incr%5; |
| | | if(usartoutput_notenough++>50) |
| | | { |
| | | SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软å¤ä½åå°bootloader |
| | | } |
| | |
| | | break; |
| | | } |
| | | |
| | | SetNextPollTime(tyncpoll_time); |
| | | // SetNextPollTime(tyncpoll_time); |
| | | g_start_send_flag = 0; |
| | | GPIO_WriteBit(GPIOA, GPIO_Pin_10, Bit_RESET); |
| | | } |
| | |
| | | }else{ |
| | | motorstate =0; |
| | | } |
| | | if(frame_seq_nb2!=tagseq_list[taglist_pos]+1) |
| | | { |
| | | tagdist_list[taglist_pos]=0x1ffff; |
| | | } |
| | | // if(frame_seq_nb2!=tagseq_list[taglist_pos]+1) |
| | | // { |
| | | // tagdist_list[taglist_pos]=0x1ffff; |
| | | // } |
| | | if(new_tagid) |
| | | { |
| | | tagdist_list[taglist_pos]=0x1ffff; |