From 1ebb1f507bf7e2b95782bff74ffc5d48e9b5394b Mon Sep 17 00:00:00 2001
From: chen <15335560115@163.com>
Date: 星期四, 26 九月 2024 11:49:09 +0800
Subject: [PATCH] 车载V1.5版本,增加滤波算法和上传数据修改,延长更新现存列表时间,解决无法对所有通信设备全部校准offset的bug

---
 APL/dw_ancapp.c |   67 ++++++++++++++++++++++++---------
 1 files changed, 48 insertions(+), 19 deletions(-)

diff --git a/APL/dw_ancapp.c b/APL/dw_ancapp.c
index 3e0c92b..9a9bf15 100644
--- a/APL/dw_ancapp.c
+++ b/APL/dw_ancapp.c
@@ -26,7 +26,7 @@
 #define POLL_TX_TO_RESP_RX_DLY_UUS 150
 #define RESP_RX_TO_FINAL_TX_DLY_UUS 410
 #define RESP_RX_TIMEOUT_UUS 2000
-#define DELAY_BETWEEN_TWO_FRAME_UUS 400
+#define DELAY_BETWEEN_TWO_FRAME_UUS 1200
 #define POLL_RX_TO_RESP_TX_DLY_UUS 670
 #define RESP_TX_TO_FINAL_RX_DLY_UUS 10
 #define FINAL_RX_TIMEOUT_UUS 4300
@@ -54,11 +54,11 @@
 static uint16_t ancidlist_rec[TAG_NUM_IN_SYS],ancidlist_send[TAG_NUM_IN_SYS],rec_ancidlist[TAG_NUM_IN_SYS];
 static int16_t rec_ancdistlist[TAG_NUM_IN_SYS];
 static int16_t rec_antdelay;
-static uint16_t taglist_num=0,taglist_pos,tmp_time;
-static uint16_t tagid_list[TAG_NUM_IN_SYS];
+ uint16_t taglist_num=0,taglist_pos;
+ uint16_t tagid_list[TAG_NUM_IN_SYS];
 uint8_t tagbattary_list[TAG_NUM_IN_SYS];
 static uint8_t tagofflinetime[TAG_NUM_IN_SYS];
-static int32_t tagdist_list[TAG_NUM_IN_SYS];
+ int32_t tagdist_list[TAG_NUM_IN_SYS];
 static uint8_t tagpos_rec[50];
 static uint64_t poll_rx_ts;
 static uint8_t g_flag_Taggetdist[TAG_NUM_IN_SYS],flag_tag_distsmooth[TAG_NUM_IN_SYS],misdist_num[TAG_NUM_IN_SYS];
@@ -76,7 +76,7 @@
 const double A = 121.74;
 double min_power;
 static dwt_rxdiag_t d1;
-static int32_t hex_dist,his_dist[TAG_NUM_IN_SYS];
+static int32_t hex_dist;
 extern uint16_t g_Resttimer;
 static int32_t filter_dist,g_Tagdist[TAG_NUM_IN_SYS];
 double LOS(dwt_rxdiag_t *dia) {
@@ -139,6 +139,7 @@
         *ts += ts_field[i] << (i * 8);
     }
 }
+int16_t his_dist[100];
 void TagListUpdate(void)
 {
 	uint16_t i,j=0,temp[TAG_NUM_IN_SYS];
@@ -147,7 +148,11 @@
 		if(tagofflinetime[i]++<QUIT_SLOT_TIME)
 		{
 			tagid_list[j]=tagid_list[i];
+//			tagid_distlist[j] = 
+			tagdist_list[j]=tagdist_list[i];
+			his_dist[j] = his_dist[i];
 			tagofflinetime[j++]=tagofflinetime[i];
+			
 		}
 	}
 	taglist_num=j;
