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