diff options
author | Bdale Garbee <bdale@gag.com> | 2009-08-19 00:49:24 -0600 |
---|---|---|
committer | Bdale Garbee <bdale@gag.com> | 2009-08-19 00:49:24 -0600 |
commit | 4486d9156e19e4280b42bcd422d81d04f2d04a92 (patch) | |
tree | d0313710d9040f63c6cb2f5f3d4b11c6208525f7 /src/ao_gps_report.c | |
parent | dd09f0bc2b950c00f3b489878cd69ad8a003f46c (diff) | |
parent | 33edd62992a32b0ec8ca66d879fa300871db5937 (diff) |
Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos0.5
Diffstat (limited to 'src/ao_gps_report.c')
-rw-r--r-- | src/ao_gps_report.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/ao_gps_report.c b/src/ao_gps_report.c index dce12adb..acf8bb40 100644 --- a/src/ao_gps_report.c +++ b/src/ao_gps_report.c @@ -52,10 +52,41 @@ ao_gps_report(void) } } +void +ao_gps_tracking_report(void) +{ + static __xdata struct ao_log_record gps_log; + static __xdata struct ao_gps_tracking_data gps_tracking_data; + uint8_t c, n; + + for (;;) { + ao_sleep(&ao_gps_tracking_data); + ao_mutex_get(&ao_gps_mutex); + memcpy(&gps_tracking_data, &ao_gps_tracking_data, sizeof (struct ao_gps_tracking_data)); + ao_mutex_put(&ao_gps_mutex); + + if (!(n = gps_tracking_data.channels)) + continue; + + gps_log.tick = ao_time(); + gps_log.type = AO_LOG_GPS_SAT; + for (c = 0; c < n; c++) + if ((gps_log.u.gps_sat.svid = gps_tracking_data.sats[c].svid) && + (gps_log.u.gps_sat.state = gps_tracking_data.sats[c].state)) + { + gps_log.u.gps_sat.c_n = gps_tracking_data.sats[c].c_n_1; + gps_log.u.gps_sat.unused = 0; + ao_log_data(&gps_log); + } + } +} + __xdata struct ao_task ao_gps_report_task; +__xdata struct ao_task ao_gps_tracking_report_task; void ao_gps_report_init(void) { ao_add_task(&ao_gps_report_task, ao_gps_report, "gps_report"); + ao_add_task(&ao_gps_tracking_report_task, ao_gps_tracking_report, "gps_tracking_report"); } |