Merge branch 'master' into branch-1.9
authorBdale Garbee <bdale@gag.com>
Wed, 30 Aug 2023 16:46:42 +0000 (10:46 -0600)
committerBdale Garbee <bdale@gag.com>
Wed, 30 Aug 2023 16:46:42 +0000 (10:46 -0600)
42 files changed:
Releasing
altoslib/AltosConvert.java
altoslib/AltosIdleFetch.java
altoslib/AltosSensorEMini.java
altoslib/NewProduct
ao-bringup/test-telegps-v3
ao-bringup/turnon_telegps
ao-tools/ao-test-igniter/ao-test-igniter.c
configure.ac
doc/Makefile.am
doc/release-notes-1.9.17.inc [new file with mode: 0644]
doc/release-notes.inc
doc/specs.inc
map-server/altos-mapd/Makefile.am
src/easymega-v1.0/ao_pins.h
src/easymega-v2.0/ao_pins.h
src/easymega-v3.0/ao_pins.h
src/easymini-v2.0/ao_pins.h
src/kernel/ao_config.h
src/kernel/ao_convert_volt.c
src/kernel/ao_ignite.c
src/kernel/ao_pyro.c
src/kernel/ao_pyro.h
src/kernel/ao_task.c
src/kernel/ao_task.h
src/stmf0/altos.ld
src/stmf0/ao_boot_pin.c
src/telebt-v4.0/ao_pins.h
src/telelco-v0.2-cc1200/ao_telelco.c
src/telelco-v0.2/ao_telelco.c
src/telelco-v0.3/ao_telelco.c
src/telelco-v2.0/ao_telelco.c
src/telelcotwo-v0.1/ao_telelcotwo.c
src/telemega-v0.1/ao_pins.h
src/telemega-v1.0/ao_pins.h
src/telemega-v2.0/ao_pins.h
src/telemega-v3.0/ao_pins.h
src/telemega-v4.0/ao_pins.h
src/telemega-v5.0/ao_pins.h
src/telemega-v6.0/ao_pins.h
src/telemetrum-v4.0/ao_pins.h
src/telemini-v3.0/ao_pins.h

index 4c989616280c077e4366e51e2f4c657c89928a33..042f2d68448af3d948ffca7e9082d16ade9cb4b2 100644 (file)
--- a/Releasing
+++ b/Releasing
@@ -72,8 +72,8 @@ These are Bdale's notes on how to do a release.
          like debian are already pulled
 
         git log > ChangeLog
-       git commit -a
-       git tag -a <version>                    # full x.y.z version
+       git commit -a -m'update ChangeLog for <version> release'
+       git tag -a <version> -m'Releasing <version>'    # full x.y.z version
 
        - make sure .git/gbp.conf set to use branch-<version> as upstream
 
index 88ee1ad159772d9e613d4ed484375fa0a50c2d2c..ded4b36527cbfc92e6ba7beefbadcc9a31a3cbb1 100644 (file)
@@ -317,6 +317,10 @@ public class AltosConvert {
                return easy_mini_2_adc(sensor) * supply * 127/27;
        }
 
