#include "board.h" #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) { 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) { //³¬Ê±Çл»¹¤×÷״̬ 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; } } 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; }