- if (query.channels & (1 << c))
- status = query.igniter_status[c];
- else
- status = AO_PAD_IGNITER_STATUS_NO_IGNITER_RELAY_OPEN;
- if (status == AO_PAD_IGNITER_STATUS_GOOD_IGNITER_RELAY_OPEN)
- ao_led_on(continuity_led[c]);
+static void
+ao_lco_box_set_present(uint8_t box)
+{
+ if (box >= AO_PAD_MAX_BOXES)
+ return;
+ ao_lco_box_mask[MASK_ID(box)] |= 1 << MASK_SHIFT(box);
+}
+
+static void
+ao_lco_search(void)
+{
+ uint16_t tick_offset;
+ int8_t r;
+
+ ao_lco_min_box = 0xff;
+ ao_lco_max_box = 0x00;
+ for (ao_lco_box = 0; ao_lco_box < AO_PAD_MAX_BOXES; ao_lco_box++) {
+ ao_lco_set_box();
+ r = ao_lco_query(ao_lco_box, &ao_pad_query, &ao_lco_tick_offset);
+ if (r == AO_RADIO_CMAC_OK) {
+ if (ao_lco_box < ao_lco_min_box)
+ ao_lco_min_box = ao_lco_box;
+ if (ao_lco_box > ao_lco_max_box)
+ ao_lco_max_box = ao_lco_box;
+ ao_lco_box_set_present(ao_lco_box);
+ }
+ }
+ ao_lco_box = ao_lco_min_box;
+ ao_lco_pad = 0;
+}
+
+static void
+ao_lco_igniter_status(void)
+{
+ uint8_t c;
+ uint16_t delay;
+
+ for (;;) {
+// ao_alarm(delay);
+ ao_sleep(&ao_pad_query);
+// ao_clear_alarm();
+ if (!ao_lco_valid) {
+ ao_led_on(AO_LED_RED);
+ ao_led_off(AO_LED_GREEN);
+ continue;
+ }
+ PRINTD("RSSI %d\n", ao_radio_cmac_rssi);
+ if (ao_radio_cmac_rssi < -70)
+ ao_led_on(AO_LED_RED|AO_LED_GREEN);
+ else {
+ ao_led_on(AO_LED_GREEN);
+ ao_led_off(AO_LED_RED);
+ }
+ if (ao_pad_query.arm_status)
+ ao_led_on(AO_LED_REMOTE_ARM);