+       static double easy_mini_3_voltage(int sensor) {
+               return easy_mini_1_voltage(sensor, 10000);
+       }
+
        static double motor_pressure(double voltage) {
                double  base = 0.5;
                double  max = 4.5;
index 7ab8395ac8df5f8d8250f715267b25051c35680a..90f4f53e0374407ed1d124e61d055b843d418154 100644 (file)
@@ -53,6 +53,7 @@ class AltosIdler {
        static final int        idle_sensor_tmini3 = 109;
        static final int        idle_sensor_easytimer1 = 110;
        static final int        idle_sensor_easymotor2 = 111;
+       static final int        idle_sensor_emini3 = 112;
 
        public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException, TimeoutException, AltosUnknownProduct {
                for (int idler : idlers) {
@@ -111,6 +112,9 @@ class AltosIdler {
                        case idle_sensor_emini2:
                                AltosSensorEMini.provide_data(listener, link, 2);
                                break;
+                       case idle_sensor_emini3:
+                               AltosSensorEMini.provide_data(listener, link, 3);
+                               break;
                        case idle_sensor_tmini2:
                                AltosSensorTMini2.provide_data(listener, link);
                                break;
@@ -159,6 +163,10 @@ public class AltosIdleFetch implements AltosDataProvider {
                               AltosIdler.idle_ms5607,
                               AltosIdler.idle_sensor_emini2),
 
+               new AltosIdler("EasyMini-v3",
+                              AltosIdler.idle_ms5607,
+                              AltosIdler.idle_sensor_emini3),
+
                new AltosIdler("TeleMini-v1",
                               AltosIdler.idle_sensor_tm),
 
index 67f3c8e66e6f353a4167ddfadf6d975073f5a77b..33026c07ffc1e5162a441e2ac9a2f1a8aa5b4b47 100644 (file)
@@ -44,6 +44,11 @@ public class AltosSensorEMini {
                                listener.set_apogee_voltage(AltosConvert.easy_mini_2_voltage(sensor_emini.apogee));
                                listener.set_main_voltage(AltosConvert.easy_mini_2_voltage(sensor_emini.main));
                                break;
+                       case 3:
+                               listener.set_battery_voltage(AltosConvert.easy_mini_3_voltage(sensor_emini.batt));
+                               listener.set_apogee_voltage(AltosConvert.easy_mini_3_voltage(sensor_emini.apogee));
+                               listener.set_main_voltage(AltosConvert.easy_mini_3_voltage(sensor_emini.main));
+                               break;
                        }
 
                } catch (TimeoutException te) {
index e502fdfff0d0ea29a2de3efd0437268383283726..deb9fc3ddd44e70cde1f251c2a3856c29ef69f8b 100644 (file)
@@ -47,6 +47,10 @@ altoslib/
        Adjust existing telemetry decoders for new sensors
 
 
+ 9. AltosConvert.java
+
+       Add conversion functions for ADC values
+
 altosuilib/
 
  1. AltosUSBDevice.java
index 491e7e4f1995b2e6af66c0edd705d5727c983fff..0354383838d8be641d320c5bc9e22e16451ee2e0 100755 (executable)
@@ -42,7 +42,8 @@ ao-list | while read product serial dev; do
                    exit 1
            esac
 
-           echo "$PRODUCT-v$VERSION" serial "$serial" passed functional tests
+           echo "$PRODUCT-v$VERSION" serial "$serial" is ready to ship
+            echo "\007"
            ret=0
            ;;
        *)
index 7c16d3619489afd4ba5bfe60855e335a3d1b6d94..45f8fcf5a847d14842120198cb8cf0c651edb555 100755 (executable)
@@ -74,7 +74,10 @@ case "$dev" in
         ;;
 esac
 
-SERIAL=$SERIAL ./cal-freq $dev
+CALFILE=cal-$SERIAL.txt
+../ao-tools/ao-cal-freq/ao-cal-freq --output=$CALFILE --tty=$dev
+CAL_VALUE=`cat $CALFILE`
+echo $SERIAL","$CAL_VALUE >> cal_values
 
 ./test-telegps-v3
 
index 180defdb441a436af5a850d731bcee79cee95c3f..16ff27f45359755450b0f01e439cdc556ae6188f 100644 (file)
@@ -195,7 +195,7 @@ do_igniter(struct cc_usb *usb, char *name, double rplus, double rminus, int adc_
                        return 0;
                }
        }
-       if (strcmp(this->status, "ready") != 0) {
+       if (strcmp(this->status, "open") == 0) {
                printf("igniter %s status is %s\n", this->name, this->status);
                free_igniters(all);
                return 0;
index c6f4376ebab90285ebb95b4835821cfb588d570d..3cfbc64d056e4e71b975eec2e46fa6375ebdbab9 100644 (file)
@@ -18,13 +18,13 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.57)
-AC_INIT([altos], 1.9.16)
+AC_INIT([altos], 1.9.17)
 ANDROID_VERSION=37
 AC_CONFIG_SRCDIR([src/kernel/ao.h])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AM_MAINTAINER_MODE
 
-RELEASE_DATE=2023-04-27
+RELEASE_DATE=2023-08-30
 AC_SUBST(RELEASE_DATE)
 
 DOC_DATE=`LC_ALL=C date -d $RELEASE_DATE +'%d %b %Y'`
index 15465dc5ea2bcb070f5f544de88efeff85a736f9..9a8a5f6084df69e2b8d30328531041de568c46ae 100644 (file)
@@ -17,6 +17,7 @@ FAKETIME=TZ=UTC faketime -f '$(RELEASE_DATE) 00:00:00 i0'
 endif
 
 RELNOTES_INC=\
+       release-notes-1.9.17.inc \
        release-notes-1.9.16.inc \
        release-notes-1.9.15.inc \
        release-notes-1.9.14.inc \
diff --git a/doc/release-notes-1.9.17.inc b/doc/release-notes-1.9.17.inc
new file mode 100644 (file)
index 0000000..3c315db
--- /dev/null
@@ -0,0 +1,18 @@
+= Release Notes for Version 1.9.17
+include::release-head.adoc[]
+:doctype: article
+
+       Version 1.9.17
+
+       == AltOS
+       
+       * Fix TeleMini v3 Monitor Idle support
+
+       * Support TeleMetrum v4.0 with uBlox-10 GPS module
+
+       * Improve igniter reporting via the beeper.
+
+       == AltosUI & TeleGPS application
+
+       * Add support for EasyMini v3 Monitor Idle
+       
\ No newline at end of file
index 1562000056cf350dcf4df61d90bb6d555a6a9543..786f29e3e3a229774482a6ddf63fc380f37f408d 100644 (file)
@@ -1,5 +1,9 @@
 [appendix]
 == Release Notes
+       :leveloffset: 2
+       include::release-notes-1.9.17.adoc[]
+
+       <<<<
        :leveloffset: 2
        include::release-notes-1.9.16.adoc[]
 
index fd64145809efb629a79da61bcce2642b973609de..c00e1b3a235455b71eca0d9ea690392a72c1576f 100644 (file)
@@ -58,7 +58,7 @@
        |TeleMetrum v4.0
        |MS5607 30km (100k')
        |ADXL375 200g
-       |uBlox Max-8C
+       |uBlox Max-8C/10S
        |-
        |8MB
        |40mW
index f92c3e5ac917538778e00d6fbf6d8953453e4f3e..29ee65e85fcc5a07869f93c3f7e20a4cdec04811 100644 (file)
@@ -26,7 +26,7 @@ defaultsdir=$(sysconfdir)/default
 
 defaults_DATA=altos-mapd-default
 
-systemddir=$(libdir)/systemd/system
+systemddir=$(bindir)/../lib/systemd/system
 
 systemd_DATA=altos-mapd.service
 
index 7ebf5fd297fec4d899e6a5a804fa1c1ec11bea20..da0102077aefbd996049dd06b70081b893decdff 100644 (file)
@@ -263,6 +263,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index a304d03429741fece015fd6311bc21661efa163e..685b712651e741d98956ff83e62c3c7baa2f6da8 100644 (file)
@@ -258,6 +258,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index 2fa4fd011c64c8114446b21bcd6a059f7c6588e6..79a2a59a35764bfebda67d7453e757bd825abe7c 100644 (file)
@@ -258,6 +258,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index da52c5fd2063e52f84c2bef9197d81d4e3856371..e6479e1039d15ccca6a3759f692a6d725653f836 100644 (file)
@@ -19,7 +19,7 @@
 #define HAS_BEEP               1
 #define HAS_BATTERY_REPORT     1
 
-#define AO_STACK_SIZE  448
+#define AO_STACK_SIZE  432
 
 #define IS_FLASH_LOADER        0
 
index bf57d9543a11102f09dc3d29bdfb4bdf5ffe2b7b..a8541775ae807272947dbd66b357c05ec2e2ef61 100644 (file)
 #ifndef _AO_CONFIG_H_
 #define _AO_CONFIG_H_
 
+#include <ao.h>
+
+#if AO_PYRO_NUM
 #include <ao_pyro.h>
+#endif
 
 #ifndef USE_STORAGE_CONFIG
 #define USE_STORAGE_CONFIG 1
index c5dfd22d0d6bcf6da48744fdee3e1a19c7b4bc38..1f04df64a98f174a14e193a1931d94041e979fba 100644 (file)
@@ -19,8 +19,8 @@
 #include "ao.h"
 
 #define MUL(p,m)       ((int32_t) AO_ADC_REFERENCE_DV * ((p) + (m)))
-#define ADD(p,m)       (MUL(p,m)/2)
 #define DIV(p,m)       ((int32_t) AO_ADC_MAX * (m))
+#define ADD(p,m)       (DIV(p,m) / 2)
 #define scale(v,p,m)   (((int32_t) (v) * MUL(p,m) + ADD(p,m)) / DIV(p,m))
 
 #if HAS_APRS || HAS_BATTERY_REPORT
index 86a116d1f11addecf6d6d0d0009420df19e34266..9e6df1993f9db9f4dd5ed1b24fa66d3949473093 100644 (file)
@@ -18,9 +18,7 @@
 
 #include "ao.h"
 #include <ao_data.h>
-#if AO_PYRO_NUM
 #include <ao_pyro.h>
-#endif
 
 #if HAS_IGNITE
 struct ao_ignition ao_ignition[2];
@@ -55,12 +53,7 @@ ao_igniter_status(enum ao_igniter igniter)
                value = AO_SENSE_MAIN(&packet);
                break;
        }
-       if (value < AO_IGNITER_OPEN)
-               return ao_igniter_open;
-       else if (value > AO_IGNITER_CLOSED)
-               return ao_igniter_ready;
-       else
-               return ao_igniter_unknown;
+       return ao_igniter_check(value, AO_SENSE_PBATT(&packet));
 }
 
 #define AO_IGNITER_SET_DROGUE(v)       ao_gpio_set(AO_IGNITER_DROGUE_PORT, AO_IGNITER_DROGUE_PIN, v)
index d4091205d2114afff64d11c1bea194a6f70f2936..c40c50df42befd1128512a919f7ab9323055246f 100644 (file)
@@ -45,14 +45,8 @@ ao_pyro_status(uint8_t p)
                ao_data_get(&packet);
                );
 
-       value = (AO_IGNITER_CLOSED>>1);
        value = AO_SENSE_PYRO(&packet, p);
-       if (value < AO_IGNITER_OPEN)
-               return ao_igniter_open;
-       else if (value > AO_IGNITER_CLOSED)
-               return ao_igniter_ready;
-       else
-               return ao_igniter_unknown;
+       return ao_igniter_check(value, AO_SENSE_PBATT(&packet));
 }
 
 void
index f17abed377907fa0fa4eb5a5c34c7f30c5c1bc21..82576767f6c4f27c4d9ebedecb2e68a8782370bd 100644 (file)
@@ -108,4 +108,84 @@ ao_pyro_status(uint8_t p);
 void
 ao_pyro_print_status(void);
 
+#ifndef AO_PYRO_BATTERY_DIV_PLUS
+#define AO_PYRO_BATTERY_DIV_PLUS AO_BATTERY_DIV_PLUS
+#define AO_PYRO_BATTERY_DIV_MINUS AO_BATTERY_DIV_MINUS
+#ifndef AO_SENSE_PBATT
+#define AO_SENSE_PBATT(p) ((p)->adc.v_batt)
+#endif
+#else
+#ifndef AO_SENSE_PBATT
+#define AO_SENSE_PBATT(p) ((p)->adc.v_pbatt)
+#endif
+#endif
+
+/*
+ * dv = (sensor * (p+m) * ref_dv)/ (max * m)
+ * value * (max * m) = (sensor * (p+m) * ref)
+ * value * (max * m) / ((p+m) * ref) = sensor
+ */
+
+#define AO_DV_MUL(p,m) ((int32_t) AO_ADC_MAX * (m))
+#define AO_DV_DIV(p,m) ((int32_t) AO_ADC_REFERENCE_DV * ((p) + (m)))
+#define AO_DV_ADD(p,m) (AO_DV_DIV(p,m) / 2)
+
+#define ao_decivolt_to_adc(dv, p, m) \
+       ((int16_t) (((int32_t) (dv) * AO_DV_MUL(p,m) + AO_DV_ADD(p,m)) / AO_DV_DIV(p,m)))
+
+#define AO_IGNITER_CLOSED_DV   35
+#define AO_IGNITER_OPEN_DV     10
+
+#define AO_PYRO_BATTERY_GOOD_DV        38
+
+#undef AO_IGNITER_OPEN
+#undef AO_IGNITER_CLOSED
+
+#define AO_IGNITER_OPEN ao_decivolt_to_adc(AO_IGNITER_OPEN_DV, AO_IGNITE_DIV_PLUS, AO_IGNITE_DIV_MINUS)
+#define AO_IGNITER_CLOSED ao_decivolt_to_adc(AO_IGNITER_CLOSED_DV, AO_IGNITE_DIV_PLUS, AO_IGNITE_DIV_MINUS)
+
+#define AO_PYRO_BATTERY_GOOD ao_decivolt_to_adc(AO_PYRO_BATTERY_GOOD_DV, AO_PYRO_BATTERY_DIV_PLUS, AO_PYRO_BATTERY_DIV_MINUS)
+
+/* For devices measuring the pyro battery voltage, we want to use a
+ * fraction of that. We'll use 15/16 of the battery voltage as a limit
+ * For devices not measuring the pyro battery voltage, we'll use 3.5V
+ * instead (this is just TeleMetrum, which permits external pyro
+ * batteries but has not provision to measure the voltage)
+ */
+
+static inline int16_t
+ao_igniter_closed_value(int16_t battery)
+{
+#if AO_PYRO_BATTERY_DIV_PLUS != AO_IGNITE_DIV_PLUS || AO_PYRO_BATTERY_DIV_MINUS != AO_IGNITE_DIV_MINUS
+       (void) battery;
+       return AO_IGNITER_CLOSED;
+#else
+       return (int16_t) (((int32_t) battery * 15) / 16);
+#endif
+}
+
+static inline int16_t
+ao_igniter_open_value(int16_t battery)
+{
+#if AO_PYRO_BATTERY_DIV_PLUS != AO_IGNITE_DIV_PLUS || AO_PYRO_BATTERY_DIV_MINUS != AO_IGNITE_DIV_MINUS
+       (void) battery;
+       return AO_IGNITER_OPEN;
+#else
+       return (int16_t) (((int32_t) battery * 1) / 8);
+#endif
+}
+
+static inline enum ao_igniter_status
+ao_igniter_check(int16_t value, int16_t battery)
+{
+       if (battery < AO_PYRO_BATTERY_GOOD)
+               return ao_igniter_open;
+       if (value < ao_igniter_open_value(battery))
+               return ao_igniter_open;
+       else if (value > ao_igniter_closed_value(battery))
+               return ao_igniter_ready;
+       else
+               return ao_igniter_unknown;
+}
+
 #endif
index b50454167b67d70fdcea806f75ac3a21afb74b9d..048f5e67c6e39b58c4c0d5c633a9d77028297c10 100644 (file)
@@ -307,6 +307,8 @@ ao_stack_top(struct ao_task *task)
 #endif
 }
 
