|
|
|
@ -26,15 +26,21 @@
@@ -26,15 +26,21 @@
|
|
|
|
|
|
|
|
|
|
#include "AutoPilotPlugin.h" |
|
|
|
|
#include "QGCUASParamManagerInterface.h" |
|
|
|
|
#include "SetupView.h" |
|
|
|
|
#include "QGCApplication.h" |
|
|
|
|
#include "QGCMessageBox.h" |
|
|
|
|
#include "MainWindow.h" |
|
|
|
|
|
|
|
|
|
AutoPilotPlugin::AutoPilotPlugin(UASInterface* uas, QObject* parent) : |
|
|
|
|
QObject(parent), |
|
|
|
|
_uas(uas), |
|
|
|
|
_pluginReady(false) |
|
|
|
|
_pluginReady(false), |
|
|
|
|
_setupComplete(false) |
|
|
|
|
{ |
|
|
|
|
Q_ASSERT(_uas); |
|
|
|
|
|
|
|
|
|
connect(_uas, &UASInterface::disconnected, this, &AutoPilotPlugin::_uasDisconnected); |
|
|
|
|
connect(this, &AutoPilotPlugin::pluginReadyChanged, this, &AutoPilotPlugin::_pluginReadyChanged); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AutoPilotPlugin::_uasDisconnected(void) |
|
|
|
@ -43,6 +49,54 @@ void AutoPilotPlugin::_uasDisconnected(void)
@@ -43,6 +49,54 @@ void AutoPilotPlugin::_uasDisconnected(void)
|
|
|
|
|
emit pluginReadyChanged(_pluginReady); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AutoPilotPlugin::_pluginReadyChanged(bool pluginReady) |
|
|
|
|
{ |
|
|
|
|
if (pluginReady) { |
|
|
|
|
_recalcSetupComplete(); |
|
|
|
|
if (!_setupComplete) { |
|
|
|
|
QGCMessageBox::warning("Setup", "One or more vehicle components require setup prior to flight."); |
|
|
|
|
|
|
|
|
|
// Take the user to Vehicle Summary
|
|
|
|
|
MainWindow* mainWindow = MainWindow::instance(); |
|
|
|
|
Q_ASSERT(mainWindow); |
|
|
|
|
mainWindow->getMainToolBar()->onSetupView(); |
|
|
|
|
qgcApp()->processEvents(QEventLoop::ExcludeUserInputEvents); |
|
|
|
|
QWidget* setupViewWidget = mainWindow->getCurrentViewWidget(); |
|
|
|
|
Q_ASSERT(setupViewWidget); |
|
|
|
|
SetupView* setupView = qobject_cast<SetupView*>(setupViewWidget); |
|
|
|
|
Q_ASSERT(setupView); |
|
|
|
|
setupView->summaryButtonClicked(); |
|
|
|
|
qgcApp()->processEvents(QEventLoop::ExcludeUserInputEvents); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AutoPilotPlugin::_recalcSetupComplete(void) |
|
|
|
|
{ |
|
|
|
|
bool newSetupComplete = true; |
|
|
|
|
|
|
|
|
|
foreach(const QVariant componentVariant, vehicleComponents()) { |
|
|
|
|
VehicleComponent* component = qobject_cast<VehicleComponent*>(qvariant_cast<QObject *>(componentVariant)); |
|
|
|
|
Q_ASSERT(component); |
|
|
|
|
|
|
|
|
|
if (!component->setupComplete()) { |
|
|
|
|
newSetupComplete = false; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (_setupComplete != newSetupComplete) { |
|
|
|
|
_setupComplete = newSetupComplete; |
|
|
|
|
emit setupCompleteChanged(_setupComplete); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool AutoPilotPlugin::setupComplete(void) |
|
|
|
|
{ |
|
|
|
|
Q_ASSERT(_pluginReady); |
|
|
|
|
return _setupComplete; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void AutoPilotPlugin::refreshAllParameters(void) |
|
|
|
|
{ |
|
|
|
|
_getParameterLoader()->refreshAllParameters(); |
|
|
|
|