APM:Libraries
LogStructure.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*
4  unfortunately these need to be macros because of a limitation of
5  named member structure initialisation in g++
6  */
7 #define LOG_PACKET_HEADER uint8_t head1, head2, msgid;
8 #define LOG_PACKET_HEADER_INIT(id) head1 : HEAD_BYTE1, head2 : HEAD_BYTE2, msgid : id
9 #define LOG_PACKET_HEADER_LEN 3 // bytes required for LOG_PACKET_HEADER
10 
11 // once the logging code is all converted we will remove these from
12 // this header
13 #define HEAD_BYTE1 0xA3 // Decimal 163
14 #define HEAD_BYTE2 0x95 // Decimal 149
15 
16 // structure used to define logging format
17 struct LogStructure {
18  uint8_t msg_type;
19  uint8_t msg_len;
20  const char *name;
21  const char *format;
22  const char *labels;
23  const char *units;
24  const char *multipliers;
25 };
26 
27 // maximum lengths of fields in LogStructure, including trailing nulls
28 static const uint8_t LS_NAME_SIZE = 5;
29 static const uint8_t LS_FORMAT_SIZE = 17;
30 static const uint8_t LS_LABELS_SIZE = 65;
31 static const uint8_t LS_UNITS_SIZE = 17;
32 static const uint8_t LS_MULTIPLIERS_SIZE = 17;
33 
34 /*
35  log structures common to all vehicle types
36  */
39  uint8_t type;
40  uint8_t length;
41  char name[4];
42  char format[16];
43  char labels[64];
44 };
45 
46 struct PACKED log_Unit {
48  uint64_t time_us;
49  char type;
50  char unit[64]; // you know, this might be overkill...
51 };
52 
55  uint64_t time_us;
56  char type;
57  double multiplier;
58 };
59 
62  uint64_t time_us;
63  uint8_t format_type;
64  char units[16];
65  char multipliers[16];
66 };
67 
68 struct UnitStructure {
69  const char ID;
70  const char *unit;
71 };
72 
74  const char ID;
75  const double multiplier;
76 };
77 
78 // all units here should be base units
79 // This does mean battery capacity is here as "amp*second"
80 // Please keep the names consistent with Tools/autotest/param_metadata/param.py:33
81 const struct UnitStructure log_Units[] = {
82  { '-', "" }, // no units e.g. Pi, or a string
83  { '?', "UNKNOWN" }, // Units which haven't been worked out yet....
84  { 'A', "A" }, // Ampere
85  { 'd', "deg" }, // of the angular variety, -180 to 180
86  { 'b', "B" }, // bytes
87  { 'k', "deg/s" }, // degrees per second. Degrees are NOT SI, but is some situations more user-friendly than radians
88  { 'D', "deglatitude" }, // degrees of latitude
89  { 'e', "deg/s/s" }, // degrees per second per second. Degrees are NOT SI, but is some situations more user-friendly than radians
90  { 'E', "rad/s" }, // radians per second
91  { 'G', "Gauss" }, // Gauss is not an SI unit, but 1 tesla = 10000 gauss so a simple replacement is not possible here
92  { 'h', "degheading" }, // 0.? to 359.?
93  { 'i', "A.s" }, // Ampere second
94  { 'J', "W.s" }, // Joule (Watt second)
95  // { 'l', "l" }, // litres
96  { 'L', "rad/s/s" }, // radians per second per second
97  { 'm', "m" }, // metres
98  { 'n', "m/s" }, // metres per second
99  // { 'N', "N" }, // Newton
100  { 'o', "m/s/s" }, // metres per second per second
101  { 'O', "degC" }, // degrees Celsius. Not SI, but Kelvin is too cumbersome for most users
102  { '%', "%" }, // percent
103  { 'S', "satellites" }, // number of satellites
104  { 's', "s" }, // seconds
105  { 'q', "rpm" }, // rounds per minute. Not SI, but sometimes more intuitive than Hertz
106  { 'r', "rad" }, // radians
107  { 'U', "deglongitude" }, // degrees of longitude
108  { 'u', "ppm" }, // pulses per minute
109  { 'U', "us" }, // pulse width modulation in microseconds
110  { 'v', "V" }, // Volt
111  { 'P', "Pa" }, // Pascal
112  { 'w', "Ohm" }, // Ohm
113  { 'z', "Hz" } // Hertz
114 };
115 
116 // this multiplier information applies to the raw value present in the
117 // log. Any adjustment implied by the format field (e.g. the "centi"
118 // in "centidegrees" is *IGNORED* for the purposes of scaling.
119 // Essentially "format" simply tells you the C-type, and format-type h
120 // (int16_t) is equivalent to format-type c (int16_t*100)
121 // tl;dr a GCS shouldn't/mustn't infer any scaling from the unit name
122 
124  { '-', 0 }, // no multiplier e.g. a string
125  { '?', 1 }, // multipliers which haven't been worked out yet....
126 // <leave a gap here, just in case....>
127  { '2', 1e2 },
128  { '1', 1e1 },
129  { '0', 1e0 },
130  { 'A', 1e-1 },
131  { 'B', 1e-2 },
132  { 'C', 1e-3 },
133  { 'D', 1e-4 },
134  { 'E', 1e-5 },
135  { 'F', 1e-6 },
136  { 'G', 1e-7 },
137 // <leave a gap here, just in case....>
138  { '!', 3.6 }, // (ampere*second => milliampere*hour) and (km/h => m/s)
139  { '/', 3600 }, // (ampere*second => ampere*hour)
140 };
141 
144  uint64_t time_us;
145  char name[16];
146  float value;
147 };
148 
149 struct PACKED log_DSF {
151  uint64_t time_us;
152  uint32_t dropped;
154  uint16_t blocks;
155  uint32_t bytes;
156  uint32_t buf_space_min;
157  uint32_t buf_space_max;
158  uint32_t buf_space_avg;
159 };
160 
161 struct PACKED log_GPS {
163  uint64_t time_us;
164  uint8_t status;
165  uint32_t gps_week_ms;
166  uint16_t gps_week;
167  uint8_t num_sats;
168  uint16_t hdop;
169  int32_t latitude;
170  int32_t longitude;
171  int32_t altitude;
174  float vel_z;
175  uint8_t used;
176 };
177 
178 struct PACKED log_GPA {
180  uint64_t time_us;
181  uint16_t vdop;
182  uint16_t hacc;
183  uint16_t vacc;
184  uint16_t sacc;
185  uint8_t have_vv;
186  uint32_t sample_ms;
187  uint16_t delta_ms;
188 };
189 
192  uint64_t time_us;
193  char msg[64];
194 };
195 
196 struct PACKED log_IMU {
198  uint64_t time_us;
199  float gyro_x, gyro_y, gyro_z;
200  float accel_x, accel_y, accel_z;
201  uint32_t gyro_error, accel_error;
202  float temperature;
203  uint8_t gyro_health, accel_health;
204  uint16_t gyro_rate, accel_rate;
205 };
206 
209  uint64_t time_us;
210  float delta_time, delta_vel_dt, delta_ang_dt;
211  float delta_ang_x, delta_ang_y, delta_ang_z;
212  float delta_vel_x, delta_vel_y, delta_vel_z;
213 };
214 
215 struct PACKED log_ISBH {
217  uint64_t time_us;
218  uint16_t seqno;
219  uint8_t sensor_type; // e.g. GYRO or ACCEL
220  uint8_t instance;
221  uint16_t multiplier;
222  uint16_t sample_count;
223  uint64_t sample_us;
225 };
226 static_assert(sizeof(log_ISBH) < 256, "log_ISBH is over-size");
227 
228 struct PACKED log_ISBD {
230  uint64_t time_us;
231  uint16_t isb_seqno;
232  uint16_t seqno; // seqno within isb_seqno
233  int16_t x[32];
234  int16_t y[32];
235  int16_t z[32];
236 };
237 static_assert(sizeof(log_ISBD) < 256, "log_ISBD is over-size");
238 
239 struct PACKED log_Vibe {
241  uint64_t time_us;
242  float vibe_x, vibe_y, vibe_z;
243  uint32_t clipping_0, clipping_1, clipping_2;
244 };
245 
248  uint32_t time_ms;
249  float delta_time;
259 };
260 
263  uint32_t time_ms;
264  uint8_t est_sta;
265  float est_x;
266  float est_y;
267  float est_z;
268  float rate_x;
269  float rate_y;
270  float rate_z;
271  float target_x;
272  float target_y;
273  float target_z;
274 };
275 
278  uint32_t time_ms;
279  int16_t rl_torque_cmd;
280  int16_t el_torque_cmd;
281  int16_t az_torque_cmd;
282 };
283 
284 struct PACKED log_RCIN {
286  uint64_t time_us;
287  uint16_t chan1;
288  uint16_t chan2;
289  uint16_t chan3;
290  uint16_t chan4;
291  uint16_t chan5;
292  uint16_t chan6;
293  uint16_t chan7;
294  uint16_t chan8;
295  uint16_t chan9;
296  uint16_t chan10;
297  uint16_t chan11;
298  uint16_t chan12;
299  uint16_t chan13;
300  uint16_t chan14;
301 };
302 
305  uint64_t time_us;
306  uint16_t chan1;
307  uint16_t chan2;
308  uint16_t chan3;
309  uint16_t chan4;
310  uint16_t chan5;
311  uint16_t chan6;
312  uint16_t chan7;
313  uint16_t chan8;
314  uint16_t chan9;
315  uint16_t chan10;
316  uint16_t chan11;
317  uint16_t chan12;
318  uint16_t chan13;
319  uint16_t chan14;
320 };
321 
322 struct PACKED log_RSSI {
324  uint64_t time_us;
325  float RXRSSI;
326 };
327 
328 struct PACKED log_BARO {
330  uint64_t time_us;
331  float altitude;
332  float pressure;
333  int16_t temperature;
334  float climbrate;
335  uint32_t sample_time_ms;
337  float ground_temp;
338 };
339 
340 struct PACKED log_AHRS {
342  uint64_t time_us;
343  int16_t roll;
344  int16_t pitch;
345  uint16_t yaw;
346  float alt;
347  int32_t lat;
348  int32_t lng;
349  float q1, q2, q3, q4;
350 };
351 
352 struct PACKED log_POS {
354  uint64_t time_us;
355  int32_t lat;
356  int32_t lng;
357  float alt;
360 };
361 
362 struct PACKED log_POWR {
364  uint64_t time_us;
365  float Vcc;
366  float Vservo;
367  uint16_t flags;
368  uint8_t safety_and_arm;
369 };
370 
371 struct PACKED log_EKF1 {
373  uint64_t time_us;
374  int16_t roll;
375  int16_t pitch;
376  uint16_t yaw;
377  float velN;
378  float velE;
379  float velD;
380  float posD_dot;
381  float posN;
382  float posE;
383  float posD;
384  int16_t gyrX;
385  int16_t gyrY;
386  int16_t gyrZ;
387  int32_t originHgt;
388 };
389 
390 struct PACKED log_EKF2 {
392  uint64_t time_us;
393  int8_t Ratio;
394  int8_t AZ1bias;
395  int8_t AZ2bias;
396  int16_t windN;
397  int16_t windE;
398  int16_t magN;
399  int16_t magE;
400  int16_t magD;
401  int16_t magX;
402  int16_t magY;
403  int16_t magZ;
404 };
405 
406 struct PACKED log_NKF2 {
408  uint64_t time_us;
409  int8_t AZbias;
410  int16_t scaleX;
411  int16_t scaleY;
412  int16_t scaleZ;
413  int16_t windN;
414  int16_t windE;
415  int16_t magN;
416  int16_t magE;
417  int16_t magD;
418  int16_t magX;
419  int16_t magY;
420  int16_t magZ;
421  uint8_t index;
422 };
423 
426  uint64_t time_us;
427  int16_t accBiasX;
428  int16_t accBiasY;
429  int16_t accBiasZ;
430  int16_t windN;
431  int16_t windE;
432  int16_t magN;
433  int16_t magE;
434  int16_t magD;
435  int16_t magX;
436  int16_t magY;
437  int16_t magZ;
438  uint8_t index;
439 };
440 
441 struct PACKED log_EKF3 {
443  uint64_t time_us;
444  int16_t innovVN;
445  int16_t innovVE;
446  int16_t innovVD;
447  int16_t innovPN;
448  int16_t innovPE;
449  int16_t innovPD;
450  int16_t innovMX;
451  int16_t innovMY;
452  int16_t innovMZ;
453  int16_t innovVT;
454 };
455 
456 struct PACKED log_NKF3 {
458  uint64_t time_us;
459  int16_t innovVN;
460  int16_t innovVE;
461  int16_t innovVD;
462  int16_t innovPN;
463  int16_t innovPE;
464  int16_t innovPD;
465  int16_t innovMX;
466  int16_t innovMY;
467  int16_t innovMZ;
468  int16_t innovYaw;
469  int16_t innovVT;
470 };
471 
472 struct PACKED log_EKF4 {
474  uint64_t time_us;
475  int16_t sqrtvarV;
476  int16_t sqrtvarP;
477  int16_t sqrtvarH;
478  int16_t sqrtvarMX;
479  int16_t sqrtvarMY;
480  int16_t sqrtvarMZ;
481  int16_t sqrtvarVT;
482  int8_t offsetNorth;
483  int8_t offsetEast;
484  uint16_t faults;
485  uint8_t timeouts;
486  uint16_t solution;
487  uint16_t gps;
488 };
489 
490 struct PACKED log_NKF4 {
492  uint64_t time_us;
493  int16_t sqrtvarV;
494  int16_t sqrtvarP;
495  int16_t sqrtvarH;
496  int16_t sqrtvarM;
497  int16_t sqrtvarVT;
498  float tiltErr;
499  int8_t offsetNorth;
500  int8_t offsetEast;
501  uint16_t faults;
502  uint8_t timeouts;
503  uint16_t solution;
504  uint16_t gps;
505  int8_t primary;
506 };
507 
508 struct PACKED log_EKF5 {
510  uint64_t time_us;
511  uint8_t normInnov;
512  int16_t FIX;
513  int16_t FIY;
514  int16_t AFI;
515  int16_t HAGL;
516  int16_t offset;
517  int16_t RI;
518  uint16_t meaRng;
519  uint16_t errHAGL;
520 };
521 
522 struct PACKED log_NKF5 {
524  uint64_t time_us;
525  uint8_t normInnov;
526  int16_t FIX;
527  int16_t FIY;
528  int16_t AFI;
529  int16_t HAGL;
530  int16_t offset;
531  int16_t RI;
532  uint16_t meaRng;
533  uint16_t errHAGL;
534  float angErr;
535  float velErr;
536  float posErr;
537 };
538 
541  uint64_t time_us;
542  float q1;
543  float q2;
544  float q3;
545  float q4;
546 };
547 
550  uint64_t time_us;
551  uint8_t ID; // beacon identifier
552  int16_t rng; // beacon range (cm)
553  int16_t innov; // beacon range innovation (cm)
554  uint16_t sqrtInnovVar; // sqrt of beacon range innovation variance (cm)
555  uint16_t testRatio; // beacon range innovation consistency test ratio *100
556  int16_t beaconPosN; // beacon north position (cm)
557  int16_t beaconPosE; // beacon east position (cm)
558  int16_t beaconPosD; // beacon down position (cm)
559  int16_t offsetHigh; // high estimate of vertical position offset of beacons rel to EKF origin (cm)
560  int16_t offsetLow; // low estimate of vertical position offset of beacons rel to EKF origin (cm)
561  int16_t posN; // North position of receiver rel to EKF origin (cm)
562  int16_t posE; // East position of receiver rel to EKF origin (cm)
563  int16_t posD; // Down position of receiver rel to EKF origin (cm)
564 };
565 
566 // visual odometry sensor data
569  uint64_t time_us;
570  float time_delta;
577  float confidence;
578 };
579 
582  uint64_t time_us;
583  float velInnovX;
584  float velInnovY;
585  float velInnovZ;
589 };
590 
593  uint64_t time_us;
594  float v00;
595  float v01;
596  float v02;
597  float v03;
598  float v04;
599  float v05;
600  float v06;
601  float v07;
602  float v08;
603  float v09;
604  float v10;
605  float v11;
606 };
607 
608 struct PACKED log_Cmd {
610  uint64_t time_us;
611  uint16_t command_total;
612  uint16_t sequence;
613  uint16_t command;
614  float param1;
615  float param2;
616  float param3;
617  float param4;
618  float latitude;
619  float longitude;
620  float altitude;
621  uint8_t frame;
622 };
623 
626  uint64_t time_us;
627  uint8_t rssi;
628  uint8_t remrssi;
629  uint8_t txbuf;
630  uint8_t noise;
631  uint8_t remnoise;
632  uint16_t rxerrors;
633  uint16_t fixed;
634 };
635 
638  uint64_t time_us;
639  uint32_t gps_time;
640  uint16_t gps_week;
641  int32_t latitude;
642  int32_t longitude;
643  int32_t altitude;
644  int32_t altitude_rel;
645  int32_t altitude_gps;
646  int16_t roll;
647  int16_t pitch;
648  uint16_t yaw;
649 };
650 
653  uint64_t time_us;
654  int16_t control_roll;
655  int16_t roll;
656  int16_t control_pitch;
657  int16_t pitch;
658  uint16_t control_yaw;
659  uint16_t yaw;
660  uint16_t error_rp;
661  uint16_t error_yaw;
662 };
663 
664 struct PACKED log_PID {
666  uint64_t time_us;
667  float desired;
668  float P;
669  float I;
670  float D;
671  float FF;
672  float AFF;
673 };
674 
677  uint64_t time_us;
678  float voltage;
682  float consumed_wh;
683  int16_t temperature; // degrees C * 100
684  float resistance;
685 };
686 
689  uint64_t time_us;
690  float voltage;
691  uint16_t cell_voltages[10];
692 };
693 
696  uint64_t time_us;
697  int16_t mag_x;
698  int16_t mag_y;
699  int16_t mag_z;
700  int16_t offset_x;
701  int16_t offset_y;
702  int16_t offset_z;
703  int16_t motor_offset_x;
704  int16_t motor_offset_y;
705  int16_t motor_offset_z;
706  uint8_t health;
707  uint32_t SUS;
708 };
709 
710 struct PACKED log_Mode {
712  uint64_t time_us;
713  uint8_t mode;
714  uint8_t mode_num;
715  uint8_t mode_reason;
716 };
717 
718 /*
719  rangefinder - support for 4 sensors
720  */
721 struct PACKED log_RFND {
723  uint64_t time_us;
724  uint16_t dist1;
725  uint8_t orient1;
726  uint16_t dist2;
727  uint8_t orient2;
728 };
729 
730 /*
731  terrain log structure
732  */
735  uint64_t time_us;
736  uint8_t status;
737  int32_t lat;
738  int32_t lng;
739  uint16_t spacing;
742  uint16_t pending;
743  uint16_t loaded;
744 };
745 
746 /*
747  UBlox logging
748  */
749 struct PACKED log_Ubx1 {
751  uint64_t time_us;
752  uint8_t instance;
753  uint16_t noisePerMS;
754  uint8_t jamInd;
755  uint8_t aPower;
756  uint16_t agcCnt;
757  uint32_t config;
758 };
759 
760 struct PACKED log_Ubx2 {
762  uint64_t time_us;
763  uint8_t instance;
764  int8_t ofsI;
765  uint8_t magI;
766  int8_t ofsQ;
767  uint8_t magQ;
768 };
769 
772  uint64_t time_us;
773  int32_t iTOW;
774  int16_t week;
775  uint8_t numSV;
776  uint8_t sv;
777  double cpMes;
778  double prMes;
779  float doMes;
780  int8_t mesQI;
781  int8_t cno;
782  uint8_t lli;
783 };
784 
787  uint64_t time_us;
788  double rcvTow;
789  uint16_t week;
790  int8_t leapS;
791  uint8_t numMeas;
792  uint8_t recStat;
793 };
794 
797  uint64_t time_us;
798  double prMes;
799  double cpMes;
800  float doMes;
801  uint8_t gnssId;
802  uint8_t svId;
803  uint8_t freqId;
804  uint16_t locktime;
805  uint8_t cno;
806  uint8_t prStdev;
807  uint8_t cpStdev;
808  uint8_t doStdev;
809  uint8_t trkStat;
810 };
811 
814  uint64_t time_us;
815  uint32_t TOW;
816  uint16_t WNc;
817  uint8_t Mode;
818  uint8_t Error;
819  double Latitude;
820  double Longitude;
821  double Height;
822  float Undulation;
823  float Vn;
824  float Ve;
825  float Vu;
826  float COG;
827 };
828 
829 struct PACKED log_Esc {
831  uint64_t time_us;
832  int32_t rpm;
833  uint16_t voltage;
834  uint16_t current;
835  int16_t temperature;
836  uint16_t current_tot;
837 };
838 
841  uint64_t time_us;
842  float airspeed;
844  int16_t temperature;
845  float rawpressure;
846  float offset;
847  bool use;
848  bool healthy;
849  uint8_t primary;
850 };
851 
854  uint64_t time_us;
855  uint64_t sample_us;
856  float AccX, AccY, AccZ;
857 };
858 
859 struct PACKED log_GYRO {
861  uint64_t time_us;
862  uint64_t sample_us;
863  float GyrX, GyrY, GyrZ;
864 };
865 
868  uint32_t timestamp;
869  uint32_t seqno;
870  uint32_t dropped;
871  uint32_t retries;
872  uint32_t resends;
873  uint8_t internal_errors; // uint8_t - wishful thinking?
874  uint8_t state_free_avg;
875  uint8_t state_free_min;
876  uint8_t state_free_max;
880  uint8_t state_sent_avg;
881  uint8_t state_sent_min;
882  uint8_t state_sent_max;
883  // uint8_t state_retry_avg;
884  // uint8_t state_retry_min;
885  // uint8_t state_retry_max;
886 };
887 
888 struct PACKED log_ORGN {
890  uint64_t time_us;
891  uint8_t origin_type;
892  int32_t latitude;
893  int32_t longitude;
894  int32_t altitude;
895 };
896 
897 struct PACKED log_RPM {
899  uint64_t time_us;
900  float rpm1;
901  float rpm2;
902 };
903 
904 struct PACKED log_Rate {
906  uint64_t time_us;
908  float roll;
909  float roll_out;
911  float pitch;
912  float pitch_out;
913  float control_yaw;
914  float yaw;
915  float yaw_out;
917  float accel;
918  float accel_out;
919 };
920 
921 // #if SBP_HW_LOGGING
922 
925  uint64_t time_us;
926  uint32_t tow;
927  int32_t lat;
928  int32_t lon;
929  int32_t alt;
930  uint8_t n_sats;
931  uint8_t flags;
932 };
933 
936  uint64_t time_us;
940 };
941 
944  uint64_t time_us;
945  uint16_t msg_type;
946  uint16_t sender_id;
947  uint8_t index;
948  uint8_t pages;
949  uint8_t msg_len;
950  uint8_t res;
951  uint8_t data[48];
952 };
953 
956  uint64_t time_us;
957  uint16_t msg_type;
958  uint16_t sender_id;
959  uint8_t index;
960  uint8_t pages;
961  uint8_t msg_len;
962  uint8_t res;
963  uint8_t data[104];
964 };
965 
968  uint64_t time_us;
969  uint16_t wn;
970  uint32_t tow;
971  int32_t ns_residual;
972  uint8_t level;
973  uint8_t quality;
974 };
975 
978  uint64_t time_us;
979  uint8_t total;
980  uint8_t sequence;
981  int32_t latitude;
982  int32_t longitude;
983  int16_t altitude;
984 };
985 
988  uint64_t time_us;
989  float AOA;
990  float SSA;
991 };
992 
995  uint64_t time_us;
996  uint8_t health;
997  uint8_t count;
998  float dist0;
999  float dist1;
1000  float dist2;
1001  float dist3;
1002  float posx;
1003  float posy;
1004  float posz;
1005 };
1006 
1007 // proximity sensor logging
1010  uint64_t time_us;
1011  uint8_t health;
1012  float dist0;
1013  float dist45;
1014  float dist90;
1015  float dist135;
1016  float dist180;
1017  float dist225;
1018  float dist270;
1019  float dist315;
1020  float distup;
1023 };
1024 
1027  uint64_t time_us;
1029  uint16_t num_loops;
1030  uint32_t max_time;
1031  uint32_t mem_avail;
1032  uint16_t load;
1033 };
1034 
1037  uint64_t time_us;
1038  uint8_t active;
1039  uint16_t num_points;
1040  uint16_t max_points;
1041  uint8_t action;
1042  float N;
1043  float E;
1044  float D;
1045 };
1046 
1049  uint64_t time_us;
1050  uint8_t stage;
1052  int32_t target_lat;
1053  int32_t target_lng;
1054  int32_t target_alt;
1057  float l1_i;
1058  int32_t loiter_sum_cd;
1059  float desired;
1060  float P;
1061  float I;
1062  float D;
1063 };
1064 
1065 // #endif // SBP_HW_LOGGING
1066 
1067 // FMT messages define all message formats other than FMT
1068 // UNIT messages define units which can be referenced by FMTU messages
1069 // FMTU messages associate types (e.g. centimeters/second/second) to FMT message fields
1070 
1071 #define ACC_LABELS "TimeUS,SampleUS,AccX,AccY,AccZ"
1072 #define ACC_FMT "QQfff"
1073 #define ACC_UNITS "ssnnn"
1074 #define ACC_MULTS "FF000"
1075 
1076 // see "struct sensor" in AP_Baro.h and "Log_Write_Baro":
1077 #define BARO_LABELS "TimeUS,Alt,Press,Temp,CRt,SMS,Offset,GndTemp"
1078 #define BARO_FMT "QffcfIff"
1079 #define BARO_UNITS "smPOnsmO"
1080 #define BARO_MULTS "F00B0C?0"
1081 
1082 #define ESC_LABELS "TimeUS,RPM,Volt,Curr,Temp,CTot"
1083 #define ESC_FMT "QeCCcH"
1084 #define ESC_UNITS "sqvAO-"
1085 #define ESC_MULTS "FBBBB-"
1086 
1087 #define GPA_LABELS "TimeUS,VDop,HAcc,VAcc,SAcc,VV,SMS,Delta"
1088 #define GPA_FMT "QCCCCBIH"
1089 #define GPA_UNITS "smmmn-ss"
1090 #define GPA_MULTS "FBBBB-CF"
1091 
1092 // see "struct GPS_State" and "Log_Write_GPS":
1093 #define GPS_LABELS "TimeUS,Status,GMS,GWk,NSats,HDop,Lat,Lng,Alt,Spd,GCrs,VZ,U"
1094 #define GPS_FMT "QBIHBcLLefffB"
1095 #define GPS_UNITS "s---SmDUmnhn-"
1096 #define GPS_MULTS "F---0BGGBBB0-"
1097 
1098 #define GYR_LABELS "TimeUS,SampleUS,GyrX,GyrY,GyrZ"
1099 #define GYR_FMT "QQfff"
1100 #define GYR_UNITS "ssEEE"
1101 #define GYR_MULTS "FF000"
1102 
1103 #define IMT_LABELS "TimeUS,DelT,DelvT,DelaT,DelAX,DelAY,DelAZ,DelVX,DelVY,DelVZ"
1104 #define IMT_FMT "Qfffffffff"
1105 #define IMT_UNITS "ssssrrrnnn"
1106 #define IMT_MULTS "FF00000000"
1107 
1108 #define ISBH_LABELS "TimeUS,N,type,instance,mul,smp_cnt,SampleUS,smp_rate"
1109 #define ISBH_FMT "QHBBHHQf"
1110 #define ISBH_UNITS "s-----sz"
1111 #define ISBH_MULTS "F-----F-"
1112 
1113 #define ISBD_LABELS "TimeUS,N,seqno,x,y,z"
1114 #define ISBD_FMT "QHHaaa"
1115 #define ISBD_UNITS "s--ooo"
1116 #define ISBD_MULTS "F--???"
1117 
1118 #define IMU_LABELS "TimeUS,GyrX,GyrY,GyrZ,AccX,AccY,AccZ,EG,EA,T,GH,AH,GHz,AHz"
1119 #define IMU_FMT "QffffffIIfBBHH"
1120 #define IMU_UNITS "sEEEooo--O--zz"
1121 #define IMU_MULTS "F000000-----00"
1122 
1123 #define MAG_LABELS "TimeUS,MagX,MagY,MagZ,OfsX,OfsY,OfsZ,MOfsX,MOfsY,MOfsZ,Health,S"
1124 #define MAG_FMT "QhhhhhhhhhBI"
1125 #define MAG_UNITS "sGGGGGGGGG-s"
1126 #define MAG_MULTS "FCCCCCCCCC-F"
1127 
1128 #define PID_LABELS "TimeUS,Des,P,I,D,FF,AFF"
1129 #define PID_FMT "Qffffff"
1130 #define PID_UNITS "s------"
1131 #define PID_MULTS "F------"
1132 
1133 #define QUAT_LABELS "TimeUS,Q1,Q2,Q3,Q4"
1134 #define QUAT_FMT "Qffff"
1135 #define QUAT_UNITS "s????"
1136 #define QUAT_MULTS "F????"
1137 
1138 #define CURR_LABELS "TimeUS,Volt,VoltR,Curr,CurrTot,EnrgTot,Temp,Res"
1139 #define CURR_FMT "Qfffffcf"
1140 #define CURR_UNITS "svvA?JOw"
1141 #define CURR_MULTS "F000?/?0"
1142 
1143 #define CURR_CELL_LABELS "TimeUS,Volt,V1,V2,V3,V4,V5,V6,V7,V8,V9,V10"
1144 #define CURR_CELL_FMT "QfHHHHHHHHHH"
1145 #define CURR_CELL_UNITS "svvvvvvvvvvv"
1146 #define CURR_CELL_MULTS "F00000000000"
1147 
1148 #define ARSP_LABELS "TimeUS,Airspeed,DiffPress,Temp,RawPress,Offset,U,Health,Primary"
1149 #define ARSP_FMT "QffcffBBB"
1150 #define ARSP_UNITS "snPOPP---"
1151 #define ARSP_MULTS "F00B00---"
1152 
1153 /*
1154 Format characters in the format string for binary log messages
1155  a : int16_t[32]
1156  b : int8_t
1157  B : uint8_t
1158  h : int16_t
1159  H : uint16_t
1160  i : int32_t
1161  I : uint32_t
1162  f : float
1163  d : double
1164  n : char[4]
1165  N : char[16]
1166  Z : char[64]
1167  c : int16_t * 100
1168  C : uint16_t * 100
1169  e : int32_t * 100
1170  E : uint32_t * 100
1171  L : int32_t latitude/longitude
1172  M : uint8_t flight mode
1173  q : int64_t
1174  Q : uint64_t
1175  */
1176 
1177 // messages for all boards
1178 #define LOG_BASE_STRUCTURES \
1179  { LOG_FORMAT_MSG, sizeof(log_Format), \
1180  "FMT", "BBnNZ", "Type,Length,Name,Format,Columns", "-b---", "-----" }, \
1181  { LOG_UNIT_MSG, sizeof(log_Unit), \
1182  "UNIT", "QbZ", "TimeUS,Id,Label", "s--","F--" }, \
1183  { LOG_FORMAT_UNITS_MSG, sizeof(log_Format_Units), \
1184  "FMTU", "QBNN", "TimeUS,FmtType,UnitIds,MultIds","s---", "F---" }, \
1185  { LOG_MULT_MSG, sizeof(log_Format_Multiplier), \
1186  "MULT", "Qbd", "TimeUS,Id,Mult", "s--","F--" }, \
1187  { LOG_PARAMETER_MSG, sizeof(log_Parameter), \
1188  "PARM", "QNf", "TimeUS,Name,Value", "s--", "F--" }, \
1189  { LOG_GPS_MSG, sizeof(log_GPS), \
1190  "GPS", GPS_FMT, GPS_LABELS, GPS_UNITS, GPS_MULTS }, \
1191  { LOG_GPS2_MSG, sizeof(log_GPS), \
1192  "GPS2", GPS_FMT, GPS_LABELS, GPS_UNITS, GPS_MULTS }, \
1193  { LOG_GPSB_MSG, sizeof(log_GPS), \
1194  "GPSB", GPS_FMT, GPS_LABELS, GPS_UNITS, GPS_MULTS }, \
1195  { LOG_GPA_MSG, sizeof(log_GPA), \
1196  "GPA", GPA_FMT, GPA_LABELS, GPA_UNITS, GPA_MULTS }, \
1197  { LOG_GPA2_MSG, sizeof(log_GPA), \
1198  "GPA2", GPA_FMT, GPA_LABELS, GPA_UNITS, GPA_MULTS }, \
1199  { LOG_GPAB_MSG, sizeof(log_GPA), \
1200  "GPAB", GPA_FMT, GPA_LABELS, GPA_UNITS, GPA_MULTS }, \
1201  { LOG_IMU_MSG, sizeof(log_IMU), \
1202  "IMU", IMU_FMT, IMU_LABELS, IMU_UNITS, IMU_MULTS }, \
1203  { LOG_MESSAGE_MSG, sizeof(log_Message), \
1204  "MSG", "QZ", "TimeUS,Message", "s-", "F-"}, \
1205  { LOG_RCIN_MSG, sizeof(log_RCIN), \
1206  "RCIN", "QHHHHHHHHHHHHHH", "TimeUS,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14", "sUUUUUUUUUUUUUU", "F--------------" }, \
1207  { LOG_RCOUT_MSG, sizeof(log_RCOUT), \
1208  "RCOU", "QHHHHHHHHHHHHHH", "TimeUS,C1,C2,C3,C4,C5,C6,C7,C8,C9,C10,C11,C12,C13,C14", "sUUUUUUUUUUUUUU", "F--------------" }, \
1209  { LOG_RSSI_MSG, sizeof(log_RSSI), \
1210  "RSSI", "Qf", "TimeUS,RXRSSI", "s-", "F-" }, \
1211  { LOG_BARO_MSG, sizeof(log_BARO), \
1212  "BARO", BARO_FMT, BARO_LABELS, BARO_UNITS, BARO_MULTS }, \
1213  { LOG_POWR_MSG, sizeof(log_POWR), \
1214  "POWR","QffHB","TimeUS,Vcc,VServo,Flags,Safety", "svv--", "FBB--" }, \
1215  { LOG_CMD_MSG, sizeof(log_Cmd), \
1216  "CMD", "QHHHfffffffB","TimeUS,CTot,CNum,CId,Prm1,Prm2,Prm3,Prm4,Lat,Lng,Alt,Frame", "s-------DUm-", "F-------GG0-" }, \
1217  { LOG_RADIO_MSG, sizeof(log_Radio), \
1218  "RAD", "QBBBBBHH", "TimeUS,RSSI,RemRSSI,TxBuf,Noise,RemNoise,RxErrors,Fixed", "s-------", "F-------" }, \
1219  { LOG_CAMERA_MSG, sizeof(log_Camera), \
1220  "CAM", "QIHLLeeeccC","TimeUS,GPSTime,GPSWeek,Lat,Lng,Alt,RelAlt,GPSAlt,Roll,Pitch,Yaw", "s--DUmmmddd", "F--GGBBBBBB" }, \
1221  { LOG_TRIGGER_MSG, sizeof(log_Camera), \
1222  "TRIG", "QIHLLeeeccC","TimeUS,GPSTime,GPSWeek,Lat,Lng,Alt,RelAlt,GPSAlt,Roll,Pitch,Yaw", "s--DUmmmddd", "F--GGBBBBBB" }, \
1223  { LOG_ARSP_MSG, sizeof(log_AIRSPEED), "ARSP", ARSP_FMT, ARSP_LABELS, ARSP_UNITS, ARSP_MULTS }, \
1224  { LOG_ASP2_MSG, sizeof(log_AIRSPEED), "ASP2", ARSP_FMT, ARSP_LABELS, ARSP_UNITS, ARSP_MULTS }, \
1225  { LOG_CURRENT_MSG, sizeof(log_Current), \
1226  "BAT", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
1227  { LOG_CURRENT2_MSG, sizeof(log_Current), \
1228  "BAT2", CURR_FMT,CURR_LABELS,CURR_UNITS,CURR_MULTS }, \
1229  { LOG_CURRENT_CELLS_MSG, sizeof(log_Current_Cells), \
1230  "BCL", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
1231  { LOG_CURRENT_CELLS2_MSG, sizeof(log_Current_Cells), \
1232  "BCL2", CURR_CELL_FMT, CURR_CELL_LABELS, CURR_CELL_UNITS, CURR_CELL_MULTS }, \
1233  { LOG_ATTITUDE_MSG, sizeof(log_Attitude),\
1234  "ATT", "QccccCCCC", "TimeUS,DesRoll,Roll,DesPitch,Pitch,DesYaw,Yaw,ErrRP,ErrYaw", "sddddhhdh", "FBBBBBBBB" }, \
1235  { LOG_COMPASS_MSG, sizeof(log_Compass), \
1236  "MAG", MAG_FMT, MAG_LABELS, MAG_UNITS, MAG_MULTS }, \
1237  { LOG_MODE_MSG, sizeof(log_Mode), \
1238  "MODE", "QMBB", "TimeUS,Mode,ModeNum,Rsn", "s---", "F---" }, \
1239  { LOG_RFND_MSG, sizeof(log_RFND), \
1240  "RFND", "QCBCB", "TimeUS,Dist1,Orient1,Dist2,Orient2", "sm-m-", "FB-B-" }, \
1241  { LOG_DF_MAV_STATS, sizeof(log_DF_MAV_Stats), \
1242  "DMS", "IIIIIBBBBBBBBBB", "TimeMS,N,Dp,RT,RS,Er,Fa,Fmn,Fmx,Pa,Pmn,Pmx,Sa,Smn,Smx", "s--------------", "C--------------" }, \
1243  { LOG_BEACON_MSG, sizeof(log_Beacon), \
1244  "BCN", "QBBfffffff", "TimeUS,Health,Cnt,D0,D1,D2,D3,PosX,PosY,PosZ", "s--mmmmmmm", "F--BBBBBBB" }, \
1245  { LOG_PROXIMITY_MSG, sizeof(log_Proximity), \
1246  "PRX", "QBfffffffffff", "TimeUS,Health,D0,D45,D90,D135,D180,D225,D270,D315,DUp,CAn,CDis", "s-mmmmmmmmmhm", "F-BBBBBBBBB00" }, \
1247  { LOG_PERFORMANCE_MSG, sizeof(log_Performance), \
1248  "PM", "QHHIIH", "TimeUS,NLon,NLoop,MaxT,Mem,Load", "s---b%", "F---0A" }, \
1249  { LOG_SRTL_MSG, sizeof(log_SRTL), \
1250  "SRTL", "QBHHBfff", "TimeUS,Active,NumPts,MaxPts,Action,N,E,D", "s----mmm", "F----000" }
1251 
1252 // messages for more advanced boards
1253 #define LOG_EXTRA_STRUCTURES \
1254  { LOG_IMU2_MSG, sizeof(log_IMU), \
1255  "IMU2", IMU_FMT, IMU_LABELS, IMU_UNITS, IMU_MULTS }, \
1256  { LOG_IMU3_MSG, sizeof(log_IMU), \
1257  "IMU3", IMU_FMT, IMU_LABELS, IMU_UNITS, IMU_MULTS }, \
1258  { LOG_AHR2_MSG, sizeof(log_AHRS), \
1259  "AHR2","QccCfLLffff","TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng,Q1,Q2,Q3,Q4","sddhmDU????", "FBBB0GG????" }, \
1260  { LOG_POS_MSG, sizeof(log_POS), \
1261  "POS","QLLfff","TimeUS,Lat,Lng,Alt,RelHomeAlt,RelOriginAlt", "sDUmmm", "FGG000" }, \
1262  { LOG_SIMSTATE_MSG, sizeof(log_AHRS), \
1263  "SIM","QccCfLLffff","TimeUS,Roll,Pitch,Yaw,Alt,Lat,Lng,Q1,Q2,Q3,Q4", "sddhmDU????", "FBBB0GG????" }, \
1264  { LOG_NKF1_MSG, sizeof(log_EKF1), \
1265  "NKF1","QccCfffffffccce","TimeUS,Roll,Pitch,Yaw,VN,VE,VD,dPD,PN,PE,PD,GX,GY,GZ,OH", "sddhnnnnmmmkkkm", "FBBB0000000BBBB" }, \
1266  { LOG_NKF2_MSG, sizeof(log_NKF2), \
1267  "NKF2","QbccccchhhhhhB","TimeUS,AZbias,GSX,GSY,GSZ,VWN,VWE,MN,ME,MD,MX,MY,MZ,MI", "s----nnGGGGGG-", "F----BBCCCCCC-" }, \
1268  { LOG_NKF3_MSG, sizeof(log_NKF3), \
1269  "NKF3","Qcccccchhhcc","TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IYAW,IVT", "snnnmmmGGG??", "FBBBBBBCCCBB" }, \
1270  { LOG_NKF4_MSG, sizeof(log_NKF4), \
1271  "NKF4","QcccccfbbHBHHb","TimeUS,SV,SP,SH,SM,SVT,errRP,OFN,OFE,FS,TS,SS,GPS,PI", "s------??-----", "F------??-----" }, \
1272  { LOG_NKF5_MSG, sizeof(log_NKF5), \
1273  "NKF5","QBhhhcccCCfff","TimeUS,NI,FIX,FIY,AFI,HAGL,offset,RI,rng,Herr,eAng,eVel,ePos", "s----m???mrnm", "F----BBBBB000" }, \
1274  { LOG_NKF6_MSG, sizeof(log_EKF1), \
1275  "NKF6","QccCfffffffccce","TimeUS,Roll,Pitch,Yaw,VN,VE,VD,dPD,PN,PE,PD,GX,GY,GZ,OH", "sddhnnn-mmmkkkm", "FBBB000-000BBBB" }, \
1276  { LOG_NKF7_MSG, sizeof(log_NKF2), \
1277  "NKF7","QbccccchhhhhhB","TimeUS,AZbias,GSX,GSY,GSZ,VWN,VWE,MN,ME,MD,MX,MY,MZ,MI", "s----nnGGGGGG-", "F----BBCCCCCC-" }, \
1278  { LOG_NKF8_MSG, sizeof(log_NKF3), \
1279  "NKF8","Qcccccchhhcc","TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IYAW,IVT", "snnnmmmGGGd?", "FBBBBBBCCCBB" }, \
1280  { LOG_NKF9_MSG, sizeof(log_NKF4), \
1281  "NKF9","QcccccfbbHBHHb","TimeUS,SV,SP,SH,SM,SVT,errRP,OFN,OFE,FS,TS,SS,GPS,PI", "s-----???-----", "F-----???-----" }, \
1282  { LOG_NKF10_MSG, sizeof(log_RngBcnDebug), \
1283  "NKF0","QBccCCcccccccc","TimeUS,ID,rng,innov,SIV,TR,BPN,BPE,BPD,OFH,OFL,OFN,OFE,OFD", "s-m---mmmmmmmm", "F-B---BBBBBBBB" }, \
1284  { LOG_NKQ1_MSG, sizeof(log_Quaternion), "NKQ1", QUAT_FMT, QUAT_LABELS, QUAT_UNITS, QUAT_MULTS }, \
1285  { LOG_NKQ2_MSG, sizeof(log_Quaternion), "NKQ2", QUAT_FMT, QUAT_LABELS, QUAT_UNITS, QUAT_MULTS }, \
1286  { LOG_XKF1_MSG, sizeof(log_EKF1), \
1287  "XKF1","QccCfffffffccce","TimeUS,Roll,Pitch,Yaw,VN,VE,VD,dPD,PN,PE,PD,GX,GY,GZ,OH", "sddhnnnnmmmkkkm", "FBBB0000000BBBB" }, \
1288  { LOG_XKF2_MSG, sizeof(log_NKF2a), \
1289  "XKF2","QccccchhhhhhB","TimeUS,AX,AY,AZ,VWN,VWE,MN,ME,MD,MX,MY,MZ,MI", "s---nnGGGGGG-", "F---BBCCCCCC-" }, \
1290  { LOG_XKF3_MSG, sizeof(log_NKF3), \
1291  "XKF3","Qcccccchhhcc","TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IYAW,IVT", "snnnmmmGGG??", "FBBBBBBCCCBB" }, \
1292  { LOG_XKF4_MSG, sizeof(log_NKF4), \
1293  "XKF4","QcccccfbbHBHHb","TimeUS,SV,SP,SH,SM,SVT,errRP,OFN,OFE,FS,TS,SS,GPS,PI", "s------??-----", "F------??-----" }, \
1294  { LOG_XKF5_MSG, sizeof(log_NKF5), \
1295  "XKF5","QBhhhcccCCfff","TimeUS,NI,FIX,FIY,AFI,HAGL,offset,RI,rng,Herr,eAng,eVel,ePos", "s----m???mrnm", "F----BBBBB000" }, \
1296  { LOG_XKF6_MSG, sizeof(log_EKF1), \
1297  "XKF6","QccCfffffffccce","TimeUS,Roll,Pitch,Yaw,VN,VE,VD,dPD,PN,PE,PD,GX,GY,GZ,OH", "sddhnnn-mmmkkkm", "FBBB000-000BBBB" }, \
1298  { LOG_XKF7_MSG, sizeof(log_NKF2a), \
1299  "XKF7","QccccchhhhhhB","TimeUS,AX,AY,AZ,VWN,VWE,MN,ME,MD,MX,MY,MZ,MI", "s---nnGGGGGG-", "F---BBCCCCCC-" }, \
1300  { LOG_XKF8_MSG, sizeof(log_NKF3), \
1301  "XKF8","Qcccccchhhcc","TimeUS,IVN,IVE,IVD,IPN,IPE,IPD,IMX,IMY,IMZ,IYAW,IVT", "snnnmmmGGGd?", "FBBBBBBCCCBB" }, \
1302  { LOG_XKF9_MSG, sizeof(log_NKF4), \
1303  "XKF9","QcccccfbbHBHHb","TimeUS,SV,SP,SH,SM,SVT,errRP,OFN,OFE,FS,TS,SS,GPS,PI", "s-----???-----", "F-----???-----" }, \
1304  { LOG_XKF10_MSG, sizeof(log_RngBcnDebug), \
1305  "XKF0","QBccCCcccccccc","TimeUS,ID,rng,innov,SIV,TR,BPN,BPE,BPD,OFH,OFL,OFN,OFE,OFD", "s-m---mmmmmmmm", "F-B---BBBBBBBB" }, \
1306  { LOG_XKQ1_MSG, sizeof(log_Quaternion), "XKQ1", QUAT_FMT, QUAT_LABELS, QUAT_UNITS, QUAT_MULTS }, \
1307  { LOG_XKQ2_MSG, sizeof(log_Quaternion), "XKQ2", QUAT_FMT, QUAT_LABELS, QUAT_UNITS, QUAT_MULTS }, \
1308  { LOG_XKFD_MSG, sizeof(log_ekfBodyOdomDebug), \
1309  "XKFD","Qffffff","TimeUS,IX,IY,IZ,IVX,IVY,IVZ", "s------", "F------" }, \
1310  { LOG_XKV1_MSG, sizeof(log_ekfStateVar), \
1311  "XKV1","Qffffffffffff","TimeUS,V00,V01,V02,V03,V04,V05,V06,V07,V08,V09,V10,V11", "s------------", "F------------" }, \
1312  { LOG_XKV2_MSG, sizeof(log_ekfStateVar), \
1313  "XKV2","Qffffffffffff","TimeUS,V12,V13,V14,V15,V16,V17,V18,V19,V20,V21,V22,V23", "s------------", "F------------" }, \
1314  { LOG_TERRAIN_MSG, sizeof(log_TERRAIN), \
1315  "TERR","QBLLHffHH","TimeUS,Status,Lat,Lng,Spacing,TerrH,CHeight,Pending,Loaded", "s-DU-mm--", "F-GG-00--" }, \
1316  { LOG_GPS_UBX1_MSG, sizeof(log_Ubx1), \
1317  "UBX1", "QBHBBHI", "TimeUS,Instance,noisePerMS,jamInd,aPower,agcCnt,config", "s------", "F------" }, \
1318  { LOG_GPS_UBX2_MSG, sizeof(log_Ubx2), \
1319  "UBX2", "QBbBbB", "TimeUS,Instance,ofsI,magI,ofsQ,magQ", "s-----", "F-----" }, \
1320  { LOG_GPS2_UBX1_MSG, sizeof(log_Ubx1), \
1321  "UBY1", "QBHBBHI", "TimeUS,Instance,noisePerMS,jamInd,aPower,agcCnt,config", "s------", "F------" }, \
1322  { LOG_GPS2_UBX2_MSG, sizeof(log_Ubx2), \
1323  "UBY2", "QBbBbB", "TimeUS,Instance,ofsI,magI,ofsQ,magQ", "s-----", "F-----" }, \
1324  { LOG_GPS_RAW_MSG, sizeof(log_GPS_RAW), \
1325  "GRAW", "QIHBBddfBbB", "TimeUS,WkMS,Week,numSV,sv,cpMes,prMes,doMes,mesQI,cno,lli", "s--S-------", "F--0-------" }, \
1326  { LOG_GPS_RAWH_MSG, sizeof(log_GPS_RAWH), \
1327  "GRXH", "QdHbBB", "TimeUS,rcvTime,week,leapS,numMeas,recStat", "s-----", "F-----" }, \
1328  { LOG_GPS_RAWS_MSG, sizeof(log_GPS_RAWS), \
1329  "GRXS", "QddfBBBHBBBBB", "TimeUS,prMes,cpMes,doMes,gnss,sv,freq,lock,cno,prD,cpD,doD,trk", "s------------", "F------------" }, \
1330  { LOG_GPS_SBF_EVENT_MSG, sizeof(log_GPS_SBF_EVENT), \
1331  "SBFE", "QIHBBdddfffff", "TimeUS,TOW,WN,Mode,Err,Lat,Lng,Height,Undul,Vn,Ve,Vu,COG", "s----DUm-nnnh", "F----000-0000" }, \
1332  { LOG_ESC1_MSG, sizeof(log_Esc), \
1333  "ESC1", ESC_FMT, ESC_LABELS, ESC_UNITS, ESC_MULTS }, \
1334  { LOG_ESC2_MSG, sizeof(log_Esc), \
1335  "ESC2", ESC_FMT, ESC_LABELS, ESC_UNITS, ESC_MULTS }, \
1336  { LOG_ESC3_MSG, sizeof(log_Esc), \
1337  "ESC3", ESC_FMT, ESC_LABELS, ESC_UNITS, ESC_MULTS }, \
1338  { LOG_ESC4_MSG, sizeof(log_Esc), \
1339  "ESC4", ESC_FMT, ESC_LABELS, ESC_UNITS, ESC_MULTS }, \
1340  { LOG_ESC5_MSG, sizeof(log_Esc), \
1341  "ESC5", ESC_FMT, ESC_LABELS, ESC_UNITS, ESC_MULTS }, \
1342  { LOG_ESC6_MSG, sizeof(log_Esc), \
1343  "ESC6", ESC_FMT, ESC_LABELS, ESC_UNITS, ESC_MULTS }, \
1344  { LOG_ESC7_MSG, sizeof(log_Esc), \
1345  "ESC7", ESC_FMT, ESC_LABELS, ESC_UNITS, ESC_MULTS }, \
1346  { LOG_ESC8_MSG, sizeof(log_Esc), \
1347  "ESC8", ESC_FMT, ESC_LABELS, ESC_UNITS, ESC_MULTS }, \
1348  { LOG_COMPASS2_MSG, sizeof(log_Compass), \
1349  "MAG2",MAG_FMT, MAG_LABELS, MAG_UNITS, MAG_MULTS }, \
1350  { LOG_COMPASS3_MSG, sizeof(log_Compass), \
1351  "MAG3",MAG_FMT, MAG_LABELS, MAG_UNITS, MAG_MULTS }, \
1352  { LOG_ACC1_MSG, sizeof(log_ACCEL), \
1353  "ACC1", ACC_FMT, ACC_LABELS, ACC_UNITS, ACC_MULTS }, \
1354  { LOG_ACC2_MSG, sizeof(log_ACCEL), \
1355  "ACC2", ACC_FMT, ACC_LABELS, ACC_UNITS, ACC_MULTS }, \
1356  { LOG_ACC3_MSG, sizeof(log_ACCEL), \
1357  "ACC3", ACC_FMT, ACC_LABELS, ACC_UNITS, ACC_MULTS }, \
1358  { LOG_GYR1_MSG, sizeof(log_GYRO), \
1359  "GYR1", GYR_FMT, GYR_LABELS, GYR_UNITS, GYR_MULTS }, \
1360  { LOG_GYR2_MSG, sizeof(log_GYRO), \
1361  "GYR2", GYR_FMT, GYR_LABELS, GYR_UNITS, GYR_MULTS }, \
1362  { LOG_GYR3_MSG, sizeof(log_GYRO), \
1363  "GYR3", GYR_FMT, GYR_LABELS, GYR_UNITS, GYR_MULTS }, \
1364  { LOG_PIDR_MSG, sizeof(log_PID), \
1365  "PIDR", PID_FMT, PID_LABELS, PID_UNITS, PID_MULTS }, \
1366  { LOG_PIDP_MSG, sizeof(log_PID), \
1367  "PIDP", PID_FMT, PID_LABELS, PID_UNITS, PID_MULTS }, \
1368  { LOG_PIDY_MSG, sizeof(log_PID), \
1369  "PIDY", PID_FMT, PID_LABELS, PID_UNITS, PID_MULTS }, \
1370  { LOG_PIDA_MSG, sizeof(log_PID), \
1371  "PIDA", PID_FMT, PID_LABELS, PID_UNITS, PID_MULTS }, \
1372  { LOG_PIDS_MSG, sizeof(log_PID), \
1373  "PIDS", PID_FMT, PID_LABELS, PID_UNITS, PID_MULTS }, \
1374  { LOG_DSTL_MSG, sizeof(log_DSTL), \
1375  "DSTL", "QBfLLeccfeffff", "TimeUS,Stg,THdg,Lat,Lng,Alt,XT,Travel,L1I,Loiter,Des,P,I,D", "s??DUm--------", "F??000--------" }, \
1376  { LOG_BAR2_MSG, sizeof(log_BARO), \
1377  "BAR2", BARO_FMT, BARO_LABELS, BARO_UNITS, BARO_MULTS }, \
1378  { LOG_BAR3_MSG, sizeof(log_BARO), \
1379  "BAR3", BARO_FMT, BARO_LABELS, BARO_UNITS, BARO_MULTS }, \
1380  { LOG_VIBE_MSG, sizeof(log_Vibe), \
1381  "VIBE", "QfffIII", "TimeUS,VibeX,VibeY,VibeZ,Clip0,Clip1,Clip2", "s------", "F------" }, \
1382  { LOG_IMUDT_MSG, sizeof(log_IMUDT), \
1383  "IMT",IMT_FMT,IMT_LABELS, IMT_UNITS, IMT_MULTS }, \
1384  { LOG_IMUDT2_MSG, sizeof(log_IMUDT), \
1385  "IMT2",IMT_FMT,IMT_LABELS, IMT_UNITS, IMT_MULTS }, \
1386  { LOG_IMUDT3_MSG, sizeof(log_IMUDT), \
1387  "IMT3",IMT_FMT,IMT_LABELS, IMT_UNITS, IMT_MULTS }, \
1388  { LOG_ISBH_MSG, sizeof(log_ISBH), \
1389  "ISBH",ISBH_FMT,ISBH_LABELS,ISBH_UNITS,ISBH_MULTS }, \
1390  { LOG_ISBD_MSG, sizeof(log_ISBD), \
1391  "ISBD",ISBD_FMT,ISBD_LABELS, ISBD_UNITS, ISBD_MULTS }, \
1392  { LOG_ORGN_MSG, sizeof(log_ORGN), \
1393  "ORGN","QBLLe","TimeUS,Type,Lat,Lng,Alt", "s-DUm", "F-GGB" }, \
1394  { LOG_DF_FILE_STATS, sizeof(log_DSF), \
1395  "DSF", "QIBHIIII", "TimeUS,Dp,IErr,Blk,Bytes,FMn,FMx,FAv", "s---b---", "F---0---" }, \
1396  { LOG_RPM_MSG, sizeof(log_RPM), \
1397  "RPM", "Qff", "TimeUS,rpm1,rpm2", "sqq", "F00" }, \
1398  { LOG_GIMBAL1_MSG, sizeof(log_Gimbal1), \
1399  "GMB1", "Iffffffffff", "TimeMS,dt,dax,day,daz,dvx,dvy,dvz,jx,jy,jz", "ssrrrEEELLL", "CC000000000" }, \
1400  { LOG_GIMBAL2_MSG, sizeof(log_Gimbal2), \
1401  "GMB2", "IBfffffffff", "TimeMS,es,ex,ey,ez,rx,ry,rz,tx,ty,tz", "s-rrrEEELLL", "C-000000000" }, \
1402  { LOG_GIMBAL3_MSG, sizeof(log_Gimbal3), \
1403  "GMB3", "Ihhh", "TimeMS,rl_torque_cmd,el_torque_cmd,az_torque_cmd", "s???", "C???" }, \
1404  { LOG_RATE_MSG, sizeof(log_Rate), \
1405  "RATE", "Qffffffffffff", "TimeUS,RDes,R,ROut,PDes,P,POut,YDes,Y,YOut,ADes,A,AOut", "skk-kk-kk-oo-", "F?????????BB-" }, \
1406  { LOG_RALLY_MSG, sizeof(log_Rally), \
1407  "RALY", "QBBLLh", "TimeUS,Tot,Seq,Lat,Lng,Alt", "s--DUm", "F--GGB" }, \
1408  { LOG_VISUALODOM_MSG, sizeof(log_VisualOdom), \
1409  "VISO", "Qffffffff", "TimeUS,dt,AngDX,AngDY,AngDZ,PosDX,PosDY,PosDZ,conf", "ssrrrmmm-", "FF000000-" }
1410 
1411 
1412 // #if SBP_HW_LOGGING
1413 #define LOG_SBP_STRUCTURES \
1414  { LOG_MSG_SBPHEALTH, sizeof(log_SbpHealth), \
1415  "SBPH", "QIII", "TimeUS,CrcError,LastInject,IARhyp", "s---", "F---" }, \
1416  { LOG_MSG_SBPRAWH, sizeof(log_SbpRAWH), \
1417  "SBRH", "QQQQQQQQ", "TimeUS,msg_flag,1,2,3,4,5,6", "s--b----", "F--0----" }, \
1418  { LOG_MSG_SBPRAWM, sizeof(log_SbpRAWM), \
1419  "SBRM", "QQQQQQQQQQQQQQQ", "TimeUS,msg_flag,1,2,3,4,5,6,7,8,9,10,11,12,13", "s??????????????", "F??????????????" }, \
1420  { LOG_MSG_SBPEVENT, sizeof(log_SbpEvent), \
1421  "SBRE", "QHIiBB", "TimeUS,GWk,GMS,ns_residual,level,quality", "s?????", "F?????" }
1422 // #endif
1423 
1424 #define LOG_COMMON_STRUCTURES LOG_BASE_STRUCTURES, LOG_EXTRA_STRUCTURES, LOG_SBP_STRUCTURES
1425 
1426 // message types 0 to 63 reserved for vehicle specific use
1427 
1428 // message types for common messages
1429 enum LogMessages : uint8_t {
1457 
1458  LOG_FORMAT_MSG = 128, // this must remain #128
1459 
1535 
1545 
1562 };
1563 
1564 static_assert(_LOG_LAST_MSG_ <= 255, "Too many message formats");
1565 
1569 };
uint16_t sqrtInnovVar
Definition: LogStructure.h:554
uint8_t remrssi
Definition: LogStructure.h:628
int8_t offsetEast
Definition: LogStructure.h:500
uint16_t blocks
Definition: LogStructure.h:154
int16_t magZ
Definition: LogStructure.h:437
uint64_t time_us
Definition: LogStructure.h:163
uint64_t time_us
Definition: LogStructure.h:677
float position_delta_y
Definition: LogStructure.h:575
uint8_t normInnov
Definition: LogStructure.h:511
uint64_t time_us
Definition: LogStructure.h:286
float target_y
Definition: LogStructure.h:272
uint16_t sample_count
Definition: LogStructure.h:222
float ground_temp
Definition: LogStructure.h:337
uint16_t chan4
Definition: LogStructure.h:290
int16_t magY
Definition: LogStructure.h:419
int8_t offsetNorth
Definition: LogStructure.h:499
uint64_t time_us
Definition: LogStructure.h:392
uint16_t chan7
Definition: LogStructure.h:312
static const uint8_t LS_NAME_SIZE
Definition: LogStructure.h:28
uint64_t time_us
Definition: LogStructure.h:638
const char * units
Definition: LogStructure.h:23
int16_t innovYaw
Definition: LogStructure.h:468
float AFF
Definition: LogStructure.h:672
float rpm2
Definition: LogStructure.h:901
uint16_t current
Definition: LogStructure.h:834
uint32_t SUS
Definition: LogStructure.h:707
int16_t innovVN
Definition: LogStructure.h:459
float position_delta_z
Definition: LogStructure.h:576
uint16_t msg_type
Definition: LogStructure.h:945
int32_t lat
Definition: LogStructure.h:737
uint8_t level
Definition: LogStructure.h:972
int32_t lon
Definition: LogStructure.h:928
uint8_t primary
Definition: LogStructure.h:849
uint16_t command
Definition: LogStructure.h:613
uint8_t health
Definition: LogStructure.h:706
const char * name
Definition: LogStructure.h:20
float accel_z
Definition: LogStructure.h:200
float pressure
Definition: LogStructure.h:332
uint64_t time_us
Definition: LogStructure.h:988
uint32_t gyro_error
Definition: LogStructure.h:201
uint8_t pages
Definition: LogStructure.h:948
uint16_t chan10
Definition: LogStructure.h:296
uint8_t state_sent_min
Definition: LogStructure.h:881
uint16_t chan6
Definition: LogStructure.h:292
uint32_t config
Definition: LogStructure.h:757
uint32_t buf_space_min
Definition: LogStructure.h:156
uint8_t timeouts
Definition: LogStructure.h:502
uint16_t sender_id
Definition: LogStructure.h:946
float current_height
Definition: LogStructure.h:741
uint8_t index
Definition: LogStructure.h:438
uint64_t time_us
Definition: LogStructure.h:198
int16_t crosstrack_error
int16_t magE
Definition: LogStructure.h:399
int16_t innovVD
Definition: LogStructure.h:446
uint8_t doStdev
Definition: LogStructure.h:808
uint16_t chan8
Definition: LogStructure.h:294
uint64_t time_us
Definition: LogStructure.h:787
int16_t windN
Definition: LogStructure.h:430
float joint_angles_z
Definition: LogStructure.h:258
int8_t ofsQ
Definition: LogStructure.h:766
int16_t offsetHigh
Definition: LogStructure.h:559
float GyrZ
Definition: LogStructure.h:863
uint64_t sample_us
Definition: LogStructure.h:855
uint8_t gyro_health
Definition: LogStructure.h:203
uint16_t chan12
Definition: LogStructure.h:317
uint64_t time_us
Definition: LogStructure.h:180
uint8_t state_pending_min
Definition: LogStructure.h:878
int16_t AFI
Definition: LogStructure.h:514
uint64_t time_us
Definition: LogStructure.h:861
uint32_t buf_space_avg
Definition: LogStructure.h:158
uint8_t index
Definition: LogStructure.h:421
int16_t magZ
Definition: LogStructure.h:420
uint8_t timeouts
Definition: LogStructure.h:485
uint32_t last_iar_num_hypotheses
Definition: LogStructure.h:939
float accel_out
Definition: LogStructure.h:918
int16_t magN
Definition: LogStructure.h:398
uint64_t time_us
Definition: LogStructure.h:330
int16_t magD
Definition: LogStructure.h:417
static const uint8_t LS_MULTIPLIERS_SIZE
Definition: LogStructure.h:32
int16_t FIY
Definition: LogStructure.h:527
uint8_t type
Definition: LogStructure.h:39
uint64_t time_us
Definition: LogStructure.h:492
int16_t innovPN
Definition: LogStructure.h:462
uint8_t state_pending_max
Definition: LogStructure.h:879
uint64_t time_us
Definition: LogStructure.h:373
uint64_t time_us
Definition: LogStructure.h:797
uint64_t time_us
Definition: LogStructure.h:890
uint16_t wn
Definition: LogStructure.h:969
int32_t altitude_rel
Definition: LogStructure.h:644
int16_t pitch
Definition: LogStructure.h:657
uint8_t magQ
Definition: LogStructure.h:767
const char * multipliers
Definition: LogStructure.h:24
int16_t sqrtvarV
Definition: LogStructure.h:493
uint64_t time_us
Definition: LogStructure.h:458
uint8_t msg_type
Definition: LogStructure.h:18
uint64_t time_us
Definition: LogStructure.h:978
uint8_t prStdev
Definition: LogStructure.h:806
int16_t beaconPosE
Definition: LogStructure.h:557
uint16_t chan9
Definition: LogStructure.h:314
float alt
Definition: LogStructure.h:357
int16_t altitude
Definition: LogStructure.h:983
uint8_t pages
Definition: LogStructure.h:960
int16_t az_torque_cmd
Definition: LogStructure.h:281
uint8_t res
Definition: LogStructure.h:950
int32_t altitude
Definition: LogStructure.h:171
int16_t pitch
Definition: LogStructure.h:375
int32_t altitude
Definition: LogStructure.h:894
double cpMes
Definition: LogStructure.h:777
float rel_home_alt
Definition: LogStructure.h:358
uint8_t res
Definition: LogStructure.h:962
float param1
Definition: LogStructure.h:614
uint8_t internal_errors
Definition: LogStructure.h:153
uint8_t index
Definition: LogStructure.h:947
float delta_velocity_z
Definition: LogStructure.h:255
uint8_t stage
float accel
Definition: LogStructure.h:917
uint8_t count
Definition: LogStructure.h:997
int32_t lat
Definition: LogStructure.h:347
uint8_t state_sent_max
Definition: LogStructure.h:882
const char ID
Definition: LogStructure.h:69
uint16_t isb_seqno
Definition: LogStructure.h:231
int16_t sqrtvarVT
Definition: LogStructure.h:497
float yaw
Definition: LogStructure.h:914
uint32_t timestamp
Definition: LogStructure.h:868
float posN
Definition: LogStructure.h:381
int16_t magY
Definition: LogStructure.h:402
uint16_t yaw
Definition: LogStructure.h:376
float desired
uint8_t rssi
Definition: LogStructure.h:627
const struct UnitStructure log_Units[]
Definition: LogStructure.h:81
float velD
Definition: LogStructure.h:379
int16_t offset_x
Definition: LogStructure.h:700
int16_t beaconPosN
Definition: LogStructure.h:556
float posErr
Definition: LogStructure.h:536
int16_t sqrtvarMX
Definition: LogStructure.h:478
LogOriginType
float altitude
Definition: LogStructure.h:620
int16_t sqrtvarV
Definition: LogStructure.h:475
float drift_offset
Definition: LogStructure.h:336
uint64_t time_us
Definition: LogStructure.h:925
int16_t offset_z
Definition: LogStructure.h:702
float delta_vel_z
Definition: LogStructure.h:212
uint16_t spacing
Definition: LogStructure.h:739
float delta_angles_z
Definition: LogStructure.h:252
float q4
Definition: LogStructure.h:349
int16_t sqrtvarMZ
Definition: LogStructure.h:480
uint16_t max_points
float longitude
Definition: LogStructure.h:619
int8_t mesQI
Definition: LogStructure.h:780
float pitch
Definition: LogStructure.h:911
uint16_t gps
Definition: LogStructure.h:504
float delta_angles_x
Definition: LogStructure.h:250
const char * format
Definition: LogStructure.h:21
int16_t RI
Definition: LogStructure.h:531
uint32_t time_ms
Definition: LogStructure.h:278
int16_t FIX
Definition: LogStructure.h:512
int16_t mag_z
Definition: LogStructure.h:699
uint16_t num_long_running
uint64_t time_us
Definition: LogStructure.h:364
float Vcc
Definition: LogStructure.h:365
int16_t temperature
Definition: LogStructure.h:683
float control_yaw
Definition: LogStructure.h:913
int16_t innovVN
Definition: LogStructure.h:444
int8_t AZbias
Definition: LogStructure.h:409
int32_t altitude_gps
Definition: LogStructure.h:645
int32_t lat
Definition: LogStructure.h:927
int16_t innovMY
Definition: LogStructure.h:466
float delta_velocity_x
Definition: LogStructure.h:253
int32_t latitude
Definition: LogStructure.h:641
int16_t motor_offset_y
Definition: LogStructure.h:704
uint8_t mode_reason
Definition: LogStructure.h:715
float sample_rate_hz
Definition: LogStructure.h:224
const struct MultiplierStructure log_Multipliers[]
Definition: LogStructure.h:123
int16_t innovMX
Definition: LogStructure.h:450
uint16_t chan11
Definition: LogStructure.h:297
int16_t windN
Definition: LogStructure.h:413
float ground_course
Definition: LogStructure.h:173
uint16_t num_loops
uint8_t state_free_min
Definition: LogStructure.h:875
uint32_t mem_avail
uint16_t yaw
Definition: LogStructure.h:648
int32_t lng
Definition: LogStructure.h:348
float vel_z
Definition: LogStructure.h:174
uint8_t normInnov
Definition: LogStructure.h:525
uint16_t current_tot
Definition: LogStructure.h:836
int8_t AZ1bias
Definition: LogStructure.h:394
uint32_t sample_ms
Definition: LogStructure.h:186
float target_heading
uint8_t msg_len
Definition: LogStructure.h:949
int16_t control_pitch
Definition: LogStructure.h:656
uint16_t sacc
Definition: LogStructure.h:184
const char * labels
Definition: LogStructure.h:22
uint64_t time_us
Definition: LogStructure.h:735
uint16_t voltage
Definition: LogStructure.h:833
uint32_t time_ms
Definition: LogStructure.h:263
uint16_t chan3
Definition: LogStructure.h:308
uint8_t format_type
Definition: LogStructure.h:63
int16_t magE
Definition: LogStructure.h:416
uint8_t txbuf
Definition: LogStructure.h:629
int32_t lng
Definition: LogStructure.h:738
int16_t sqrtvarP
Definition: LogStructure.h:476
int32_t longitude
Definition: LogStructure.h:642
uint64_t time_us
Definition: LogStructure.h:854
float vibe_z
Definition: LogStructure.h:242
uint8_t total
Definition: LogStructure.h:979
uint8_t status
Definition: LogStructure.h:164
int8_t ofsI
Definition: LogStructure.h:764
int16_t magN
Definition: LogStructure.h:432
uint16_t solution
Definition: LogStructure.h:486
float voltage_resting
Definition: LogStructure.h:679
int16_t sqrtvarMY
Definition: LogStructure.h:479
uint16_t locktime
Definition: LogStructure.h:804
uint16_t chan13
Definition: LogStructure.h:299
float rpm1
Definition: LogStructure.h:900
uint64_t time_us
Definition: LogStructure.h:899
float delta_ang_z
Definition: LogStructure.h:211
uint8_t mode_num
Definition: LogStructure.h:714
uint64_t time_us
Definition: LogStructure.h:626
int16_t magX
Definition: LogStructure.h:435
uint8_t active
uint16_t chan13
Definition: LogStructure.h:318
int16_t sqrtvarH
Definition: LogStructure.h:495
uint8_t noise
Definition: LogStructure.h:630
uint32_t last_injected_data_ms
Definition: LogStructure.h:938
float param3
Definition: LogStructure.h:616
uint8_t orient1
Definition: LogStructure.h:725
int16_t FIY
Definition: LogStructure.h:513
uint8_t orient2
Definition: LogStructure.h:727
uint8_t aPower
Definition: LogStructure.h:755
uint64_t time_us
Definition: LogStructure.h:751
float rel_origin_alt
Definition: LogStructure.h:359
#define x(i)
uint64_t time_us
uint8_t state_pending_avg
Definition: LogStructure.h:877
uint8_t magI
Definition: LogStructure.h:765
uint16_t sender_id
Definition: LogStructure.h:958
float rawpressure
Definition: LogStructure.h:845
uint8_t sensor_type
Definition: LogStructure.h:219
uint8_t remnoise
Definition: LogStructure.h:631
int16_t accBiasX
Definition: LogStructure.h:427
uint16_t delta_ms
Definition: LogStructure.h:187
uint16_t gps
Definition: LogStructure.h:487
uint8_t mode
Definition: LogStructure.h:713
float gyro_z
Definition: LogStructure.h:199
int16_t magN
Definition: LogStructure.h:415
int16_t innovVE
Definition: LogStructure.h:445
int16_t mag_x
Definition: LogStructure.h:697
int16_t accBiasZ
Definition: LogStructure.h:429
uint8_t safety_and_arm
Definition: LogStructure.h:368
int16_t temperature
Definition: LogStructure.h:844
uint64_t time_us
Definition: LogStructure.h:324
float velErr
Definition: LogStructure.h:535
int16_t innovPD
Definition: LogStructure.h:464
const char * unit
Definition: LogStructure.h:70
uint32_t bytes
Definition: LogStructure.h:155
int16_t innovPE
Definition: LogStructure.h:448
float diffpressure
Definition: LogStructure.h:843
int16_t windE
Definition: LogStructure.h:397
uint64_t time_us
Definition: LogStructure.h:151
uint16_t chan7
Definition: LogStructure.h:293
uint64_t sample_us
Definition: LogStructure.h:862
int16_t scaleZ
Definition: LogStructure.h:412
uint16_t meaRng
Definition: LogStructure.h:518
uint8_t action
uint64_t time_us
Definition: LogStructure.h:569
uint16_t noisePerMS
Definition: LogStructure.h:753
int16_t gyrZ
Definition: LogStructure.h:386
float resistance
Definition: LogStructure.h:684
int16_t travel_distance
int32_t alt
Definition: LogStructure.h:929
int16_t gyrY
Definition: LogStructure.h:385
uint32_t gps_time
Definition: LogStructure.h:639
uint64_t time_us
Definition: LogStructure.h:217
uint64_t time_us
Definition: LogStructure.h:209
uint8_t lli
Definition: LogStructure.h:782
float desired
Definition: LogStructure.h:667
uint8_t frame
Definition: LogStructure.h:621
uint64_t time_us
Definition: LogStructure.h:936
uint16_t chan10
Definition: LogStructure.h:315
uint16_t fixed
Definition: LogStructure.h:633
int16_t windE
Definition: LogStructure.h:414
int16_t sqrtvarM
Definition: LogStructure.h:496
int8_t offsetNorth
Definition: LogStructure.h:482
uint16_t control_yaw
Definition: LogStructure.h:658
int32_t longitude
Definition: LogStructure.h:893
float roll
Definition: LogStructure.h:908
uint64_t time_us
Definition: LogStructure.h:305
int16_t control_roll
Definition: LogStructure.h:654
int8_t Ratio
Definition: LogStructure.h:393
float control_roll
Definition: LogStructure.h:907
uint8_t quality
Definition: LogStructure.h:973
uint8_t svId
Definition: LogStructure.h:802
uint16_t dist1
Definition: LogStructure.h:724
uint32_t gps_week_ms
Definition: LogStructure.h:165
uint8_t recStat
Definition: LogStructure.h:792
uint16_t hdop
Definition: LogStructure.h:168
uint16_t chan5
Definition: LogStructure.h:291
int16_t magD
Definition: LogStructure.h:434
uint64_t time_us
Definition: LogStructure.h:510
int16_t scaleX
Definition: LogStructure.h:410
int16_t pitch
Definition: LogStructure.h:647
int16_t temperature
Definition: LogStructure.h:333
uint16_t rxerrors
Definition: LogStructure.h:632
uint8_t origin_type
Definition: LogStructure.h:891
float altitude
Definition: LogStructure.h:331
uint8_t status
Definition: LogStructure.h:736
static const uint8_t LS_LABELS_SIZE
Definition: LogStructure.h:30
int16_t temperature
Definition: LogStructure.h:835
uint16_t chan14
Definition: LogStructure.h:319
uint16_t error_yaw
Definition: LogStructure.h:661
float joint_angles_y
Definition: LogStructure.h:257
float delta_velocity_y
Definition: LogStructure.h:254
int16_t el_torque_cmd
Definition: LogStructure.h:280
float latitude
Definition: LogStructure.h:618
uint64_t time_us
Definition: LogStructure.h:541
uint8_t instance
Definition: LogStructure.h:220
uint64_t time_us
Definition: LogStructure.h:956
uint64_t time_us
Definition: LogStructure.h:712
float Vservo
Definition: LogStructure.h:366
int16_t magD
Definition: LogStructure.h:400
uint16_t testRatio
Definition: LogStructure.h:555
float param2
Definition: LogStructure.h:615
uint16_t chan1
Definition: LogStructure.h:306
uint16_t multiplier
Definition: LogStructure.h:221
uint8_t numMeas
Definition: LogStructure.h:791
uint64_t time_us
Definition: LogStructure.h:524
float D
Definition: LogStructure.h:670
uint16_t week
Definition: LogStructure.h:789
int16_t accBiasY
Definition: LogStructure.h:428
int16_t innovMY
Definition: LogStructure.h:451
uint8_t index
Definition: LogStructure.h:959
uint64_t time_us
Definition: LogStructure.h:772
uint16_t flags
Definition: LogStructure.h:367
float pitch_out
Definition: LogStructure.h:912
int16_t pitch
Definition: LogStructure.h:344
uint64_t time_us
Definition: LogStructure.h:995
uint64_t time_us
Definition: LogStructure.h:610
int16_t sqrtvarP
Definition: LogStructure.h:494
float velN
Definition: LogStructure.h:377
int16_t innovVT
Definition: LogStructure.h:453
uint8_t state_free_avg
Definition: LogStructure.h:874
uint64_t time_us
Definition: LogStructure.h:241
float delta_time
Definition: LogStructure.h:249
uint16_t faults
Definition: LogStructure.h:484
float current_amps
Definition: LogStructure.h:680
uint8_t jamInd
Definition: LogStructure.h:754
int32_t target_alt
float target_z
Definition: LogStructure.h:273
uint8_t used
Definition: LogStructure.h:175
int16_t roll
Definition: LogStructure.h:655
uint16_t seqno
Definition: LogStructure.h:218
uint16_t chan1
Definition: LogStructure.h:287
float climbrate
Definition: LogStructure.h:334
uint64_t time_us
Definition: LogStructure.h:762
int32_t altitude
Definition: LogStructure.h:643
int16_t windN
Definition: LogStructure.h:396
uint16_t errHAGL
Definition: LogStructure.h:519
int16_t innovPN
Definition: LogStructure.h:447
uint64_t time_us
Definition: LogStructure.h:192
uint16_t dist2
Definition: LogStructure.h:726
int8_t AZ2bias
Definition: LogStructure.h:395
float position_delta_x
Definition: LogStructure.h:574
int32_t longitude
Definition: LogStructure.h:982
int32_t rpm
Definition: LogStructure.h:832
uint16_t hacc
Definition: LogStructure.h:182
uint64_t time_us
Definition: LogStructure.h:62
uint32_t tow
Definition: LogStructure.h:970
int16_t RI
Definition: LogStructure.h:517
int32_t lng
Definition: LogStructure.h:356
uint16_t gps_week
Definition: LogStructure.h:640
int16_t innovMZ
Definition: LogStructure.h:452
int16_t windE
Definition: LogStructure.h:431
int16_t innovMX
Definition: LogStructure.h:465
uint16_t errHAGL
Definition: LogStructure.h:533
uint8_t instance
Definition: LogStructure.h:752
uint8_t n_sats
Definition: LogStructure.h:930
uint8_t flags
Definition: LogStructure.h:931
float posD_dot
Definition: LogStructure.h:380
uint8_t state_sent_avg
Definition: LogStructure.h:880
int16_t week
Definition: LogStructure.h:774
float RXRSSI
Definition: LogStructure.h:325
uint8_t length
Definition: LogStructure.h:40
int16_t roll
Definition: LogStructure.h:646
uint16_t msg_type
Definition: LogStructure.h:957
uint8_t state_free_max
Definition: LogStructure.h:876
uint64_t time_us
Definition: LogStructure.h:666
uint8_t health
Definition: LogStructure.h:996
int16_t magZ
Definition: LogStructure.h:403
float P
Definition: LogStructure.h:668
float AccZ
Definition: LogStructure.h:856
int16_t magX
Definition: LogStructure.h:418
int32_t target_lat
int16_t innovPD
Definition: LogStructure.h:449
int16_t HAGL
Definition: LogStructure.h:515
int16_t beaconPosD
Definition: LogStructure.h:558
uint16_t seqno
Definition: LogStructure.h:232
uint8_t num_sats
Definition: LogStructure.h:167
uint64_t time_us
Definition: LogStructure.h:342
uint16_t faults
Definition: LogStructure.h:501
int16_t innovPE
Definition: LogStructure.h:463
float ground_speed
Definition: LogStructure.h:172
float control_accel
Definition: LogStructure.h:916
int32_t lat
Definition: LogStructure.h:355
uint32_t clipping_2
Definition: LogStructure.h:243
float angErr
Definition: LogStructure.h:534
float target_x
Definition: LogStructure.h:271
uint16_t chan14
Definition: LogStructure.h:300
uint16_t vacc
Definition: LogStructure.h:183
float posE
Definition: LogStructure.h:382
uint32_t crc_error_counter
Definition: LogStructure.h:937
int32_t latitude
Definition: LogStructure.h:169
float alt
Definition: LogStructure.h:346
uint64_t time_us
Definition: LogStructure.h:593
uint16_t gps_week
Definition: LogStructure.h:166
int16_t magX
Definition: LogStructure.h:401
static const uint8_t LS_FORMAT_SIZE
Definition: LogStructure.h:29
float velE
Definition: LogStructure.h:378
uint16_t num_points
uint16_t agcCnt
Definition: LogStructure.h:756
char type
Definition: LogStructure.h:49
int16_t roll
Definition: LogStructure.h:343
uint32_t buf_space_max
Definition: LogStructure.h:157
float delta_vel_dt
Definition: LogStructure.h:210
uint16_t solution
Definition: LogStructure.h:503
uint16_t loaded
Definition: LogStructure.h:743
int16_t sqrtvarH
Definition: LogStructure.h:477
uint64_t time_us
Definition: LogStructure.h:474
int32_t iTOW
Definition: LogStructure.h:773
uint8_t freqId
Definition: LogStructure.h:803
int16_t mag_y
Definition: LogStructure.h:698
uint16_t chan11
Definition: LogStructure.h:316
int16_t motor_offset_x
Definition: LogStructure.h:703
uint64_t time_us
Definition: LogStructure.h:230
#define PACKED
Definition: AP_Common.h:28
uint8_t have_vv
Definition: LogStructure.h:185
uint64_t time_us
Definition: LogStructure.h:831
uint32_t dropped
Definition: LogStructure.h:152
int32_t latitude
Definition: LogStructure.h:981
int32_t ns_residual
Definition: LogStructure.h:971
double prMes
Definition: LogStructure.h:778
uint8_t numSV
Definition: LogStructure.h:775
uint16_t yaw
Definition: LogStructure.h:659
uint8_t instance
Definition: LogStructure.h:763
uint64_t time_us
Definition: LogStructure.h:144
uint32_t sample_time_ms
Definition: LogStructure.h:335
uint32_t time_ms
Definition: LogStructure.h:248
int32_t target_lng
float I
Definition: LogStructure.h:669
const double multiplier
Definition: LogStructure.h:75
uint16_t command_total
Definition: LogStructure.h:611
uint16_t chan2
Definition: LogStructure.h:307
uint8_t internal_errors
Definition: LogStructure.h:873
uint64_t time_us
Definition: LogStructure.h:841
uint64_t time_us
Definition: LogStructure.h:968
float tiltErr
Definition: LogStructure.h:498
int16_t innovMZ
Definition: LogStructure.h:467
int16_t scaleY
Definition: LogStructure.h:411
uint8_t sequence
Definition: LogStructure.h:980
uint64_t sample_us
Definition: LogStructure.h:223
uint16_t chan9
Definition: LogStructure.h:295
int16_t HAGL
Definition: LogStructure.h:529
uint64_t time_us
uint64_t time_us
Definition: LogStructure.h:653
uint16_t chan4
Definition: LogStructure.h:309
uint8_t est_sta
Definition: LogStructure.h:264
uint64_t time_us
Definition: LogStructure.h:354
uint16_t chan5
Definition: LogStructure.h:310
uint64_t time_us
Definition: LogStructure.h:48
float delta_angles_y
Definition: LogStructure.h:251
float control_pitch
Definition: LogStructure.h:910
uint64_t time_us
Definition: LogStructure.h:408
int8_t primary
Definition: LogStructure.h:505
uint16_t sequence
Definition: LogStructure.h:612
uint16_t pending
Definition: LogStructure.h:742
uint64_t time_us
Definition: LogStructure.h:944
uint64_t time_us
Definition: LogStructure.h:443
int32_t longitude
Definition: LogStructure.h:170
int16_t motor_offset_z
Definition: LogStructure.h:705
uint8_t msg_len
Definition: LogStructure.h:961
uint8_t cpStdev
Definition: LogStructure.h:807
uint8_t sv
Definition: LogStructure.h:776
int16_t gyrX
Definition: LogStructure.h:384
uint64_t time_us
Definition: LogStructure.h:426
float terrain_height
Definition: LogStructure.h:740
uint64_t time_us
int16_t offset
Definition: LogStructure.h:516
int16_t roll
Definition: LogStructure.h:374
uint16_t chan3
Definition: LogStructure.h:289
LogMessages
int16_t rl_torque_cmd
Definition: LogStructure.h:279
float roll_out
Definition: LogStructure.h:909
int16_t innovVE
Definition: LogStructure.h:460
int16_t magE
Definition: LogStructure.h:433
int16_t offset_y
Definition: LogStructure.h:701
uint16_t chan6
Definition: LogStructure.h:311
static const uint8_t LS_UNITS_SIZE
Definition: LogStructure.h:31
uint16_t chan12
Definition: LogStructure.h:298
uint16_t chan8
Definition: LogStructure.h:313
int32_t latitude
Definition: LogStructure.h:892
uint8_t msg_len
Definition: LogStructure.h:19
int16_t innovVT
Definition: LogStructure.h:469
float consumed_wh
Definition: LogStructure.h:682
uint16_t error_rp
Definition: LogStructure.h:660
uint16_t vdop
Definition: LogStructure.h:181
int32_t originHgt
Definition: LogStructure.h:387
float yaw_out
Definition: LogStructure.h:915
float FF
Definition: LogStructure.h:671
int16_t AFI
Definition: LogStructure.h:528
uint64_t time_us
Definition: LogStructure.h:906
int32_t loiter_sum_cd
float param4
Definition: LogStructure.h:617
uint64_t time_us
Definition: LogStructure.h:550
uint16_t yaw
Definition: LogStructure.h:345
float l1_i
uint16_t gyro_rate
Definition: LogStructure.h:204
int16_t FIX
Definition: LogStructure.h:526
float joint_angles_x
Definition: LogStructure.h:256
int16_t sqrtvarVT
Definition: LogStructure.h:481
int16_t innovVD
Definition: LogStructure.h:461
float posD
Definition: LogStructure.h:383
int16_t magY
Definition: LogStructure.h:436
uint64_t time_us
Definition: LogStructure.h:696
uint16_t chan2
Definition: LogStructure.h:288
uint16_t meaRng
Definition: LogStructure.h:532
uint64_t time_us
Definition: LogStructure.h:723
float current_total
Definition: LogStructure.h:681
uint32_t tow
Definition: LogStructure.h:926
int16_t offset
Definition: LogStructure.h:530
float temperature
Definition: LogStructure.h:202
uint8_t trkStat
Definition: LogStructure.h:809
int8_t offsetEast
Definition: LogStructure.h:483
uint8_t gnssId
Definition: LogStructure.h:801