summaryrefslogtreecommitdiff
path: root/src/core/ao_log.h
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-05-19 23:07:54 -0700
committerKeith Packard <keithp@keithp.com>2013-05-19 23:07:54 -0700
commit57b4d82dee10b142b820aa306028a288a85214f6 (patch)
tree9150c9a89e622e63aa9164d11c3127652bd553a4 /src/core/ao_log.h
parent27e9b93f3d35890a49575b2ead1983ce3c2fc213 (diff)
Add Mini logging format. Use in EasyMinilpc
This is a 16-byte record that includes all of the sensor data in each sensor record, along with records for flight state changes. Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/core/ao_log.h')
-rw-r--r--src/core/ao_log.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/core/ao_log.h b/src/core/ao_log.h
index a68a40dd..95b37649 100644
--- a/src/core/ao_log.h
+++ b/src/core/ao_log.h
@@ -44,6 +44,7 @@ extern __pdata enum ao_flight_state ao_log_state;
#define AO_LOG_FORMAT_TELEMETRY 3 /* 32 byte ao_telemetry records */
#define AO_LOG_FORMAT_TELESCIENCE 4 /* 32 byte typed telescience records */
#define AO_LOG_FORMAT_TELEMEGA 5 /* 32 byte typed telemega records */
+#define AO_LOG_FORMAT_MINI 6 /* 16-byte MS5607 baro only */
#define AO_LOG_FORMAT_NONE 127 /* No log at all */
extern __code uint8_t ao_log_format;
@@ -261,6 +262,40 @@ struct ao_log_mega {
} u;
};
+struct ao_log_mini {
+ char type; /* 0 */
+ uint8_t csum; /* 1 */
+ uint16_t tick; /* 2 */
+ union { /* 4 */
+ /* AO_LOG_FLIGHT */
+ struct {
+ uint16_t flight; /* 4 */
+ uint16_t r6;
+ uint32_t ground_pres; /* 8 */
+ } flight;
+ /* AO_LOG_STATE */
+ struct {
+ uint16_t state; /* 4 */
+ uint16_t reason; /* 6 */
+ } state;
+ /* AO_LOG_SENSOR */
+ struct {
+ uint8_t pres[3]; /* 4 */
+ uint8_t temp[3]; /* 7 */
+ int16_t sense_a; /* 10 */
+ int16_t sense_m; /* 12 */
+ int16_t v_batt; /* 14 */
+ } sensor; /* 16 */
+ } u; /* 16 */
+}; /* 16 */
+
+static inline void
+ao_log_pack24(uint8_t *dst, uint32_t value) {
+ dst[0] = value;
+ dst[1] = value >> 8;
+ dst[2] = value >> 16;
+}
+
/* Write a record to the eeprom log */
uint8_t
ao_log_data(__xdata struct ao_log_record *log) __reentrant;
@@ -268,6 +303,9 @@ ao_log_data(__xdata struct ao_log_record *log) __reentrant;
uint8_t
ao_log_mega(__xdata struct ao_log_mega *log) __reentrant;
+uint8_t
+ao_log_mini(__xdata struct ao_log_mini *log) __reentrant;
+
void
ao_log_flush(void);