#include "board.h"
|
#include "global_param.h"
|
#define GPS_OPEN_TIME_OUT 120 //³¬Ê±2·ÖÖÓ¿ªÆô
|
#define GPS_RESTART_TIME1 600 //10·ÖÖÓ
|
#define GPS_RESTART_TIME2 48 //1·ÖÖÓ
|
|
extern uint16_t gps_wait_count;
|
extern uint8_t power_low_flag;
|
uint8_t gps_power_state,gps_uwb_flag,gps_4g_flag,gps_timeout_flag,gps_need_data_flag = 1;
|
void GPS_Poll(void)
|
{if(!power_low_flag)
|
{
|
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>g_com_map[GPS_REFRESH_WAIT_COUNT]) {//¸ÄΪs
|
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;
|
}
|
}else{
|
gps_power_state=0;//¹Ø±ÕGPS
|
update_led_power_state();
|
//³õʼ»¯GPS¼ÆÊýÊý¾Ý
|
gps_need_data_flag=1;
|
gps_wait_count=0;
|
gps_timeout_flag=0;
|
}
|
}
|
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;
|
}
|
|
}
|