diff --git a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc index b2024f854feb7767fa8f7a61d256c16cd779cda6..55b3c4b91bb66423d7f2e01dbecfff33b1aac690 100644 --- a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc +++ b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc @@ -26,86 +26,99 @@ #include "AirframeComponentAirframes.h" -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoStandardPlane[] = { - { "Multiplex Easystar 1/2", 2100 }, - { "Generic AERT", 2101 }, - { "3DR Skywalker", 2102 }, - { "Skyhunter (1800 mm)", 2103 }, - { "Generic AETR", 2104 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoSimulation[] = { - { "Plane (HilStar, X-Plane)", 1000 }, - { "Plane (Rascal, FlightGear)", 1004 }, - { "Quad X HIL", 1001 }, - { "Quad + HIL", 1003 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoFlyingWing[] = { - { "Z-84 Wing Wing (845 mm)", 3033 }, - { "TBS Caipirinha (850 mm)", 3100 }, - { "Bormatec Camflyer Q (800 mm)", 3030 }, - { "FX-61 Phantom FPV (1550 mm)", 3031 }, - { "FX-79 Buffalo (2000 mm)", 3034 }, - { "Skywalker X5 (1180 mm)", 3032 }, - { "Viper v2 (3000 mm)", 3035 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoQuadRotorX[] = { - { "DJI F330 8\" Quad", 4010 }, - { "DJI F450 10\" Quad", 4011 }, - { "X frame Quad UAVCAN", 4012 }, - { "AR.Drone Frame Quad", 4008 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoQuadRotorPlus[] = { - { "Generic 10\" Quad +", 5001 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoHexaRotorX[] = { - { "Standard 10\" Hexa X", 6001 }, - { "Coaxial 10\" Hexa X", 11001 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoHexaRotorPlus[] = { - { "Standard 10\" Hexa", 7001 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoOctoRotorX[] = { - { "Standard 10\" Octo", 8001 }, - { "Coaxial 10\" Octo", 12001 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoOctoRotorPlus[] = { - { "Standard 10\" Octo", 9001 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoQuadRotorH[] = { - { "3DR Iris", 10016 }, - { "TBS Discovery", 10015 }, - { "SteadiDrone QU4D", 10017 }, - { NULL, 0 } -}; - -const AirframeComponentAirframes::AirframeType_t AirframeComponentAirframes::rgAirframeTypes[] = { - { "Standard Airplane", "qrc:/qmlimages/AirframeStandardPlane.png", AirframeComponentAirframes::_rgAirframeInfoStandardPlane }, - { "Flying Wing", "qrc:/qmlimages/AirframeFlyingWing.png", AirframeComponentAirframes::_rgAirframeInfoFlyingWing }, - { "QuadRotor X", "qrc:/qmlimages/AirframeQuadRotorX.png", AirframeComponentAirframes::_rgAirframeInfoQuadRotorX }, - { "QuadRotor +", "qrc:/qmlimages/AirframeQuadRotorPlus.png", AirframeComponentAirframes::_rgAirframeInfoQuadRotorPlus }, - { "HexaRotor X", "qrc:/qmlimages/AirframeHexaRotorX.png", AirframeComponentAirframes::_rgAirframeInfoHexaRotorX }, - { "HexaRotor +", "qrc:/qmlimages/AirframeHexaRotorPlus.png", AirframeComponentAirframes::_rgAirframeInfoHexaRotorPlus }, - { "OctoRotor X", "qrc:/qmlimages/AirframeOctoRotorX.png", AirframeComponentAirframes::_rgAirframeInfoOctoRotorX }, - { "OctoRotor +", "qrc:/qmlimages/AirframeOctoRotorPlus.png", AirframeComponentAirframes::_rgAirframeInfoOctoRotorPlus }, - { "QuadRotor H", "qrc:/qmlimages/AirframeQuadRotorH.png", AirframeComponentAirframes::_rgAirframeInfoQuadRotorH }, - { "Simulation", "qrc:/qmlimages/AirframeSimulation.png", AirframeComponentAirframes::_rgAirframeInfoSimulation }, - { NULL, NULL, NULL } -}; +QMap AirframeComponentAirframes::rgAirframeTypes; + +AirframeComponentAirframes::AirframeComponentAirframes() { + + // Standard planes + AirframeType_t standardPlane = { "Standard Airplane", "qrc:/qmlimages/AirframeStandardPlane.png", }; + AirframeInfo_t easystar = {"Multiplex Easystar 1/2", 2100}; + standardPlane.rgAirframeInfo.append(easystar); + rgAirframeTypes.insert("StandardPlane", standardPlane); + + // Flying wings +} + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoStandardPlane[] = { +// { "Multiplex Easystar 1/2", 2100 }, +// { "Generic AERT", 2101 }, +// { "3DR Skywalker", 2102 }, +// { "Skyhunter (1800 mm)", 2103 }, +// { "Generic AETR", 2104 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoSimulation[] = { +// { "Plane (HilStar, X-Plane)", 1000 }, +// { "Plane (Rascal, FlightGear)", 1004 }, +// { "Quad X HIL", 1001 }, +// { "Quad + HIL", 1003 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoFlyingWing[] = { +// { "Z-84 Wing Wing (845 mm)", 3033 }, +// { "TBS Caipirinha (850 mm)", 3100 }, +// { "Bormatec Camflyer Q (800 mm)", 3030 }, +// { "FX-61 Phantom FPV (1550 mm)", 3031 }, +// { "FX-79 Buffalo (2000 mm)", 3034 }, +// { "Skywalker X5 (1180 mm)", 3032 }, +// { "Viper v2 (3000 mm)", 3035 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoQuadRotorX[] = { +// { "DJI F330 8\" Quad", 4010 }, +// { "DJI F450 10\" Quad", 4011 }, +// { "X frame Quad UAVCAN", 4012 }, +// { "AR.Drone Frame Quad", 4008 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoQuadRotorPlus[] = { +// { "Generic 10\" Quad +", 5001 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoHexaRotorX[] = { +// { "Standard 10\" Hexa X", 6001 }, +// { "Coaxial 10\" Hexa X", 11001 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoHexaRotorPlus[] = { +// { "Standard 10\" Hexa", 7001 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoOctoRotorX[] = { +// { "Standard 10\" Octo", 8001 }, +// { "Coaxial 10\" Octo", 12001 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoOctoRotorPlus[] = { +// { "Standard 10\" Octo", 9001 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoQuadRotorH[] = { +// { "3DR Iris", 10016 }, +// { "TBS Discovery", 10015 }, +// { "SteadiDrone QU4D", 10017 }, +// { NULL, 0 } +//}; + +//const AirframeComponentAirframes::AirframeType_t AirframeComponentAirframes::rgAirframeTypes[] = { +// { "Standard Airplane", "qrc:/qmlimages/AirframeStandardPlane.png", AirframeComponentAirframes::_rgAirframeInfoStandardPlane }, +// { "Flying Wing", "qrc:/qmlimages/AirframeFlyingWing.png", AirframeComponentAirframes::_rgAirframeInfoFlyingWing }, +// { "QuadRotor X", "qrc:/qmlimages/AirframeQuadRotorX.png", AirframeComponentAirframes::_rgAirframeInfoQuadRotorX }, +// { "QuadRotor +", "qrc:/qmlimages/AirframeQuadRotorPlus.png", AirframeComponentAirframes::_rgAirframeInfoQuadRotorPlus }, +// { "HexaRotor X", "qrc:/qmlimages/AirframeHexaRotorX.png", AirframeComponentAirframes::_rgAirframeInfoHexaRotorX }, +// { "HexaRotor +", "qrc:/qmlimages/AirframeHexaRotorPlus.png", AirframeComponentAirframes::_rgAirframeInfoHexaRotorPlus }, +// { "OctoRotor X", "qrc:/qmlimages/AirframeOctoRotorX.png", AirframeComponentAirframes::_rgAirframeInfoOctoRotorX }, +// { "OctoRotor +", "qrc:/qmlimages/AirframeOctoRotorPlus.png", AirframeComponentAirframes::_rgAirframeInfoOctoRotorPlus }, +// { "QuadRotor H", "qrc:/qmlimages/AirframeQuadRotorH.png", AirframeComponentAirframes::_rgAirframeInfoQuadRotorH }, +// { "Simulation", "qrc:/qmlimages/AirframeSimulation.png", AirframeComponentAirframes::_rgAirframeInfoSimulation }, +// { NULL, NULL, NULL } +//}; diff --git a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h index 8c20e90b1ef11d9530fd4a2c823b866954ac1b56..7378281e5f0cd1bf37f8462d1cb5235188389d88 100644 --- a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h +++ b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h @@ -30,6 +30,7 @@ #include #include #include +#include #include "UASInterface.h" #include "AutoPilotPlugin.h" @@ -38,6 +39,8 @@ class AirframeComponentAirframes { public: + AirframeComponentAirframes(); + typedef struct { const char* name; int autostartId; @@ -46,23 +49,13 @@ public: typedef struct { const char* name; const char* imageResource; - const AirframeInfo_t* rgAirframeInfo; + QList rgAirframeInfo; } AirframeType_t; public: - static const AirframeType_t rgAirframeTypes[]; + static QMap rgAirframeTypes; private: - static const AirframeInfo_t _rgAirframeInfoStandardPlane[]; - static const AirframeInfo_t _rgAirframeInfoFlyingWing[]; - static const AirframeInfo_t _rgAirframeInfoQuadRotorX[]; - static const AirframeInfo_t _rgAirframeInfoQuadRotorPlus[]; - static const AirframeInfo_t _rgAirframeInfoOctoRotorX[]; - static const AirframeInfo_t _rgAirframeInfoOctoRotorPlus[]; - static const AirframeInfo_t _rgAirframeInfoHexaRotorX[]; - static const AirframeInfo_t _rgAirframeInfoHexaRotorPlus[]; - static const AirframeInfo_t _rgAirframeInfoQuadRotorH[]; - static const AirframeInfo_t _rgAirframeInfoSimulation[]; }; #endif diff --git a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc index c282deb2d291e115dad3dd168aa4a8865cf1c540..09ef2dea531c556a9db478ca325ba61550652319 100644 --- a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc +++ b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc @@ -25,6 +25,7 @@ #include "AutoPilotPluginManager.h" #include "UASManager.h" #include "PX4ParameterLoader.h" +#include "PX4AirframeLoader.h" #include "FlightModesComponentController.h" #include "AirframeComponentController.h" #include "QGCMessageBox.h" @@ -81,13 +82,18 @@ PX4AutoPilotPlugin::PX4AutoPilotPlugin(UASInterface* uas, QObject* parent) : connect(_parameterFacts, &PX4ParameterLoader::parametersReady, this, &PX4AutoPilotPlugin::_pluginReadyPreChecks); connect(_parameterFacts, &PX4ParameterLoader::parameterListProgress, this, &PX4AutoPilotPlugin::parameterListProgress); + + _airframeFacts = new PX4AirframeLoader(this, uas, this); + Q_CHECK_PTR(_airframeFacts); PX4ParameterLoader::loadParameterFactMetaData(); + PX4AirframeLoader::loadAirframeFactMetaData(); } PX4AutoPilotPlugin::~PX4AutoPilotPlugin() { delete _parameterFacts; + delete _airframeFacts; } QList PX4AutoPilotPlugin::getModes(void) @@ -259,6 +265,7 @@ QString PX4AutoPilotPlugin::getShortModeText(uint8_t baseMode, uint32_t customMo void PX4AutoPilotPlugin::clearStaticData(void) { PX4ParameterLoader::clearStaticData(); + PX4AirframeLoader::clearStaticData(); } const QVariantList& PX4AutoPilotPlugin::vehicleComponents(void) diff --git a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h index d391e361315b9d4985480cf12bcbd8c48392712c..8f75ab0ad9412b155f28bf81ee04022501729872 100644 --- a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h +++ b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h @@ -28,6 +28,7 @@ #include "AutoPilotPluginManager.h" #include "UASInterface.h" #include "PX4ParameterLoader.h" +#include "PX4AirframeLoader.h" #include "AirframeComponent.h" #include "RadioComponent.h" #include "FlightModesComponent.h" @@ -72,7 +73,8 @@ private: // Overrides from AutoPilotPlugin virtual ParameterLoader* _getParameterLoader(void) { return _parameterFacts; } - PX4ParameterLoader* _parameterFacts; + PX4ParameterLoader* _parameterFacts; + PX4AirframeLoader* _airframeFacts; QVariantList _components; AirframeComponent* _airframeComponent; RadioComponent* _radioComponent;