diff --git a/src/Vehicle/MultiVehicleManager.cc b/src/Vehicle/MultiVehicleManager.cc index 742052ccd2efd5c883ea7550bd77fa3e408a10d9..86e632823f89c065d441673f2a91fbbbeff73c94 100644 --- a/src/Vehicle/MultiVehicleManager.cc +++ b/src/Vehicle/MultiVehicleManager.cc @@ -54,29 +54,30 @@ MultiVehicleManager::MultiVehicleManager(QGCApplication* app, QGCToolbox* toolbo void MultiVehicleManager::setToolbox(QGCToolbox *toolbox) { - QGCTool::setToolbox(toolbox); + QGCTool::setToolbox(toolbox); - _firmwarePluginManager = _toolbox->firmwarePluginManager(); - _joystickManager = _toolbox->joystickManager(); - _mavlinkProtocol = _toolbox->mavlinkProtocol(); + _firmwarePluginManager = _toolbox->firmwarePluginManager(); + _joystickManager = _toolbox->joystickManager(); + _mavlinkProtocol = _toolbox->mavlinkProtocol(); - QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership); - qmlRegisterUncreatableType("QGroundControl.MultiVehicleManager", 1, 0, "MultiVehicleManager", "Reference only"); + QQmlEngine::setObjectOwnership(this, QQmlEngine::CppOwnership); + qmlRegisterUncreatableType("QGroundControl.MultiVehicleManager", 1, 0, "MultiVehicleManager", "Reference only"); - connect(_mavlinkProtocol, &MAVLinkProtocol::vehicleHeartbeatInfo, this, &MultiVehicleManager::_vehicleHeartbeatInfo); + connect(_mavlinkProtocol, &MAVLinkProtocol::vehicleHeartbeatInfo, this, &MultiVehicleManager::_vehicleHeartbeatInfo); - SettingsManager* settingsManager = toolbox->settingsManager(); - _offlineEditingVehicle = new Vehicle(static_cast(settingsManager->appSettings()->offlineEditingFirmwareType()->rawValue().toInt()), - static_cast(settingsManager->appSettings()->offlineEditingVehicleType()->rawValue().toInt()), - _firmwarePluginManager, - this); + SettingsManager* settingsManager = toolbox->settingsManager(); + _offlineEditingVehicle = new Vehicle(static_cast(settingsManager->appSettings()->offlineEditingFirmwareType()->rawValue().toInt()), + static_cast(settingsManager->appSettings()->offlineEditingVehicleType()->rawValue().toInt()), + _firmwarePluginManager, + this); } void MultiVehicleManager::_vehicleHeartbeatInfo(LinkInterface* link, int vehicleId, int componentId, int vehicleMavlinkVersion, int vehicleFirmwareType, int vehicleType) { if (componentId != MAV_COMP_ID_AUTOPILOT1) { - // Don't create vehicles for components other than the autopilot - if (!getVehicleById(vehicleId)) { + // Special case for PX4 Flow + if (vehicleId != 81 || componentId != 50) { + // Don't create vehicles for components other than the autopilot qCDebug(MultiVehicleManagerLog()) << "Ignoring heartbeat from unknown component " << link->getName() << vehicleId @@ -84,8 +85,8 @@ void MultiVehicleManager::_vehicleHeartbeatInfo(LinkInterface* link, int vehicle << vehicleMavlinkVersion << vehicleFirmwareType << vehicleType; + return; } - return; } if (_vehicles.count() > 0 && !qgcApp()->toolbox()->corePlugin()->options()->multiVehicleEnabled()) { @@ -119,15 +120,15 @@ void MultiVehicleManager::_vehicleHeartbeatInfo(LinkInterface* link, int vehicle _app->showMessage(tr("Warning: A vehicle is using the same system id as %1: %2").arg(qgcApp()->applicationName()).arg(vehicleId)); } -// QSettings settings; -// bool mavlinkVersionCheck = settings.value("VERSION_CHECK_ENABLED", true).toBool(); -// if (mavlinkVersionCheck && vehicleMavlinkVersion != MAVLINK_VERSION) { -// _ignoreVehicleIds += vehicleId; -// _app->showMessage(QString("The MAVLink protocol version on vehicle #%1 and %2 differ! " -// "It is unsafe to use different MAVLink versions. " -// "%2 therefore refuses to connect to vehicle #%1, which sends MAVLink version %3 (%2 uses version %4).").arg(vehicleId).arg(qgcApp()->applicationName()).arg(vehicleMavlinkVersion).arg(MAVLINK_VERSION)); -// return; -// } + // QSettings settings; + // bool mavlinkVersionCheck = settings.value("VERSION_CHECK_ENABLED", true).toBool(); + // if (mavlinkVersionCheck && vehicleMavlinkVersion != MAVLINK_VERSION) { + // _ignoreVehicleIds += vehicleId; + // _app->showMessage(QString("The MAVLink protocol version on vehicle #%1 and %2 differ! " + // "It is unsafe to use different MAVLink versions. " + // "%2 therefore refuses to connect to vehicle #%1, which sends MAVLink version %3 (%2 uses version %4).").arg(vehicleId).arg(qgcApp()->applicationName()).arg(vehicleMavlinkVersion).arg(MAVLINK_VERSION)); + // return; + // } Vehicle* vehicle = new Vehicle(link, vehicleId, componentId, (MAV_AUTOPILOT)vehicleFirmwareType, (MAV_TYPE)vehicleType, _firmwarePluginManager, _joystickManager); connect(vehicle, &Vehicle::allLinksInactive, this, &MultiVehicleManager::_deleteVehiclePhase1); @@ -177,7 +178,7 @@ void MultiVehicleManager::_requestProtocolVersion(unsigned version) Vehicle *v = qobject_cast(_vehicles[i]); if (v && v->maxProtoVersion() > maxversion) { - maxversion = v->maxProtoVersion(); + maxversion = v->maxProtoVersion(); } }