From b207c58ea568f7e5323ab3e85529c78f688dab6e Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Tue, 30 May 2017 20:38:47 -0700 Subject: [PATCH] Home position update fixes --- src/MissionManager/MissionController.cc | 10 ++++++---- src/MissionManager/MissionSettingsItem.cc | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/MissionManager/MissionController.cc b/src/MissionManager/MissionController.cc index 512d8a614..0b3a40b63 100644 --- a/src/MissionManager/MissionController.cc +++ b/src/MissionManager/MissionController.cc @@ -1293,8 +1293,8 @@ void MissionController::_initAllVisualItems(void) _settingsItem->setIsCurrentItem(true); } - if (!_editMode && _controllerVehicle) { - _settingsItem->setCoordinate(_controllerVehicle->homePosition()); + if (!_editMode && _managerVehicle->homePosition().isValid()) { + _settingsItem->setCoordinate(_managerVehicle->homePosition()); } connect(_settingsItem, &MissionSettingsItem::coordinateChanged, this, &MissionController::_recalcAll); @@ -1481,6 +1481,8 @@ void MissionController::_addMissionSettings(QmlObjectListModel* visualItems, boo { MissionSettingsItem* settingsItem = new MissionSettingsItem(_controllerVehicle, visualItems); + qCDebug(MissionControllerLog) << "_addMissionSettings addToCenter" << addToCenter; + visualItems->insert(0, settingsItem); if (addToCenter) { @@ -1515,8 +1517,8 @@ void MissionController::_addMissionSettings(QmlObjectListModel* visualItems, boo settingsItem->setCoordinate(QGeoCoordinate((south + ((north - south) / 2)) - 90.0, (west + ((east - west) / 2)) - 180.0, 0.0)); } } - } else { - settingsItem->setCoordinate(_controllerVehicle->homePosition()); + } else if (_managerVehicle->homePosition().isValid()) { + settingsItem->setCoordinate(_managerVehicle->homePosition()); } } diff --git a/src/MissionManager/MissionSettingsItem.cc b/src/MissionManager/MissionSettingsItem.cc index 67072b78b..858b58faf 100644 --- a/src/MissionManager/MissionSettingsItem.cc +++ b/src/MissionManager/MissionSettingsItem.cc @@ -221,7 +221,7 @@ void MissionSettingsItem::setCoordinate(const QGeoCoordinate& coordinate) { if (_plannedHomePositionCoordinate != coordinate) { // ArduPilot tends to send crap home positions at initial vehicel boot, discard them - if (coordinate.latitude() != 0 || coordinate.longitude() != 0) { + if (coordinate.isValid() && (coordinate.latitude() != 0 || coordinate.longitude() != 0)) { qDebug() << "Setting home position" << coordinate; _plannedHomePositionCoordinate = coordinate; emit coordinateChanged(coordinate); -- 2.22.0