diff --git a/src/MissionManager/MissionManager.cc b/src/MissionManager/MissionManager.cc index f17b699c018f389b0a8428416beae4cb8dd1cb96..ccb6af749f55bb66ae26a621d16b6abec22e046c 100644 --- a/src/MissionManager/MissionManager.cc +++ b/src/MissionManager/MissionManager.cc @@ -45,8 +45,6 @@ MissionManager::MissionManager(Vehicle* vehicle) _ackTimeoutTimer->setInterval(_ackTimeoutMilliseconds); connect(_ackTimeoutTimer, &QTimer::timeout, this, &MissionManager::_ackTimeout); - - requestMissionItems(); } MissionManager::~MissionManager() diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index b1c4e824e133c774e4fdeae93ab1e26316fe4f6b..824b860b9fbd4049bcc6a5b209db4491f8545f0a 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -87,6 +87,7 @@ Vehicle::Vehicle(LinkInterface* link, int vehicleId, MAV_AUTOPILOT firmwareType, , _satelliteLock(0) , _updateCount(0) , _missionManager(NULL) + , _missionManagerInitialRequestComplete(false) , _armed(false) , _base_mode(0) , _custom_mode(0) @@ -110,7 +111,8 @@ Vehicle::Vehicle(LinkInterface* link, int vehicleId, MAV_AUTOPILOT firmwareType, _firmwarePlugin = FirmwarePluginManager::instance()->firmwarePluginForAutopilot(_firmwareType, _vehicleType); _autopilotPlugin = AutoPilotPluginManager::instance()->newAutopilotPluginForVehicle(this); - connect(_autopilotPlugin, &AutoPilotPlugin::missingParametersChanged, this, &Vehicle::missingParametersChanged); + connect(_autopilotPlugin, &AutoPilotPlugin::parametersReadyChanged, this, &Vehicle::_parametersReady); + connect(_autopilotPlugin, &AutoPilotPlugin::missingParametersChanged, this, &Vehicle::missingParametersChanged); // Refresh timer connect(_refreshTimer, SIGNAL(timeout()), this, SLOT(_checkUpdate())); @@ -1101,3 +1103,11 @@ void Vehicle::_mapTrajectoryStop() { _mapTrajectoryTimer.stop(); } + +void Vehicle::_parametersReady(bool parametersReady) +{ + if (parametersReady && !_missionManagerInitialRequestComplete) { + _missionManagerInitialRequestComplete = true; + _missionManager->requestMissionItems(); + } +} diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index 60abe7893f9f6db5b08c7f862a4f17e4cd2a087a..2377081bc4633df86248031386af5179c73ccaa0 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -304,6 +304,7 @@ private slots: void _sendMessage(mavlink_message_t message); void _sendMessageMultipleNext(void); void _addNewMapTrajectoryPoint(void); + void _parametersReady(bool parametersReady); void _handleTextMessage (int newCount); /** @brief Attitude from main autopilot / system state */ @@ -409,7 +410,7 @@ private: int _updateCount; MissionManager* _missionManager; - QmlObjectListModel _missionItems; + bool _missionManagerInitialRequestComplete; bool _armed; ///< true: vehicle is armed uint8_t _base_mode; ///< base_mode from HEARTBEAT