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 413
Line 57... Line 57...
57
#include <stdio.h>
57
#include <stdio.h>
58
#include "main.h"
58
#include "main.h"
59
#include "timer0.h"
59
#include "timer0.h"
60
#include "uart1.h"
60
#include "uart1.h"
61
#include "kml.h"
61
#include "kml.h"
62
#include "gpx.h"
62
//#include "gpx.h"
63
#include "ssc.h"
63
#include "ssc.h"
64
#include "settings.h"
64
#include "settings.h"
Line 65... Line 65...
65
 
65
 
Line 74... Line 74...
74
        LOGFILE_OPENED,
74
        LOGFILE_OPENED,
75
        LOGFILE_ERROR
75
        LOGFILE_ERROR
76
} logfilestate_t;
76
} logfilestate_t;
Line 77... Line 77...
77
 
77
 
78
// logger handler prototypes
78
// logger handler prototypes
79
logfilestate_t Logging_KML(uint32_t LogDelay);
79
logfilestate_t Logging_KML(uint16_t LogDelay);
Line 80... Line 80...
80
logfilestate_t Logging_GPX(uint32_t LogDelay);
80
//logfilestate_t Logging_GPX(uint16_t LogDelay);
81
 
81
 
82
typedef struct
82
typedef struct
83
{
83
{
84
        uint32_t KML_Interval;  // the kml-log interval (0 = off)
84
        uint16_t KML_Interval;  // the kml-log interval (0 = off)
Line 85... Line 85...
85
        uint32_t GPX_Interval;  // the gpx-log interval (0 = off)
85
        uint16_t GPX_Interval;  // the gpx-log interval (0 = off)
Line 112... Line 112...
112
        }
112
        }
113
        else return NULL;
113
        else return NULL;
114
}
114
}
Line 115... Line 115...
115
 
115
 
-
 
116
//----------------------------------------------------------------------------------------------------
116
//----------------------------------------------------------------------------------------------------
117
/*
117
int8_t* GenerateGPXLogFileName(void)
118
int8_t* GenerateGPXLogFileName(void)
118
{
119
{
119
        static uint16_t filenum = 0;    // file name counter
120
        static uint16_t filenum = 0;    // file name counter
120
        static int8_t filename[35];
121
        static int8_t filename[35];
Line 135... Line 136...
135
                filenum++;
136
                filenum++;
136
                return filename;
137
                return filename;
137
        }
138
        }
138
        else return NULL;
139
        else return NULL;
139
}
140
}
140
 
141
*/
Line 141... Line 142...
141
 
142
 
142
 
143
 
