Subversion Repositories Projects

Rev

Rev 406 | Go to most recent revision | 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);