From be85d5e358df89b9dca87e82fd08804135114e25 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期六, 15 三月 2025 15:08:11 +0800
Subject: [PATCH] 修改了标签上传逻辑

---
 keil/uwb_app.c |   57 +++++++++++++++++++++++++++++++++------------------------
 1 files changed, 33 insertions(+), 24 deletions(-)

diff --git a/keil/uwb_app.c b/keil/uwb_app.c
index 1a2af2b..52b8d3c 100644
--- a/keil/uwb_app.c
+++ b/keil/uwb_app.c
@@ -11,7 +11,7 @@
 #include "lora_1268.h"
 #include "PCA9555.h"
 
-#define TAG_KEEPTIMES           30
+#define TAG_KEEPTIMES           20
 #define REPORT_TAG_KEEPTIMES     1
 
 #define GROUP_NUM   3
@@ -279,6 +279,7 @@
 uint16_t REV_POLL_NUM;
 uint16_t REPLY_POLL_NUM;
 uint16_t ERR_RX_NUM;
+uint8_t send_qiangzhan_NUM;
 static void rx_int_callback(struct MAC_HW_REPORT_T *rx_report)
 {		uint8_t valid_sts=0;
     // Power off radio
@@ -326,19 +327,19 @@
         /* UWB_BD_ERR      Preamble detection error  */
         /* UWB_TO_ERR      Receive timeout           */
         /* UWB_STS_ERR     STS error                 */
-			        temp_count= phy_timer_count_get();
+			  temp_count= phy_timer_count_get();
         memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T));
         rx_length = 0;
 			  ERR_RX_NUM++;
 			  UWB_STATE=UWB_STATE_IDLE;
-				if(UWB_STATE==UWB_STATE_IDLE)
-				{
-					UWB_STATE=UWB_RX_STATE_BUSY;
-					OpenUWB();//再次开启UWB接收
-				}
+//				if(UWB_STATE==UWB_STATE_IDLE)
+//				{
+//					UWB_STATE=UWB_RX_STATE_BUSY;
+//					OpenUWB();//再次开启UWB接收
+//				}
 			//	OpenUWB();//再次开启UWB接收
     }
-//	OpenUWB();//再次开启UWB接收
+	OpenUWB();//再次开启UWB接收
 }
 uint16_t TX_CALL_POLL_NUM;
 /* TX done process handler. */
@@ -353,10 +354,15 @@
 			
         temp_count= phy_timer_count_get();
         temp_internal=temp_count;
-        resp_tx_num++;
+        
 			  TX_CALL_POLL_NUM++;
+			  if(send_qiangzhan_NUM)
+				{
+				send_qiangzhan_NUM=0;
+				resp_tx_num++;
+				}
 				UWB_STATE=UWB_RX_STATE_BUSY;
-			  OpenUWB();//再次开启UWB接收
+//			  OpenUWB();//再次开启UWB接收
 			  //gpio_pin_clr(IO_PIN_5);
         //LOG_INFO(TRACE_MODULE_APP, "poll_rx_num is %d,resp_tx_num is %d\r\n",poll_rx_num,resp_tx_num);
     }
@@ -447,6 +453,7 @@
 //uint32_t timeceshi2;
 
 uint8_t position;
+uint16_t response_num;
 uint8_t Anchor_RecNearPoll(uint8_t ancrec_nearbasepos)//根据自己是否为新基站定制消息去发送,根据是否抢占判断
 {
     temp_count2=poll_rx_en_start_u32;
@@ -478,12 +485,11 @@
     memcpy(&send_buffer[RESP_MSG_ANC_DISTOFFSET],&disoffset,2);//差个修正offset,修正有符号但是这个com表为无符号的,传过去直接赋给Int16_t相当于还原了
     temp_resp_i64=resp_tx_ts_i64;
     temp_count3= phy_timer_count_get();
-//		temp_rx=uwb_rx(buf_1,0,10);
-//		CloseUWB();
-//    UWB_STATE==UWB_TX_STATE_BUSY;
-//	  gpio_pin_set(IO_PIN_1);
-//		gpio_pin_clr(IO_PIN_1);		
-    flag_temp2=uwb_tx(send_buffer, 40,1 ,resp_tx_en_start_u32);//立即发送测试size大小
+    UWB_STATE==UWB_TX_STATE_BUSY;
+		response_num++;
+		
+		flag_temp2=uwb_tx(send_buffer, 40,1 ,resp_tx_en_start_u32);//立即发送测试size大小
+   
 		
 		tagofflinetime[taglist_pos] = 0;//更新标签通信
     temp_count1=phy_timer_count_get();
@@ -702,7 +708,7 @@
 {   uint16_t i;
     for(i=0; i<taglist_num; i++)
     {
-        if(memcmp(&tagid,&tagid_list[i],2)==0)
+        if(memcmp(&tagid,&tagid_list[i],2)==0) 
             return 1;
     }
     return 0;
@@ -772,7 +778,7 @@
 //	}
 	 UWBIdleTask();
 }
-//uint16_t REV_RX_NUM;
+
 //uint16_t REV_POLL_NUM;
 //uint16_t REPLY_POLL_NUM;
 int Anchor_App(void)
@@ -801,12 +807,13 @@
 										memcpy(&tempid,&rx_buf[FZ_NEARBASEID_INDEX+i*2],2);
 										if(tempid==dev_id)
 										{
+											  
 												Anchor_RecNearPoll(i);
 												tagdist_list[taglist_pos]=rec_ancdistlist[i];
 												if(taglist_pos==taglist_num)// taglist_pos==taglist_num 说明这个基站不在当前列表中
 												{   //tempid==dev_id 说明基站下发测距报文有这个标签的信息
 														taglist_num++;          //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况
-													  REPLY_POLL_NUM++;
+													  
 														tagid_list[taglist_pos] = tag_id_recv;
 												}
 												break;
@@ -814,15 +821,17 @@
 								}
 								 if((i==rec_nearbase_num&&taglist_pos==taglist_num)||(rec_nearbase_num==0&&!ExistInTagList(tag_id_recv)))//当基站不在标签列表中,标签也不在基站列表中时,随机找个时间片回复基站。
                 {
+									     REPLY_POLL_NUM++;
+									     send_qiangzhan_NUM=1;
                        Anchor_RecNearPoll(rec_nearbase_num);
                 }
 				}
 	else{
-				if(UWB_STATE==UWB_STATE_IDLE)
-				{
-				UWB_STATE=UWB_RX_STATE_BUSY;
-				OpenUWB();
-				}
+//				if(UWB_STATE==UWB_STATE_IDLE)
+//				{
+//				UWB_STATE=UWB_RX_STATE_BUSY;
+//				OpenUWB();
+//				}
 			}
 				
 				

--
Gitblit v1.9.3