ACwing FC firmware
STM32WB55: attitude IEKF, altitude Kalman filter, flight core, protocol v2
Loading...
Searching...
No Matches
log_format.h
Go to the documentation of this file.
1
23#ifndef LOG_FORMAT_H
24#define LOG_FORMAT_H
25
26#include <stdint.h>
27
28#define LOG_FORMAT 1u
29#define LOG_MAGIC 0x474C4341u
30#define LOG_SECTOR 4096u
31#define LOG_PAGE 256u
32#define LOG_HDR_SIZE 20u
33#define LOG_REC_OVERHEAD 3u
34#define LOG_REC_MAX 64u
36#pragma pack(push, 1)
38typedef struct {
39 uint32_t magic;
40 uint32_t serial;
41 uint16_t log_id;
42 uint16_t seq;
43 uint32_t t0_ms;
44 uint8_t format;
45 uint8_t rsv;
46 uint16_t crc;
48
49/* ---- record types ---- */
50enum {
51 LR_INFO = 0x01,
52 LR_TIME = 0x02,
53 LR_ATT = 0x10,
54 LR_VERT = 0x11,
55 LR_FLIGHT = 0x12,
56 LR_EVENT = 0x13,
57 LR_EST = 0x14,
58 LR_POWER = 0x20,
59 LR_DROP = 0x7F
60};
61
62typedef struct {
63 uint8_t fw[3];
64 char hw_rev;
65 uint8_t format;
66 uint32_t t0_ms;
67 uint16_t sensors;
68 char name[16];
69} log_info_t;
71typedef struct {
72 uint32_t t_ms;
73 uint32_t unix_s;
74 uint16_t ms;
75 int16_t tz_min;
76} log_time_t;
78typedef struct {
79 uint32_t t_ms;
80 int16_t q[4];
81 int16_t gyro[3];
82 int16_t acc[3];
83} log_att_t;
85typedef struct {
86 uint32_t t_ms;
87 int32_t h_mm;
88 int16_t vz_mms;
89 int32_t h_sp_mm;
90 int16_t vz_sp_mms;
91 uint8_t thrust;
92 uint16_t tof_mm;
93 uint8_t flow_q;
94 uint32_t baro_pa;
95 uint8_t flags;
96} log_vert_t;
98typedef struct {
99 uint32_t t_ms;
100 uint8_t armed, mode, autom, failsafe;
101 uint8_t flags;
102 int8_t stick[4];
103 uint16_t silence_ms;
104} log_flight_t;
106typedef struct {
107 uint32_t t_ms;
108 uint8_t level;
109 uint16_t code;
110 int32_t arg;
111} log_event_t;
113typedef struct {
114 uint32_t t_ms;
115 int16_t gyro_bias[3];
116 uint16_t att_unc_cdeg;
117 uint16_t vib_mg;
118 uint16_t loop_hz;
119 uint16_t jitter_us;
120 uint8_t cpu_pct;
122} log_est_t;
124typedef struct {
125 uint32_t t_ms;
126 uint16_t vbat_mv;
127 int16_t current_ca;
128 uint16_t used_mah;
129 uint16_t cell_mv;
130 uint16_t cell_rest_mv;
131 uint8_t pct;
132 uint8_t level;
133 uint16_t r_cell_mohm;
134 uint8_t cells;
135} log_power_t;
137typedef struct {
138 uint32_t t_ms;
139 uint16_t lost;
140 uint8_t source;
141} log_drop_t;
142#pragma pack(pop)
143
144_Static_assert(sizeof(log_sector_hdr_t) == LOG_HDR_SIZE, "sector header");
145_Static_assert(sizeof(log_info_t) == 27, "LR_INFO");
146_Static_assert(sizeof(log_time_t) == 12, "LR_TIME");
147_Static_assert(sizeof(log_att_t) == 24, "LR_ATT");
148_Static_assert(sizeof(log_vert_t) == 25, "LR_VERT");
149_Static_assert(sizeof(log_flight_t) == 15, "LR_FLIGHT");
150_Static_assert(sizeof(log_event_t) == 11, "LR_EVENT");
151_Static_assert(sizeof(log_est_t) == 20, "LR_EST");
152_Static_assert(sizeof(log_power_t) == 19, "LR_POWER");
153_Static_assert(sizeof(log_drop_t) == 7, "LR_DROP");
154
155uint8_t log_crc8(const uint8_t *p, uint32_t n);
156uint16_t log_crc16(const uint8_t *p, uint32_t n);
157
158#endif /* LOG_FORMAT_H */
uint32_t n
Definition calib_mgr.c:35
#define LOG_HDR_SIZE
Definition log_format.h:32
uint16_t log_crc16(const uint8_t *p, uint32_t n)
Definition log_store.c:38
@ LR_INFO
first record of a log
Definition log_format.h:51
@ LR_POWER
battery, 10 Hz (BattTask)
Definition log_format.h:58
@ LR_TIME
wall clock: after LR_INFO, and when it is set
Definition log_format.h:52
@ LR_EST
estimator health, 10 Hz
Definition log_format.h:57
@ LR_EVENT
every EVENT of the flight core
Definition log_format.h:56
@ LR_ATT
attitude and IMU, 50 Hz
Definition log_format.h:53
@ LR_DROP
records lost because a queue was full
Definition log_format.h:59
@ LR_VERT
vertical estimate and loop, 50 Hz
Definition log_format.h:54
@ LR_FLIGHT
flight core state, 10 Hz
Definition log_format.h:55
uint8_t log_crc8(const uint8_t *p, uint32_t n)
Definition log_store.c:28
uint32_t t_ms
< LR_ATT
Definition log_format.h:79
uint32_t t_ms
< LR_DROP
Definition log_format.h:138
uint8_t source
0 ImuTask, 1 BattTask
Definition log_format.h:140
uint16_t lost
records dropped since the last LR_DROP
Definition log_format.h:139
uint16_t att_unc_cdeg
Definition log_format.h:116
uint16_t vib_mg
Definition log_format.h:117
uint8_t mag_interf_pct
Definition log_format.h:121
uint8_t cpu_pct
Definition log_format.h:120
uint16_t loop_hz
Definition log_format.h:118
uint16_t jitter_us
Definition log_format.h:119
uint32_t t_ms
< LR_EST
Definition log_format.h:114
uint32_t t_ms
< LR_EVENT
Definition log_format.h:107
int32_t arg
Definition log_format.h:110
uint8_t level
Definition log_format.h:108
uint16_t code
Definition log_format.h:109
uint32_t t_ms
< LR_FLIGHT
Definition log_format.h:99
uint8_t flags
bit0 in air, 1 landed, 2 RC stale, 3 geofence
Definition log_format.h:101
uint16_t silence_ms
app link
Definition log_format.h:103
uint8_t armed
Definition log_format.h:100
uint8_t format
Definition log_format.h:65
uint16_t sensors
CAPS bits
Definition log_format.h:67
uint32_t t0_ms
Definition log_format.h:66
char hw_rev
Definition log_format.h:64
uint32_t t_ms
< LR_POWER
Definition log_format.h:125
uint8_t level
PV2_BATT_*
Definition log_format.h:132
uint8_t pct
Definition log_format.h:131
uint8_t cells
bit7 = battery present
Definition log_format.h:134
uint16_t used_mah
Definition log_format.h:128
uint16_t vbat_mv
Definition log_format.h:126
uint16_t r_cell_mohm
Definition log_format.h:133
uint16_t cell_mv
sagged, filtered
Definition log_format.h:129
uint16_t cell_rest_mv
Definition log_format.h:130
int16_t current_ca
Definition log_format.h:127
sector header
Definition log_format.h:38
uint16_t log_id
increments for every new log
Definition log_format.h:41
uint16_t crc
CRC-16/CCITT-FALSE of the 18 bytes above
Definition log_format.h:46
uint32_t serial
global sector write counter: the newest sector has the highest
Definition log_format.h:40
uint16_t seq
sector index inside the log, 0 = first
Definition log_format.h:42
uint8_t format
LOG_FORMAT
Definition log_format.h:44
uint32_t t0_ms
uptime when the log started
Definition log_format.h:43
uint32_t t_ms
< LR_TIME: wall clock at uptime t_ms (set by the app)
Definition log_format.h:72
uint32_t unix_s
UTC, seconds since 1970
Definition log_format.h:73
int16_t tz_min
local time offset of the phone, minutes
Definition log_format.h:75
uint16_t ms
Definition log_format.h:74
uint8_t thrust
collective ×255
Definition log_format.h:91
uint8_t flags
bit0 alt valid, 1 ToF valid, 2 ToF ground, 3 flow usable, 4 alt loop
Definition log_format.h:95
uint32_t t_ms
< LR_VERT
Definition log_format.h:86
int32_t h_mm
altitude estimate
Definition log_format.h:87
int16_t vz_mms
Definition log_format.h:88
uint16_t tof_mm
0xFFFF n/a
Definition log_format.h:92
uint32_t baro_pa
0 n/a
Definition log_format.h:94
uint8_t flow_q
0xFF n/a
Definition log_format.h:93
int16_t vz_sp_mms
Definition log_format.h:90
int32_t h_sp_mm
height set point (when the altitude loop runs)
Definition log_format.h:89