Ensures that the radio testing won't block waiting for a firing mode
packet to arrive.
Signed-off-by: Keith Packard <keithp@keithp.com>
+#if HAS_PAD
+#include <ao_pad.h>
+#endif
/* Values from SmartRF® Studio for:
*
/* Values from SmartRF® Studio for:
*
#endif
#if PACKET_HAS_SLAVE
ao_packet_slave_stop();
#endif
#if PACKET_HAS_SLAVE
ao_packet_slave_stop();
+#endif
+#if HAS_PAD
+ ao_pad_disable();
#endif
ao_radio_get(0xff);
RFST = RFST_STX;
#endif
ao_radio_get(0xff);
RFST = RFST_STX;
radio_on = 0;
#if HAS_MONITOR
ao_monitor_enable();
radio_on = 0;
#if HAS_MONITOR
ao_monitor_enable();
+#endif
+#if HAS_PAD
+ ao_pad_enable();
static __pdata uint8_t ao_pad_armed;
static __pdata uint16_t ao_pad_arm_time;
static __pdata uint8_t ao_pad_box;
static __pdata uint8_t ao_pad_armed;
static __pdata uint16_t ao_pad_arm_time;
static __pdata uint8_t ao_pad_box;
+static __xdata uint8_t ao_pad_disabled;
+
+void
+ao_pad_disable(void)
+{
+ if (!ao_pad_disabled) {
+ ao_pad_disabled = 1;
+ ao_radio_recv_abort();
+ }
+}
+
+void
+ao_pad_enable(void)
+{
+ ao_pad_disabled = 0;
+ ao_wakeup (&ao_pad_disabled);
+}
ao_pad_box = ao_74hc497_read();
for (;;) {
flush();
ao_pad_box = ao_74hc497_read();
for (;;) {
flush();
+ while (ao_pad_disabled)
+ ao_sleep(&ao_pad_disabled);
if (ao_radio_cmac_recv(&command, sizeof (command), 0) != AO_RADIO_CMAC_OK)
continue;
if (ao_radio_cmac_recv(&command, sizeof (command), 0) != AO_RADIO_CMAC_OK)
continue;
+void
+ao_pad_disable(void);
+
+void
+ao_pad_enable(void);
+