9 namespace experimental {
13 throw std::out_of_range(
"Invalid button number");
19 throw std::out_of_range(
"Invalid axis number");
20 return axes_[axis - 1];
39 throw std::out_of_range(
"Invalid button number");
43 std::unique_ptr<MobileIO>
MobileIO::create(
const std::string& family,
const std::string& name) {
45 std::shared_ptr<hebi::Group> group = lookup.
getGroupFromNames({ family }, { name });
48 return std::unique_ptr<MobileIO>(
new MobileIO(group));
67 if (f0.io().b().hasInt(i)) {
73 if (f0.io().a().hasFloat(i)) {
75 }
else if (f0.io().a().hasInt(i)) {
87 cmd[0].io().a().setFloat(axis_number, snap_to);
88 return group_->sendCommand(cmd);
93 cmd[0].io().f().setFloat(axis_number, value);
94 return group_->sendCommand(cmd);
100 return group_->sendCommand(cmd);
105 cmd[0].io().e().setInt(button_number, on ? 1 : 0);
106 return group_->sendCommand(cmd);
111 cmd[0].led().set({r, g, b});
112 return group_->sendCommand(cmd);
117 cmd[0].appendLog().set(message);
118 return group_->sendCommand(cmd);
123 cmd[0].clearLog().set();
124 return group_->sendCommand(cmd);
128 : group_(group), fbk_(group_->size())