| | |
| | | _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); |
| | | } |
| | | } |
| | | |
| | |
| | | * Return : None |
| | | * Author : hido.ltd |
| | | *******************************************************************************/ |
| | | //HIDO_VOID GPS_Init(void) |
| | | //{ |
| | | HIDO_VOID GPS_Init(void) |
| | | { |
| | | char str[19]= {"$POLCFGMSG,0,2,0\r\n"}; |
| | | // GPS_PowerOn(); |
| | | // GPS_Rest(); |
| | | |
| | | // ST_UartInit stInit; |
| | | |
| | | // stInit.m_eRxMode = UART_RX_MODE_INT; |
| | | // stInit.m_eTxMode = UART_TX_MODE_POLL; |
| | | // stInit.m_pu8RxBuf = l_au8GPSUartRxBuf; |
| | | // stInit.m_u32RxBufSize = GPS_UART_RX_BUF_SIZE; |
| | | // stInit.m_pu8TxBuf = l_au8GPSUartTxBuf; |
| | | // stInit.m_u32TxBufSize = GPS_UART_TX_BUF_SIZE; |
| | | // stInit.m_u32TxQueueMemberCnt = 2; |
| | | // Uart_Init(UART_ID_GPS, &stInit); |
| | | |
| | | // HIDO_UtilBzero(&l_stGPSRecv, sizeof(ST_GPSRecv)); |
| | | //} |
| | | uart_send(UART_ID1, str,19, NULL); |
| | | delay_ms(10); |
| | | sprintf(str,"$POLCFGMSG,0,1,0\r\n"); |
| | | uart_send(UART_ID1, str,19, NULL); |
| | | delay_ms(10); |
| | | sprintf(str,"$POLCFGSAVE\r\n"); |
| | | uart_send(UART_ID1, str,19, NULL); |
| | | delay_ms(10); |
| | | } |