#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,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_power_state = 1; //´ò¿ªGPSµçÔ´ 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_power_state = 1; //´ò¿ªGPSµçÔ´ 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; } }