altos: initial work towards implementing TeleMetrum booster mode tm-booster-mode
authorBdale Garbee <bdale@gag.com>
Wed, 22 Jul 2020 04:37:52 +0000 (22:37 -0600)
committerBdale Garbee <bdale@gag.com>
Wed, 22 Jul 2020 04:37:52 +0000 (22:37 -0600)
altosui/AltosConfigFCUI.java
src/kernel/ao_config.h
src/kernel/ao_ignite.c
src/telemetrum-v3.0/Makefile
src/telemetrum-v3.0/ao_pins.h
src/telemetrum-v3.0/ao_telemetrum.c

index 8df3c022a398c3067a7222768befb981ad5ff0d0..a1664c91a0e8672906d706314f0262fa85888ea8 100644 (file)
@@ -119,6 +119,7 @@ public class AltosConfigFCUI
                "Dual Deploy",
                "Redundant Apogee",
                "Redundant Main",
+               "Booster",
        };
 
        static String[]         aprs_interval_values = {
index 87509dff8df1e94d8b8b15866a5845d021c264c0..3cfd0d0731574c71599c5946e012a6f0d6c642bc 100644 (file)
@@ -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
index 71c99a614352d928aaa34d5e4d9dd863c18e66b8..ae415e1c52e40d2aebcb1c2786d0d5467ef3a6d8 100644 (file)
@@ -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;
 }
index 68a540c48c2b31a09b504acf8b566e4d5522a9a2..4f505f445df59280375e98283463ba34228d397d 100644 (file)
@@ -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) \
index 68bec1be3f789066f031121b983f5d2454a39d70..037fbe2267682d6c1dc28c8bf8a6f84a663b6cb6 100644 (file)
 #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
  */
index 148e1f708c1f0d11572333d7d26001d3d40c760e..ae0d0f3e5f56801f6380152e3d4dc6d0652a68f4 100644 (file)
@@ -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