+#define AO_STACK_CANARY_VALUE  0xbaadf00dU
+
 void
 ao_add_task(struct ao_task * task, void (*task_func)(void), const char *name) 
 {
@@ -324,6 +326,10 @@ ao_add_task(struct ao_task * task, void (*task_func)(void), const char *name)
        task->task_id = task_id;
        task->name = name;
        task->wchan = NULL;
+#ifdef AO_STACK_CANARY
+       task->bottom_canary = AO_STACK_CANARY_VALUE;
+       task->top_canary = AO_STACK_CANARY_VALUE;
+#endif
        /*
         * Construct a stack frame so that it will 'return'
         * to the start of the task
@@ -341,6 +347,19 @@ ao_add_task(struct ao_task * task, void (*task_func)(void), const char *name)
                );
 }
 
+#ifdef AO_STACK_CANARY
+static void
+ao_check_stack_canary(void)
+{
+       if (ao_cur_task->bottom_canary != AO_STACK_CANARY_VALUE)
+               ao_panic(AO_PANIC_STACK);
+       if (ao_cur_task->top_canary != AO_STACK_CANARY_VALUE)
+               ao_panic(AO_PANIC_STACK);
+}
+#else
+#define ao_check_stack_canary()
+#endif
+
 uint8_t        ao_task_minimize_latency;
 
 /* Task switching function. */
@@ -356,6 +375,7 @@ ao_yield(void)
                        ao_cur_task->max_run = run;
                ++ao_cur_task->yields;
 #endif
+               ao_check_stack_canary();
                ao_arch_save_regs();
                ao_arch_save_stack();
        }
