1
yincheng.zhong
2024-08-27 cfb54f9133de1376b6d7dc728770c3b87510adad
1
已添加1个文件
72 ■■■■■ 文件已修改
keil/include/src/gps.c 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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;
    }
}