17enum class control_channel : std::size_t { ch0 = 0, ch1, ch2, ch3, gimbal_pitch_wheel };
19enum class switch_position : std::int32_t { unknown = 0, up = 1, down = 2, middle = 3 };
30 std::int32_t mouse_x {};
31 std::int32_t mouse_y {};
32 std::int32_t mouse_z {};
33 std::int32_t mouse_l {};
34 std::int32_t mouse_r {};
40 case control_channel::ch0:
return ch0;
41 case control_channel::ch1:
return ch1;
42 case control_channel::ch2:
return ch2;
43 case control_channel::ch3:
return ch3;
44 case control_channel::gimbal_pitch_wheel:
return ch4;
52static_assert(
sizeof(control_pad_state) == 52);
63 std::string serial_name;
65 using key_type = std::string;
68 inline const std::string& key()
const{
return name;}
72 inline std::string
desc()
const{
73 return std::format(
"Control pad {} on serial:{}", info_.name, info_.serial_name);
86 template<callback_fn<control_pad_state> F>
88 on_update_.add(std::forward<F>(
callback));
96static_assert(device<control_pad>);
std::string desc() const
返回遥控器及其串口名称。
void on_update(F &&callback)
注册输入更新回调。
control_pad_state state() const noexcept
获取最近一次有效报文解析出的输入快照。
fp32 pitch_wheel() const noexcept
获取云台俯仰拨轮原始值。
用于提供日志功能的辅助基类 通过CRTP模式实现,要求派生类实现desc()方法以提供描述信息,在继承时传入派生类自身类型作为模板参数。 继承这个类后,派生类可以方便地使用log_debug、log_i...
switch_position
遥控器三段开关位置。
control_channel
遥控器模拟通道的统一索引。
std::int32_t channel(control_channel c) const noexcept
按抽象通道枚举读取通道值。
std::int32_t gimbal_pitch_wheel() const noexcept
获取云台俯仰拨轮原始值。