From a249d25e6f162ea7e17478010864193de4681b74 Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期三, 08 四月 2020 21:36:30 +0800 Subject: [PATCH] v1.20 --- 源码/核心板/Src/application/dw_app.c | 26 +++++++++++++++++++------- 1 files changed, 19 insertions(+), 7 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" index 97bb644..9c6998d 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" @@ -65,20 +65,22 @@ #define FINAL_MSG_TS_LEN 4 #define SYNC_SEQ_IDX 5 - +//common #define GROUP_ID_IDX 0 #define ANCHOR_ID_IDX 1 #define TAG_ID_IDX 5 #define MESSAGE_TYPE_IDX 9 -#define DIST_IDX 10 + //Poll #define ANC_TYPE_IDX 14 #define BATTARY_IDX 15 #define BUTTON_IDX 16 #define SEQUENCE_IDX 17 //respose +#define DIST_IDX 10 #define ANCTIMEMS 14 #define ANCTIMEUS 16 +#define ANCSEND_INTERVAL 18 #define POLL 0x01 #define RESPONSE 0x02 @@ -104,10 +106,10 @@ static uint8_t tx_poll_msg[20] = {0}; static uint8_t tx_sync_msg[14] = {0}; //static uint8_t rx_resp_msg[] = {0x41, 0x88, 0, 0xCA, 0xDE, 'V', 'E', 'W', 'A', 0x10, 0x02, 0, 0, 0, 0}; -static uint8_t tx_final_msg[] = {0x41, 0x88, 0, 0xCA, 0xDE, 'W', 'A', 'V', 'E', 0x23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +static uint8_t tx_final_msg[24] = {0}; //static uint8_t rx_poll_msg[] = {0x00, 0x88, 0, 0xCA, 0xDE, 'W', 'A', 'V', 'E', 0x21, 0, 0}; -static uint8_t tx_resp_msg[20] = {0}; +static uint8_t tx_resp_msg[22] = {0}; //static uint8_t rx_final_msg[] = {0x41, 0x88, 0, 0xCA, 0xDE, 'W', 'A', 'V', 'E', 0x23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; /* Frame sequence number, incremented after each transmission. */ @@ -283,6 +285,8 @@ memcpy(&tx_final_msg[TAG_ID_IDX], &dev_id, 4); memcpy(&tx_resp_msg[ANCHOR_ID_IDX], &dev_id, 4); memcpy(&tx_sync_msg[ANCHOR_ID_IDX], &dev_id, 4); + + memcpy(&tx_resp_msg[ANCSEND_INTERVAL], &g_com_map[COM_INTERVAL], 2); } uint16_t Checksum_u16(uint8_t* pdata, uint32_t len) { @@ -379,7 +383,7 @@ * As the sequence number field of the frame is not relevant, it is cleared to simplify the validation of the frame. */ if (rx_buffer[GROUP_ID_IDX] == group_id&&rx_buffer[MESSAGE_TYPE_IDX] == RESPONSE&&!memcmp(&rx_buffer[TAG_ID_IDX],&dev_id,4)) //判断接收到的数据是否是response数据 - { u16 anc_id_recv; + { u16 anc_id_recv,rec_com_interval; /* Retrieve poll transmission and response reception timestamp. */ poll_tx_ts = get_tx_timestamp_u64(); //获得POLL发送时间T1 resp_rx_ts = get_rx_timestamp_u64(); //获得RESPONSE接收时间T4 @@ -401,6 +405,15 @@ } memcpy(&hex_dist2, &rx_buffer[DIST_IDX], 4); memcpy(&tx_final_msg[ANCHOR_ID_IDX], &rx_buffer[ANCHOR_ID_IDX], 4); + memcpy(&rec_com_interval,&rx_buffer[ANCSEND_INTERVAL], 2); + if(rec_com_interval>4&&rec_com_interval!=g_com_map[COM_INTERVAL]) + { + g_com_map[COM_INTERVAL]=rec_com_interval; + save_com_map_to_flash(); + delay_ms(100); + SCB->AIRCR = 0X05FA0000|(unsigned int)0x04; //软复位回到bootloader + } + /* Compute final message transmission time. See NOTE 9 below. */ final_tx_time = (resp_rx_ts + (RESP_RX_TO_FINAL_TX_DLY_UUS * UUS_TO_DWT_TIME)) >> 8;//计算final包发送时间,T5=T4+Treply2 dwt_setdelayedtrxtime(final_tx_time);//设置final包发送时间T5 @@ -673,8 +686,7 @@ } }else if(rx_buffer[MESSAGE_TYPE_IDX] == SYNC) { - if(rx_buffer[SYNC_SEQ_IDX]<sync_seq) - // if(rx_buffer[SYNC_SEQ_IDX]==2) + if(rx_buffer[SYNC_SEQ_IDX]<sync_seq&&sync_mainbase==0) { sync_seq=rx_buffer[SYNC_SEQ_IDX]+1; TIM3->CNT = sync_seq*325%1000+15; -- Gitblit v1.9.3