* ao_timer.c
*/
+extern volatile __data uint16_t ao_tick_count;
+
/* Our timer runs at 100Hz */
#define AO_HERTZ 100
#define AO_MS_TO_TICKS(ms) ((ms) / (1000 / AO_HERTZ))
* ao_report.c
*/
+#define AO_RDF_INTERVAL_TICKS AO_SEC_TO_TICKS(5)
+#define AO_RDF_LENGTH_MS 500
+#define AO_RDF_CONTINUITY_MS 32
+#define AO_RDF_CONTINUITY_PAUSE 96
+#define AO_RDF_CONTINUITY_TOTAL ((AO_RDF_CONTINUITY_PAUSE + AO_RDF_CONTINUITY_MS) * 3 + AO_RDF_CONTINUITY_PAUSE)
+
+/* This assumes that we're generating a 1kHz tone, which
+ * modulates the carrier at 2kbps, or 250kBps
+ */
+#define AO_MS_TO_RDF_LEN(ms) ((ms) / 4)
+
+#define AO_RADIO_RDF_LEN AO_MS_TO_RDF_LEN(AO_RDF_LENGTH_MS)
+#define AO_RADIO_CONT_TONE_LEN AO_MS_TO_RDF_LEN(AO_RDF_CONTINUITY_MS)
+#define AO_RADIO_CONT_PAUSE_LEN AO_MS_TO_RDF_LEN(AO_RDF_CONTINUITY_PAUSE)
+#define AO_RADIO_CONT_TOTAL_LEN AO_MS_TO_RDF_LEN(AO_RDF_CONTINUITY_TOTAL)
+
+/* returns a value 0-3 to indicate igniter continuity */
+uint8_t
+ao_report_igniter(void);
+
void
ao_report_init(void);
uint8_t status;
};
+/* Unfortunately, we've exposed the CC1111 rssi units as the 'usual' method
+ * for reporting RSSI. So, now we use these values everywhere
+ */
+#define AO_RSSI_FROM_RADIO(radio) ((int16_t) ((int8_t) (radio) >> 1) - 74)
+#define AO_RADIO_FROM_RSSI(rssi) (((int8_t) (rssi) + 74) << 1)
+
/*
* ao_radio_recv tacks on rssi and status bytes
*/
extern __xdata uint8_t ao_radio_done;
extern __xdata uint8_t ao_radio_mutex;
+#ifdef PKT_APPEND_STATUS_1_CRC_OK
+#define AO_RADIO_STATUS_CRC_OK PKT_APPEND_STATUS_1_CRC_OK
+#else
+#include <ao_fec.h>
+#define AO_RADIO_STATUS_CRC_OK AO_FEC_DECODE_CRC_OK
+#endif
+
void
ao_radio_general_isr(void) ao_arch_interrupt(16);
* 2 * ms bits, or ms / 4 bytes
*/
-#define AO_MS_TO_RDF_LEN(ms) ((ms) > 255 * 4 ? 255 : ((ms) >> 2))
+void
+ao_radio_rdf(void);
void
-ao_radio_rdf(uint8_t pkt_len);
+ao_radio_continuity(uint8_t c);
void
ao_radio_rdf_abort(void);
* ao_config.c
*/
+#if AO_PYRO_NUM
+#include <ao_pyro.h>
+#endif
+
+#if HAS_FORCE_FREQ
+/*
+ * Set this to force the frequency to 434.550MHz
+ */
+extern __xdata uint8_t ao_force_freq;
+#endif
+
#define AO_CONFIG_MAJOR 1
-#define AO_CONFIG_MINOR 11
+#define AO_CONFIG_MINOR 12
#define AO_AES_LEN 16
uint8_t aes_key[AO_AES_LEN]; /* minor version 9 */
uint32_t frequency; /* minor version 10 */
uint16_t apogee_lockout; /* minor version 11 */
+#if AO_PYRO_NUM
+ struct ao_pyro pyro[AO_PYRO_NUM]; /* minor version 12 */
+#endif
};
#define AO_IGNITE_MODE_DUAL 0
#define AO_CONFIG_MAX_SIZE 128
+void
+_ao_config_edit_start(void);
+
+void
+_ao_config_edit_finish(void);
+
void
ao_config_get(void);