3#include <QtCore/QString>
11#include <ulog_cpp/data_handler_interface.hpp>
12#include <ulog_cpp/messages.hpp>
13#include <ulog_cpp/subscription.hpp>
56using MessageCallback = std::function<bool(
const ulog_cpp::TypedDataView &sample)>;
72 void error(
const std::string &msg,
bool is_recoverable)
override;
73 void messageFormat(
const ulog_cpp::MessageFormat &message_format)
override;
74 void addLoggedMessage(
const ulog_cpp::AddLoggedMessage &add_logged_message)
override;
76 void data(
const ulog_cpp::Data &
data)
override;
91 std::string _targetMessageName;
93 QString &_errorMessage;
94 std::shared_ptr<ulog_cpp::MessageFormat> _messageFormat;
95 std::set<uint16_t> _messageIds;
96 bool _hadFatalError =
false;
97 bool _headerComplete =
false;
98 int _messageCount = 0;
109 const std::string &messageName,
111 QString &errorMessage);
int messageCount() const
Get the number of messages processed.
bool hadFatalError() const
Check if a fatal error occurred during parsing.
virtual ~MessageHandler()=default
void messageFormat(const ulog_cpp::MessageFormat &message_format) override
void addLoggedMessage(const ulog_cpp::AddLoggedMessage &add_logged_message) override
bool isHeaderComplete() const
Check if the ULog header was successfully parsed.
void headerComplete() override
bool hasMessageFormat() const
Check if the target message format was found.
void data(const ulog_cpp::Data &data) override
uint64_t getHeaderTimestamp(const char *data, qint64 size)
int getVersion(const char *data, qint64 size)
bool isValidHeader(const char *data, qint64 size)
std::function< bool(const ulog_cpp::TypedDataView &sample)> MessageCallback
bool iterateMessages(const char *data, qint64 size, const std::string &messageName, const MessageCallback &callback, QString &errorMessage)
constexpr char kMagicBytes[]
ULog file magic bytes: "ULog" followed by 0x01 (version 1) followed by 0x12 (file compat)
constexpr int kHeaderSize