From 7f6ea7b60ba9e752355cdbb136304e03dbfc7187 Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期三, 26 三月 2025 13:52:49 +0800
Subject: [PATCH] 做了室内室外的基本判断,现在室内一分钟上传一次心跳包

---
 keil/uwb_app.c |   85 ++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 81 insertions(+), 4 deletions(-)

diff --git a/keil/uwb_app.c b/keil/uwb_app.c
index ba131ee..2b3c21b 100644
--- a/keil/uwb_app.c
+++ b/keil/uwb_app.c
@@ -11,6 +11,7 @@
 #include "board.h"
 #include "lib_aoa.h"
 #include "WS2812.h"
+#include "PCA9555.h"
 extern int simple_main(void);
 extern int temp_main(void);
 void Calibration_Time(void);
@@ -343,7 +344,7 @@
         memcpy(&rx_rpt, rx_report, sizeof(struct MAC_HW_REPORT_T));
         rx_length = 0;
         receive_error_flag=1;
-		OpenUWB();//再次开启UWB接收
+				OpenUWB();//再次开启UWB接收
     }
 //    CloseUWB();
 //	OpenUWB();//再次开启UWB接收
@@ -479,6 +480,9 @@
 //    }
 //    anchordata_num=j;
 //}
+extern uint8_t in_the_room_flag;
+extern uint8_t lounei_flag;
+uint8_t ceju_onlinetime;
 void TagListUpdate(void)
 {
 uint16_t i,j=0,k=0;
@@ -491,7 +495,15 @@
 						anchordata_bat[j]=anchordata_bat[i];//电量随之更新
             anchor_rssi[j]=anchor_rssi[i];
             tagofflinetime[j++]=tagofflinetime[i];
+					  in_the_room_flag=0;
+					  ceju_onlinetime++;
         }
+
+		}
+		if(ceju_onlinetime>0||taglist_num==0)
+		{
+		 ceju_onlinetime=0;
+		 in_the_room_flag=1;
 		}
 		 taglist_num=j;
 }
@@ -704,10 +716,63 @@
         UWBSendUDPTask();
 	}
 }
+//int uwb_app_poll(void)
+//{
+//	
+//	 UWBIdleTask();
+//}
+//enumwltagstate wltag_state=RANGE;
+uint32_t wltag_statetimer,wltag_uwbtimer;
 int uwb_app_poll(void)
 {
+	switch(wltag_state)
+	{
+		
+	case RANGE:
+//	time_flag=HIDO_TimerGetTick()-wltag_uwbtimer;
+	if(HIDO_TimerGetTick()-wltag_uwbtimer>2&&uwb_rx_flag==0)
+		{ 
+			wltag_uwbtimer = HIDO_TimerGetTick();
+			OpenUWB();
+				
+		}
+		else if(HIDO_TimerGetTick()-wltag_uwbtimer>1&&uwb_rx_flag==1)
+		{
+//			time_flag=HIDO_TimerGetTick()-wltag_uwbtimer;
+		 wltag_uwbtimer = HIDO_TimerGetTick();
+		 CloseUWB();
+		}
+		if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME])
+		{ 
+		 wltag_statetimer = HIDO_TimerGetTick();
+			if(uwb_rx_flag==0)//若要切换到搜索模式时没有开启则开启UWB
+			{
+				OpenUWB();
+			}
+     wltag_state = SEARCH;
+		}
+		break;
+	case SEARCH:
+		if(HIDO_TimerGetTick()-wltag_statetimer>1)
+		{
+			wltag_statetimer = HIDO_TimerGetTick();
+			wltag_state = CLOSE;
+			CloseUWB();
+
+		}
+		break;
+	case CLOSE:
+		if(HIDO_TimerGetTick()-wltag_statetimer>g_com_map[UWB_WAIT_TIME])
+		{
+			wltag_statetimer = HIDO_TimerGetTick();
+			wltag_state = SEARCH;
+			OpenUWB();		
+		}
+		break;
+	}
 	 UWBIdleTask();
 }
+uint8_t in_the_room_flag=0;
 int Anchor_App(void)
 {
 				uint8_t i;
@@ -761,12 +826,24 @@
 												Anchor_RecNearPoll(i);
 												tagdist_list[taglist_pos]=rec_ancdistlist[i];
 												anchordata_bat[taglist_pos] = battary;//保存该基站电量
-                                                anchor_rssi[taglist_pos]=rssi;
+                        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;
+//												}
 												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;		
 												}
 												break;
 										}

--
Gitblit v1.9.3