Skip to content

Commit

Permalink
Add parameters meta support for charging station
Browse files Browse the repository at this point in the history
  • Loading branch information
dvornikov-aa committed May 24, 2019
1 parent 428dbc0 commit 3195383
Show file tree
Hide file tree
Showing 6 changed files with 165 additions and 1 deletion.
3 changes: 3 additions & 0 deletions qgroundcontrol.pro
Original file line number Diff line number Diff line change
Expand Up @@ -1140,3 +1140,6 @@ contains (CONFIG, QGC_DISABLE_BUILD_SETUP) {
#

include(QGCInstaller.pri)

RESOURCES += \
src/FirmwarePlugin/ChargingStation/ChargingStationResources.qrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#include "PX4ParameterMetaData.h"

#include "ChargingStationFirmwarePlugin.h"

QString ChargingStationFirmwarePlugin::vehicleImageOpaque(const Vehicle* vehicle) const
Expand Down Expand Up @@ -75,3 +77,41 @@ const QVariantList& ChargingStationFirmwarePlugin::toolBarIndicators(const Vehic
}
return _toolBarIndicatorList;
}

FactMetaData* ChargingStationFirmwarePlugin::getMetaDataForFact(QObject* parameterMetaData, const QString& name, MAV_TYPE vehicleType)
{
PX4ParameterMetaData* px4MetaData = qobject_cast<PX4ParameterMetaData*>(parameterMetaData);

if (px4MetaData) {
return px4MetaData->getMetaDataForFact(name, vehicleType);
} else {
qWarning() << "Internal error: pointer passed to PX4FirmwarePlugin::getMetaDataForFact not PX4ParameterMetaData";
}

return NULL;
}

void ChargingStationFirmwarePlugin::addMetaDataToFact(QObject* parameterMetaData, Fact* fact, MAV_TYPE vehicleType)
{
PX4ParameterMetaData* px4MetaData = qobject_cast<PX4ParameterMetaData*>(parameterMetaData);

if (px4MetaData) {
px4MetaData->addMetaDataToFact(fact, vehicleType);
} else {
qWarning() << "Internal error: pointer passed to PX4FirmwarePlugin::addMetaDataToFact not PX4ParameterMetaData";
}
}

void ChargingStationFirmwarePlugin::getParameterMetaDataVersionInfo(const QString& metaDataFile, int& majorVersion, int& minorVersion)
{
return PX4ParameterMetaData::getParameterMetaDataVersionInfo(metaDataFile, majorVersion, minorVersion);
}

