mirror of https://github.com/ArduPilot/ardupilot
Tracker: Support new AP_Vehicle::set_mode
This commit is contained in:
parent
a1acc75e11
commit
6d7b196212
|
@ -406,7 +406,7 @@ MAV_RESULT GCS_MAVLINK_Tracker::handle_command_long_packet(const mavlink_command
|
||||||
|
|
||||||
// mavproxy/mavutil sends this when auto command is entered
|
// mavproxy/mavutil sends this when auto command is entered
|
||||||
case MAV_CMD_MISSION_START:
|
case MAV_CMD_MISSION_START:
|
||||||
tracker.set_mode(AUTO, MODE_REASON_GCS_COMMAND);
|
tracker.set_mode(AUTO, ModeReason::GCS_COMMAND);
|
||||||
return MAV_RESULT_ACCEPTED;
|
return MAV_RESULT_ACCEPTED;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -607,23 +607,6 @@ void Tracker::mavlink_delay_cb()
|
||||||
logger.EnableWrites(true);
|
logger.EnableWrites(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
set_mode() wrapper for MAVLink SET_MODE
|
|
||||||
*/
|
|
||||||
bool GCS_MAVLINK_Tracker::set_mode(uint8_t mode)
|
|
||||||
{
|
|
||||||
switch (mode) {
|
|
||||||
case AUTO:
|
|
||||||
case MANUAL:
|
|
||||||
case SCAN:
|
|
||||||
case SERVO_TEST:
|
|
||||||
case STOP:
|
|
||||||
tracker.set_mode((enum ControlMode)mode, MODE_REASON_GCS_COMMAND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// send position tracker is using
|
// send position tracker is using
|
||||||
void GCS_MAVLINK_Tracker::send_global_position_int()
|
void GCS_MAVLINK_Tracker::send_global_position_int()
|
||||||
{
|
{
|
||||||
|
|
|
@ -18,8 +18,6 @@ protected:
|
||||||
|
|
||||||
uint8_t sysid_my_gcs() const override;
|
uint8_t sysid_my_gcs() const override;
|
||||||
|
|
||||||
bool set_mode(uint8_t mode) override;
|
|
||||||
|
|
||||||
MAV_RESULT _handle_command_preflight_calibration_baro() override;
|
MAV_RESULT _handle_command_preflight_calibration_baro() override;
|
||||||
MAV_RESULT handle_command_long_packet(const mavlink_command_long_t &packet) override;
|
MAV_RESULT handle_command_long_packet(const mavlink_command_long_t &packet) override;
|
||||||
|
|
||||||
|
|
|
@ -78,7 +78,7 @@ const struct LogStructure Tracker::log_structure[] = {
|
||||||
|
|
||||||
void Tracker::Log_Write_Vehicle_Startup_Messages()
|
void Tracker::Log_Write_Vehicle_Startup_Messages()
|
||||||
{
|
{
|
||||||
logger.Write_Mode(control_mode, MODE_REASON_INITIALISED);
|
logger.Write_Mode(control_mode, ModeReason::INITIALISED);
|
||||||
gps.Write_AP_Logger_Log_Startup_messages();
|
gps.Write_AP_Logger_Log_Startup_messages();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -246,7 +246,8 @@ private:
|
||||||
void arm_servos();
|
void arm_servos();
|
||||||
void disarm_servos();
|
void disarm_servos();
|
||||||
void prepare_servos();
|
void prepare_servos();
|
||||||
void set_mode(enum ControlMode mode, mode_reason_t reason);
|
void set_mode(enum ControlMode mode, ModeReason reason);
|
||||||
|
bool set_mode(const uint8_t new_mode, const ModeReason reason) override;
|
||||||
bool should_log(uint32_t mask);
|
bool should_log(uint32_t mask);
|
||||||
bool start_command_callback(const AP_Mission::Mission_Command& cmd) { return false; }
|
bool start_command_callback(const AP_Mission::Mission_Command& cmd) { return false; }
|
||||||
void exit_mission_callback() { return; }
|
void exit_mission_callback() { return; }
|
||||||
|
|
|
@ -20,7 +20,7 @@ bool Tracker::servo_test_set_servo(uint8_t servo_num, uint16_t pwm)
|
||||||
|
|
||||||
// ensure we are in servo test mode
|
// ensure we are in servo test mode
|
||||||
if (control_mode != SERVO_TEST) {
|
if (control_mode != SERVO_TEST) {
|
||||||
set_mode(SERVO_TEST, MODE_REASON_SERVOTEST);
|
set_mode(SERVO_TEST, ModeReason::SERVOTEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
// set yaw servo pwm and send output to servo
|
// set yaw servo pwm and send output to servo
|
||||||
|
|
|
@ -24,13 +24,6 @@ enum AltSource {
|
||||||
ALT_SOURCE_GPS_VEH_ONLY=2
|
ALT_SOURCE_GPS_VEH_ONLY=2
|
||||||
};
|
};
|
||||||
|
|
||||||
enum mode_reason_t {
|
|
||||||
MODE_REASON_INITIALISED = 0,
|
|
||||||
MODE_REASON_STARTUP,
|
|
||||||
MODE_REASON_SERVOTEST,
|
|
||||||
MODE_REASON_GCS_COMMAND,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class PWMDisarmed {
|
enum class PWMDisarmed {
|
||||||
ZERO = 0,
|
ZERO = 0,
|
||||||
TRIM,
|
TRIM,
|
||||||
|
|
|
@ -110,20 +110,20 @@ void Tracker::init_tracker()
|
||||||
|
|
||||||
switch (g.initial_mode) {
|
switch (g.initial_mode) {
|
||||||
case MANUAL:
|
case MANUAL:
|
||||||
set_mode(MANUAL, MODE_REASON_STARTUP);
|
set_mode(MANUAL, ModeReason::STARTUP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCAN:
|
case SCAN:
|
||||||
set_mode(SCAN, MODE_REASON_STARTUP);
|
set_mode(SCAN, ModeReason::STARTUP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case STOP:
|
case STOP:
|
||||||
set_mode(STOP, MODE_REASON_STARTUP);
|
set_mode(STOP, ModeReason::STARTUP);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AUTO:
|
case AUTO:
|
||||||
default:
|
default:
|
||||||
set_mode(AUTO, MODE_REASON_STARTUP);
|
set_mode(AUTO, ModeReason::STARTUP);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,7 +214,7 @@ void Tracker::prepare_servos()
|
||||||
SRV_Channels::output_ch_all();
|
SRV_Channels::output_ch_all();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Tracker::set_mode(enum ControlMode mode, mode_reason_t reason)
|
void Tracker::set_mode(enum ControlMode mode, ModeReason reason)
|
||||||
{
|
{
|
||||||
if (control_mode == mode) {
|
if (control_mode == mode) {
|
||||||
// don't switch modes if we are already in the correct mode.
|
// don't switch modes if we are already in the correct mode.
|
||||||
|
@ -243,6 +243,20 @@ void Tracker::set_mode(enum ControlMode mode, mode_reason_t reason)
|
||||||
nav_status.bearing = ahrs.yaw_sensor * 0.01f;
|
nav_status.bearing = ahrs.yaw_sensor * 0.01f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Tracker::set_mode(const uint8_t new_mode, const ModeReason reason)
|
||||||
|
{
|
||||||
|
switch (new_mode) {
|
||||||
|
case AUTO:
|
||||||
|
case MANUAL:
|
||||||
|
case SCAN:
|
||||||
|
case SERVO_TEST:
|
||||||
|
case STOP:
|
||||||
|
set_mode((enum ControlMode)new_mode, reason);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
should we log a message type now?
|
should we log a message type now?
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue