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 |