diff options
| author | Keith Packard <keithp@keithp.com> | 2014-11-06 16:02:47 -0800 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2014-11-06 16:03:42 -0800 | 
| commit | d3dd45b060c996153ff8195bd371e9e1f3b15efb (patch) | |
| tree | b362816d3ff2e68d56b486546768f281dfa0e2e0 | |
| parent | 2313cdacefb2139bc68cd98e782c54d706af0704 (diff) | |
altos: Use other TeleDongle LED for CRC-invalid packet reporting
Instead of blinking out some fake-o RSSI indication, just blink the
red LED when a packet with a bad CRC is received.
Signed-off-by: Keith Packard <keithp@keithp.com>
| -rw-r--r-- | src/kernel/ao.h | 1 | ||||
| -rw-r--r-- | src/kernel/ao_monitor.c | 11 | 
2 files changed, 11 insertions, 1 deletions
diff --git a/src/kernel/ao.h b/src/kernel/ao.h index 48b06490..16d600aa 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -652,6 +652,7 @@ union ao_monitor {  extern __xdata union ao_monitor ao_monitor_ring[AO_MONITOR_RING];  #define ao_monitor_ring_next(n)	(((n) + 1) & (AO_MONITOR_RING - 1)) +#define ao_monitor_ring_prev(n)	(((n) - 1) & (AO_MONITOR_RING - 1))  extern __data uint8_t ao_monitoring;  extern __data uint8_t ao_monitor_head; diff --git a/src/kernel/ao_monitor.c b/src/kernel/ao_monitor.c index 2d75c41c..cba0d80a 100644 --- a/src/kernel/ao_monitor.c +++ b/src/kernel/ao_monitor.c @@ -94,9 +94,18 @@ __xdata struct ao_task ao_monitor_blink_task;  void  ao_monitor_blink(void)  { +#ifdef AO_MONITOR_BAD +	uint8_t		*recv; +#endif  	for (;;) {  		ao_sleep(DATA_TO_XDATA(&ao_monitor_head)); -		ao_led_for(AO_MONITOR_LED, AO_MS_TO_TICKS(100)); +#ifdef AO_MONITOR_BAD +		recv = (uint8_t *) &ao_monitor_ring[ao_monitor_ring_prev(ao_monitor_head)]; +		if (ao_monitoring && !(recv[ao_monitoring + 1] & AO_RADIO_STATUS_CRC_OK)) +			ao_led_for(AO_MONITOR_BAD, AO_MS_TO_TICKS(100)); +		else +#endif +			ao_led_for(AO_MONITOR_LED, AO_MS_TO_TICKS(100));  	}  }  #endif  | 
