Rev 548 | Rev 557 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 548 | Rev 553 | ||
---|---|---|---|
Line 347... | Line 347... | ||
347 | { |
347 | { |
348 | if(doc->state == GPX_DOC_TRACKSEGMENT_OPENED) |
348 | if(doc->state == GPX_DOC_TRACKSEGMENT_OPENED) |
349 | { |
349 | { |
350 | if(doc->file != NULL) |
350 | if(doc->file != NULL) |
351 | { |
351 | { |
- | 352 | static s32 altitude; // store to make sure they are all recorded in one timestamp |
|
352 | s32 i32_1, i32_2; |
353 | s32 i32_1, i32_2; |
353 | s16 i16_1; |
354 | s16 i16_1; |
354 | u8 u8_1, u8_2; |
355 | u8 u8_1, u8_2; |
355 | // write <trkpt> tag |
356 | // write <trkpt> tag |
356 | switch(part) |
357 | switch(part) |
Line 370... | Line 371... | ||
370 | i32_1 = abs(GPSData.Position.Longitude)/10000000L; |
371 | i32_1 = abs(GPSData.Position.Longitude)/10000000L; |
371 | i32_2 = abs(GPSData.Position.Longitude)%10000000L; |
372 | i32_2 = abs(GPSData.Position.Longitude)%10000000L; |
372 | sprintf(string, "lon=\"%c%ld.%07ld\">\r\n",u8_1, i32_1, i32_2); |
373 | sprintf(string, "lon=\"%c%ld.%07ld\">\r\n",u8_1, i32_1, i32_2); |
373 | } else sprintf(string, "<trkpt lat=\"\" lon=\"\">"); |
374 | } else sprintf(string, "<trkpt lat=\"\" lon=\"\">"); |
374 | fputs_(string, doc->file); |
375 | fputs_(string, doc->file); |
- | 376 | altitude = GPSData.Position.Altitude; |
|
375 | break; |
377 | break; |
376 | case 1: |
378 | case 1: |
377 | // write <ele> tag |
379 | // write <ele> tag |
378 | i32_2 = abs(GPSData.Position.Altitude - NaviData.HomePosition.Altitude); |
380 | i32_2 = altitude - NaviData.HomePosition.Altitude; |
379 | if(GPSData.Position.Status == INVALID) i32_2 = 0; |
381 | if(GPSData.Position.Status == INVALID) i32_2 = 0; |
380 | i32_1 = i32_2/1000L; |
382 | i32_1 = i32_2/1000L; |
381 | i32_2 = i32_2%1000L; |
383 | i32_2 = i32_2%1000L; |
382 | if(GPSData.Position.Altitude < 0) i32_1 *= -1; |
384 | if(altitude - NaviData.HomePosition.Altitude < 0) sprintf(string,"<ele>-%ld.%03ld</ele>\r\n",abs(i32_1),abs(i32_2)); |
383 | sprintf(string,"<ele>%ld.%03ld</ele>\r\n",i32_1, i32_2); |
385 | else sprintf(string,"<ele>%ld.%03ld</ele>\r\n",i32_1,i32_2); |
384 | fputs_(string, doc->file); |
386 | fputs_(string, doc->file); |
385 | // write <time> tag only at a resolution of one second |
387 | // write <time> tag only at a resolution of 1/100 second |
386 | // sprintf(string, "<time>%04d-%02d-%02dT%02d:%02d:%02dZ</time>\r\n",SystemTime.Year, SystemTime.Month, SystemTime.Day, SystemTime.Hour, SystemTime.Min, SystemTime.Sec); |
388 | // sprintf(string, "<time>%04d-%02d-%02dT%02d:%02d:%02dZ</time>\r\n",SystemTime.Year, SystemTime.Month, SystemTime.Day, SystemTime.Hour, SystemTime.Min, SystemTime.Sec); |
387 | sprintf(string, "<time>%04d-%02d-%02dT%02d:%02d:%02d.%dZ</time>\r\n",SystemTime.Year, SystemTime.Month, SystemTime.Day, SystemTime.Hour, SystemTime.Min, SystemTime.Sec,SystemTime.mSec/100); |
389 | sprintf(string, "<time>%04d-%02d-%02dT%02d:%02d:%02d.%dZ</time>\r\n",SystemTime.Year, SystemTime.Month, SystemTime.Day, SystemTime.Hour, SystemTime.Min, SystemTime.Sec,SystemTime.mSec/100); |
388 | fputs_(string, doc->file); |
390 | fputs_(string, doc->file); |
389 | // write <sat> tag |
391 | // write <sat> tag |
390 | sprintf(string, "<sat>%d</sat>\r\n", NaviData.SatsInUse); |
392 | sprintf(string, "<sat>%d</sat>\r\n", NaviData.SatsInUse); |
Line 560... | Line 562... | ||
560 | fputs_(string, doc->file); |
562 | fputs_(string, doc->file); |
561 | // Navigation Update speed (in 0.1Hz) |
563 | // Navigation Update speed (in 0.1Hz) |
562 | // sprintf(string, "<NaviUpdate>%d,%d</NaviUpdate>\r\n",FreqGpsProcessedIn5Sec,FreqNewGpsDataIn5Sec); |
564 | // sprintf(string, "<NaviUpdate>%d,%d</NaviUpdate>\r\n",FreqGpsProcessedIn5Sec,FreqNewGpsDataIn5Sec); |
563 | // fputs_(string, doc->file); |
565 | // fputs_(string, doc->file); |
564 | // eof extensions |
566 | // eof extensions |
565 | i32_2 = abs(GPSData.Position.Altitude); |
567 | i32_2 = altitude; |
566 | if(GPSData.Position.Status == INVALID) i32_2 = 0; |
568 | if(GPSData.Position.Status == INVALID) i32_2 = 0; |
567 | i32_1 = i32_2/1000L; |
569 | i32_1 = i32_2/1000L; |
568 | i32_2 = i32_2%1000L; |
570 | i32_2 = i32_2%1000L; |
569 | if(GPSData.Position.Altitude < 0) i32_1 *= -1; |
571 | if(altitude < 0) sprintf(string,"<ele_raw>-%ld.%03ld</ele_raw>\r\n",abs(i32_1),abs(i32_2)); |
570 | sprintf(string,"<ele_raw>%ld.%03ld</ele_raw>\r\n",i32_1, i32_2); |
572 | else sprintf(string,"<ele_raw>%ld.%03ld</ele_raw>\r\n",i32_1,i32_2); |
571 | fputs_(string, doc->file); |
573 | fputs_(string, doc->file); |
Line 572... | Line 574... | ||
572 | 574 | ||
573 | sprintf(string, "</extensions>\r\n"); |
575 | sprintf(string, "</extensions>\r\n"); |
574 | fputs_(string, doc->file); |
576 | fputs_(string, doc->file); |