"Dual Deploy",
"Redundant Apogee",
"Redundant Main",
+ "Booster",
};
static String[] aprs_interval_values = {
#define AO_IGNITE_MODE_DUAL 0
#define AO_IGNITE_MODE_APOGEE 1
#define AO_IGNITE_MODE_MAIN 2
+#define AO_IGNITE_MODE_BOOSTER 3
#define AO_RADIO_ENABLE_CORE 1
#define AO_RADIO_DISABLE_TELEMETRY 2
break;
}
break;
+ case AO_IGNITE_MODE_BOOSTER:
+ switch (igniter) {
+ case ao_igniter_drogue:
+ AO_IGNITER_SET_DROGUE(1);
+ ao_delay(AO_IGNITER_FIRE_TIME);
+ AO_IGNITER_SET_DROGUE(0);
+ break;
+ /* in this mode, "main" is fired by ao_pyro code
+ as a separation charge event */
+ default:
+ break;
+ }
}
ao_ignition[igniter].firing = 0;
}
ao_packet_slave.c \
ao_packet.c \
ao_companion.c \
+ ao_pyro.c \
ao_aprs.c \
$(PROFILE) \
$(SAMPLE_PROFILE) \
#define HAS_IGNITE 1
#define HAS_IGNITE_REPORT 1
+#define AO_SENSE_PYRO(p,n) ((p)->adc.sense[n])
#define AO_SENSE_DROGUE(p) ((p)->adc.sense_a)
#define AO_SENSE_MAIN(p) ((p)->adc.sense_m)
#define AO_IGNITER_CLOSED 400
#define AO_IGNITER_MAIN_PORT (&stm_gpioa)
#define AO_IGNITER_MAIN_PIN 9
+/* in booster mode, main output works like a pyro channel with fixed config */
+#define AO_PYRO_NUM 1
+#define AO_PYRO_PORT_1 AO_IGNITER_MAIN_PORT
+#define AO_PYRO_PIN_1 AO_IGNITER_MAIN_PIN
+
/*
* ADC
*/
ao_packet_slave_init(false);
ao_igniter_init();
ao_companion_init();
+ ao_pyro_init();
ao_config_init();
#if AO_PROFILE