71,12 → 71,13 |
} GPS_VELNED_t; |
|
|
GPS_STATUS_t GpsStatus; |
GPS_POSLLH_t GpsPosLlh; |
GPS_POSUTM_t GpsPosUtm; |
GPS_VELNED_t GpsVelNed; |
GPS_STATUS_t GpsStatus = {0,0,0,0,0,0,0, INVALID}; |
GPS_POSLLH_t GpsPosLlh = {0,0,0,0,0,0,0, INVALID}; |
GPS_POSUTM_t GpsPosUtm = {0,0,0,0,0,0, INVALID}; |
GPS_VELNED_t GpsVelNed = {0,0,0,0,0,0,0,0,0, INVALID}; |
GPS_INFO_t GPSInfo = {0,0,0,0,0,0,0,0,0,0, INVALID}; |
|
GPS_INFO_t GPSInfo; |
volatile uint8_t GPSTimeout = 0; |
|
void UpdateGPSInfo (void) |
{ |
83,7 → 84,7 |
if (GpsStatus.Status == VALID) // valid packet |
{ |
GPSInfo.satfix = GpsStatus.GPSfix; |
GpsStatus.Status = PROCESSED; // never update old data |
GpsStatus.Status = PROCESSED; // never update old data |
} |
if (GpsPosLlh.Status == VALID) // valid packet |
{ |
90,7 → 91,7 |
GPSInfo.longitude = GpsPosLlh.LON; |
GPSInfo.latitude = GpsPosLlh.LAT; |
GPSInfo.altitude = GpsPosLlh.HEIGHT; |
GpsPosLlh.Status = PROCESSED; // never update old data |
GpsPosLlh.Status = PROCESSED; // never update old data |
} |
if (GpsPosUtm.Status == VALID) // valid packet |
{ |
97,7 → 98,7 |
GPSInfo.utmeast = GpsPosUtm.EAST; |
GPSInfo.utmnorth = GpsPosUtm.NORTH; |
GPSInfo.utmalt = GpsPosUtm.ALT; |
GpsPosUtm.Status = PROCESSED; // never update old data |
GpsPosUtm.Status = PROCESSED; // never update old data |
} |
if (GpsVelNed.Status == VALID) // valid packet |
{ |
104,22 → 105,14 |
GPSInfo.veleast = GpsVelNed.VEL_E; |
GPSInfo.velnorth = GpsVelNed.VEL_N; |
GPSInfo.veltop = -GpsVelNed.VEL_D; |
GpsVelNed.Status = PROCESSED; // never update old data |
GpsVelNed.Status = PROCESSED; // never update old data |
} |
if (GpsStatus.Status != INVALID) |
{ |
GPSInfo.status = VALID; // set valid if data are updated |
GPSInfo.status = VALID; // set valid if data are updated |
} |
} |
|
void ubx_init(void) |
{ |
GpsStatus.Status = INVALID; |
GpsPosLlh.Status = INVALID; |
GpsPosUtm.Status = INVALID; |
GpsVelNed.Status = INVALID; |
GPSInfo.status = INVALID; |
} |
|
// this function should be called within the UART RX ISR |
void ubx_parser(uint8_t c) |
228,6 → 221,7 |
*ubxSp = VALID; // new data are valid |
ROT_FLASH; |
UpdateGPSInfo(); //update GPS info respectively |
GPSTimeout = 255; |
} |
else |
{ // if checksum not fit then set data invalid |