From cfb54f9133de1376b6d7dc728770c3b87510adad Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期二, 27 八月 2024 17:36:47 +0800
Subject: [PATCH] 1

---
 keil/include/src/gps.c |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/keil/include/src/gps.c b/keil/include/src/gps.c
new file mode 100644
index 0000000..ed5a68e
--- /dev/null
+++ b/keil/include/src/gps.c
@@ -0,0 +1,72 @@
+#include "board.h"
+#define GPS_OPEN_TIME_OUT  240
+#define GPS_RESTART_TIME1  1200
+#define GPS_RESTART_TIME2  120
+
+extern uint16_t gps_wait_count;
+uint8_t gps_power_state,gps_uwb_flag,gps_4g_flag = 1,gps_timeout_flag,gps_need_data_flag = 1;
+void GPS_Poll(void)
+{
+
+    if(gps_4g_flag||gps_uwb_flag) {
+
+        if(!gps_timeout_flag) {
+            if(gps_need_data_flag) {
+                gps_wait_count++;
+                if(gps_wait_count>=GPS_OPEN_TIME_OUT) { //超时切换工作状态
+                    gps_timeout_flag=1;//串口添加改变timeout逻辑
+                    gps_wait_count=0;
+                    gps_need_data_flag=0;//切换为关闭模式
+                }
+            } else {
+                gps_wait_count++;
+                gps_power_state=0;//关闭GPS
+                if(gps_wait_count>GPS_RESTART_TIME2) {
+                    gps_power_state=1;//开启GPS
+                    gps_need_data_flag=1;
+                    gps_wait_count=0;
+                }
+            }
+        } else { //超时工作状态
+            if(gps_need_data_flag) {
+                gps_wait_count++;
+                if(gps_wait_count>=GPS_OPEN_TIME_OUT) { //超时切换工作状态
+                    gps_timeout_flag=1;
+                    gps_need_data_flag=0;
+                    gps_wait_count=0;
+                }
+            } else {
+                gps_wait_count++;
+                gps_power_state=0;//关闭GPS
+                if(gps_wait_count>GPS_RESTART_TIME1) {
+                    gps_power_state=1;//开启GPS
+                    gps_need_data_flag=1;
+                    gps_wait_count=0;
+                }
+            }
+
+        }
+    } else {
+        gps_power_state=0;//关闭gps
+        gps_wait_count=0;
+        gps_timeout_flag=0;
+        gps_need_data_flag=1;
+    }
+}
+void GpsConrol(uint8_t flag_4g_uwb,uint8_t open_close)
+{
+    if(gps_4g_flag==0&&gps_uwb_flag==0)
+        if(open_close)
+        {
+            gps_wait_count = 0;
+            gps_need_data_flag = 1;
+            gps_timeout_flag = 0;
+        }
+    if(flag_4g_uwb)
+    {
+        gps_4g_flag = open_close;
+    } else {
+        gps_uwb_flag = open_close;
+    }
+
+}
\ No newline at end of file

--
Gitblit v1.9.3