From e4d167a7d5e73b58a7d4adbc8b91499dc1e2d4c4 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期二, 01 四月 2025 11:08:41 +0800
Subject: [PATCH] 低功耗,逻辑正确,现在室外40ma,室内20ma电流

---
 keil/uwb_app.c |   47 +++++++++++++++++++++++++++--------------------
 1 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/keil/uwb_app.c b/keil/uwb_app.c
index 90ab06d..2bc97a0 100644
--- a/keil/uwb_app.c
+++ b/keil/uwb_app.c
@@ -289,6 +289,8 @@
 uint8_t receive_error_flag;
 uint8_t rxnumoknum,rxnumerrornum;
 uint8_t resp_tx_flag;
+extern uint8_t ceju_onlinetime;
+extern uint8_t in_the_room_flag;
 static void rx_int_callback(struct MAC_HW_REPORT_T *rx_report)
 {		uint8_t valid_sts=0;
     // Power off radio
@@ -344,6 +346,8 @@
 			        temp_count= phy_timer_count_get();
         memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T));
         rx_length = 0;
+//			  ceju_onlinetime==0;
+//			  in_the_room_flag++;
         receive_error_flag=1;
 				OpenUWB();//再次开启UWB接收
     }
@@ -484,6 +488,8 @@
 extern uint8_t in_the_room_flag;
 extern uint8_t lounei_flag;
 uint8_t ceju_onlinetime;
+uint16_t last_id=0;
+uint8_t ceju_leave_flag=0;
 void TagListUpdate(void)
 {
 uint16_t i,j=0,k=0;
@@ -496,15 +502,27 @@
 						anchordata_bat[j]=anchordata_bat[i];//电量随之更新
             anchor_rssi[j]=anchor_rssi[i];
             tagofflinetime[j++]=tagofflinetime[i];
-					  in_the_room_flag=0;
-					  ceju_onlinetime++;
-        }
+//					  in_the_room_flag=0;
+					  last_id=tagid_list[i];
+						if(last_id=tagid_list[i])
+						{
+						 ceju_onlinetime++;		
+						}
 
+        }
 		}
-		if(ceju_onlinetime>0||taglist_num==0)
+//		if(ceju_onlinetime==0&&taglist_num==0)
+//		{
+//		 in_the_room_flag=0;
+//		}
+//		if(ceju_onlinetime>1&&taglist_num==0)
+//		{
+//		 in_the_room_flag=1;
+//		}
+		if(ceju_onlinetime>0&&taglist_num==0)
 		{
-		 ceju_onlinetime=0;
-		 in_the_room_flag=1;
+			ceju_onlinetime=0;
+			ceju_leave_flag=1;
 		}
 		 taglist_num=j;
 }
@@ -834,23 +852,12 @@
 												tagdist_list[taglist_pos]=rec_ancdistlist[i];
 												anchordata_bat[taglist_pos] = battary;//保存该基站电量
                         anchor_rssi[taglist_pos]=rssi;
-//											  in_the_room_flag=1;
-//											  if(dev_id==g_com_map[DOOR_UWB_1])
-//												{
-//													
-//												}
-//												if(dev_id==g_com_map[DOOR_UWB_2])
-//												{
-//													
-//												}
-//												if(dev_id==g_com_map[DOOR_UWB_3])
-//												{
-//													IN_THE_ROOM_FLAG=1;
-//												}
+	                      PCA9555_Set_One_Value_Output(GPS_POWER,1);										
 												if(taglist_pos==taglist_num)// taglist_pos==taglist_num 说明这个基站不在当前列表中
 												{   //tempid==dev_id 说明基站下发测距报文有这个标签的信息
 														taglist_num++;          //满足上述两种情况才会添加基站ID进入列表中,否则会出现标签不在基站列表中,标签也不响应的情况
-														tagid_list[taglist_pos] = tag_id_recv;		
+														tagid_list[taglist_pos] = tag_id_recv;
+												PCA9555_Set_One_Value_Output(GPS_POWER,1);														
 												}
 												break;
 										}

--
Gitblit v1.9.3