Commit 8d728004 authored by Don Gagne's avatar Don Gagne

Add setup prereq support

parent 1d5a457a
...@@ -169,3 +169,8 @@ QUrl AirframeComponent::summaryQmlSource(void) const ...@@ -169,3 +169,8 @@ QUrl AirframeComponent::summaryQmlSource(void) const
{ {
return QUrl::fromUserInput("qrc:/qml/AirframeComponentSummary.qml"); return QUrl::fromUserInput("qrc:/qml/AirframeComponentSummary.qml");
} }
QString AirframeComponent::prerequisiteSetup(void) const
{
return QString();
}
...@@ -49,7 +49,8 @@ public: ...@@ -49,7 +49,8 @@ public:
virtual QString setupStateDescription(void) const; virtual QString setupStateDescription(void) const;
virtual QWidget* setupWidget(void) const; virtual QWidget* setupWidget(void) const;
virtual QStringList paramFilterList(void) const; virtual QStringList paramFilterList(void) const;
virtual QUrl summaryQmlSource(void) const; virtual QUrl summaryQmlSource(void) const;
virtual QString prerequisiteSetup(void) const;
private: private:
const QString _name; const QString _name;
......
...@@ -104,12 +104,6 @@ void FlightModeConfig::_initUi(void) { ...@@ -104,12 +104,6 @@ void FlightModeConfig::_initUi(void) {
} }
_updateAllSwitches(); _updateAllSwitches();
// Finally if RC Calibration has not been performed disable the entire widget and inform user
if (_getChannelMapForParam(_modeSwitchParam) == 0) {
// FIXME: Do something more than disable
setEnabled(false);
}
} }
void FlightModeConfig::_updateAllSwitches(void) void FlightModeConfig::_updateAllSwitches(void)
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "FlightModesComponent.h" #include "FlightModesComponent.h"
#include "FlightModeConfig.h" #include "FlightModeConfig.h"
#include "VehicleComponentSummaryItem.h" #include "VehicleComponentSummaryItem.h"
#include "PX4AutoPilotPlugin.h"
/// @brief Parameters which signal a change in setupComplete state /// @brief Parameters which signal a change in setupComplete state
static const char* triggerParams[] = { "RC_MAP_MODE_SW", NULL }; static const char* triggerParams[] = { "RC_MAP_MODE_SW", NULL };
...@@ -121,3 +122,17 @@ QUrl FlightModesComponent::summaryQmlSource(void) const ...@@ -121,3 +122,17 @@ QUrl FlightModesComponent::summaryQmlSource(void) const
{ {
return QUrl::fromUserInput("qrc:/qml/FlightModesComponentSummary.qml"); return QUrl::fromUserInput("qrc:/qml/FlightModesComponentSummary.qml");
} }
QString FlightModesComponent::prerequisiteSetup(void) const
{
PX4AutoPilotPlugin* plugin = dynamic_cast<PX4AutoPilotPlugin*>(_autopilot);
Q_ASSERT(plugin);
if (!plugin->airframeComponent()->setupComplete()) {
return plugin->airframeComponent()->name();
} else if (!plugin->radioComponent()->setupComplete()) {
return plugin->radioComponent()->name();
}
return QString();
}
...@@ -50,6 +50,7 @@ public: ...@@ -50,6 +50,7 @@ public:
virtual QWidget* setupWidget(void) const; virtual QWidget* setupWidget(void) const;
virtual QStringList paramFilterList(void) const; virtual QStringList paramFilterList(void) const;
virtual QUrl summaryQmlSource(void) const; virtual QUrl summaryQmlSource(void) const;
virtual QString prerequisiteSetup(void) const;
private: private:
const QString _name; const QString _name;
......
...@@ -22,11 +22,6 @@ ...@@ -22,11 +22,6 @@
======================================================================*/ ======================================================================*/
#include "PX4AutoPilotPlugin.h" #include "PX4AutoPilotPlugin.h"
#include "AirframeComponent.h"
#include "RadioComponent.h"
#include "SensorsComponent.h"
#include "FlightModesComponent.h"
#include "SafetyComponent.h"
#include "AutoPilotPluginManager.h" #include "AutoPilotPluginManager.h"
#include "UASManager.h" #include "UASManager.h"
#include "QGCUASParamManagerInterface.h" #include "QGCUASParamManagerInterface.h"
...@@ -36,7 +31,6 @@ ...@@ -36,7 +31,6 @@
/// @brief This is the AutoPilotPlugin implementatin for the MAV_AUTOPILOT_PX4 type. /// @brief This is the AutoPilotPlugin implementatin for the MAV_AUTOPILOT_PX4 type.
/// @author Don Gagne <don@thegagnes.com> /// @author Don Gagne <don@thegagnes.com>
enum PX4_CUSTOM_MAIN_MODE { enum PX4_CUSTOM_MAIN_MODE {
PX4_CUSTOM_MAIN_MODE_MANUAL = 1, PX4_CUSTOM_MAIN_MODE_MANUAL = 1,
PX4_CUSTOM_MAIN_MODE_ALTCTL, PX4_CUSTOM_MAIN_MODE_ALTCTL,
...@@ -69,7 +63,12 @@ union px4_custom_mode { ...@@ -69,7 +63,12 @@ union px4_custom_mode {
PX4AutoPilotPlugin::PX4AutoPilotPlugin(UASInterface* uas, QObject* parent) : PX4AutoPilotPlugin::PX4AutoPilotPlugin(UASInterface* uas, QObject* parent) :
AutoPilotPlugin(parent), AutoPilotPlugin(parent),
_uas(uas), _uas(uas),
_parameterFacts(NULL) _parameterFacts(NULL),
_airframeComponent(NULL),
_radioComponent(NULL),
_flightModesComponent(NULL),
_sensorsComponent(NULL),
_safetyComponent(NULL)
{ {
Q_ASSERT(uas); Q_ASSERT(uas);
...@@ -193,29 +192,27 @@ bool PX4AutoPilotPlugin::pluginIsReady(void) const ...@@ -193,29 +192,27 @@ bool PX4AutoPilotPlugin::pluginIsReady(void) const
const QVariantList& PX4AutoPilotPlugin::components(void) const QVariantList& PX4AutoPilotPlugin::components(void)
{ {
if (_components.count() == 0) { if (_components.count() == 0) {
VehicleComponent* component;
Q_ASSERT(_uas); Q_ASSERT(_uas);
component = new AirframeComponent(_uas, this); _airframeComponent = new AirframeComponent(_uas, this);
Q_CHECK_PTR(component); Q_CHECK_PTR(_airframeComponent);
_components.append(QVariant::fromValue(component)); _components.append(QVariant::fromValue((VehicleComponent*)_airframeComponent));
component = new RadioComponent(_uas, this); _radioComponent = new RadioComponent(_uas, this);
Q_CHECK_PTR(component); Q_CHECK_PTR(_radioComponent);
_components.append(QVariant::fromValue(component)); _components.append(QVariant::fromValue((VehicleComponent*)_radioComponent));
component = new FlightModesComponent(_uas, this); _flightModesComponent = new FlightModesComponent(_uas, this);
Q_CHECK_PTR(component); Q_CHECK_PTR(_flightModesComponent);
_components.append(QVariant::fromValue(component)); _components.append(QVariant::fromValue((VehicleComponent*)_flightModesComponent));
component = new SensorsComponent(_uas, this); _sensorsComponent = new SensorsComponent(_uas, this);
Q_CHECK_PTR(component); Q_CHECK_PTR(_sensorsComponent);
_components.append(QVariant::fromValue(component)); _components.append(QVariant::fromValue((VehicleComponent*)_sensorsComponent));
component = new SafetyComponent(_uas, this); _safetyComponent = new SafetyComponent(_uas, this);
Q_CHECK_PTR(component); Q_CHECK_PTR(_safetyComponent);
_components.append(QVariant::fromValue(component)); _components.append(QVariant::fromValue((VehicleComponent*)_safetyComponent));
} }
return _components; return _components;
......
...@@ -28,6 +28,11 @@ ...@@ -28,6 +28,11 @@
#include "AutoPilotPluginManager.h" #include "AutoPilotPluginManager.h"
#include "UASInterface.h" #include "UASInterface.h"
#include "PX4ParameterFacts.h" #include "PX4ParameterFacts.h"
#include "AirframeComponent.h"
#include "RadioComponent.h"
#include "FlightModesComponent.h"
#include "SensorsComponent.h"
#include "SafetyComponent.h"
#include <QImage> #include <QImage>
...@@ -53,10 +58,22 @@ public: ...@@ -53,10 +58,22 @@ public:
static QString getShortModeText(uint8_t baseMode, uint32_t customMode); static QString getShortModeText(uint8_t baseMode, uint32_t customMode);
static void clearStaticData(void); static void clearStaticData(void);
// These methods should only be used by objects within the plugin
AirframeComponent* airframeComponent(void) { return _airframeComponent; }
RadioComponent* radioComponent(void) { return _radioComponent; }
FlightModesComponent* flightModesComponent(void) { return _flightModesComponent; }
SensorsComponent* sensorsComponent(void) { return _sensorsComponent; }
SafetyComponent* safetyComponent(void) { return _safetyComponent; }
private: private:
UASInterface* _uas; UASInterface* _uas;
PX4ParameterFacts* _parameterFacts; PX4ParameterFacts* _parameterFacts;
QVariantList _components; QVariantList _components;
AirframeComponent* _airframeComponent;
RadioComponent* _radioComponent;
FlightModesComponent* _flightModesComponent;
SensorsComponent* _sensorsComponent;
SafetyComponent* _safetyComponent;
}; };
#endif #endif
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "RadioComponent.h" #include "RadioComponent.h"
#include "PX4RCCalibration.h" #include "PX4RCCalibration.h"
#include "VehicleComponentSummaryItem.h" #include "VehicleComponentSummaryItem.h"
#include "PX4AutoPilotPlugin.h"
/// @brief Parameters which signal a change in setupComplete state /// @brief Parameters which signal a change in setupComplete state
static const char* triggerParams[] = { "RC_MAP_MODE_SW", NULL }; static const char* triggerParams[] = { "RC_MAP_MODE_SW", NULL };
...@@ -105,3 +106,15 @@ QUrl RadioComponent::summaryQmlSource(void) const ...@@ -105,3 +106,15 @@ QUrl RadioComponent::summaryQmlSource(void) const
{ {
return QUrl::fromUserInput("qrc:/qml/RadioComponentSummary.qml"); return QUrl::fromUserInput("qrc:/qml/RadioComponentSummary.qml");
} }
QString RadioComponent::prerequisiteSetup(void) const
{
PX4AutoPilotPlugin* plugin = dynamic_cast<PX4AutoPilotPlugin*>(_autopilot);
Q_ASSERT(plugin);
if (!plugin->airframeComponent()->setupComplete()) {
return plugin->airframeComponent()->name();
}
return QString();
}
...@@ -51,6 +51,7 @@ public: ...@@ -51,6 +51,7 @@ public:
virtual QWidget* setupWidget(void) const; virtual QWidget* setupWidget(void) const;
virtual QStringList paramFilterList(void) const; virtual QStringList paramFilterList(void) const;
virtual QUrl summaryQmlSource(void) const; virtual QUrl summaryQmlSource(void) const;
virtual QString prerequisiteSetup(void) const;
private: private:
const QString _name; const QString _name;
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "PX4RCCalibration.h" #include "PX4RCCalibration.h"
#include "VehicleComponentSummaryItem.h" #include "VehicleComponentSummaryItem.h"
#include "QGCQmlWidgetHolder.h" #include "QGCQmlWidgetHolder.h"
#include "PX4AutoPilotPlugin.h"
/// @brief Parameters which signal a change in setupComplete state /// @brief Parameters which signal a change in setupComplete state
static const char* triggerParams[] = { NULL }; static const char* triggerParams[] = { NULL };
...@@ -104,3 +105,15 @@ QUrl SafetyComponent::summaryQmlSource(void) const ...@@ -104,3 +105,15 @@ QUrl SafetyComponent::summaryQmlSource(void) const
{ {
return QUrl::fromUserInput("qrc:/qml/SafetyComponentSummary.qml"); return QUrl::fromUserInput("qrc:/qml/SafetyComponentSummary.qml");
} }
QString SafetyComponent::prerequisiteSetup(void) const
{
PX4AutoPilotPlugin* plugin = dynamic_cast<PX4AutoPilotPlugin*>(_autopilot);
Q_ASSERT(plugin);
if (!plugin->airframeComponent()->setupComplete()) {
return plugin->airframeComponent()->name();
}
return QString();
}
...@@ -51,6 +51,7 @@ public: ...@@ -51,6 +51,7 @@ public:
virtual QWidget* setupWidget(void) const; virtual QWidget* setupWidget(void) const;
virtual QStringList paramFilterList(void) const; virtual QStringList paramFilterList(void) const;
virtual QUrl summaryQmlSource(void) const; virtual QUrl summaryQmlSource(void) const;
virtual QString prerequisiteSetup(void) const;
private: private:
const QString _name; const QString _name;
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "SensorsComponent.h" #include "SensorsComponent.h"
#include "QGCPX4SensorCalibration.h" #include "QGCPX4SensorCalibration.h"
#include "VehicleComponentSummaryItem.h" #include "VehicleComponentSummaryItem.h"
#include "PX4AutoPilotPlugin.h"
// These two list must be kept in sync // These two list must be kept in sync
...@@ -118,3 +119,15 @@ QUrl SensorsComponent::summaryQmlSource(void) const ...@@ -118,3 +119,15 @@ QUrl SensorsComponent::summaryQmlSource(void) const
{ {
return QUrl::fromUserInput("qrc:/qml/SensorsComponentSummary.qml"); return QUrl::fromUserInput("qrc:/qml/SensorsComponentSummary.qml");
} }
QString SensorsComponent::prerequisiteSetup(void) const
{
PX4AutoPilotPlugin* plugin = dynamic_cast<PX4AutoPilotPlugin*>(_autopilot);
Q_ASSERT(plugin);
if (!plugin->airframeComponent()->setupComplete()) {
return plugin->airframeComponent()->name();
}
return QString();
}
...@@ -50,6 +50,7 @@ public: ...@@ -50,6 +50,7 @@ public:
virtual QWidget* setupWidget(void) const; virtual QWidget* setupWidget(void) const;
virtual QStringList paramFilterList(void) const; virtual QStringList paramFilterList(void) const;
virtual QUrl summaryQmlSource(void) const; virtual QUrl summaryQmlSource(void) const;
virtual QString prerequisiteSetup(void) const;
private: private:
const QString _name; const QString _name;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment