Browse Source

Prevent the system from sending a stop HIL command if HIL is not actually active

QGC4.4
Lorenz Meier 11 years ago
parent
commit
1db7551f8b
  1. 9
      src/uas/UAS.cc

9
src/uas/UAS.cc

@ -2867,16 +2867,19 @@ void UAS::toggleArmedState()
void UAS::goAutonomous() void UAS::goAutonomous()
{ {
setMode((base_mode & ~(MAV_MODE_FLAG_MANUAL_INPUT_ENABLED)) | (MAV_MODE_FLAG_AUTO_ENABLED | MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED), 0); setMode((base_mode & ~(MAV_MODE_FLAG_MANUAL_INPUT_ENABLED)) | (MAV_MODE_FLAG_AUTO_ENABLED | MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED), 0);
qDebug() << __FILE__ << __LINE__ << "Going autonomous";
} }
void UAS::goManual() void UAS::goManual()
{ {
setMode((base_mode & ~(MAV_MODE_FLAG_AUTO_ENABLED | MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED)) | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, 0); setMode((base_mode & ~(MAV_MODE_FLAG_AUTO_ENABLED | MAV_MODE_FLAG_STABILIZE_ENABLED | MAV_MODE_FLAG_GUIDED_ENABLED)) | MAV_MODE_FLAG_MANUAL_INPUT_ENABLED, 0);
qDebug() << __FILE__ << __LINE__ << "Going manual";
} }
void UAS::toggleAutonomy() void UAS::toggleAutonomy()
{ {
setMode(base_mode ^ MAV_MODE_FLAG_AUTO_ENABLED ^ MAV_MODE_FLAG_MANUAL_INPUT_ENABLED ^ MAV_MODE_FLAG_GUIDED_ENABLED ^ MAV_MODE_FLAG_STABILIZE_ENABLED, 0); setMode(base_mode ^ MAV_MODE_FLAG_AUTO_ENABLED ^ MAV_MODE_FLAG_MANUAL_INPUT_ENABLED ^ MAV_MODE_FLAG_GUIDED_ENABLED ^ MAV_MODE_FLAG_STABILIZE_ENABLED, 0);
qDebug() << __FILE__ << __LINE__ << "Toggling autonomy";
} }
/** /**
@ -3330,6 +3333,7 @@ void UAS::startHil()
hilEnabled = true; hilEnabled = true;
sensorHil = false; sensorHil = false;
setMode(base_mode | MAV_MODE_FLAG_HIL_ENABLED, custom_mode); setMode(base_mode | MAV_MODE_FLAG_HIL_ENABLED, custom_mode);
qDebug() << __FILE__ << __LINE__ << "HIL is onboard not enabled, trying to enable.";
// Connect HIL simulation link // Connect HIL simulation link
simulation->connectSimulation(); simulation->connectSimulation();
} }
@ -3339,8 +3343,11 @@ void UAS::startHil()
*/ */
void UAS::stopHil() void UAS::stopHil()
{ {
if (simulation) simulation->disconnectSimulation(); if (simulation && simulation->isConnected()) {
simulation->disconnectSimulation();
setMode(base_mode & ~MAV_MODE_FLAG_HIL_ENABLED, custom_mode); setMode(base_mode & ~MAV_MODE_FLAG_HIL_ENABLED, custom_mode);
qDebug() << __FILE__ << __LINE__ << "HIL is onboard not enabled, trying to disable.";
}
hilEnabled = false; hilEnabled = false;
sensorHil = false; sensorHil = false;
} }

Loading…
Cancel
Save