keil/include/src/gps.c
@@ -1,10 +1,15 @@
#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;
#include "HIDO_Util.h"
#include "global_param.h"
#define GPS_OPEN_TIME_OUT  48      //1分钟开启
#define GPS_RESTART_TIME1  480  //10分钟
#define GPS_RESTART_TIME2  48      //1分钟
#define GPS_RESTART_TIME3  30      //30s
extern uint16_t gps_wait_count,g_com_map[COM_MAP_SIZE];
extern uint8_t flag_first_TCPconnect;
extern uint16_t gps_wait_count2;
uint16_t g_spsum,g_snum,ave_sp;
uint8_t gps_power_state,gps_uwb_flag,gps_4g_flag,gps_timeout_flag,gps_need_data_flag = 1,gps_open_flag;
void GPS_Poll(void)
{
@@ -69,4 +74,75 @@
        gps_uwb_flag = open_close;
    }
}
void Gps_change(void)
{
   if(gps_open_flag){
      if(gps_need_data_flag) {
                     gps_power_state = 1;  //打开GPS电源
                     gps_wait_count++;
                     if(gps_wait_count>=g_com_map[SEND_4G_SECOND]) { //超时切换工作状态
                           gps_timeout_flag=1;//串口添加改变timeout逻辑
                           gps_wait_count=0;
                           gps_need_data_flag=0;//切换为关闭模式
                           UDPClient_UploadGPS();//上传GPS超时无效数据
                     }
               } else {
                     gps_wait_count++;
                     gps_power_state=0;//关闭GPS
                     if(gps_wait_count>g_com_map[SEND_4G_SECOND]) {
                           gps_power_state=1;//开启GPS
                           gps_need_data_flag=1;
                           gps_wait_count=0;
                     }
               }
               gps_wait_count2=0;
      }else{
               gps_wait_count2++;
               if(gps_wait_count2>=g_com_map[SEND_4G_SECOND]) { //超时切换工作状态
                           gps_wait_count=0;
                           gps_timeout_flag=1;
                           UDPClient_UploadGPS();//上传GPS 30s固定数据
                           gps_wait_count2=0;
                     }
            gps_power_state=1;//开启gps
        gps_need_data_flag=1;
         }
      update_led_power_state();
}
HIDO_INT32 GPS_ParseGSV(HIDO_CHAR *_pcData, HIDO_UINT32 _u32Len)
{
    HIDO_DataStruct spower[4];
//    if (GPS_DataCheck(_pcData, _u32Len) != HIDO_OK)
//    {
//        return HIDO_ERR;
//    }
    if (HIDO_UtilParseFormat((HIDO_UINT8 *) _pcData, _u32Len, "$%*,%*,%*,%*,%*,%*,%*,%p,%*,%*,%*,%p,%*,%*,%*,%p,%*,%*,%*,%p,%**", &spower[0], &spower[1], &spower[2], &spower[3]) == 21)
    {
        g_snum+=4;
        g_spsum+=atoi((HIDO_CHAR *)spower[0].m_pData)+atoi((HIDO_CHAR *)spower[1].m_pData)+atoi((HIDO_CHAR *)spower[2].m_pData)+atoi((HIDO_CHAR *)spower[3].m_pData);
    }else if(HIDO_UtilParseFormat((HIDO_UINT8 *) _pcData, _u32Len, "$%*,%*,%*,%*,%*,%*,%*,%p,%*,%*,%*,%p,%*,%*,%*,%p,%**", &spower[0], &spower[1], &spower[2]) == 17)
    {
         g_snum+=3;
        g_spsum+=atoi((HIDO_CHAR *)spower[0].m_pData)+atoi((HIDO_CHAR *)spower[1].m_pData)+atoi((HIDO_CHAR *)spower[2].m_pData);
    }else if(HIDO_UtilParseFormat((HIDO_UINT8 *) _pcData, _u32Len, "$%*,%*,%*,%*,%*,%*,%*,%p,%*,%*,%*,%p,%**", &spower[0], &spower[1]) == 13)
    {
         g_snum+=2;
        g_spsum+=atoi((HIDO_CHAR *)spower[0].m_pData)+atoi((HIDO_CHAR *)spower[1].m_pData);
    }else if(HIDO_UtilParseFormat((HIDO_UINT8 *) _pcData, _u32Len, "$%*,%*,%*,%*,%*,%*,%*,%p,%**", &spower[0]) == 9)
    {
         g_snum+=1;
        g_spsum+=atoi((HIDO_CHAR *)spower[0].m_pData);
    }
   // l_u8PosState = atoi((HIDO_CHAR *)stPosState.m_pData);
    return HIDO_OK;
}