Browse Source

VTOL: No wizard mode for transition position

QGC4.4
Don Gagne 4 years ago committed by Don Gagne
parent
commit
e42a655414
  1. 5
      src/MissionManager/MissionController.cc
  2. 27
      src/MissionManager/TakeoffMissionItem.cc
  3. 5
      src/MissionManager/TakeoffMissionItem.h
  4. 6
      src/PlanView/TakeoffItemMapVisual.qml

5
src/MissionManager/MissionController.cc

@ -193,7 +193,8 @@ void MissionController::_newMissionItemsAvailableFromVehicle(bool removeAllReque @@ -193,7 +193,8 @@ void MissionController::_newMissionItemsAvailableFromVehicle(bool removeAllReque
SimpleMissionItem* simpleItem = new SimpleMissionItem(_masterController, _flyView, *missionItem);
if (TakeoffMissionItem::isTakeoffCommand(static_cast<MAV_CMD>(simpleItem->command()))) {
// This needs to be a TakeoffMissionItem
_takeoffMissionItem = new TakeoffMissionItem(*missionItem, _masterController, _flyView, settingsItem);
_takeoffMissionItem = new TakeoffMissionItem(*missionItem, _masterController, _flyView, settingsItem, false /* forLoad */);
_takeoffMissionItem->setWizardMode(false);
simpleItem->deleteLater();
simpleItem = _takeoffMissionItem;
}
@ -359,7 +360,7 @@ VisualMissionItem* MissionController::insertSimpleMissionItem(QGeoCoordinate coo @@ -359,7 +360,7 @@ VisualMissionItem* MissionController::insertSimpleMissionItem(QGeoCoordinate coo
VisualMissionItem* MissionController::insertTakeoffItem(QGeoCoordinate /*coordinate*/, int visualItemIndex, bool makeCurrentItem)
{
int sequenceNumber = _nextSequenceNumber();
_takeoffMissionItem = new TakeoffMissionItem(_controllerVehicle->vtol() ? MAV_CMD_NAV_VTOL_TAKEOFF : MAV_CMD_NAV_TAKEOFF, _masterController, _flyView, _settingsItem);
_takeoffMissionItem = new TakeoffMissionItem(_controllerVehicle->vtol() ? MAV_CMD_NAV_VTOL_TAKEOFF : MAV_CMD_NAV_TAKEOFF, _masterController, _flyView, _settingsItem, false /* forLoad */);
_takeoffMissionItem->setSequenceNumber(sequenceNumber);
_initVisualItem(_takeoffMissionItem);

27
src/MissionManager/TakeoffMissionItem.cc

@ -27,20 +27,19 @@ TakeoffMissionItem::TakeoffMissionItem(PlanMasterController* masterController, b @@ -27,20 +27,19 @@ TakeoffMissionItem::TakeoffMissionItem(PlanMasterController* masterController, b
_init(forLoad);
}
TakeoffMissionItem::TakeoffMissionItem(MAV_CMD takeoffCmd, PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem)
TakeoffMissionItem::TakeoffMissionItem(MAV_CMD takeoffCmd, PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem, bool forLoad)
: SimpleMissionItem (masterController, flyView, false /* forLoad */)
, _settingsItem (settingsItem)
{
setCommand(takeoffCmd);
_init(false /* forLoad */);
_init(forLoad);
}
TakeoffMissionItem::TakeoffMissionItem(const MissionItem& missionItem, PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem)
TakeoffMissionItem::TakeoffMissionItem(const MissionItem& missionItem, PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem, bool forLoad)
: SimpleMissionItem (masterController, flyView, missionItem)
, _settingsItem (settingsItem)
{
_init(false /* forLoad */);
_wizardMode = false;
_init(forLoad);
}
TakeoffMissionItem::~TakeoffMissionItem()
@ -76,17 +75,15 @@ void TakeoffMissionItem::_init(bool forLoad) @@ -76,17 +75,15 @@ void TakeoffMissionItem::_init(bool forLoad)
}
_initLaunchTakeoffAtSameLocation();
if (_launchTakeoffAtSameLocation && homePosition.isValid()) {
SimpleMissionItem::setCoordinate(homePosition);
}
if (homePosition.isValid() && coordinate().isValid()) {
// Item already fully specified, most likely from mission load from storage
_wizardMode = false;
} else {
if (_launchTakeoffAtSameLocation && homePosition.isValid()) {
_wizardMode = false;
SimpleMissionItem::setCoordinate(homePosition);
} else {
_wizardMode = true;
}
// Wizard mode is set if:
// - Launch position is missing - requires prompt to user to click to set launch
// - Fixed wing - warn about climb out position adjustment
if (!homePosition.isValid() || _controllerVehicle->fixedWing()) {
_wizardMode = true;
}
setDirty(false);

5
src/MissionManager/TakeoffMissionItem.h

@ -21,9 +21,10 @@ class TakeoffMissionItem : public SimpleMissionItem @@ -21,9 +21,10 @@ class TakeoffMissionItem : public SimpleMissionItem
Q_OBJECT
public:
// Note: forLoad = true indicates that TakeoffMissionItem::load will be called onthe item
TakeoffMissionItem(PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem, bool forLoad);
TakeoffMissionItem(MAV_CMD takeoffCmd, PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem);
TakeoffMissionItem(const MissionItem& missionItem, PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem);
TakeoffMissionItem(MAV_CMD takeoffCmd, PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem, bool forLoad);
TakeoffMissionItem(const MissionItem& missionItem, PlanMasterController* masterController, bool flyView, MissionSettingsItem* settingsItem, bool forLoad);
Q_PROPERTY(QGeoCoordinate launchCoordinate READ launchCoordinate WRITE setLaunchCoordinate NOTIFY launchCoordinateChanged)
Q_PROPERTY(bool launchTakeoffAtSameLocation READ launchTakeoffAtSameLocation WRITE setLaunchTakeoffAtSameLocation NOTIFY launchTakeoffAtSameLocationChanged)

6
src/PlanView/TakeoffItemMapVisual.qml

@ -154,7 +154,11 @@ Item { @@ -154,7 +154,11 @@ Item {
coordinate.longitude = coordinate.longitude.toFixed(_decimalPlaces)
coordinate.altitude = coordinate.altitude.toFixed(_decimalPlaces)
_missionItem.launchCoordinate = coordinate
if (_missionItem.launchTakeoffAtSameLocation) {
// We drop out of wizard mode after launch position is set if:
// - Takeoff location is same as launch position so nothing left to do
// - Not a fixed wing. Fixed wing require warning about tweaking climb out position
if (_missionItem.launchTakeoffAtSameLocation || !vehicle.fixedWing) {
_missionItem.wizardMode = false
}
_objMgrMouseClick.destroyObjects()

Loading…
Cancel
Save