Browse Source

Commit

QGC4.4
Don Gagne 11 years ago
parent
commit
6255090918
  1. 3
      qgroundcontrol.pro
  2. 6
      src/AutoPilotPlugins/AutoPilotPlugin.h
  3. 31
      src/AutoPilotPlugins/AutoPilotPluginManager.cc
  4. 63
      src/AutoPilotPlugins/AutoPilotPluginManager.h
  5. 3
      src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.cc
  6. 2
      src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.h
  7. 6
      src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc
  8. 2
      src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h

3
qgroundcontrol.pro

@ -702,6 +702,7 @@ HEADERS+= \ @@ -702,6 +702,7 @@ HEADERS+= \
src/VehicleSetup/VehicleSetupButton.h \
src/VehicleSetup/VehicleComponentButton.h \
src/VehicleSetup/VehicleComponent.h \
src/AutoPilotPlugins/AutoPilotPluginManager.h \
src/AutoPilotPlugins/AutoPilotPlugin.h \
src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.h \
src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h \
@ -716,7 +717,7 @@ SOURCES += \ @@ -716,7 +717,7 @@ SOURCES += \
src/VehicleSetup/SummaryPage.cc \
src/VehicleSetup/ParameterEditor.cc \
src/VehicleSetup/VehicleComponent.cc \
src/AutoPilotPlugins/AutoPilotPlugin.cc \
src/AutoPilotPlugins/AutoPilotPluginManager.cc \
src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.cc \
src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc \
src/AutoPilotPlugins/PX4/PX4Component.cc \

6
src/AutoPilotPlugins/AutoPilotPlugin.h

@ -43,10 +43,6 @@ class AutoPilotPlugin : public QObject @@ -43,10 +43,6 @@ class AutoPilotPlugin : public QObject
Q_OBJECT
public:
/// @brief Returns the singleton AutoPilot instance for the specified auto pilot type.
/// @param autopilotType Specified using the MAV_AUTOPILOT_* values.
static AutoPilotPlugin* getInstanceForAutoPilotPlugin(int autopilotType);
/// @brief Returns the list of VehicleComponent objects associated with the AutoPilot.
virtual QList<VehicleComponent*> getVehicleComponents(UASInterface* uas) const = 0;
@ -63,7 +59,7 @@ public: @@ -63,7 +59,7 @@ public:
protected:
// All access to AutoPilotPugin objects is through getInstanceForAutoPilotPlugin
AutoPilotPlugin(void);
AutoPilotPlugin(QObject* parent = NULL) : QObject(parent) { }
};
#endif

31
src/AutoPilotPlugins/AutoPilotPlugin.cc → src/AutoPilotPlugins/AutoPilotPluginManager.cc

@ -24,33 +24,30 @@ @@ -24,33 +24,30 @@
/// @file
/// @author Don Gagne <don@thegagnes.com>
#include "AutoPilotPlugin.h"
#include "AutoPilotPluginManager.h"
#include "PX4/PX4AutoPilotPlugin.h"
#include "Generic/GenericAutoPilotPlugin.h"
static AutoPilotPlugin* PX4_AutoPilot = NULL; ///< Singleton plugin for MAV_AUTOPILOT_PX4
static AutoPilotPlugin* Generic_AutoPilot = NULL; ///< Singleton plugin for AutoPilots which do not have a specifically implemented plugin
AutoPilotPlugin::AutoPilotPlugin(void)
AutoPilotPluginManager::AutoPilotPluginManager(QObject* parent) :
QObject(parent)
{
// All plugins are constructed here so that they end up on the correct thread
_pluginMap[MAV_AUTOPILOT_PX4] = new PX4AutoPilotPlugin(this);
Q_ASSERT(_pluginMap.contains(MAV_AUTOPILOT_PX4));
_pluginMap[MAV_AUTOPILOT_GENERIC] = new GenericAutoPilotPlugin(this);
Q_ASSERT(_pluginMap.contains(MAV_AUTOPILOT_GENERIC));
}
AutoPilotPlugin* AutoPilotPlugin::getInstanceForAutoPilotPlugin(int autopilotType)
AutoPilotPlugin* AutoPilotPluginManager::getInstanceForAutoPilotPlugin(int autopilotType)
{
switch (autopilotType) {
case MAV_AUTOPILOT_PX4:
if (PX4_AutoPilot == NULL) {
PX4_AutoPilot = new PX4AutoPilotPlugin;
}
Q_ASSERT(PX4_AutoPilot);
return PX4_AutoPilot;
Q_ASSERT(_pluginMap.contains(MAV_AUTOPILOT_PX4));
return _pluginMap[MAV_AUTOPILOT_PX4];
default:
if (Generic_AutoPilot == NULL) {
Generic_AutoPilot = new GenericAutoPilotPlugin;
}
Q_ASSERT(Generic_AutoPilot);
return Generic_AutoPilot;
Q_ASSERT(_pluginMap.contains(MAV_AUTOPILOT_GENERIC));
return _pluginMap[MAV_AUTOPILOT_GENERIC];
}
}

