From 5d702503313b6a3a6e86767510c4ccdb17e27541 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期五, 01 三月 2024 16:25:41 +0800
Subject: [PATCH] 1

---
 Src/application/dw_mbx_tag.c |   29 +++++++++++++++++++----------
 1 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/Src/application/dw_mbx_tag.c b/Src/application/dw_mbx_tag.c
index a8b322a..38a0624 100644
--- a/Src/application/dw_mbx_tag.c
+++ b/Src/application/dw_mbx_tag.c
@@ -38,6 +38,7 @@
 #define TAG_NUM_IN_SYS				25
 
 #define TAG_KEEPTIMES           30
+#define REPORT_TAG_KEEPTIMES     3
 static uint16_t ancidlist_rec[TAG_NUM_IN_SYS],ancidlist_send[TAG_NUM_IN_SYS],rec_ancidlist[TAG_NUM_IN_SYS],rec_ancdistlist[TAG_NUM_IN_SYS];
 static u8 frame_seq_nb2,battary,button,uwb_losttimer,taglist_pos;
 
@@ -95,17 +96,25 @@
 //            delay_ms(10);
 }
 uint8_t report_ancnum;
+uint16_t report_ancdist[ANC_MAX_NUM],report_ancid[ANC_MAX_NUM];
 void TagListUpdate(void)
 {
-	uint16_t i,j=0,temp[TAG_NUM_IN_SYS];
+	uint16_t i,j=0,k=0,temp[TAG_NUM_IN_SYS];
 	for(i=0;i<taglist_num;i++)
 	{
+        if(tagofflinetime[i]++<REPORT_TAG_KEEPTIMES)
+		{
+			report_ancid[k]=tagid_list[i];
+			report_ancdist[k++]=tagdist_list[i];
+		}
 		if(tagofflinetime[i]++<TAG_KEEPTIMES)
 		{
 			tagid_list[j]=tagid_list[i];
+            tagdist_list[j] = tagdist_list[i];
 			tagofflinetime[j++]=tagofflinetime[i];
 		}
 	}
+    report_ancnum = k;
 	taglist_num=j;
 }
 uint16_t CmpTagInList(uint16_t tagid)
@@ -238,7 +247,7 @@
     }
 }
 static u16 checksum;
-u8 gps_state,gps_chafenlingqi,gps_satel_num,test_num;
+u8 gps_state,gps_chafenlingqi,gps_satel_num;
 double gps_jingdu,gps_weidu;
 extern u8 bat_percent,stationary_flag;
 int16_t sendcount = 0,tp1;
@@ -249,10 +258,10 @@
     TagListUpdate();
     
     LoraReportFreqPoll();
-    taglist_num = test_num;
+    
     SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]);
     lora_sendbuffer[MSG_TYPE_IDX] = LORA_MSGTYPE_TAGMSGTOWG_GPS;
-    lora_sendbuffer[MSG_LENGTH] = 4*taglist_num+30;
+    lora_sendbuffer[MSG_LENGTH] = 4*report_ancnum+30;
     memcpy(&lora_sendbuffer[SOURCE_ID_IDX],&g_com_map[DEV_ID],2);
     memcpy(&lora_sendbuffer[DEST_ID_IDX],&wg_report_id,2);
     lora_sendbuffer[SEQNUM_IDX] = seq_num++;
@@ -263,12 +272,12 @@
     lora_sendbuffer[GPS_STATE_IDX] = gps_state;
     lora_sendbuffer[GPS_SATEL_NUM_IDX] = gps_satel_num;
     lora_sendbuffer[GPS_CHAFENLINGQI] = gps_chafenlingqi;
-    lora_sendbuffer[ANCNUM_IDX] = taglist_num;
-    memcpy(&lora_sendbuffer[ANCID_IDX],tagid_list,taglist_num*2);
-    memcpy(&lora_sendbuffer[ANCID_IDX+taglist_num*2],tagdist_list,taglist_num*2);
-    checksum = Checksum_u16(lora_sendbuffer,4*taglist_num+ANCID_IDX);
-    memcpy(&lora_sendbuffer[ANCID_IDX+taglist_num*4],&checksum,2);
-    Radio.Send(lora_sendbuffer,ANCID_IDX+taglist_num*4+2);
+    lora_sendbuffer[ANCNUM_IDX] = report_ancnum;
+    memcpy(&lora_sendbuffer[ANCID_IDX],report_ancid,report_ancnum*2);
+    memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*2],report_ancdist,report_ancnum*2);
+    checksum = Checksum_u16(lora_sendbuffer,4*report_ancnum+ANCID_IDX);
+    memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*4],&checksum,2);
+    Radio.Send(lora_sendbuffer,ANCID_IDX+report_ancnum*4+2);
     bat_percent=Get_Battary();  
     
 }
\ No newline at end of file

--
Gitblit v1.9.3