diff options
| author | Keith Packard <keithp@keithp.com> | 2014-07-12 23:52:05 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2014-07-12 23:52:05 -0700 | 
| commit | a60ba449ec237ad3b8dade9dcea603b349dbccb1 (patch) | |
| tree | 97ad6773c726826817f0f6cf23cc5d3ddda688d1 /src/drivers/ao_lco_func.c | |
| parent | fa155693282746861b227afd6cbccc83dfd1bbed (diff) | |
altos/telefire,telelco: Add HAS_RADIO_RATE to launch system software
This lets us set the rate to a lower value to improve range. 9600 baud
works great; 2400 baud makes the initial search take a long time.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/drivers/ao_lco_func.c')
| -rw-r--r-- | src/drivers/ao_lco_func.c | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/src/drivers/ao_lco_func.c b/src/drivers/ao_lco_func.c index 9e642836..32c00068 100644 --- a/src/drivers/ao_lco_func.c +++ b/src/drivers/ao_lco_func.c @@ -28,7 +28,21 @@ ao_lco_query(uint16_t box, struct ao_pad_query *query, uint16_t *tick_offset)  {  	int8_t		r;  	uint16_t	sent_time; +	uint16_t	timeout = AO_MS_TO_TICKS(10); +#if HAS_RADIO_RATE +	switch (ao_config.radio_rate) { +	case AO_RADIO_RATE_38400: +	default: +		break; +	case AO_RADIO_RATE_9600: +		timeout = AO_MS_TO_TICKS(20); +		break; +	case AO_RADIO_RATE_2400: +		timeout = AO_MS_TO_TICKS(80); +		break; +	} +#endif  	ao_mutex_get(&ao_lco_mutex);  	command.tick = ao_time() - *tick_offset;  	command.box = box; @@ -36,7 +50,7 @@ ao_lco_query(uint16_t box, struct ao_pad_query *query, uint16_t *tick_offset)  	command.channels = 0;  	ao_radio_cmac_send(&command, sizeof (command));  	sent_time = ao_time(); -	r = ao_radio_cmac_recv(query, sizeof (*query), AO_MS_TO_TICKS(10)); +	r = ao_radio_cmac_recv(query, sizeof (*query), timeout);  	if (r == AO_RADIO_CMAC_OK)  		*tick_offset = sent_time - query->tick;  	ao_mutex_put(&ao_lco_mutex);  | 
