| | |
| | | nearbase_num=next_nearbase_num; |
| | | recbase_num=0; |
| | | // motor_state=0; |
| | | |
| | | tx_near_msg[GROUP_ID_IDX] = group_id; |
| | | tx_near_msg[BATTARY_IDX] = bat_percent; |
| | | tx_near_msg[BUTTON_IDX] = !GET_USERKEY|stationary_flag<<1; |
| | | tx_near_msg[SEQUENCE_IDX] = frame_seq_nb++; |
| | |
| | | dwt_readrxdata(rx_buffer, frame_len, 0); //读取接收数据 |
| | | dwt_setrxtimeout(0);//DELAY_BETWEEN_TWO_FRAME_UUS*(nearbase_num+1-recbase_num)+10);//设定接收超时时间,0位没有超时时间 |
| | | dwt_rxenable(0);//打开接收 |
| | | if (rx_buffer[MESSAGE_TYPE_IDX] == NEAR_RESPONSE&&!memcmp(&rx_buffer[TAG_ID_IDX],&dev_id,2)) //判断接收到的数据是否是response数据 |
| | | if (rx_buffer[MESSAGE_TYPE_IDX] == NEAR_RESPONSE&&!memcmp(&rx_buffer[TAG_ID_IDX],&dev_id,2)&&rx_buffer[GROUP_ID_IDX]==group_id) //判断接收到的数据是否是response数据 |
| | | { u16 rec_nearbaseid,rec_nearbasepos; |
| | | poll_tx_ts = get_tx_timestamp_u64(); //获得POLL发送时间T1 |
| | | resp_rx_ts = get_rx_timestamp_u64(); //获得RESPONSE接收时间T4 |
| | |
| | | final_msg_set_ts(&tx_near_msg[FINAL_MSG_RESP_RX_NEARBASE_IDX], resp_rx_ts); |
| | | final_msg_set_ts(&tx_near_msg[FINAL_MSG_FINAL_TX_TS_IDX], final_tx_ts); |
| | | tx_near_msg[MESSAGE_TYPE_IDX]=NEAR_FINAL; |
| | | |
| | | tx_near_msg[GROUP_ID_IDX] = group_id; |
| | | |
| | | dwt_writetxdata(28+nearbase_num*4, tx_near_msg, 0);//将发送数据写入DW1000 |
| | | dwt_writetxfctrl(28+nearbase_num*4, 0);//设定发送数据长度 |
| | |
| | | } |
| | | memcpy(&tx_near_msg[ANCHOR_ID_IDX],&nearmsg_mainbase,2); |
| | | memcpy(&tx_near_msg[TAG_ID_IDX],&dev_id,2); |
| | | tx_near_msg[GROUP_ID_IDX] = group_id; |
| | | tx_near_msg[MESSAGE_TYPE_IDX] = NEAR_MSG; |
| | | |
| | | dwt_setrxaftertxdelay(POLL_TX_TO_RESP_RX_DLY_UUS); //设置发送后开启接收,并设定延迟时间 |