50 [[nodiscard]] std::string
type()
const override;
77 constexpr static size_t OUTPUT_PORT_INDEX_IMUOBS_1 = 0;
78 constexpr static size_t OUTPUT_PORT_INDEX_IMUOBS_2 = 1;
79 constexpr static size_t OUTPUT_PORT_INDEX_POSVELATT = 2;
82 bool initialize()
override;
85 void deinitialize()
override;
89 [[nodiscard]] std::shared_ptr<const NodeData> pollData();
93 [[nodiscard]]
FileType determineFileType()
override;
96 void readHeader()
override;
101 void readInformationMessage(uint16_t msgSize,
char msgType);
106 void readInformationMessageMulti(uint16_t msgSize,
char msgType);
111 void readParameterMessage(uint16_t msgSize,
char msgType);
116 void readParameterMessageDefault(uint16_t msgSize,
char msgType);
126 std::unordered_map<std::string, std::vector<DataField>> _messageFormats;
132 uint64_t timestamp_sample;
138 uint32_t error_count;
139 std::array<uint8_t, 3> clip_counter;
141 static constexpr uint8_t padding = 5;
148 uint64_t timestamp_sample;
154 uint32_t error_count;
161 uint64_t timestamp_sample;
167 uint32_t error_count;
170 static constexpr uint8_t padding = 7;
174 struct VehicleGpsPosition
177 uint64_t time_utc_usec;
181 int32_t alt_ellipsoid;
182 float s_variance_m_s;
183 float c_variance_rad;
188 int32_t noise_per_ms;
189 int32_t jamming_indicator;
195 int32_t timestamp_time_relative;
197 float heading_offset;
200 uint8_t satellites_used;
202 static constexpr uint8_t padding = 5;
206 struct VehicleAttitude
209 std::array<float, 4> q;
210 std::array<float, 4> delta_q_reset;
211 uint8_t quat_reset_counter;
213 static constexpr uint8_t padding = 7;
217 struct VehicleAirData
220 uint64_t timestamp_sample;
221 uint32_t baro_device_id;
222 float baro_alt_meter;
223 float baro_temp_celcius;
224 float baro_pressure_pa;
227 static constexpr uint8_t padding = 4;
231 struct VehicleControlMode
235 bool flag_external_manual_override_ok;
236 bool flag_control_manual_enabled;
237 bool flag_control_auto_enabled;
238 bool flag_control_offboard_enabled;
239 bool flag_control_rates_enabled;
240 bool flag_control_attitude_enabled;
241 bool flag_control_yawrate_override_enabled;
242 bool flag_control_rattitude_enabled;
243 bool flag_control_force_enabled;
244 bool flag_control_acceleration_enabled;
245 bool flag_control_velocity_enabled;
246 bool flag_control_position_enabled;
247 bool flag_control_altitude_enabled;
248 bool flag_control_climb_rate_enabled;
249 bool flag_control_termination_enabled;
250 bool flag_control_fixed_hdg_enabled;
252 static constexpr uint8_t padding = 7;
259 uint64_t nav_state_timestamp;
260 uint32_t onboard_control_sensors_present;
261 uint32_t onboard_control_sensors_enabled;
262 uint32_t onboard_control_sensors_health;
264 uint8_t arming_state;
269 uint8_t component_id;
270 uint8_t vehicle_type;
272 bool is_vtol_tailsitter;
273 bool vtol_fw_permanent_stab;
274 bool in_transition_mode;
275 bool in_transition_to_fw;
277 uint8_t rc_input_mode;
279 uint8_t data_link_lost_counter;
280 bool high_latency_data_link_lost;
282 bool mission_failure;
283 uint8_t failure_detector_status;
284 uint8_t latest_arming_reason;
285 uint8_t latest_disarming_reason;
286 std::array<uint8_t, 5> _padding0;
298 std::unordered_map<uint16_t, SubscriptionData> _subscribedMessages;
301 struct MeasurementData
304 std::string message_name;
305 std::variant<SensorAccel, SensorGyro, SensorMag, VehicleGpsPosition, VehicleAttitude> data;
309 std::multimap<uint64_t, MeasurementData> _epochData;
313 int8_t enoughImuDataAvailable();
317 std::array<std::multimap<uint64_t, NAV::UlogFile::MeasurementData>::iterator, 2> findPosVelAttData();