63
src/AutoPilotPlugins/AutoPilotPluginManager.h

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009 - 2014 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
#ifndef AUTOPILOTPLUGINMANAGER_H
#define AUTOPILOTPLUGINMANAGER_H
#include <QObject>
#include <QList>
#include <QString>
#include "UASInterface.h"
#include "VehicleComponent.h"
#include "QGCApplication.h"
#include "AutoPilotPlugin.h"
/// @file
/// @brief The AutoPilotPlugin manager is a singleton which maintains the list of AutoPilotPlugin objects.
///
/// @author Don Gagne <don@thegagnes.com>
class AutoPilotPluginManager : public QObject
{
Q_OBJECT
public:
/// @brief Returns the singleton AutoPilot instance for the specified auto pilot type.
/// @param autopilotType Specified using the MAV_AUTOPILOT_* values.
AutoPilotPlugin* getInstanceForAutoPilotPlugin(int autopilotType);
private:
/// @brief Only QGCQpplication is allowed to call constructor. All access to singleton is through
/// QGCApplication::singletonAutoPilotPluginManager.
AutoPilotPluginManager(QObject* parent = NULL);
/// @brief Only QGCQpplication is allowed to call constructor. All access to singleton is through
/// QGCApplication::singletonAutoPilotPluginManager.
friend class QGCApplication;
QMap<int, AutoPilotPlugin*> _pluginMap;
};
#endif

3
src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.cc

@ -26,7 +26,8 @@ @@ -26,7 +26,8 @@
#include "GenericAutoPilotPlugin.h"
GenericAutoPilotPlugin::GenericAutoPilotPlugin(void)
GenericAutoPilotPlugin::GenericAutoPilotPlugin(QObject* parent) :
AutoPilotPlugin(parent)
{
}

2
src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.h

@ -36,7 +36,7 @@ class GenericAutoPilotPlugin : public AutoPilotPlugin @@ -36,7 +36,7 @@ class GenericAutoPilotPlugin : public AutoPilotPlugin
Q_OBJECT
public:
GenericAutoPilotPlugin(void);
GenericAutoPilotPlugin(QObject* parent = NULL);
virtual QList<VehicleComponent*> getVehicleComponents(UASInterface* uas) const ;
virtual QList<FullMode_t> getModes(void) const;

6
src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc

@ -26,6 +26,7 @@ @@ -26,6 +26,7 @@
#include "RadioComponent.h"
#include "SensorsComponent.h"
#include "FlightModesComponent.h"
#include "AutoPilotPluginManager.h"
/// @file
/// @brief This is the AutoPilotPlugin implementatin for the MAV_AUTOPILOT_PX4 type.
@ -61,7 +62,8 @@ union px4_custom_mode { @@ -61,7 +62,8 @@ union px4_custom_mode {
float data_float;
};
PX4AutoPilotPlugin::PX4AutoPilotPlugin(void)
PX4AutoPilotPlugin::PX4AutoPilotPlugin(QObject* parent) :
AutoPilotPlugin(parent)
{
}
@ -165,7 +167,7 @@ QString PX4AutoPilotPlugin::getShortModeText(uint8_t baseMode, uint32_t customMo @@ -165,7 +167,7 @@ QString PX4AutoPilotPlugin::getShortModeText(uint8_t baseMode, uint32_t customMo
mode = "|OFFBOARD";
}
} else {
mode = AutoPilotPlugin::getInstanceForAutoPilotPlugin(MAV_AUTOPILOT_GENERIC)->getShortModeText(baseMode, customMode);
mode = qgcApp()->singletonAutoPilotPluginManager()->getInstanceForAutoPilotPlugin(MAV_AUTOPILOT_GENERIC)->getShortModeText(baseMode, customMode);
}
return mode;

2
src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h

@ -35,7 +35,7 @@ class PX4AutoPilotPlugin : public AutoPilotPlugin @@ -35,7 +35,7 @@ class PX4AutoPilotPlugin : public AutoPilotPlugin
Q_OBJECT
public:
PX4AutoPilotPlugin(void);
PX4AutoPilotPlugin(QObject* parent);
virtual QList<VehicleComponent*> getVehicleComponents(UASInterface* uas) const ;
virtual QList<FullMode_t> getModes(void) const;

Loading…
Cancel
Save