| | |
| | | _pstGPS->m_u8Day++; |
| | | switch (_pstGPS->m_u8Mon) |
| | | { |
| | | case 1: |
| | | case 3: |
| | | case 5: |
| | | case 7: |
| | | case 8: |
| | | case 10: |
| | | if (_pstGPS->m_u8Day > 31) |
| | | case 1: |
| | | case 3: |
| | | case 5: |
| | | case 7: |
| | | case 8: |
| | | case 10: |
| | | if (_pstGPS->m_u8Day > 31) |
| | | { |
| | | _pstGPS->m_u8Day = 1; |
| | | _pstGPS->m_u8Mon++; |
| | | } |
| | | break; |
| | | case 2: |
| | | if (0 == (_pstGPS->m_u16Year % 4)) |
| | | { |
| | | if (_pstGPS->m_u8Day > 29) |
| | | { |
| | | _pstGPS->m_u8Day = 1; |
| | | _pstGPS->m_u8Mon++; |
| | | } |
| | | break; |
| | | case 2: |
| | | if (0 == (_pstGPS->m_u16Year % 4)) |
| | | { |
| | | if (_pstGPS->m_u8Day > 29) |
| | | { |
| | | _pstGPS->m_u8Day = 1; |
| | | _pstGPS->m_u8Mon++; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (_pstGPS->m_u8Day > 28) |
| | | { |
| | | _pstGPS->m_u8Day = 1; |
| | | _pstGPS->m_u8Mon++; |
| | | } |
| | | } |
| | | break; |
| | | case 4: |
| | | case 6: |
| | | case 9: |
| | | case 11: |
| | | if (_pstGPS->m_u8Day > 30) |
| | | } |
| | | else |
| | | { |
| | | if (_pstGPS->m_u8Day > 28) |
| | | { |
| | | _pstGPS->m_u8Day = 1; |
| | | _pstGPS->m_u8Mon++; |
| | | } |
| | | break; |
| | | case 12: |
| | | if (_pstGPS->m_u8Day > 31) |
| | | { |
| | | _pstGPS->m_u8Day = 1; |
| | | _pstGPS->m_u8Mon = 1; |
| | | _pstGPS->m_u16Year++; |
| | | } |
| | | break; |
| | | } |
| | | break; |
| | | case 4: |
| | | case 6: |
| | | case 9: |
| | | case 11: |
| | | if (_pstGPS->m_u8Day > 30) |
| | | { |
| | | _pstGPS->m_u8Day = 1; |
| | | _pstGPS->m_u8Mon++; |
| | | } |
| | | break; |
| | | case 12: |
| | | if (_pstGPS->m_u8Day > 31) |
| | | { |
| | | _pstGPS->m_u8Day = 1; |
| | | _pstGPS->m_u8Mon = 1; |
| | | _pstGPS->m_u16Year++; |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | if (HIDO_UtilParseFormat((HIDO_UINT8 *) _pcData, _u32Len, "$%*,%p,%p,%p,%p,%p,%p,%p,%p,%p,%*,%*,%**", &stTimeData, &stStateData, |
| | | &stLatData, &stLatSignData, &stLonData, &stLonSignData, &stSpeedData, &stDirData, &stDateData) != 13) |
| | | &stLatData, &stLatSignData, &stLonData, &stLonSignData, &stSpeedData, &stDirData, &stDateData) != 13) |
| | | { |
| | | return HIDO_ERR; |
| | | } |
| | |
| | | } |
| | | |
| | | if (_pstGPS->m_eState != GPS_STATE_VALID) |
| | | { |
| | | { |
| | | return HIDO_OK; |
| | | } |
| | | |
| | |
| | | { |
| | | switch (l_stGPSRecv.m_eState) |
| | | { |
| | | case GPS_RECV_STATE_IDLE: |
| | | case GPS_RECV_STATE_IDLE: |
| | | { |
| | | if ('$' == _u8RecvChar) |
| | | { |
| | | if ('$' == _u8RecvChar) |
| | | { |
| | | l_stGPSRecv.m_eState = GPS_RECV_STATE_CR; |
| | | l_stGPSRecv.m_u32RecvLen = 0; |
| | | l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; |
| | | } |
| | | break; |
| | | } |
| | | case GPS_RECV_STATE_CR: |
| | | { |
| | | l_stGPSRecv.m_eState = GPS_RECV_STATE_CR; |
| | | l_stGPSRecv.m_u32RecvLen = 0; |
| | | l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; |
| | | |
| | | if (l_stGPSRecv.m_u32RecvLen >= (sizeof(l_stGPSRecv.m_acRecvBuf) - 2)) |
| | | { |
| | | l_stGPSRecv.m_eState = GPS_RECV_STATE_IDLE; |
| | | break; |
| | | } |
| | | |
| | | if ('\r' == _u8RecvChar) |
| | | { |
| | | l_stGPSRecv.m_eState = GPS_RECV_STATE_LF; |
| | | } |
| | | |
| | | break; |
| | | } |
| | | case GPS_RECV_STATE_LF: |
| | | break; |
| | | } |
| | | case GPS_RECV_STATE_CR: |
| | | { |
| | | l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; |
| | | |
| | | if (l_stGPSRecv.m_u32RecvLen >= (sizeof(l_stGPSRecv.m_acRecvBuf) - 2)) |
| | | { |
| | | if ('\n' == _u8RecvChar) |
| | | { |
| | | l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; |
| | | l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen] = '\0'; |
| | | // l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen - 2] = '\0'; |
| | | // UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | if(strstr(l_stGPSRecv.m_acRecvBuf, "GGA,") != HIDO_NULL) |
| | | { |
| | | GPS_ParseGGA(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_u32RecvLen); |
| | | l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen - 2] = '\0'; |
| | | // #ifdef UWB_CG |
| | | if(g_com_map[GPSENBLE]==0) |
| | | { |
| | | // UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | } |
| | | else if(g_com_map[GPSENBLE]&&g_com_map[GPSFrequency]==1) |
| | | { |
| | | if (l_u8PosState >= 1) |
| | | { |
| | | UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); // |
| | | } |
| | | else if (l_u8PosState == 0) |
| | | { |
| | | if (++GPS_UPload_sleep_flag >= 60) |
| | | { |
| | | UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | GPS_UPload_sleep_flag = 0; |
| | | } |
| | | } |
| | | } |
| | | else if(g_com_map[GPSENBLE]) |
| | | { |
| | | if (l_u8PosState >= 1) |
| | | { |
| | | if (++GPS_UPLOAD_FLAG >= g_com_map[GPSFrequency]) |
| | | { |
| | | UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | GPS_UPLOAD_FLAG = 0; |
| | | } |
| | | } |
| | | else if (l_u8PosState == 0) |
| | | { |
| | | if (++GPS_UPload_sleep_flag >= 60) |
| | | { |
| | | UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | GPS_UPload_sleep_flag = 0; |
| | | } |
| | | } |
| | | } |
| | | switch(l_u8PosState) |
| | | { |
| | | case 0: |
| | | rtkled = RED; |
| | | break; |
| | | case 1: |
| | | rtkled = BLUE; |
| | | break; |
| | | case 2: |
| | | rtkled = BLUE+GREEN; |
| | | break; |
| | | case 4: |
| | | rtkled = GREEN; |
| | | break; |
| | | case 5: |
| | | rtkled = YELLOW; |
| | | break; |
| | | default: |
| | | rtkled = WHITE; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | else //if(strstr(l_stGPSRecv.m_acRecvBuf, "RMC,") != HIDO_NULL) |
| | | { |
| | | gpserror++; |
| | | } |
| | | } |
| | | |
| | | l_stGPSRecv.m_eState = GPS_RECV_STATE_IDLE; |
| | | break; |
| | | } |
| | | default: |
| | | |
| | | if ('\r' == _u8RecvChar) |
| | | { |
| | | break; |
| | | l_stGPSRecv.m_eState = GPS_RECV_STATE_LF; |
| | | } |
| | | |
| | | break; |
| | | } |
| | | case GPS_RECV_STATE_LF: |
| | | { |
| | | if ('\n' == _u8RecvChar) |
| | | { |
| | | l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; |
| | | l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen] = '\0'; |
| | | // l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen - 2] = '\0'; |
| | | // UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | if(strstr(l_stGPSRecv.m_acRecvBuf, "GGA,") != HIDO_NULL) |
| | | { |
| | | GPS_ParseGGA(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_u32RecvLen); |
| | | l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen - 2] = '\0'; |
| | | // #ifdef UWB_CG |
| | | if(g_com_map[GPSENBLE]==0) |
| | | { |
| | | // UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | } |
| | | else if(g_com_map[GPSENBLE]&&g_com_map[GPSFrequency]==1) |
| | | { |
| | | if (l_u8PosState >= 1) |
| | | { |
| | | UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); // |
| | | } |
| | | else if (l_u8PosState == 0) |
| | | { |
| | | if (++GPS_UPload_sleep_flag >= 60) |
| | | { |
| | | UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | GPS_UPload_sleep_flag = 0; |
| | | } |
| | | } |
| | | } |
| | | else if(g_com_map[GPSENBLE]) |
| | | { |
| | | if (l_u8PosState >= 1) |
| | | { |
| | | if (++GPS_UPLOAD_FLAG >= g_com_map[GPSFrequency]) |
| | | { |
| | | UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | GPS_UPLOAD_FLAG = 0; |
| | | } |
| | | } |
| | | else if (l_u8PosState == 0) |
| | | { |
| | | if (++GPS_UPload_sleep_flag >= 60) |
| | | { |
| | | UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); |
| | | GPS_UPload_sleep_flag = 0; |
| | | } |
| | | } |
| | | } |
| | | switch(l_u8PosState) |
| | | { |
| | | case 0: |
| | | rtkled = RED; |
| | | break; |
| | | case 1: |
| | | rtkled = BLUE; |
| | | break; |
| | | case 2: |
| | | rtkled = BLUE+GREEN; |
| | | break; |
| | | case 4: |
| | | rtkled = GREEN; |
| | | break; |
| | | case 5: |
| | | rtkled = YELLOW; |
| | | break; |
| | | default: |
| | | rtkled = WHITE; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | else //if(strstr(l_stGPSRecv.m_acRecvBuf, "RMC,") != HIDO_NULL) |
| | | { |
| | | gpserror++; |
| | | } |
| | | } |
| | | |
| | | l_stGPSRecv.m_eState = GPS_RECV_STATE_IDLE; |
| | | break; |
| | | } |
| | | default: |
| | | { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | while (Uart_GetChar(UART_ID_DBG_GPS, &u8RecvChar) == HIDO_OK) |
| | | { |
| | | GPS_RecvFsm(u8RecvChar); |
| | | GPS_RecvFsm(u8RecvChar); |
| | | } |
| | | } |
| | | |