143
//----------------------------------------------------------------------------------------------------
144
//----------------------------------------------------------------------------------------------------
144
// logs the current gps position to a kml file
145
// logs the current gps position to a kml file
145
logfilestate_t Logging_KML(uint32_t LogDelay)
146
logfilestate_t Logging_KML(uint16_t LogDelay)
146
{
147
{
147
        static  logfilestate_t logfilestate = LOGFILE_IDLE; // the current logfilestate
148
        static  logfilestate_t logfilestate = LOGFILE_IDLE; // the current logfilestate
148
        static  int8_t* logfilename = NULL;                                             // the pointer to the logfilename
149
        static  int8_t* logfilename = NULL;                                             // the pointer to the logfilename
Line 149... Line 150...
149
        static  uint32_t logtimer = 0, flushtimer = 0;          // the log update timer
150
        static  uint16_t logtimer = 0, flushtimer = 0;          // the log update timer
150
        static  KML_Document_t logfile;                                         // the logfilehandle
151
        static  KML_Document_t logfile;                                         // the logfilehandle
151
 
152
 
Line 169... Line 170...
169
        // no init
170
        // no init
170
        if(CheckDelay(logtimer))
171
        if(CheckDelay(logtimer))
171
        {
172
        {
172
                logtimer = SetDelay(LogDelay);  // standard interval
173
                logtimer = SetDelay(LogDelay);  // standard interval
Line 173... Line 174...
173
 
174
 
174
                //if(FC.MKFlags & MKFLAG_MOTOR_RUN)
175
                if(SysState == STATE_SEND_FOLLOWME)
175
                {
176
                {
176
                        switch(logfilestate)
177
                        switch(logfilestate)
177
                        {
178
                        {
178
                                case LOGFILE_IDLE:
179
                                case LOGFILE_IDLE:
179
                                case LOGFILE_CLOSED:
180
                                case LOGFILE_CLOSED:
180
                                        //if((GPSData.Status != INVALID) && (GPSData.Flags & FLAG_GPSFIXOK) && (GPSData.SatFix == SATFIX_3D) && (FC.MKFlags & MKFLAG_FLY))
181
                                        if((GPSData.Status != INVALID) && (GPSData.Flags & FLAG_GPSFIXOK) && (GPSData.SatFix == SATFIX_3D))
181
                                        {
182
                                        {
182
                                                logfilestate = LOGFILE_START;
183
                                                logfilestate = LOGFILE_START;
183
                                        }
184
                                        }
184
                                        break;
185
                                        break;
Line 243... Line 244...
243
 
244
 
244
                                default:
245
                                default:
245
                                        logfilestate = LOGFILE_IDLE;
246
                                        logfilestate = LOGFILE_IDLE;
246
                                        break;
247
                                        break;
247
                        }
248
                        }
248
                } // EOF motors are not running
249
                } // EOF follow me on
249
                /*else // model is not flying
250
                else // follow me off
250
                {   // close log file if opened
251
                {   // close log file if opened
251
                        if(logfilestate == LOGFILE_OPENED)
252
                        if(logfilestate == LOGFILE_OPENED)
252
                        {
253
                        {
253
                                if(KML_DocumentClose(&logfile))
254
                                if(KML_DocumentClose(&logfile))
Line 256... Line 257...
256
                                        logfilestate = LOGFILE_CLOSED;
257
                                        logfilestate = LOGFILE_CLOSED;
257
                                }
258
                                }
258
                                else  // could not be closed
259
                                else  // could not be closed
259
                                {
260
                                {
260
                                        printf("\r\nError closing kml-file\r\n");
261
                                        printf("\r\nError closing kml-file\r\n");
261
                                        logfilestate =  LOGFILE_ERROR;
262
                                        logfilestate =  LOGFILE_ERROR;
262
                                }
263
                                }
263
                        }
264
                        }
264
                } //EOF motors are not running
265
                } //EOF follow me off
265
                */
266
 
266
        } // EOF Check LogTimer
267
        } // EOF Check LogTimer
Line 267... Line 268...
267
 
268
 
268
        return logfilestate;
269
        return logfilestate;
Line 269... Line 270...
269
}
270
}
-
 
271
 
270
 
272
//----------------------------------------------------------------------------------------------------
271
//----------------------------------------------------------------------------------------------------
273
/*
272
// logs gps and state info to a gpx file
274
// logs gps and state info to a gpx file
273
logfilestate_t Logging_GPX(uint32_t LogDelay)
275
logfilestate_t Logging_GPX(uint16_t LogDelay)
274
{
276
{
275
        static  logfilestate_t logfilestate = LOGFILE_IDLE; // the current logfilestate
277
        static  logfilestate_t logfilestate = LOGFILE_IDLE; // the current logfilestate
276
        static  int8_t* logfilename = NULL;                                             // the pointer to the logfilename
278
        static  int8_t* logfilename = NULL;                                             // the pointer to the logfilename
Line 277... Line 279...
277
        static  uint32_t logtimer = 0, flushtimer = 0;          // the log update timer
279
        static  uint16_t logtimer = 0, flushtimer = 0;          // the log update timer
278
        static  GPX_Document_t logfile;                                         // the logfilehandle
280
        static  GPX_Document_t logfile;                                         // the logfilehandle
279
 
281
 
Line 371... Line 373...
371
                                default:
373
                                default:
372
                                        logfilestate = LOGFILE_IDLE;
374
                                        logfilestate = LOGFILE_IDLE;
373
                                        break;
375
                                        break;
374
                        }
376
                        }
375
                } // EOF model is flying
377
                } // EOF model is flying
376
                /*
-
 
377
                else // model is not flying
-
 
378
                {   // close log file if opened
-
 
379
                        if(logfilestate == LOGFILE_OPENED)
-
 
380
                        {
-
 
381
                                if(GPX_DocumentClose(&logfile))
-
 
382
                                {
-
 
383
                                        printf("\r\nClosing gpx-file\r\n");
-
 
384
                                        logfilestate = LOGFILE_CLOSED;
-
 
385
                                }
-
 
386
                                else  // could not be closed
-
 
387
                                {
-
 
388
                                        printf("\r\nError closing gpx-file\r\n");
-
 
389
                                        logfilestate =  LOGFILE_ERROR;
-
 
390
                                }
-
 
391
                        }
-
 
392
                } //EOF model is not flying
-
 
393
                */
