diff options
author | Keith Packard <keithp@keithp.com> | 2012-10-15 00:24:57 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2012-10-15 00:24:57 -0700 |
commit | 60880bda2153ba3122c7102cd2bacbcca73b9e0d (patch) | |
tree | e391e27c7fd58dd50c76f68a9766317ce526195a /src | |
parent | 5f31f6652f4b0898214d06d009af823a1ed3b96a (diff) |
altos/telelco: Make the RSSI led turn red when no packet is received
This involved splitting out the notion of ever having received an
answer and having received an answer from the last query.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/telelco-v0.1/ao_lco.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/telelco-v0.1/ao_lco.c b/src/telelco-v0.1/ao_lco.c index df7f865b..79f3896b 100644 --- a/src/telelco-v0.1/ao_lco.c +++ b/src/telelco-v0.1/ao_lco.c @@ -43,6 +43,7 @@ static uint8_t ao_lco_box; static uint8_t ao_lco_armed; static uint8_t ao_lco_firing; static uint8_t ao_lco_valid; +static uint8_t ao_lco_got_channels; static uint16_t ao_lco_tick_offset; static struct ao_pad_query ao_pad_query; @@ -77,7 +78,7 @@ ao_lco_box_present(uint8_t box) static uint8_t ao_lco_pad_present(uint8_t pad) { - if (!ao_lco_valid || !ao_pad_query.channels) + if (!ao_lco_got_channels || !ao_pad_query.channels) return pad == 0; if (pad >= AO_PAD_MAX_CHANNELS) return 0; @@ -151,7 +152,7 @@ ao_lco_input(void) ao_quadrature_count[AO_QUADRATURE_PAD] = new_box; if (ao_lco_box != new_box) { ao_lco_box = new_box; - ao_lco_valid = 0; + ao_lco_got_channels = 0; ao_lco_set_box(); } } @@ -213,13 +214,15 @@ ao_lco_update(void) r = ao_lco_query(ao_lco_box, &ao_pad_query, &ao_lco_tick_offset); if (r == AO_RADIO_CMAC_OK) { - c = ao_lco_valid; + c = ao_lco_got_channels; + ao_lco_got_channels = 1; ao_lco_valid = 1; if (!c) { ao_lco_pad = ao_lco_pad_first(); ao_lco_set_pad(); } - } + } else + ao_lco_valid = 0; #if 0 PRINTD("lco_query success arm_status %d i0 %d i1 %d i2 %d i3 %d\n", @@ -266,6 +269,7 @@ ao_lco_search(void) else ao_lco_min_box = ao_lco_max_box = ao_lco_box = 0; ao_lco_valid = 0; + ao_lco_got_channels = 0; ao_lco_pad = 0; } |