Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Copter: accept solo buttons as both long and int #24822

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
28 changes: 17 additions & 11 deletions ArduCopter/GCS_Mavlink.cpp
Expand Up @@ -760,6 +760,12 @@ MAV_RESULT GCS_MAVLINK_Copter::handle_command_int_packet(const mavlink_command_i
// Solo user presses pause button
case MAV_CMD_SOLO_BTN_PAUSE_CLICK:
return handle_MAV_CMD_SOLO_BTN_PAUSE_CLICK(packet);
// Solo user presses Fly button:
case MAV_CMD_SOLO_BTN_FLY_HOLD:
return handle_MAV_CMD_SOLO_BTN_FLY_HOLD(packet);
// Solo user holds down Fly button for a couple of seconds
case MAV_CMD_SOLO_BTN_FLY_CLICK:
return handle_MAV_CMD_SOLO_BTN_FLY_CLICK(packet);
#endif

default:
Expand Down Expand Up @@ -942,8 +948,14 @@ MAV_RESULT GCS_MAVLINK_Copter::handle_command_long_packet(const mavlink_command_
return MAV_RESULT_FAILED;
#endif

/* Solo user presses Fly button */
case MAV_CMD_SOLO_BTN_FLY_CLICK: {
default:
return GCS_MAVLINK::handle_command_long_packet(packet, msg);
}
}

#if AC_MAVLINK_SOLO_BUTTON_COMMAND_HANDLING_ENABLED
MAV_RESULT GCS_MAVLINK_Copter::handle_MAV_CMD_SOLO_BTN_FLY_CLICK(const mavlink_command_int_t &packet)
{
if (copter.failsafe.radio) {
return MAV_RESULT_ACCEPTED;
}
Expand All @@ -953,10 +965,10 @@ MAV_RESULT GCS_MAVLINK_Copter::handle_command_long_packet(const mavlink_command_
copter.set_mode(Mode::Number::ALT_HOLD, ModeReason::GCS_COMMAND);
}
return MAV_RESULT_ACCEPTED;
}
}

/* Solo user holds down Fly button for a couple of seconds */
case MAV_CMD_SOLO_BTN_FLY_HOLD: {
MAV_RESULT GCS_MAVLINK_Copter::handle_MAV_CMD_SOLO_BTN_FLY_HOLD(const mavlink_command_int_t &packet)
{
if (copter.failsafe.radio) {
return MAV_RESULT_ACCEPTED;
}
Expand All @@ -974,14 +986,8 @@ MAV_RESULT GCS_MAVLINK_Copter::handle_command_long_packet(const mavlink_command_
copter.set_mode(Mode::Number::LAND, ModeReason::GCS_COMMAND);
}
return MAV_RESULT_ACCEPTED;
}

default:
return GCS_MAVLINK::handle_command_long_packet(packet, msg);
}
}

#if AC_MAVLINK_SOLO_BUTTON_COMMAND_HANDLING_ENABLED
MAV_RESULT GCS_MAVLINK_Copter::handle_MAV_CMD_SOLO_BTN_PAUSE_CLICK(const mavlink_command_int_t &packet)
{
if (copter.failsafe.radio) {
Expand Down
2 changes: 2 additions & 0 deletions ArduCopter/GCS_Mavlink.h
Expand Up @@ -98,6 +98,8 @@ class GCS_MAVLINK_Copter : public GCS_MAVLINK


#if AC_MAVLINK_SOLO_BUTTON_COMMAND_HANDLING_ENABLED
MAV_RESULT handle_MAV_CMD_SOLO_BTN_FLY_CLICK(const mavlink_command_int_t &packet);
MAV_RESULT handle_MAV_CMD_SOLO_BTN_FLY_HOLD(const mavlink_command_int_t &packet);
MAV_RESULT handle_MAV_CMD_SOLO_BTN_PAUSE_CLICK(const mavlink_command_int_t &packet);
#endif

Expand Down