yincheng.zhong
2024-09-20 0c4a7b78eee22326538b29c9a2ddf1c9e6ba0ae4
keil/include/src/gps.c
@@ -1,23 +1,25 @@
#include "board.h"
#include "TCPClient.h"
#include "global_param.h"
#define GPS_OPEN_TIME_OUT  240
#define GPS_RESTART_TIME1  1200
#define GPS_RESTART_TIME2  120
#define GPS_RESTART_TIME3  3600
#define GPS_OPEN_TIME_OUT1 600
extern uint16_t gps_wait_count;
uint8_t gps_power_state,gps_uwb_flag,gps_4g_flag,gps_timeout_flag,gps_need_data_flag = 1;
uint8_t gps_power_state,gps_uwb_flag,gps_4g_flag,gps_timeout_flag,gps_need_data_flag = 1,gps_1h_open_flag=1;
extern uint8_t air780_success_state;
extern HIDO_INT32 l_i32TCPClientID;
extern double jd,wd;
void GPS_Poll(void)
{
    if(gps_4g_flag||gps_uwb_flag)
        {
        if(!gps_timeout_flag)
            {
            if(gps_need_data_flag)
                {
                gps_power_state = 1;  //打开GPS电源
    if(gps_4g_flag||gps_uwb_flag) {
        gps_power_state = 1;  //打开GPS电源
        if(!gps_timeout_flag) {
            if(gps_need_data_flag) {
                gps_wait_count++;
                if(gps_wait_count>=GPS_OPEN_TIME_OUT)
                    { //超时切换工作状态
                if(gps_wait_count>=GPS_OPEN_TIME_OUT) { //超时切换工作状态
                    gps_timeout_flag=1;//串口添加改变timeout逻辑
                    gps_wait_count=0;
                    gps_need_data_flag=0;//切换为关闭模式
@@ -25,20 +27,16 @@
            } else {
                gps_wait_count++;
                gps_power_state=0;//关闭GPS
                if(gps_wait_count>GPS_RESTART_TIME2)
                    {
                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_power_state = 1;  //打开GPS电源
            if(gps_need_data_flag) {
                gps_wait_count++;
                if(gps_wait_count>=GPS_OPEN_TIME_OUT)
                    { //超时切换工作状态
                if(gps_wait_count>=GPS_OPEN_TIME_OUT) { //超时切换工作状态
                    gps_timeout_flag=1;
                    gps_need_data_flag=0;
                    gps_wait_count=0;
@@ -61,6 +59,40 @@
        gps_need_data_flag=1;
    }
}
void GPS_Poll_1h(void)
{
    if(gps_1h_open_flag) {
        if(gps_need_data_flag) {
            gps_power_state = 1;  //打开GPS电源
            gps_wait_count++;
            if(gps_wait_count>=GPS_OPEN_TIME_OUT1) { //超时切换工作状态
                gps_timeout_flag=1;//串口添加改变timeout逻辑
                gps_wait_count=0;
                gps_need_data_flag=0;//切换为关闭模式
                TCPHeartBeatUpload();//上传GPS超时无效数据
            }
        } else {
            gps_wait_count++;
            gps_power_state=0;//关闭GPS
            if(gps_wait_count>GPS_RESTART_TIME3) {
                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)