QObject* ChargingStationFirmwarePlugin::loadParameterMetaData(const QString& metaDataFile)
{
PX4ParameterMetaData* metaData = new PX4ParameterMetaData;
if (!metaDataFile.isEmpty()) {
metaData->loadParameterFactMetaDataFile(metaDataFile);
}
return metaData;
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ class ChargingStationFirmwarePlugin : public FirmwarePlugin
bool setFlightMode(const QString& flightMode, uint8_t* base_mode, uint32_t* custom_mode) override;
QString flightMode(uint8_t base_mode, uint32_t custom_mode) const override;
const QVariantList& toolBarIndicators(const Vehicle* vehicle) override;
void addMetaDataToFact(QObject* parameterMetaData, Fact* fact, MAV_TYPE vehicleType) override;
FactMetaData* getMetaDataForFact(QObject* parameterMetaData, const QString& name, MAV_TYPE vehicleType) override;
QString internalParameterMetaDataFile(Vehicle* vehicle) override { Q_UNUSED(vehicle); return QString(":/FirmwarePlugin/ChargingStation/ChargingStationParameterFactMetaData.xml"); }
void getParameterMetaDataVersionInfo(const QString& metaDataFile, int& majorVersion, int& minorVersion) override;
QObject* loadParameterMetaData(const QString& metaDataFile) final;

private:
QVariantList _toolBarIndicatorList;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ FirmwarePlugin* ChargingStationFirmwarePluginFactory::firmwarePluginForAutopilot
{
Q_UNUSED(autopilotType);

if (vehicleType == MAV_TYPE_CHARGING_STATION) {
// TODO: MAV_TYPE_QUADROTOR type is set by ParameterManager, it's not okay
if ((vehicleType == MAV_TYPE_CHARGING_STATION) || (vehicleType == MAV_TYPE_QUADROTOR)) {
if (!_pluginInstance) {
_pluginInstance = new ChargingStationFirmwarePlugin;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<?xml version='1.0' encoding='UTF-8'?>
<parameters>
<version>3</version>
<parameter_version_major>1</parameter_version_major>
<parameter_version_minor>0</parameter_version_minor>
<group name="MAVLink">
<parameter default="0" name="DUMMY" type="FLOAT">
<long_desc>QGroundControl ignores the first parameter. This is a temporary workaround.</long_desc>
</parameter>
<parameter category="System" default="17" name="SYSTEM_ID" type="UINT8">
<short_desc>System MAVLink ID</short_desc>
<long_desc>Charging station system MAVLink ID.</long_desc>
<min>1</min>
<max>255</max>
<reboot_required>true</reboot_required>
</parameter>
</group>
<group name="Position">
<parameter default="47.397618" name="POS_LATITUDE" type="FLOAT">
<short_desc>Latitude</short_desc>
<long_desc>Charging station static global latitude if GPS is not available.</long_desc>
<unit>deg</unit>
<decimal>6</decimal>
<min>-90</min>
<max>90</max>
</parameter>
<parameter default="8.54551" name="POS_LONGITUDE" type="FLOAT">
<short_desc>Longitude</short_desc>
<long_desc>Charging station static longitude if GPS is not available.</long_desc>
<unit>deg</unit>
<decimal>6</decimal>
<min>-180</min>
<max>180</max>
</parameter>
<parameter default="150" name="POS_ALTITUDE" type="FLOAT">
<short_desc>Absolute altitude</short_desc>
<long_desc>Charging station static absolute altitude if GPS is not available.</long_desc>
<unit>m</unit>
<decimal>2</decimal>
</parameter>
<parameter default="0" name="POS_HEADING" type="FLOAT">
<short_desc>Heading</short_desc>
<long_desc>Charging station heading.</long_desc>
<unit>deg</unit>
<decimal>2</decimal>
<min>-180</min>
<max>180</max>
</parameter>
</group>
<group name="Service">
<parameter category="Developer" default="0" name="CONTROL" type="INT8">
<short_desc>Station control</short_desc>
<long_desc>Charging station service control parameter.</long_desc>
<values>
<value code="-1">Restore</value>
<value code="0"></value>
<value code="1">Open</value>
<value code="2">Close</value>
<value code="3">Stop</value>
</values>
</parameter>
</group>
<group name="GPS">
<parameter default="0" name="ANTENNA_DX" type="FLOAT">
<short_desc>Antenna offset by X</short_desc>
<long_desc>Charging station local GPS antenna offset by X (NED).</long_desc>
<unit>m</unit>
<decimal>2</decimal>
<min>0</min>
<max>100</max>
</parameter>
<parameter default="0" name="ANTENNA_DY" type="FLOAT">
<short_desc>Antenna offset by Y</short_desc>
<long_desc>Charging station local GPS antenna offset by Y (NED).</long_desc>
<unit>m</unit>
<decimal>2</decimal>
<min>0</min>
<max>100</max>
</parameter>
<parameter default="0" name="ANTENNA_DZ" type="FLOAT">
<short_desc>Antenna offset by Z</short_desc>
<long_desc>Charging station local GPS antenna offset by Z (NED).</long_desc>
<unit>m</unit>
<decimal>2</decimal>
<min>0</min>
<max>100</max>
</parameter>
</group>
<group name="RTK">
<parameter default="0.1" name="SVIN_ACCURACY" type="FLOAT">
<short_desc>Survey in accuracy</short_desc>
<long_desc>GPS/RTK survey in accuracy.</long_desc>
<unit>m</unit>
<decimal>2</decimal>
<min>0.1</min>
<max>10</max>
</parameter>
<parameter default="10" name="SVIN_DURATION" type="UINT32">
<short_desc>Survey in duration</short_desc>
<long_desc>GPS/RTK survey in duration.</long_desc>
<unit>s</unit>
<decimal>2</decimal>
<min>10</min>
<max>21600</max>
</parameter>
</group>
</parameters>
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<RCC>
<qresource prefix="/qml"/>
<qresource prefix="/json"/>
<qresource prefix="/AutoPilotPlugins/PX4"/>
<qresource prefix="/FirmwarePlugin/ChargingStation">
<file>ChargingStationParameterFactMetaData.xml</file>
</qresource>
</RCC>

0 comments on commit 3195383

Please sign in to comment.