276,28 → 276,31 |
|
if(doc == NULL) return(0); |
|
// if((GPSData.Position.Status != INVALID) && (GPS_HomePosition.Status != INVALID)) |
if(GPSData.Position.Status != INVALID) |
{ |
if(doc->state == GPX_DOC_TRACKSEGMENT_OPENED) |
{ |
if(doc->file != NULL) |
{ |
int32_t i32_1, i32_2; |
int16_t i16_1; |
int16_t i16_1, i16_2, i16_3; |
uint8_t u8_1, u8_2; |
// write <trkpt> tag |
if(GPSData.Position.Latitude < 0) u8_1 = '-'; |
else u8_1 = '+'; |
i32_1 = abs(GPSData.Position.Latitude)/10000000L; |
i32_2 = abs(GPSData.Position.Latitude)%10000000L; |
sprintf(string, "<trkpt lat=\"%c%ld.%07ld\" ",u8_1, i32_1, i32_2); |
i16_1 = abs((int16_t)(GPSData.Position.Latitude/10000000L)); |
i16_2 = abs((int16_t)((GPSData.Position.Latitude%10000000L)/10000L)); |
i16_3 = abs((int16_t)(((GPSData.Position.Latitude%10000000L)%10000L)/10L)); |
sprintf(string, "<trkpt lat=\"%c%d.%.3d%.3d\" ",u8_1, i16_1, i16_2, i16_3); |
fputs_(string, doc->file); |
|
if(GPSData.Position.Longitude < 0) u8_1 = '-'; |
else u8_1 = '+'; |
i32_1 = abs(GPSData.Position.Longitude)/10000000L; |
i32_2 = abs(GPSData.Position.Longitude)%10000000L; |
sprintf(string, "lon=\"%c%ld.%07ld\">\r\n",u8_1, i32_1, i32_2); |
i16_1 = abs((int16_t)(GPSData.Position.Longitude/10000000L)); |
i16_2 = abs((int16_t)((GPSData.Position.Longitude%10000000L)/10000L)); |
i16_3 = abs((int16_t)(((GPSData.Position.Longitude%10000000L)%10000L)/10L)); |
sprintf(string, "<lon=\"%c%d.%.3d%.3d\" ",u8_1, i16_1, i16_2, i16_3); |
fputs_(string, doc->file); |
|
// write <time> tag only at a resolution of one second |
sprintf(string, "<time>%04d-%02d-%02dT%02d:%02d:%02dZ</time>\r\n",SystemTime.Year, SystemTime.Month, SystemTime.Day, SystemTime.Hour, SystemTime.Min, SystemTime.Sec); |
fputs_(string, doc->file); |
308,11 → 311,11 |
sprintf(string, "<extensions>\r\n"); |
fputs_(string, doc->file); |
// Course in deg |
i16_1 = GPSData.Heading/100000L; |
i16_1 = (int16_t)(GPSData.Heading/100000L); |
sprintf(string, "<Course>%03d</Course>\r\n", i16_1); |
fputs_(string, doc->file); |
// Ground Speed in cm/s |
sprintf(string, "<GroundSpeed>%d</GroundSpeed>\r\n", GPSData.Speed_Ground); |
sprintf(string, "<GroundSpeed>%d</GroundSpeed>\r\n", (uint16_t)GPSData.Speed_Ground); |
fputs_(string, doc->file); |
// Ubat |
u8_1 = UBat / 10; |