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");  }  | 
