summaryrefslogtreecommitdiff
path: root/src
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 /src
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>
Diffstat (limited to 'src')
-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;
}