summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/ao_log_telem.c29
-rw-r--r--src/core/ao_report.c6
2 files changed, 33 insertions, 2 deletions
diff --git a/src/core/ao_log_telem.c b/src/core/ao_log_telem.c
index 9afa13b2..193c11f3 100644
--- a/src/core/ao_log_telem.c
+++ b/src/core/ao_log_telem.c
@@ -22,6 +22,7 @@ __code uint8_t ao_log_format = AO_LOG_FORMAT_TELEMETRY;
static __data uint8_t ao_log_monitor_pos;
__pdata enum ao_flight_state ao_flight_state;
__pdata int16_t ao_max_height; /* max of ao_height */
+__pdata int16_t sense_d, sense_m;
static void
ao_log_telem_track() {
@@ -29,6 +30,9 @@ ao_log_telem_track() {
switch (ao_log_single_write_data.telemetry.generic.type) {
case AO_TELEMETRY_SENSOR_TELEMETRUM:
case AO_TELEMETRY_SENSOR_TELEMINI:
+ sense_d = ao_log_single_write_data.telemetry.sensor.sense_d;
+ sense_m = ao_log_single_write_data.telemetry.sensor.sense_m;
+ /* fall through ... */
case AO_TELEMETRY_SENSOR_TELENANO:
if (ao_log_single_write_data.telemetry.sensor.height > ao_max_height) {
ao_max_height = ao_log_single_write_data.telemetry.sensor.height;
@@ -42,6 +46,31 @@ ao_log_telem_track() {
}
}
}
+
+enum ao_igniter_status
+ao_igniter_status(enum ao_igniter igniter)
+{
+ int16_t value;
+
+ switch (igniter) {
+ case ao_igniter_drogue:
+ value = sense_d;
+ break;
+ case ao_igniter_main:
+ value = sense_m;
+ break;
+ default:
+ value = 0;
+ 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;
+}
+
void
ao_log_single(void)
{
diff --git a/src/core/ao_report.c b/src/core/ao_report.c
index 3cf558e1..e0355d96 100644
--- a/src/core/ao_report.c
+++ b/src/core/ao_report.c
@@ -109,7 +109,7 @@ ao_report_altitude(void)
}
}
-#if HAS_IGNITE
+#if HAS_IGNITE_REPORT
static uint8_t
ao_report_igniter_ready(enum ao_igniter igniter)
{
@@ -133,6 +133,7 @@ ao_report_continuity(void) __reentrant
low(AO_MS_TO_TICKS(20));
}
}
+#if HAS_LOG
if (ao_log_full()) {
pause(AO_MS_TO_TICKS(100));
c = 2;
@@ -143,6 +144,7 @@ ao_report_continuity(void) __reentrant
mid(AO_MS_TO_TICKS(100));
}
}
+#endif
c = 50;
while (c-- && ao_flight_state == ao_flight_pad)
pause(AO_MS_TO_TICKS(100));
@@ -157,7 +159,7 @@ ao_report(void)
if (ao_flight_state == ao_flight_landed)
ao_report_altitude();
ao_report_beep();
-#if HAS_IGNITE
+#if HAS_IGNITE_REPORT
if (ao_flight_state == ao_flight_idle)
ao_report_continuity();
while (ao_flight_state == ao_flight_pad)