From: Bdale Garbee Date: Wed, 22 Jul 2020 04:37:52 +0000 (-0600) Subject: altos: initial work towards implementing TeleMetrum booster mode X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=refs%2Fheads%2Ftm-booster-mode;p=fw%2Faltos altos: initial work towards implementing TeleMetrum booster mode --- diff --git a/altosui/AltosConfigFCUI.java b/altosui/AltosConfigFCUI.java index 8df3c022..a1664c91 100644 --- a/altosui/AltosConfigFCUI.java +++ b/altosui/AltosConfigFCUI.java @@ -119,6 +119,7 @@ public class AltosConfigFCUI "Dual Deploy", "Redundant Apogee", "Redundant Main", + "Booster", }; static String[] aprs_interval_values = { diff --git a/src/kernel/ao_config.h b/src/kernel/ao_config.h index 87509dff..3cfd0d07 100644 --- a/src/kernel/ao_config.h +++ b/src/kernel/ao_config.h @@ -139,6 +139,7 @@ extern uint32_t ao_send_radio_setting; #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 diff --git a/src/kernel/ao_ignite.c b/src/kernel/ao_ignite.c index 71c99a61..ae415e1c 100644 --- a/src/kernel/ao_ignite.c +++ b/src/kernel/ao_ignite.c @@ -132,6 +132,18 @@ ao_igniter_fire(enum ao_igniter igniter) 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; } diff --git a/src/telemetrum-v3.0/Makefile b/src/telemetrum-v3.0/Makefile index 68a540c4..4f505f44 100644 --- a/src/telemetrum-v3.0/Makefile +++ b/src/telemetrum-v3.0/Makefile @@ -84,6 +84,7 @@ ALTOS_SRC = \ ao_packet_slave.c \ ao_packet.c \ ao_companion.c \ + ao_pyro.c \ ao_aprs.c \ $(PROFILE) \ $(SAMPLE_PROFILE) \ diff --git a/src/telemetrum-v3.0/ao_pins.h b/src/telemetrum-v3.0/ao_pins.h index 68bec1be..037fbe22 100644 --- a/src/telemetrum-v3.0/ao_pins.h +++ b/src/telemetrum-v3.0/ao_pins.h @@ -131,6 +131,7 @@ #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 @@ -144,6 +145,11 @@ #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 */ diff --git a/src/telemetrum-v3.0/ao_telemetrum.c b/src/telemetrum-v3.0/ao_telemetrum.c index 148e1f70..ae0d0f3e 100644 --- a/src/telemetrum-v3.0/ao_telemetrum.c +++ b/src/telemetrum-v3.0/ao_telemetrum.c @@ -74,6 +74,7 @@ main(void) ao_packet_slave_init(false); ao_igniter_init(); ao_companion_init(); + ao_pyro_init(); ao_config_init(); #if AO_PROFILE