¶Ô±ÈÐÂÎļþ |
| | |
| | | #include "board.h" |
| | | #include "HIDO_Util.h" |
| | | #include "global_param.h" |
| | | #include "sn74hc595.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 |
| | | uint16_t gps_wait_count; |
| | | extern uint16_t g_com_map[COM_MAP_SIZE]; |
| | | extern uint8_t flag_first_TCPconnect; |
| | | 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; |
| | | } |