@@ -398,6 +418,7 @@ ao_yield(void)
 #if USE_TLS
        _set_tls(ao_stack_top(ao_cur_task));
 #endif
+       ao_check_stack_canary();
        ao_arch_restore_stack();
 }
 
index 9197e25cef0f6f1c828d033404227206cd75a934..27f47a5629de139565d203e34f3c63ccc21998e3 100644 (file)
@@ -48,10 +48,16 @@ struct ao_task {
        struct ao_list  queue;
        struct ao_list  alarm_queue;
        /* Provide both 32-bit and 8-bit stacks */
+#ifdef AO_STACK_CANARY
+       uint32_t        bottom_canary;
+#endif
        union {
                uint32_t stack32[AO_STACK_SIZE>>2];
                uint8_t stack8[AO_STACK_SIZE];
        } AO_STACK_ALIGNMENT;
+#ifdef AO_STACK_CANARY
+       uint32_t top_canary;
+#endif
 #if HAS_SAMPLE_PROFILE
        uint32_t ticks;
        uint32_t yields;
index 019565cf9f82016b4ec0c7991b712bf32f38557a..80857a508cc6f0f6dc8d4d853f44189b01797e26 100644 (file)
@@ -20,7 +20,7 @@ __flash = 0x08001000;
 __flash_size = 28K;
 __ram = 0x20000000;
 __ram_size = 6k;
-__stack_size = 128;
+__stack_size = 256;
 
 INCLUDE registers.ld
 INCLUDE picolibc.ld
index b289b80439f9c10399d42715ca0026b6280face5..43212dfd300c0024227bf5fe0e15c80dd3f0d00e 100644 (file)
@@ -20,6 +20,7 @@
 #include <ao_boot.h>
 #include <ao_exti.h>
 
+#if AO_BOOT_PIN
 int
 ao_boot_check_pin(void)
 {
@@ -44,3 +45,4 @@ ao_boot_check_pin(void)
        stm_rcc.apb1enr &= ~(1UL << STM_RCC_APB1ENR_PWREN);
        return v == AO_BOOT_APPLICATION_VALUE;
 }
+#endif
index 6efa407d15043010e7185198f91a62c26b28a77e..ca2c8e57bb6bbc022f46a705b21feff8137740f7 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef _AO_PINS_H_
 #define _AO_PINS_H_
 
-#define AO_STACK_SIZE          512
+#define AO_STACK_SIZE          504
 
 #define AO_HSE                  32000000
 #define AO_RCC_CFGR_PLLMUL     STM_RCC_CFGR_PLLMUL_3
index 26f49d5942f467c351301de80671e25bdbe4fd9f..35f341c1c7e522c454df4faeec7c030d2c957c24 100644 (file)
@@ -21,7 +21,6 @@
 #include <ao_packet.h>
 #include <ao_companion.h>
 #include <ao_profile.h>
-#include <ao_pyro.h>
 #include <ao_aes.h>
 #include <ao_seven_segment.h>
 #include <ao_quadrature.h>
index 4eba3597950879078ae5969ad1079fe675fc7748..661174a0390fb6f4fd831a49f64c705b84891623 100644 (file)
@@ -21,7 +21,6 @@
 #include <ao_packet.h>
 #include <ao_companion.h>
 #include <ao_profile.h>
-#include <ao_pyro.h>
 #include <ao_aes.h>
 #include <ao_seven_segment.h>
 #include <ao_quadrature.h>
index c2ca68aa58cf4b29c18bd95d98bbf55885ae6c61..b9bc18b78c1615850a1683c2e132e69a1878e030 100644 (file)
@@ -21,7 +21,6 @@
 #include <ao_packet.h>
 #include <ao_companion.h>
 #include <ao_profile.h>
-#include <ao_pyro.h>
 #include <ao_aes.h>
 #include <ao_seven_segment.h>
 #include <ao_quadrature.h>
index 59582569ffd1a1e78905be186f81aa916c062701..84843e6f5328b62693b41c6af510ef4dc23d7f7b 100644 (file)
@@ -21,7 +21,6 @@
 #include <ao_packet.h>
 #include <ao_companion.h>
 #include <ao_profile.h>
-#include <ao_pyro.h>
 #include <ao_aes.h>
 #include <ao_seven_segment.h>
 #include <ao_quadrature.h>
index 6ced1912dbb667fdb85f2a14a24d5f7cb164fd9d..c8f30b894ff49ac218e471218143699c15db8e68 100644 (file)
@@ -21,7 +21,6 @@
 #include <ao_packet.h>
 #include <ao_companion.h>
 #include <ao_profile.h>
-#include <ao_pyro.h>
 #include <ao_aes.h>
 #include <ao_button.h>
 #include <ao_lco.h>
index 2a2f9e61d7db70c9af6d0029a0fa2ed5aaf60a62..c16b33a03975475c34076cfa911f11bceb346c6e 100644 (file)
@@ -263,6 +263,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index 9cccdb9650d44e05743047ab2fcf94f972259073..ce258471e6ff853dc1b7d3af76f07c07135ed2d7 100644 (file)
@@ -263,6 +263,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index db0d5d8ccbbebc56aa046b978d54b590792e23c1..c8d365c6459c7890cc86a1eb55b8de79259fc88e 100644 (file)
@@ -263,6 +263,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index e3e70afa3e897fbc694a6f31ab22d1f0b02a212e..c68699e03bf92b2091a1f9f4b18604129cf89dfa 100644 (file)
@@ -263,6 +263,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index 8839dfe27f6303ace9856a2fd8d16d51386c94d0..7fa6d83528f5fd3f8fa216a8aadb23d91dbd4a96 100644 (file)
@@ -258,6 +258,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index 01774519f2cc1b461468b47860d8b323400855d9..5901eeae272fd838b497e5470d34a42f718f4b71 100644 (file)
@@ -268,6 +268,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index 2518e6ba45785bae1827d60fbfa0fbc0a26032ac..8e9be45d8c5831c0e1d0727d16f49a3f49feff3b 100644 (file)
@@ -265,6 +265,12 @@ struct ao_adc {
 #define AO_BATTERY_DIV_PLUS    56      /* 5.6k */
 #define AO_BATTERY_DIV_MINUS   100     /* 10k */
 
+/*
+ * Voltage divider on ADC pyro battery sampler
+ */
+#define AO_PYRO_BATTERY_DIV_PLUS       100     /* 100k */
+#define AO_PYRO_BATTERY_DIV_MINUS      27      /* 27k */
+
 /*
  * Voltage divider on ADC igniter samplers
  */
index bc0576118d6dbb6c477ff04ca59e2a3ea02efc92..66b3e955541a1f32e47260578039bfa3d7d74c4c 100644 (file)
@@ -180,6 +180,7 @@ struct ao_adc {
  */
 
 #define AO_SERIAL_SPEED_UBLOX  AO_SERIAL_SPEED_9600
+#define AO_UBLOX_VERSION       10
 
 #define HAS_SERIAL_1           1
 #define USE_SERIAL_1_STDIN     0
index 28b3540bb88d910cc05c636bceecbdd3f35b0d56..242e30d71b208db436576256d4b350ebaa72554e 100644 (file)
@@ -20,7 +20,7 @@
 #define HAS_SERIAL_1           0
 #define HAS_BATTERY_REPORT     1
 
-#define AO_STACK_SIZE  448
+#define AO_STACK_SIZE  428
 
 #define IS_FLASH_LOADER        0