8 #include <px4_msgs/msg/arming_check_reply.hpp>
10 namespace px4_ros2::events {
12 using EventType = px4_msgs::msg::Event;
14 enum class LogLevel : uint8_t {
29 enum class LogLevelInternal : uint8_t {
45 using LogInternal = LogLevelInternal;
50 : external(external_level),
internal(
static_cast<LogInternal
>(external_level))
53 LogLevels(Log external_level, LogInternal internal_level)
54 : external(external_level),
internal(internal_level)
58 Log external{Log::Info};
59 LogInternal
internal{LogInternal::Info};
65 constexpr uint32_t kVal32Const = 0x811c9dc5;
66 constexpr uint32_t kPrime32Const = 0x1000193;
67 inline constexpr uint32_t hash32Fnv1aConst(
const char*
const str,
68 const uint32_t value = kVal32Const) noexcept
70 return (str[0] ==
'\0')
72 : hash32Fnv1aConst(&str[1], (value ^
static_cast<uint32_t
>(str[0])) * kPrime32Const);
76 inline constexpr
void fillEventArguments(uint8_t* buf, T arg)
79 memcpy(buf, &arg,
sizeof(T));
82 template <
typename T,
typename... Args>
83 inline constexpr
void fillEventArguments(uint8_t* buf, T arg, Args... args)
85 fillEventArguments(buf, arg);
86 fillEventArguments(buf +
sizeof(T), args...);
89 constexpr
unsigned sizeofArguments()
94 template <
typename T,
typename... Args>
95 constexpr
unsigned sizeofArguments(
const T& t,
const Args&... args)
97 return sizeof(T) + sizeofArguments(args...);
106 constexpr uint32_t ID(
const char (&name)[N])
109 const uint32_t component_id = 1U << 24;
110 return (0xffffff & util::hash32Fnv1aConst(name)) | component_id;
Definition: events.hpp:47