-
 
394
        } // EOF Check LogTimer
378
        } // EOF Check LogTimer
Line 395... Line 379...
395
 
379
 
396
        return logfilestate;
380
        return logfilestate;
-
 
381
}
Line 397... Line 382...
397
}
382
*/
398
 
383
 
399
//----------------------------------------------------------------------------------------------------
384
//----------------------------------------------------------------------------------------------------
400
// initialize logging
385
// initialize logging
401
void Logging_Init(void)
386
void Logging_Init(void)
402
{
387
{
403
        LogCfg.KML_Interval = 500; //default
388
        LogCfg.KML_Interval = 500; //default
404
        Settings_GetParamValue(PID_KML_LOGGING, (uint16_t*)&LogCfg.KML_Interval); // overwrite by settings value
389
        Settings_GetParamValue(PID_KML_LOGGING, (uint16_t*)&LogCfg.KML_Interval); // overwrite by settings value
405
        Logging_KML(0); // initialize
390
        Logging_KML(0); // initialize
406
        LogCfg.GPX_Interval = 1000; //default
391
        //LogCfg.GPX_Interval = 1000; //default
407
        Settings_GetParamValue(PID_GPX_LOGGING, (uint16_t*)&LogCfg.GPX_Interval); // overwrite by settings value
392
        //Settings_GetParamValue(PID_GPX_LOGGING, (uint16_t*)&LogCfg.GPX_Interval); // overwrite by settings value
Line 408... Line 393...
408
        Logging_GPX(0); // initialize
393
        //Logging_GPX(0);       // initialize
409
}
394
}
410
 
395
 
411
//----------------------------------------------------------------------------------------------------
396
//----------------------------------------------------------------------------------------------------
412
// gobal logging handler
397
// gobal logging handler
413
void Logging_Update(void)
398
void Logging_Update(void)
Line 414... Line 399...
414
{
399
{
415
        static uint32_t logtimer = 0;
400
        static uint16_t logtimer = 0;
416
        static logfilestate_t logstate = LOGFILE_IDLE;
401
        static logfilestate_t logstate = LOGFILE_IDLE;
417
 
402
 
418
 
403
 
419
        if(SD_SWITCH) // a card is in slot
404
        if(SD_SWITCH) // a card is in slot
420
        {
405
        {
421
                if(CheckDelay(logtimer))
406
                if(CheckDelay(logtimer))
422
                {
407
                {
423
                        logtimer = SetDelay(10);  // faster makes no sense
408
                        logtimer = SetDelay(10);  // faster makes no sense
424
                        // call the logger handlers if no error has occured
409
                        // call the logger handlers if no error has occured
425
                        if(logstate != LOGFILE_ERROR) logstate = Logging_KML(LogCfg.KML_Interval);
410
                        if(logstate != LOGFILE_ERROR) logstate = Logging_KML(LogCfg.KML_Interval);
426
                        if(logstate != LOGFILE_ERROR) logstate = Logging_GPX(LogCfg.GPX_Interval);
411
                        //if(logstate != LOGFILE_ERROR) logstate = Logging_GPX(LogCfg.GPX_Interval);
427
               
412