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 |   72 ++++++++++++++++++++++++++++++++---
 1 files changed, 65 insertions(+), 7 deletions(-)

diff --git a/keil/uwb_app.c b/keil/uwb_app.c
index ba131ee..cbb3474 100644
--- a/keil/uwb_app.c
+++ b/keil/uwb_app.c
@@ -11,6 +11,8 @@
 #include "board.h"
 #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);
@@ -287,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
@@ -342,8 +346,10 @@
 			        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接收
+				OpenUWB();//再次开启UWB接收
     }
 //    CloseUWB();
 //	OpenUWB();//再次开启UWB接收
@@ -479,6 +485,11 @@
 //    }
 //    anchordata_num=j;
 //}
+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;
@@ -491,7 +502,27 @@
 						anchordata_bat[j]=anchordata_bat[i];//电量随之更新
             anchor_rssi[j]=anchor_rssi[i];
             tagofflinetime[j++]=tagofflinetime[i];
+//					  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)
+//		{
+//		 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;
+			ceju_leave_flag=1;
 		}
 		 taglist_num=j;
 }
@@ -602,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)
@@ -616,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];
@@ -680,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;
 }
@@ -704,10 +742,29 @@
         UWBSendUDPTask();
 	}
 }
+//int uwb_app_poll(void)
+//{
+//	
+//	 UWBIdleTask();
+//}
+//enumwltagstate wltag_state=RANGE;
+uint32_t wltag_statetimer,wltag_uwbtimer;
+extern uint16_t uwb_time_count;
 int uwb_app_poll(void)
 {
+	switch(uwb_time_count)
+		{
+			case 1:
+						CloseUWB();
+			break;		
+			case 5:
+						OpenUWB();
+						uwb_time_count=0;
+			break;
+		}
 	 UWBIdleTask();
 }
+uint8_t in_the_room_flag=0;
 int Anchor_App(void)
 {
 				uint8_t i;
@@ -761,12 +818,13 @@
 												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;
+	                      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;
-														
+												PCA9555_Set_One_Value_Output(GPS_POWER,1);														
 												}
 												break;
 										}

--
Gitblit v1.9.3