From c194f604712122b2640e10b6d7d901cf4ba3712f Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期一, 02 十一月 2020 16:55:10 +0800
Subject: [PATCH] V2.8 完成注册功能

---
 源码/核心板/Src/application/dw_app.c |   42 +++++++++++++++++++++++++++++++++++++++---
 1 files changed, 39 insertions(+), 3 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 919ddf1..344e259 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"
@@ -1110,6 +1110,7 @@
 				dwt_write32bitreg(SYS_STATUS_ID, SYS_STATUS_ALL_RX_ERR);
 			}
 }
+
 extern u16 synclost_count;
 uint32_t current_syncid=0xffffffff,synclost_timer;
 extern u8 flag_syncbase,waitsync_flag;
@@ -1146,6 +1147,7 @@
 		memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2);
 		switch(rx_buffer[MESSAGE_TYPE_IDX])
 		{
+			uint16_t checksum;
 			case POLL:
 				if (anchor_type == rx_buffer[ANC_TYPE_IDX])
 				Anchor_RecPoll();
@@ -1174,13 +1176,48 @@
 					ancidlist_num=g_com_map[NEARBASE_NUM];
 					tx_near_msg[NEARBASENUM_INDEX]=g_com_map[NEARBASE_NUM];
 					memcpy(&tx_near_msg[NEARBASEID_INDEX],&g_com_map[NEARBASE_ID1],g_com_map[NEARBASE_NUM]*2);
-					send_len=11+ancidlist_num*2+2;
+					send_len=21+ancidlist_num*2;
 					dwt_writetxdata(send_len, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
 					dwt_writetxfctrl(send_len, 0);//设置超宽带发送数据长度
 					dwt_starttx(DWT_START_TX_IMMEDIATE);
 				}
 				break;
+		case REG_POLL:	
+			for(i=0;i<MAX_REGTAGNUM;i++)
+		{
+			if(tag_id_recv==regtag_map.tagid[i])
+			{
+					tx_near_msg[REGR_TAGSLOTPOS_INDEX]=regtag_map.tag_slotpos[i];
+					tx_near_msg[REGR_TAGFREQ_INDEX] = regtag_map.tag_frequency[i];
+					memcpy(&tx_near_msg[TAG_ID_IDX],&tag_id_recv,2);
+					memcpy(&tx_near_msg[ANCHOR_ID_IDX],&dev_id,2);
+					tx_near_msg[MESSAGE_TYPE_IDX] = REG_RESPONSE;
+					ancidlist_num=g_com_map[NEARBASE_NUM];
+					tx_near_msg[NEARBASENUM_INDEX]=g_com_map[NEARBASE_NUM];
+					memcpy(&tx_near_msg[NEARBASEID_INDEX],&g_com_map[NEARBASE_ID1],g_com_map[NEARBASE_NUM]*2);
+					send_len=21+ancidlist_num*2;
+					dwt_writetxdata(send_len, tx_near_msg, 0);//将Poll包数据传给DW1000,将在开启发送时传出去
+					dwt_writetxfctrl(send_len, 0);//设置超宽带发送数据长度
+					dwt_starttx(DWT_START_TX_IMMEDIATE);
+					regtag_map.tagid[i] = 0;
+			}
 		
+		}
+		if(i==MAX_REGTAGNUM)
+		{
+			dwt_readdiagnostics(&d1);
+			LOS(&d1);	
+			usart_send[2]=0x0a;
+			usart_send[3]=20;
+			memcpy(&usart_send[4],&dev_id,2);
+			memcpy(&usart_send[6],&tag_id_recv,2);
+			memcpy(&usart_send[8],&rx_buffer[10],9);
+			usart_send[17] = firstpath_power;
+			checksum = Checksum_u16(&usart_send[2],20);
+			memcpy(&usart_send[22],&checksum,2);
+			UART_PushFrame(usart_send,24);
+		}
+		break;
 			case NEAR_POLL:		
 		//	GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET);					
 				memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2);
@@ -1199,10 +1236,9 @@
 				tagpos_rec[(u8)temp_tagpos]=1;
 				rec_nearbase_num=rx_buffer[NEARBASENUM_INDEX];
 			
-
+GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET);	
 			if(anc_id_recv==dev_id)
 			{
-				GPIO_WriteBit(GPIOB, GPIO_Pin_10, Bit_SET);	
 				Anchor_RecNearPoll(0);	
 			}else{
 					

--
Gitblit v1.9.3