1 #ifndef RADIAL_MENU_BACKEND_BACKEND_CONTROLLER_HPP 2 #define RADIAL_MENU_BACKEND_BACKEND_CONTROLLER_HPP 10 #include <radial_menu_msgs/State.h> 11 #include <sensor_msgs/Joy.h> 27 radial_menu_msgs::StatePtr
update(
const sensor_msgs::Joy &joy) {
37 model_->setEnabled(enable_is_pressed);
41 if (
model_->canUnpoint(last_pointed_item)) {
42 model_->unpoint(last_pointed_item);
48 if (enable_is_pressed) {
51 if (!std::isnan(pointing_angle)) {
53 model_->sibilingByAngle(pointing_angle));
54 if (
model_->canPoint(item_to_point)) {
55 model_->point(item_to_point);
81 return model_->exportState(joy.header.stamp);
92 return (value_v * value_v + value_h * value_h >=
94 ? std::atan2(value_h, value_v)
95 : std::numeric_limits< double >::quiet_NaN();
99 if (
model_->canSelect(item)) {
101 }
else if (
model_->canDeselect(item)) {
103 }
else if (
model_->canDescend(item)) {
109 static int buttonValue(
const sensor_msgs::Joy &joy,
const int bid) {
110 return (bid >= 0 && bid < joy.buttons.size()) ? joy.buttons[bid] : 0;
114 static double axisValue(
const sensor_msgs::Joy &joy,
const int aid) {
115 return (aid >= 0 && aid < joy.axes.size()) ? joy.axes[aid] : 0.;