From c29fcd3c48ed584bfe08c13930e308205cf2eafd Mon Sep 17 00:00:00 2001
From: zhyinch <zhyinch@gmail.com>
Date: 星期三, 23 三月 2022 12:10:58 +0800
Subject: [PATCH] V1.62 去掉基站远程改配置和下发标签震动功能。

---
 源码/核心板/Src/application/dw_app.c |  128 +++++++++++++++++++++++++++++++-----------
 1 files changed, 94 insertions(+), 34 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 20612af..d035c83 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"
@@ -50,7 +50,7 @@
 LPFilter_Frac* p_Dis_Filter;		//测距用的低通滤波器
 int32_t g_Tagdist[TAG_NUM_IN_SYS];
 uint8_t g_flag_Taggetdist[256];
-
+extern u16 supergroupid;
 static uint64_t get_tx_timestamp_u64(void)
 {
     uint8_t ts_tab[5];
@@ -315,9 +315,9 @@
 }
 u8 test=0;
 u8 anclost_times=0;
-u8 exsistbase_list[MAX_NEARBASE_NUM],report_num,get_newbase=0;
-u16 temp_sync_timer1,temp_sync_timer2;
-
+u8 exsistbase_list[MAX_NEARBASE_NUM],report_num,get_newbase=0,rec_extratag_battary;
+u16 temp_sync_timer1,temp_sync_timer2,rec_extratag_id;
+int32_t rec_extratag_dist;
  void NearPoll(void)
 {
 	static u8 mainbase_lost_count=0,flag_finalsend,flag_rxon;
@@ -399,7 +399,7 @@
 							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)&&rx_buffer[GROUP_ID_IDX] == group_id) //判断接收到的数据是否是response数据
+							if (rx_buffer[MESSAGE_TYPE_IDX] == NEAR_RESPONSE&&!memcmp(&rx_buffer[TAG_ID_IDX],&dev_id,2)&&(rx_buffer[GROUP_ID_IDX]==supergroupid||rx_buffer[GROUP_ID_IDX] == group_id||group_id==supergroupid)) //判断接收到的数据是否是response数据
 							{	u16 rec_nearbaseid,rec_nearbasepos;
 								int32_t temp_dist;
 								poll_tx_ts = get_tx_timestamp_u64();										//获得POLL发送时间T1
@@ -443,8 +443,14 @@
 //										tyncpoll_time=(tagslotpos-1)*slottime;
 									////////////////////////////
 									rec_nearbasepos=0;
-									
+								
+									memcpy(&rec_extratag_id,&rx_buffer[EXTRA_TAGID_INDEX],2);
+									memcpy(&rec_extratag_dist,&rx_buffer[EXTRA_TAGDIST_INDEX],4);
+								
 									memcpy(&temp_dist,&rx_buffer[DIST_IDX],4);
+									temp_dist = temp_dist&0xffffff;
+									rec_extratag_dist = rec_extratag_dist&0xffffff;
+								
 									nearbase_distlist[rec_nearbasepos]=temp_dist;
 								if(temp_dist!=0x1ffff)
 									exsistbase_list[rec_nearbasepos]=KEEP_TIMES;
@@ -464,10 +470,10 @@
 									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&&g_com_map[ALARM_DISTANCE1] == 1)
+								if(temp_dist!=0x1ffff)
 									{
 										g_Resttimer=0;
-                                        IWDG_Feed();
+										IWDG_Feed();
 										#ifdef USART_SINGLE_OUTPUT
 										usart_send[2] = 1;//正常模式
 										usart_send[3] = 17;//数据段长度
@@ -480,18 +486,36 @@
 										memcpy(&usart_send[5],&rec_nearbaseid,2);
 										memcpy(&usart_send[7],&dev_id,2);	
 										}											
-										memcpy(&usart_send[9],&rx_buffer[DIST_IDX],4);
-										usart_send[13] = battary;
+										memcpy(&usart_send[9],&temp_dist,4);
+										usart_send[13] = rx_buffer[DIST_IDX+3];
 										usart_send[14] = button;
 										checksum = Checksum_u16(&usart_send[2],17);
 										memcpy(&usart_send[19],&checksum,2);
 										UART_PushFrame(usart_send,21);
 										#endif