@@ -177,19 +182,19 @@
 uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos) //0 mainbase  1 first near_base
 {
     uint8_t motorstate;
-			tmp_time=TIM3->CNT;
+		//	tmp_time=TIM3->CNT;
       temp_nearbaspos = ancrec_nearbasepos;
       memcpy(&send_buffer[ANCHOR_ID_IDX],&dev_id,2);
 			memcpy(&send_buffer[ANCTIMEMS],&basesystimer,2);
-			memcpy(&send_buffer[ANCTIMEUS],&tmp_time,2);
+		//	memcpy(&send_buffer[ANCTIMEUS],&tmp_time,2);
 			send_buffer[TAGFREQ_IDX] = tag_frequency;
 			memcpy(&send_buffer[TAG_ID_IDX],&tag_id_recv,2);
 			poll_rx_ts = get_rx_timestamp_u64();//获得Poll包接收时间T2
 
     if(rec_nearbase_num == ancrec_nearbasepos)//抢占模式
     {
-        random_time = (HIDO_TimerGetTick()%100);
-        	resp_tx_time = (poll_rx_ts+((random_time+rec_nearbase_num*20 + POLL_RX_TO_RESP_TX_DLY_UUS+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。
+     //   random_time = (HIDO_TimerGetTick()%100);
+        	resp_tx_time = (poll_rx_ts+((rec_nearbase_num*20 + POLL_RX_TO_RESP_TX_DLY_UUS+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。
   
     }else{
   			resp_tx_time = (poll_rx_ts + ((rec_nearbase_num*20+POLL_RX_TO_RESP_TX_DLY_UUS+ancrec_nearbasepos*DELAY_BETWEEN_TWO_FRAME_UUS) * UUS_TO_DWT_TIME)) >> 8;//计算Response发送时间T3。
@@ -202,15 +207,15 @@
             /* Write all timestamps in the final message. See NOTE 8 below. */
             resp_msg_set_ts(&send_buffer[RESP_MSG_POLL_RX_TS_IDX], poll_rx_ts);
             resp_msg_set_ts(&send_buffer[RESP_MSG_RESP_TX_TS_IDX], resp_tx_ts);
-						g_com_map[DIST_OFFSET]=0;//测试记得删
+						//g_com_map[DIST_OFFSET]=0;//测试记得删
             memcpy(&send_buffer[RESP_MSG_ANC_DISTOFFSET],&g_com_map[DIST_OFFSET],2);
-			if(new_tagid)
-			{
-				tagdist_list[taglist_pos]=0x1ffff;
-				memcpy(&send_buffer[DIST_IDX], &tagdist_list[taglist_pos], 4);
-			}else{
-				memcpy(&send_buffer[DIST_IDX], &tagdist_list[taglist_pos], 4);
-			}
+//			if(new_tagid)
+//			{
+//				tagdist_list[taglist_pos]=0x1ffff;
+//				memcpy(&send_buffer[DIST_IDX], &tagdist_list[taglist_pos], 4);
+//			}else{
+//				memcpy(&send_buffer[DIST_IDX], &tagdist_list[taglist_pos], 4);
+//			}
 //			motorstate =0;
 //            if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE1]||tagdist_list[taglist_pos]<0)
 //            {
@@ -510,7 +515,26 @@
 //			}
 //        }
 }
+
+int16_t DistFilter(int16_t dist,int8_t pos)
+{
+	if(abs(dist-his_dist[pos])<1000||misdist_num[pos]>3)
+	{
+//		if(tagdist_list[pos]>0&&tagdist_list[pos]<50000)
+//		{
+//			filter_dist=(dist/10)*0.5+0.5*tagdist_list[pos];
+//		}else{
+//			filter_dist = dist/10;
+//		}
+		misdist_num[pos]=0;
+		his_dist[pos]=dist;        
+	}else{
+		misdist_num[pos]++;
+	}
+	return his_dist[pos];
+}
 uint16_t target_tagid[12] = {0x1316,0x1394,0x1265,0x1318,0x1306,0x1304,0x1376,0x1312,0x1277,0x1388,0x1140,0x1392};
+int16_t anchor_dist;
 void Anchor_App(void)
 {
 	u8 send_len,i;
@@ -558,13 +582,18 @@
                 {
                     if(rec_ancidlist[i] == dev_id)
                     {		//rec_ancdistlist[i]+=(int16_t)g_com_map[DIST_OFFSET];
-                        PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],-(int8_t)firstpath_power);  
+											
+											anchor_dist = rec_ancdistlist[i]+(int16_t)g_com_map[DIST_OFFSET];
+											break;
+                      //  PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],-(int8_t)firstpath_power);  
                         
                        // PushAnchorDataArray(tag_id_recv,rec_ancdistlist[i],battary);  
                     }
                 }
 				taglist_pos=CmpTagInList(tag_id_recv);
-                if(taglist_num>=TAG_NUM_IN_SYS)
+				if(rec_ancdistlist[i]!=-1)			
+				tagdist_list[taglist_pos] = DistFilter(anchor_dist,taglist_pos);
+//                if(taglist_num>=TAG_NUM_IN_SYS)
 //                    break;
 				if(taglist_pos==taglist_num)
 				{

--
Gitblit v1.9.3