Rev 406 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 406 | Rev 420 | ||
---|---|---|---|
Line 274... | Line 274... | ||
274 | uint8_t retvalue = 0; |
274 | uint8_t retvalue = 0; |
275 | int8_t string[50]; |
275 | int8_t string[50]; |
Line 276... | Line 276... | ||
276 | 276 | ||
Line 277... | Line 277... | ||
277 | if(doc == NULL) return(0); |
277 | if(doc == NULL) return(0); |
278 | 278 | ||
279 | // if((GPSData.Position.Status != INVALID) && (GPS_HomePosition.Status != INVALID)) |
279 | if(GPSData.Position.Status != INVALID) |
280 | { |
280 | { |
281 | if(doc->state == GPX_DOC_TRACKSEGMENT_OPENED) |
281 | if(doc->state == GPX_DOC_TRACKSEGMENT_OPENED) |
282 | { |
282 | { |
283 | if(doc->file != NULL) |
283 | if(doc->file != NULL) |
284 | { |
- | |
285 | int32_t i32_1, i32_2; |
284 | { |
286 | int16_t i16_1; |
285 | int16_t i16_1, i16_2, i16_3; |
287 | uint8_t u8_1, u8_2; |
286 | uint8_t u8_1, u8_2; |
288 | // write <trkpt> tag |
287 | // write <trkpt> tag |
289 | if(GPSData.Position.Latitude < 0) u8_1 = '-'; |
288 | if(GPSData.Position.Latitude < 0) u8_1 = '-'; |
290 | else u8_1 = '+'; |
289 | else u8_1 = '+'; |
- | 290 | i16_1 = abs((int16_t)(GPSData.Position.Latitude/10000000L)); |
|
291 | i32_1 = abs(GPSData.Position.Latitude)/10000000L; |
291 | i16_2 = abs((int16_t)((GPSData.Position.Latitude%10000000L)/10000L)); |
292 | i32_2 = abs(GPSData.Position.Latitude)%10000000L; |
292 | i16_3 = abs((int16_t)(((GPSData.Position.Latitude%10000000L)%10000L)/10L)); |
- | 293 | sprintf(string, "<trkpt lat=\"%c%d.%.3d%.3d\" ",u8_1, i16_1, i16_2, i16_3); |
|
293 | sprintf(string, "<trkpt lat=\"%c%ld.%07ld\" ",u8_1, i32_1, i32_2); |
294 | fputs_(string, doc->file); |
294 | fputs_(string, doc->file); |
295 | |
295 | if(GPSData.Position.Longitude < 0) u8_1 = '-'; |
296 | if(GPSData.Position.Longitude < 0) u8_1 = '-'; |
296 | else u8_1 = '+'; |
297 | else u8_1 = '+'; |
- | 298 | i16_1 = abs((int16_t)(GPSData.Position.Longitude/10000000L)); |
|
297 | i32_1 = abs(GPSData.Position.Longitude)/10000000L; |
299 | i16_2 = abs((int16_t)((GPSData.Position.Longitude%10000000L)/10000L)); |
298 | i32_2 = abs(GPSData.Position.Longitude)%10000000L; |
300 | i16_3 = abs((int16_t)(((GPSData.Position.Longitude%10000000L)%10000L)/10L)); |
- | 301 | sprintf(string, "<lon=\"%c%d.%.3d%.3d\" ",u8_1, i16_1, i16_2, i16_3); |
|
299 | sprintf(string, "lon=\"%c%ld.%07ld\">\r\n",u8_1, i32_1, i32_2); |
302 | fputs_(string, doc->file); |
300 | fputs_(string, doc->file); |
303 | |
301 | // write <time> tag only at a resolution of one second |
304 | // write <time> tag only at a resolution of one second |
302 | sprintf(string, "<time>%04d-%02d-%02dT%02d:%02d:%02dZ</time>\r\n",SystemTime.Year, SystemTime.Month, SystemTime.Day, SystemTime.Hour, SystemTime.Min, SystemTime.Sec); |
305 | sprintf(string, "<time>%04d-%02d-%02dT%02d:%02d:%02dZ</time>\r\n",SystemTime.Year, SystemTime.Month, SystemTime.Day, SystemTime.Hour, SystemTime.Min, SystemTime.Sec); |
303 | fputs_(string, doc->file); |
306 | fputs_(string, doc->file); |
304 | // write <sat> tag |
307 | // write <sat> tag |
305 | sprintf(string, "<sat>%d</sat>\r\n", GPSData.NumOfSats); |
308 | sprintf(string, "<sat>%d</sat>\r\n", GPSData.NumOfSats); |
306 | fputs_(string, doc->file); |
309 | fputs_(string, doc->file); |
307 | // todo: add <extensions> tag with additional data to be logged |
310 | // todo: add <extensions> tag with additional data to be logged |
308 | sprintf(string, "<extensions>\r\n"); |
311 | sprintf(string, "<extensions>\r\n"); |
309 | fputs_(string, doc->file); |
312 | fputs_(string, doc->file); |
310 | // Course in deg |
313 | // Course in deg |
311 | i16_1 = GPSData.Heading/100000L; |
314 | i16_1 = (int16_t)(GPSData.Heading/100000L); |
312 | sprintf(string, "<Course>%03d</Course>\r\n", i16_1); |
315 | sprintf(string, "<Course>%03d</Course>\r\n", i16_1); |
313 | fputs_(string, doc->file); |
316 | fputs_(string, doc->file); |
314 | // Ground Speed in cm/s |
317 | // Ground Speed in cm/s |
315 | sprintf(string, "<GroundSpeed>%d</GroundSpeed>\r\n", GPSData.Speed_Ground); |
318 | sprintf(string, "<GroundSpeed>%d</GroundSpeed>\r\n", (uint16_t)GPSData.Speed_Ground); |
316 | fputs_(string, doc->file); |
319 | fputs_(string, doc->file); |
317 | // Ubat |
320 | // Ubat |
318 | u8_1 = UBat / 10; |
321 | u8_1 = UBat / 10; |
319 | u8_2 = UBat % 10; |
322 | u8_2 = UBat % 10; |
320 | sprintf(string, "<Voltage>%d.%01d</Voltage>\r\n", u8_1, u8_2); |
323 | sprintf(string, "<Voltage>%d.%01d</Voltage>\r\n", u8_1, u8_2); |
321 | fputs_(string, doc->file); |
324 | fputs_(string, doc->file); |
322 | 325 | ||
323 | // eof extensions |
326 | // eof extensions |
324 | sprintf(string, "</extensions>\r\n"); |
327 | sprintf(string, "</extensions>\r\n"); |
325 | fputs_(string, doc->file); |
328 | fputs_(string, doc->file); |