Browse Source
* mavlink/master: update android version qmake cleanup git version travis-ci enable ccache for linux travis-ci switch linux to container infrastructure travis-ci disable android debug Fix mode selection coloring Fix binding loop Decimal place support from meta data Fix item dragging Fix home position handling Fix signalling Decimal place support from meta data Fix item dragging Fix home position handling Fix signalling Move ParameterLoader override to FirmwarePluginQGC4.4
43 changed files with 1160 additions and 695 deletions
@ -0,0 +1,79 @@
@@ -0,0 +1,79 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2015 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/>.
|
||||
|
||||
======================================================================*/ |
||||
|
||||
#include "APMAutoPilotPlugin.h" |
||||
#include "AutoPilotPluginManager.h" |
||||
#include "QGCMessageBox.h" |
||||
#include "UAS.h" |
||||
#include "FirmwarePlugin/APM/APMParameterLoader.h" // FIXME: Hack |
||||
#include "FirmwarePlugin/APM/APMFirmwarePlugin.h" // FIXME: Hack |
||||
|
||||
/// This is the AutoPilotPlugin implementatin for the MAV_AUTOPILOT_ARDUPILOT type.
|
||||
APMAutoPilotPlugin::APMAutoPilotPlugin(Vehicle* vehicle, QObject* parent) : |
||||
AutoPilotPlugin(vehicle, parent), |
||||
_incorrectParameterVersion(false) |
||||
{ |
||||
Q_ASSERT(vehicle); |
||||
|
||||
// This kicks off parameter load
|
||||
_firmwarePlugin->getParameterLoader(this, vehicle); |
||||
} |
||||
|
||||
APMAutoPilotPlugin::~APMAutoPilotPlugin() |
||||
{ |
||||
|
||||
} |
||||
|
||||
void APMAutoPilotPlugin::clearStaticData(void) |
||||
{ |
||||
APMParameterLoader::clearStaticData(); |
||||
} |
||||
|
||||
const QVariantList& APMAutoPilotPlugin::vehicleComponents(void) |
||||
{ |
||||
static const QVariantList emptyList; |
||||
|
||||
return emptyList; |
||||
} |
||||
|
||||
/// This will perform various checks prior to signalling that the plug in ready
|
||||
void APMAutoPilotPlugin::_parametersReadyPreChecks(bool missingParameters) |
||||
{ |
||||
#if 0 |
||||
I believe APM has parameter version stamp, we should check that |
||||
|
||||
// Check for older parameter version set
|
||||
// FIXME: Firmware is moving to version stamp parameter set. Once that is complete the version stamp
|
||||
// should be used instead.
|
||||
if (parameterExists(FactSystem::defaultComponentId, "SENS_GYRO_XOFF")) { |
||||
_incorrectParameterVersion = true; |
||||
QGCMessageBox::warning("Setup", "This version of GroundControl can only perform vehicle setup on a newer version of firmware. " |
||||
"Please perform a Firmware Upgrade if you wish to use Vehicle Setup."); |
||||
} |
||||
#endif |
||||
|
||||
_parametersReady = true; |
||||
_missingParameters = missingParameters; |
||||
emit missingParametersChanged(_missingParameters); |
||||
emit parametersReadyChanged(_parametersReady); |
||||
} |
@ -0,0 +1,52 @@
@@ -0,0 +1,52 @@
|
||||
/*=====================================================================
|
||||
|
||||
QGroundControl Open Source Ground Control Station |
||||
|
||||
(c) 2009 - 2015 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 APMAutoPilotPlugin_H |
||||
#define APMAutoPilotPlugin_H |
||||
|
||||
#include "AutoPilotPlugin.h" |
||||
#include "Vehicle.h" |
||||
|
||||
/// This is the APM specific implementation of the AutoPilot class.
|
||||
class APMAutoPilotPlugin : public AutoPilotPlugin |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
APMAutoPilotPlugin(Vehicle* vehicle, QObject* parent); |
||||
~APMAutoPilotPlugin(); |
||||
|
||||
// Overrides from AutoPilotPlugin
|
||||
virtual const QVariantList& vehicleComponents(void); |
||||
|
||||
static void clearStaticData(void); |
||||
|
||||
public slots: |
||||
// FIXME: This is public until we restructure AutoPilotPlugin/FirmwarePlugin/Vehicle
|
||||
void _parametersReadyPreChecks(bool missingParameters); |
||||
|
||||
private: |
||||
bool _incorrectParameterVersion; ///< true: parameter version incorrect, setup not allowed
|
||||
}; |
||||
|
||||
#endif |
@ -0,0 +1,113 @@
@@ -0,0 +1,113 @@
|
||||
/*=====================================================================
|
||||
|
||||
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/>.
|
||||
|
||||
======================================================================*/ |
||||
|
||||
/// @file
|
||||
/// @author Don Gagne <don@thegagnes.com>
|
||||
|
||||
#include "APMParameterLoader.h" |
||||
#include "QGCApplication.h" |
||||
#include "QGCLoggingCategory.h" |
||||
|
||||
#include <QFile> |
||||
#include <QFileInfo> |
||||
#include <QDir> |
||||
#include <QDebug> |
||||
|
||||
QGC_LOGGING_CATEGORY(APMParameterLoaderLog, "APMParameterLoaderLog") |
||||
|
||||
bool APMParameterLoader::_parameterMetaDataLoaded = false; |
||||
QMap<QString, FactMetaData*> APMParameterLoader::_mapParameterName2FactMetaData; |
||||
|
||||
APMParameterLoader::APMParameterLoader(AutoPilotPlugin* autopilot, Vehicle* vehicle, QObject* parent) : |
||||
ParameterLoader(autopilot, vehicle, parent) |
||||
{ |
||||
Q_ASSERT(vehicle); |
||||
} |
||||
|
||||
/// Converts a string to a typed QVariant
|
||||
/// @param string String to convert
|
||||
/// @param type Type for Fact which dictates the QVariant type as well
|
||||
/// @param convertOk Returned: true: conversion success, false: conversion failure
|
||||
/// @return Returns the correctly type QVariant
|
||||
QVariant APMParameterLoader::_stringToTypedVariant(const QString& string, FactMetaData::ValueType_t type, bool* convertOk) |
||||
{ |
||||
QVariant var(string); |
||||
|
||||
int convertTo = QVariant::Int; // keep compiler warning happy
|
||||
switch (type) { |
||||
case FactMetaData::valueTypeUint8: |
||||
case FactMetaData::valueTypeUint16: |
||||
case FactMetaData::valueTypeUint32: |
||||
convertTo = QVariant::UInt; |
||||
break; |
||||
case FactMetaData::valueTypeInt8: |
||||
case FactMetaData::valueTypeInt16: |
||||
case FactMetaData::valueTypeInt32: |
||||
convertTo = QVariant::Int; |
||||
break; |
||||
case FactMetaData::valueTypeFloat: |
||||
convertTo = QMetaType::Float; |
||||
break; |
||||
case FactMetaData::valueTypeDouble: |
||||
convertTo = QVariant::Double; |
||||
break; |
||||
} |
||||
|
||||
*convertOk = var.convert(convertTo); |
||||
|
||||
return var; |
||||
} |
||||
|
||||
/// Load Parameter Fact meta data
|
||||
///
|
||||
/// The meta data comes from firmware parameters.xml file.
|
||||
void APMParameterLoader::loadParameterFactMetaData(void) |
||||
{ |
||||
if (_parameterMetaDataLoaded) { |
||||
return; |
||||
} |
||||
_parameterMetaDataLoaded = true; |
||||
|
||||
// FIXME: NYI
|
||||
|
||||
// Static meta data should load all MAV_TYPEs from single meta data file in such a way that the loader
|
||||
// has multiple sets of static meta data
|
||||
} |
||||
|
||||
void APMParameterLoader::clearStaticData(void) |
||||
{ |
||||
foreach(QString parameterName, _mapParameterName2FactMetaData.keys()) { |
||||
delete _mapParameterName2FactMetaData[parameterName]; |
||||
} |
||||
_mapParameterName2FactMetaData.clear(); |
||||
_parameterMetaDataLoaded = false; |
||||
} |
||||
|
||||
/// Override from FactLoad which connects the meta data to the fact
|
||||
void APMParameterLoader::_addMetaDataToFact(Fact* fact) |
||||
{ |
||||
// FIXME: Will need to switch here based on _vehicle->firmwareType() to pull right set of meta data
|
||||
|
||||
// Use generic meta data
|
||||
ParameterLoader::_addMetaDataToFact(fact); |
||||
} |
@ -0,0 +1,78 @@
@@ -0,0 +1,78 @@
|
||||
/*=====================================================================
|
||||
|
||||
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 APMParameterLoader_H |
||||
#define APMParameterLoader_H |
||||
|
||||
#include <QObject> |
||||
#include <QMap> |
||||
#include <QXmlStreamReader> |
||||
#include <QLoggingCategory> |
||||
|
||||
#include "ParameterLoader.h" |
||||
#include "FactSystem.h" |
||||
#include "AutoPilotPlugin.h" |
||||
#include "Vehicle.h" |
||||
|
||||
/// @file
|
||||
/// @author Don Gagne <don@thegagnes.com>
|
||||
|
||||
Q_DECLARE_LOGGING_CATEGORY(APMParameterLoaderLog) |
||||
|
||||
/// Collection of Parameter Facts for PX4 AutoPilot
|
||||
|
||||
class APMParameterLoader : public ParameterLoader |
||||
{ |
||||
Q_OBJECT |
||||
|
||||
public: |
||||
/// @param uas Uas which this set of facts is associated with
|
||||
APMParameterLoader(AutoPilotPlugin* autopilot, Vehicle* vehicle, QObject* parent = NULL); |
||||
|
||||
/// Override from ParameterLoader
|
||||
virtual QString getDefaultComponentIdParam(void) const { return QString("SYSID_SW_TYPE"); } |
||||
|
||||
static void loadParameterFactMetaData(void); |
||||
static void clearStaticData(void); |
||||
|
||||
private: |
||||
enum { |
||||
XmlStateNone, |
||||
XmlStateFoundParameters, |
||||
XmlStateFoundVersion, |
||||
XmlStateFoundGroup, |
||||
XmlStateFoundParameter, |
||||
XmlStateDone |
||||
}; |
||||
|
||||
// Overrides from ParameterLoader
|
||||
virtual void _addMetaDataToFact(Fact* fact); |
||||
|
||||
// Class methods
|
||||
static QVariant _stringToTypedVariant(const QString& string, FactMetaData::ValueType_t type, bool* convertOk); |
||||
|
||||
static bool _parameterMetaDataLoaded; ///< true: parameter meta data already loaded
|
||||
static QMap<QString, FactMetaData*> _mapParameterName2FactMetaData; ///< Maps from a parameter name to FactMetaData
|
||||
}; |
||||
|
||||
#endif |
Loading…
Reference in new issue