mirror of https://github.com/ArduPilot/ardupilot
Copter: use GCS_MAVLINK subclasses to handle set_mode
This commit is contained in:
parent
f3a0d2b02b
commit
aa06fc499c
|
@ -972,7 +972,6 @@ private:
|
|||
void fence_send_mavlink_status(mavlink_channel_t chan);
|
||||
void update_sensor_status_flags(void);
|
||||
bool set_mode(control_mode_t mode, mode_reason_t reason);
|
||||
bool gcs_set_mode(uint8_t mode) { return set_mode((control_mode_t)mode, MODE_REASON_GCS_COMMAND); }
|
||||
void update_flight_mode();
|
||||
void exit_mode(control_mode_t old_control_mode, control_mode_t new_control_mode);
|
||||
bool mode_requires_GPS(control_mode_t mode);
|
||||
|
|
|
@ -714,21 +714,6 @@ void GCS_MAVLINK_Copter::handleMessage(mavlink_message_t* msg)
|
|||
break;
|
||||
}
|
||||
|
||||
case MAVLINK_MSG_ID_SET_MODE: // MAV ID: 11
|
||||
{
|
||||
#ifdef DISALLOW_GCS_MODE_CHANGE_DURING_RC_FAILSAFE
|
||||
if (!copter.failsafe.radio) {
|
||||
handle_set_mode(msg, FUNCTOR_BIND(&copter, &Copter::gcs_set_mode, bool, uint8_t));
|
||||
} else {
|
||||
// don't allow mode changes while in radio failsafe
|
||||
mavlink_msg_command_ack_send_buf(msg, chan, MAVLINK_MSG_ID_SET_MODE, MAV_RESULT_FAILED);
|
||||
}
|
||||
#else
|
||||
handle_set_mode(msg, FUNCTOR_BIND(&copter, &Copter::gcs_set_mode, bool, uint8_t));
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
|
||||
case MAVLINK_MSG_ID_PARAM_REQUEST_LIST: // MAV ID: 21
|
||||
{
|
||||
// if we have not yet initialised (including allocating the motors
|
||||
|
@ -1798,3 +1783,14 @@ AP_Rally *GCS_MAVLINK_Copter::get_rally() const
|
|||
return nullptr;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool GCS_MAVLINK_Copter::set_mode(const uint8_t mode)
|
||||
{
|
||||
#ifdef DISALLOW_GCS_MODE_CHANGE_DURING_RC_FAILSAFE
|
||||
if (copter.failsafe.radio) {
|
||||
// don't allow mode changes while in radio failsafe
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
return copter.set_mode((control_mode_t)mode, MODE_REASON_GCS_COMMAND);
|
||||
}
|
||||
|
|
|
@ -29,6 +29,8 @@ protected:
|
|||
|
||||
uint8_t sysid_my_gcs() const override;
|
||||
|
||||
bool set_mode(uint8_t mode) override;
|
||||
|
||||
private:
|
||||
|
||||
void handleMessage(mavlink_message_t * msg) override;
|
||||
|
|
Loading…
Reference in New Issue