-
-									//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
+										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;
+										checksum = Checksum_u16(&usart_send[2],17);
+										memcpy(&usart_send[19],&checksum,2);
+										UART_PushFrame(usart_send,21);
+										#endif
+									}
 		
 									
 								}else{
@@ -503,8 +527,11 @@
 										nearbaseid_list[rec_nearbasepos] = rec_nearbaseid;
 										memcpy(&tx_nearfinal_msg[ANCHOR_ID_IDX],&rec_nearbaseid,2);
 									}
-									
+								  memcpy(&rec_extratag_id,&rx_buffer[EXTRA_TAGID_INDEX],2);
+									memcpy(&rec_extratag_dist,&rx_buffer[EXTRA_TAGDIST_INDEX],4);
 									memcpy(&temp_dist,&rx_buffer[DIST_IDX],4);
+									temp_dist = temp_dist&0xffffff;
+									rec_extratag_dist = rec_extratag_dist&0xffffff;
 									nearbase_distlist[rec_nearbasepos]=temp_dist;
 									
 									if(temp_dist!=0x1ffff)
@@ -516,7 +543,7 @@
 									LED0_BLINK;
 //									memcpy(&rec_tagpos_binary,&rx_buffer[NEARMSG_EMPTYSLOTPOS_INDEX],4);
 //									tagslotpos=GetRandomSlotPos(rec_tagpos_binary);
-									if(temp_dist!=0x1ffff&&g_com_map[ALARM_DISTANCE1] == 1)
+									if(temp_dist!=0x1ffff)
 									{
 										#ifdef USART_SINGLE_OUTPUT
 										usart_send[2] = 1;//正常模式
@@ -530,8 +557,8 @@
 										memcpy(&usart_send[5],&rec_nearbaseid,2);
 										memcpy(&usart_send[7],&dev_id,2);	
 										}											
-										memcpy(&usart_send[9],&rx_buffer[DIST_IDX],4);
-										usart_send[13] = battary;
+										memcpy(&usart_send[9],&temp_dist,4);
+										usart_send[13] = rx_buffer[DIST_IDX+3];  //电量集成到距离里面输出了
 										usart_send[14] = button;
 										checksum = Checksum_u16(&usart_send[2],17);
 										memcpy(&usart_send[19],&checksum,2);
@@ -542,6 +569,28 @@
 								//	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
+										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;
+										checksum = Checksum_u16(&usart_send[2],17);
+										memcpy(&usart_send[19],&checksum,2);
+										UART_PushFrame(usart_send,21);
+										#endif
+									}
 							}									
 							}
 						}else{
@@ -902,19 +951,29 @@
 			}else{
 				memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4);
 			}
-            tx_nearresp_msg[GROUP_ID_IDX] = group_id;
+      tx_nearresp_msg[GROUP_ID_IDX] = group_id;
 			tx_nearresp_msg[MAINBASE_INDEX]=flag_syncbase;
 			tx_nearresp_msg[MESSAGE_TYPE_IDX]=NEAR_RESPONSE;
-			tx_nearresp_msg[MOTORSTATE_INDEX]=(remotesend_state<<4)|motorstate;
-			if(remotesend_state)
-			{
-			 	memcpy(&tx_nearresp_msg[REMOTEPARA_INDEX],remotetag_para,REMOTEPARA_LEN);
-				dwt_writetxdata(22+REMOTEPARA_LEN, tx_nearresp_msg, 0);//写入发送数据
-				dwt_writetxfctrl(22+REMOTEPARA_LEN, 0);//设定发送长度		
-			}else{
-			dwt_writetxdata(22, tx_nearresp_msg, 0);//写入发送数据
-			dwt_writetxfctrl(22, 0);//设定发送长度
-			}
+			tx_nearresp_msg[MOTORSTATE_INDEX]=0;//(remotesend_state<<4)|motorstate;
+//			if(remotesend_state)
+//			{
+//			 	memcpy(&tx_nearresp_msg[REMOTEPARA_INDEX],remotetag_para,REMOTEPARA_LEN);
+//				dwt_writetxdata(22+REMOTEPARA_LEN, tx_nearresp_msg, 0);//写入发送数据
+//				dwt_writetxfctrl(22+REMOTEPARA_LEN, 0);//设定发送长度		
+//			}else{
+				if(taglist_pos==1)
+				{
+					memcpy(&tx_nearresp_msg[EXTRA_TAGID_INDEX], &tagid_list[0], 2);
+					memcpy(&tx_nearresp_msg[EXTRA_TAGDIST_INDEX], &tagdist_list[0], 4);
+				}
+				 if(taglist_pos==0)
+				{
+					memcpy(&tx_nearresp_msg[EXTRA_TAGID_INDEX], &tagid_list[1], 2);
+					memcpy(&tx_nearresp_msg[EXTRA_TAGDIST_INDEX], &tagdist_list[1], 4);
+				}					
+				dwt_writetxdata(28, tx_nearresp_msg, 0);//写入发送数据
+				dwt_writetxfctrl(28, 0);//设定发送长度
+	//		}
 			result = dwt_starttx(DWT_START_TX_DELAYED | DWT_RESPONSE_EXPECTED);//延迟发送,等待接收
 
 			
