diff --git a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc index 55b3c4b91bb66423d7f2e01dbecfff33b1aac690..470d313a3e690a8909e6aea4d5471b4e5b977ad3 100644 --- a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc +++ b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc @@ -26,99 +26,43 @@ #include "AirframeComponentAirframes.h" -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 +QMap AirframeComponentAirframes::rgAirframeTypes; + +QMap& AirframeComponentAirframes::get() { + + // Set a single airframe to prevent the UI from going crazy + if (rgAirframeTypes.count() == 0) { + // Standard planes + AirframeType_t *standardPlane = new AirframeType_t; + standardPlane->name = "Standard Airplane"; + standardPlane->imageResource = "qrc:/qmlimages/AirframeStandardPlane.png"; + AirframeInfo_t *easystar = new AirframeInfo_t; + easystar->name = "Multiplex Easystar 1/2"; + easystar->autostartId = 2100; + standardPlane->rgAirframeInfo.append(easystar); + rgAirframeTypes.insert("StandardPlane", standardPlane); + qDebug() << "Adding plane config"; + + // Flying wings + } + + return rgAirframeTypes; } -//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 } -//}; +void AirframeComponentAirframes::clear() { -//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 } -//}; + // Run through all and delete them + for (unsigned tindex = 0; tindex < AirframeComponentAirframes::get().count(); tindex++) { -//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoQuadRotorPlus[] = { -// { "Generic 10\" Quad +", 5001 }, -// { NULL, 0 } -//}; + const AirframeComponentAirframes::AirframeType_t* pType = AirframeComponentAirframes::get().values().at(tindex); -//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoHexaRotorX[] = { -// { "Standard 10\" Hexa X", 6001 }, -// { "Coaxial 10\" Hexa X", 11001 }, -// { NULL, 0 } -//}; + for (unsigned index = 0; index < pType->rgAirframeInfo.count(); index++) { + const AirframeComponentAirframes::AirframeInfo_t* pInfo = pType->rgAirframeInfo.at(index); + delete pInfo; + } -//const AirframeComponentAirframes::AirframeInfo_t AirframeComponentAirframes::_rgAirframeInfoHexaRotorPlus[] = { -// { "Standard 10\" Hexa", 7001 }, -// { NULL, 0 } -//}; + delete pType; + } -//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 } -//}; + rgAirframeTypes.clear(); +} diff --git a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h index 7378281e5f0cd1bf37f8462d1cb5235188389d88..6a56c798ff759741f86b48df324e7fee261360e8 100644 --- a/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h +++ b/src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h @@ -39,21 +39,22 @@ class AirframeComponentAirframes { public: - AirframeComponentAirframes(); - typedef struct { - const char* name; + QString name; int autostartId; } AirframeInfo_t; typedef struct { - const char* name; - const char* imageResource; - QList rgAirframeInfo; + QString name; + QString imageResource; + QList rgAirframeInfo; } AirframeType_t; + + static QMap& get(); + static void clear(); -public: - static QMap rgAirframeTypes; +protected: + static QMap rgAirframeTypes; private: };