summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2012-10-15 00:24:57 -0700
committerKeith Packard <keithp@keithp.com>2012-10-15 00:24:57 -0700
commit60880bda2153ba3122c7102cd2bacbcca73b9e0d (patch)
treee391e27c7fd58dd50c76f68a9766317ce526195a
parent5f31f6652f4b0898214d06d009af823a1ed3b96a (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>
-rw-r--r--src/telelco-v0.1/ao_lco.c12
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;
}