@@ -936,13 +995,13 @@
 			{
 				return 1;
 			}
-			if (rx_buffer[MESSAGE_TYPE_IDX] == NEAR_FINAL&&!memcmp(&rx_buffer[TAG_ID_IDX],&tag_id_recv,2)&&group_id==rx_buffer[GROUP_ID_IDX]) //判断是否为Final包
+			if (rx_buffer[MESSAGE_TYPE_IDX] == NEAR_FINAL&&!memcmp(&rx_buffer[TAG_ID_IDX],&tag_id_recv,2)&&(rx_buffer[GROUP_ID_IDX]==supergroupid||rx_buffer[GROUP_ID_IDX] == group_id||group_id==supergroupid)) //判断是否为Final包
 				{
 					uint32_t poll_tx_ts, resp_rx_ts, final_tx_ts;
 					uint32_t poll_rx_ts_32, resp_tx_ts_32, final_rx_ts_32;
 					double Ra, Rb, Da, Db;
 					int64_t tof_dtu;
-                    u8 si;
+          u8 si;
 					resp_tx_ts = get_tx_timestamp_u64();//获得response发送时间T3
 					final_rx_ts = get_rx_timestamp_u64();//获得final接收时间T6
 					final_msg_get_ts(&rx_buffer[FINAL_MSG_POLL_TX_TS_IDX], &poll_tx_ts);//从接收数据中读取T1,T4,T5
@@ -1011,6 +1070,7 @@
                             if(tagdist_list[taglist_pos]<=0)
                                 tagdist_list[taglist_pos]=10;
 					memcpy(&usart_send[9],&tagdist_list[taglist_pos],4);
+														tagdist_list[taglist_pos] =tagdist_list[taglist_pos]| (battary<<24);
 					usart_send[13] = battary;
 					usart_send[14] = button;
 					usart_send[15] = firstpath_power;
@@ -1069,7 +1129,7 @@
 		memcpy(&anc_id_recv,&rx_buffer[ANCHOR_ID_IDX],2);
 		//将收到的tag_id分别写入各次通讯的包中,为多标签通讯服务,防止一次通讯中接收到不同ID标签的数据
 		memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2);
-       if(group_id==rx_buffer[GROUP_ID_IDX])
+       if((rx_buffer[GROUP_ID_IDX]==supergroupid||rx_buffer[GROUP_ID_IDX] == group_id||group_id==supergroupid))
        {
 		switch(rx_buffer[MESSAGE_TYPE_IDX])
 		{
@@ -1126,7 +1186,7 @@
 				memcpy(&tag_id_recv,&rx_buffer[TAG_ID_IDX],2);
                 memcpy(&rec_ancidlist,&rx_buffer[NEARBASEID_INDEX],2*rec_nearbase_num);
                 memcpy(&rec_ancdistlist,&rx_buffer[NEARBASEID_INDEX+2*rec_nearbase_num],2*rec_nearbase_num);
-                memcpy(&rec_antdelay,&rx_buffer[NEARBASEID_INDEX+nearbase_num*4],2);
+                memcpy(&rec_antdelay,&rx_buffer[NEARBASEID_INDEX+rec_nearbase_num*4],2);
             #ifdef USART_ALL_OUTPUT
                     usart_send[2] = 0x0c;//正常模式 
 					usart_send[3] = 8+rec_nearbase_num*4;//数据段长度

--
Gitblit v1.9.3