From fdb2bccc4bf5e2f02cdfbb2e0c0c5605e915f10d Mon Sep 17 00:00:00 2001
From: zhangbo <zhangbo@qq.com>
Date: 星期三, 16 四月 2025 16:51:49 +0800
Subject: [PATCH] 室外55ma 室内25ma 一分钟上传一条心跳包,室外5s测距一次上传一次GPS报文

---
 keil/uwb_app.c |  115 ++++++++++++++++++++++++---------------------------------
 1 files changed, 48 insertions(+), 67 deletions(-)

diff --git a/keil/uwb_app.c b/keil/uwb_app.c
index 2b3c21b..cbb3474 100644
--- a/keil/uwb_app.c
+++ b/keil/uwb_app.c
@@ -12,6 +12,7 @@
 #include "lib_aoa.h"
 #include "WS2812.h"
 #include "PCA9555.h"
+#include "GPS.h"
 extern int simple_main(void);
 extern int temp_main(void);
 void Calibration_Time(void);
@@ -288,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
@@ -343,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接收
     }
@@ -483,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;
@@ -495,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;
 }
@@ -614,11 +633,11 @@
 }
 void OpenUWB(void)
 {
-//        while(!mac_is_busy())
-//        {
+//   while(!mac_is_busy())
+//    {
 		flag_temp1=uwb_rx(0, 0,range_timeout_us);//提交接收请求
 		uwb_rx_flag=1;
-//        }
+//    }
 		//LOG_INFO(TRACE_MODULE_APP,"打开uwb_rx\r\n");
 }	
 void UWBOneSecondTask(void)
@@ -628,6 +647,9 @@
  if(uwb_losttimer>g_com_map[UWB_RNAGE_TIME])
  uwb_losttimer=g_com_map[UWB_RNAGE_TIME]+1;//防止溢出
 }
+extern uint8_t heart_upload_time;
+uint16_t count_hexupload;
+extern uint8_t open_gps_time;
 void UWBSendUDPTask(void)
 {
 	uint16_t checksum,tempdistarray[20];
@@ -692,7 +714,11 @@
                     memcpy(&usart_send[17+taglist_num*4],&anchordata_bat,taglist_num);
 					checksum = Checksum_u16(&usart_send[2],15+5*taglist_num);
 					memcpy(&usart_send[17+5*taglist_num],&checksum,2);
-					HexToAsciiSendUDP(usart_send,19+5*taglist_num);
+					if((heart_upload_time%UPLOAD_4G_TIME==0&&lounei_flag==0&&open_gps_time>120)||(open_gps_time%UPLOAD_4G_TIME==0&&lounei_flag==0&&open_gps_time<120))
+		      {
+					 HexToAsciiSendUDP(usart_send,19+5*taglist_num);
+					 count_hexupload++;
+					}
                     taglist_num = 0;                    
 //                    rxnum=0;
 }
@@ -723,53 +749,19 @@
 //}
 //enumwltagstate wltag_state=RANGE;
 uint32_t wltag_statetimer,wltag_uwbtimer;
+extern uint16_t uwb_time_count;
 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)
+	switch(uwb_time_count)
 		{
-//			time_flag=HIDO_TimerGetTick()-wltag_uwbtimer;
-		 wltag_uwbtimer = HIDO_TimerGetTick();
-		 CloseUWB();
+			case 1:
+						CloseUWB();
+			break;		
+			case 5:
+						OpenUWB();
+						uwb_time_count=0;
+			break;
 		}
-		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;
@@ -827,23 +819,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