diff --git a/src/ui/px4_configuration/QGCPX4AirframeConfig.cc b/src/ui/px4_configuration/QGCPX4AirframeConfig.cc index 48d321b11b17c28ff3199d4d091ebec269dd1352..3df866d77df368bedb56b803f2c6a48db1fb1455 100644 --- a/src/ui/px4_configuration/QGCPX4AirframeConfig.cc +++ b/src/ui/px4_configuration/QGCPX4AirframeConfig.cc @@ -25,51 +25,73 @@ QGCPX4AirframeConfig::QGCPX4AirframeConfig(QWidget *parent) : // Fill the lists here manually in accordance with the list from: // https://github.com/PX4/Firmware/blob/master/ROMFS/px4fmu_common/init.d/rcS - ui->planeComboBox->addItem(tr("Multiplex Easystar 1/2"), 100); - ui->planeComboBox->addItem(tr("Hobbyking Bixler 1/2"), 101); - ui->planeComboBox->addItem(tr("HilStar (SIMULATION)"), 1000); + ui->simComboBox->addItem(tr("HilStar (SIMULATION)"), 1000); + + connect(ui->simPushButton, SIGNAL(clicked()), this, SLOT(simSelected())); + connect(ui->simComboBox, SIGNAL(activated(int)), this, SLOT(simSelected(int))); + ui->simPushButton->setEnabled(ui->simComboBox->count() > 0); + + ui->planeComboBox->addItem(tr("Multiplex Easystar 1/2"), 2100); + ui->planeComboBox->addItem(tr("Hobbyking Bixler 1/2"), 2101); connect(ui->planePushButton, SIGNAL(clicked()), this, SLOT(planeSelected())); connect(ui->planeComboBox, SIGNAL(activated(int)), this, SLOT(planeSelected(int))); ui->planePushButton->setEnabled(ui->planeComboBox->count() > 0); - ui->flyingWingComboBox->addItem(tr("Bormatec Camflyer Q"), 30); - ui->flyingWingComboBox->addItem(tr("Phantom FPV"), 31); + ui->flyingWingComboBox->addItem(tr("Bormatec Camflyer Q (800 mm)"), 3030); + ui->flyingWingComboBox->addItem(tr("Z-84 Wing Wing (845 mm)"), 3033); + ui->flyingWingComboBox->addItem(tr("FX-61 Phantom FPV (1550 mm)"), 3031); + ui->flyingWingComboBox->addItem(tr("FX-79 Buffalo (2000 mm)"), 3034); + ui->flyingWingComboBox->addItem(tr("Skywalker X5 (1180 mm)"), 3032); connect(ui->flyingWingPushButton, SIGNAL(clicked()), this, SLOT(flyingWingSelected())); connect(ui->flyingWingComboBox, SIGNAL(activated(int)), this, SLOT(flyingWingSelected(int))); - ui->quadXComboBox->addItem(tr("DJI F330 8\" Quad"), 10); - ui->quadXComboBox->addItem(tr("DJI F450 10\" Quad"), 11); - ui->quadXComboBox->addItem(tr("Turnigy Talon v2 X550 Quad"), 666); - ui->quadXComboBox->addItem(tr("AR.Drone Frame Quad"), 8); - ui->quadXComboBox->addItem(tr("AR.Drone Quad (w. PX4FLOW)"), 9); + ui->quadXComboBox->addItem(tr("DJI F330 8\" Quad"), 4010); + ui->quadXComboBox->addItem(tr("DJI F450 10\" Quad"), 4011); + ui->quadXComboBox->addItem(tr("Turnigy Talon v2 X550 Quad"), 4012); + ui->quadXComboBox->addItem(tr("AR.Drone Frame Quad"), 4008); + ui->quadXComboBox->addItem(tr("AR.Drone Quad (w. PX4FLOW)"), 4009); + ui->quadXComboBox->addItem(tr("DJI F330 with MK BLCTRL"), 4017); + ui->quadXComboBox->addItem(tr("Mikrokopter X frame"), 4019); connect(ui->quadXPushButton, SIGNAL(clicked()), this, SLOT(quadXSelected())); connect(ui->quadXComboBox, SIGNAL(activated(int)), this, SLOT(quadXSelected(int))); + ui->quadXPushButton->setEnabled(ui->quadXComboBox->count() > 0); + + ui->quadPlusComboBox->addItem(tr("DJI F330 8\" Quad"), 4010); + ui->quadXComboBox->addItem(tr("Mikrokopter + frame"), 5020); connect(ui->quadPlusPushButton, SIGNAL(clicked()), this, SLOT(quadPlusSelected())); connect(ui->quadPlusComboBox, SIGNAL(activated(int)), this, SLOT(quadPlusSelected(int))); ui->quadPlusPushButton->setEnabled(ui->quadPlusComboBox->count() > 0); + ui->hexaPlusComboBox->addItem(tr("DJI F550 10\" Hexa"), 6012); + connect(ui->hexaXPushButton, SIGNAL(clicked()), this, SLOT(hexaXSelected())); connect(ui->hexaXComboBox, SIGNAL(activated(int)), this, SLOT(hexaXSelected(int))); ui->hexaXPushButton->setEnabled(ui->hexaXComboBox->count() > 0); + ui->hexaPlusComboBox->addItem(tr("DJI F550 10\" Hexa"), 7013); + connect(ui->hexaPlusPushButton, SIGNAL(clicked()), this, SLOT(hexaPlusSelected())); connect(ui->hexaPlusComboBox, SIGNAL(activated(int)), this, SLOT(hexaPlusSelected(int))); ui->hexaPlusPushButton->setEnabled(ui->hexaPlusComboBox->count() > 0); + ui->octoXComboBox->addItem(tr("Standard 10\" Octo"), 8001); + connect(ui->octoXPushButton, SIGNAL(clicked()), this, SLOT(octoXSelected())); connect(ui->octoXComboBox, SIGNAL(activated(int)), this, SLOT(octoXSelected(int))); ui->octoXPushButton->setEnabled(ui->octoXComboBox->count() > 0); + ui->octoPlusComboBox->addItem(tr("Standard 10\" Octo"), 9001); + connect(ui->octoPlusPushButton, SIGNAL(clicked()), this, SLOT(octoPlusSelected())); connect(ui->octoPlusComboBox, SIGNAL(activated(int)), this, SLOT(octoPlusSelected(int))); ui->octoPlusPushButton->setEnabled(ui->octoPlusComboBox->count() > 0); - ui->hComboBox->addItem(tr("3DR Iris"), 16); - ui->hComboBox->addItem(tr("TBS Discovery"), 15); + ui->hComboBox->addItem(tr("3DR Iris"), 10016); + ui->hComboBox->addItem(tr("TBS Discovery"), 10015); connect(ui->hPushButton, SIGNAL(clicked()), this, SLOT(hSelected())); connect(ui->hComboBox, SIGNAL(activated(int)), this, SLOT(hSelected(int))); @@ -144,29 +166,62 @@ void QGCPX4AirframeConfig::setAirframeID(int id) // a quick hack to get started uncheckAll(); - if (id > 0 && id < 15) { - ui->quadXPushButton->setChecked(true); - ui->quadXComboBox->setCurrentIndex(ui->quadXComboBox->findData(id)); - ui->statusLabel->setText(tr("Selected quad X (ID: #%1)").arg(selectedId)); + if (id >= 1000 && id < 2000) + { + ui->simPushButton->setChecked(true); + ui->simComboBox->setCurrentIndex(ui->simComboBox->findData(id)); + ui->statusLabel->setText(tr("Selected simulation (ID: #%1)").arg(selectedId)); } - else if (id >= 15 && id < 20) + else if (id >= 2000 && id < 3000) { - ui->hPushButton->setChecked(true); - ui->hComboBox->setCurrentIndex(ui->hComboBox->findData(id)); - ui->statusLabel->setText(tr("Selected H Frame (ID: #%1)").arg(selectedId)); + ui->planePushButton->setChecked(true); + ui->planeComboBox->setCurrentIndex(ui->planeComboBox->findData(id)); + ui->statusLabel->setText(tr("Selected plane (ID: #%1)").arg(selectedId)); } - else if (id >= 30 && id < 50) + else if (id >= 3000 && id < 4000) { ui->flyingWingPushButton->setChecked(true); ui->flyingWingComboBox->setCurrentIndex(ui->flyingWingComboBox->findData(id)); ui->statusLabel->setText(tr("Selected flying wing (ID: #%1)").arg(selectedId)); } - else if (id >= 100 && id < 150 || id >= 1000 <= 2000) + else if (id >= 4000 && id < 5000) { + ui->quadXPushButton->setChecked(true); + ui->quadXComboBox->setCurrentIndex(ui->quadXComboBox->findData(id)); + ui->statusLabel->setText(tr("Selected quadrotor in X config (ID: #%1)").arg(selectedId)); + } + else if (id >= 5000 && id < 6000) { + ui->quadPlusPushButton->setChecked(true); + ui->quadPlusComboBox->setCurrentIndex(ui->quadPlusComboBox->findData(id)); + ui->statusLabel->setText(tr("Selected quadrotor in + config (ID: #%1)").arg(selectedId)); + } + else if (id >= 6000 && id < 7000) { + ui->hexaXPushButton->setChecked(true); + ui->hexaXComboBox->setCurrentIndex(ui->hexaXComboBox->findData(id)); + ui->statusLabel->setText(tr("Selected hexarotor in X config (ID: #%1)").arg(selectedId)); + } + else if (id >= 7000 && id < 8000) { + ui->hexaPlusPushButton->setChecked(true); + ui->hexaPlusComboBox->setCurrentIndex(ui->hexaPlusComboBox->findData(id)); + ui->statusLabel->setText(tr("Selected hexarotor in + config (ID: #%1)").arg(selectedId)); + } + else if (id >= 8000 && id < 9000) { + ui->octoXPushButton->setChecked(true); + ui->octoXComboBox->setCurrentIndex(ui->octoXComboBox->findData(id)); + ui->statusLabel->setText(tr("Selected octorotor in X config (ID: #%1)").arg(selectedId)); + } + else if (id >= 9000 && id < 10000) { + ui->octoPlusPushButton->setChecked(true); + ui->octoPlusComboBox->setCurrentIndex(ui->octoPlusComboBox->findData(id)); + ui->statusLabel->setText(tr("Selected octorotor in + config (ID: #%1)").arg(selectedId)); + } + else if (id >= 10000 && id < 11000) { - ui->planePushButton->setChecked(true); - ui->planeComboBox->setCurrentIndex(ui->planeComboBox->findData(id)); - ui->statusLabel->setText(tr("Selected plane (ID: #%1)").arg(selectedId)); + ui->hPushButton->setChecked(true); + ui->hComboBox->setCurrentIndex(ui->hComboBox->findData(id)); + ui->statusLabel->setText(tr("Selected H frame multirotor (ID: #%1)").arg(selectedId)); } + + } void QGCPX4AirframeConfig::applyAndReboot() @@ -363,6 +418,17 @@ void QGCPX4AirframeConfig::setAutoConfig(bool enabled) paramMgr->setPendingParam(0, "SYS_AUTOCONFIG", (qint32) ((enabled) ? 1 : 0)); } +void QGCPX4AirframeConfig::simSelected() +{ + simSelected(ui->simComboBox->currentIndex()); +} + +void QGCPX4AirframeConfig::simSelected(int index) +{ + int system_index = ui->simComboBox->itemData(index).toInt(); + setAirframeID(system_index); +} + void QGCPX4AirframeConfig::flyingWingSelected() { flyingWingSelected(ui->flyingWingComboBox->currentIndex()); @@ -385,7 +451,6 @@ void QGCPX4AirframeConfig::planeSelected(int index) setAirframeID(system_index); } - void QGCPX4AirframeConfig::quadXSelected() { quadXSelected(ui->quadXComboBox->currentIndex()); diff --git a/src/ui/px4_configuration/QGCPX4AirframeConfig.h b/src/ui/px4_configuration/QGCPX4AirframeConfig.h index dcbf4abc142faa3349eb7cc153e5a70149a5512d..e8a41f52907e4e387da1fc9b0f28a162cb7bf0f3 100644 --- a/src/ui/px4_configuration/QGCPX4AirframeConfig.h +++ b/src/ui/px4_configuration/QGCPX4AirframeConfig.h @@ -46,11 +46,12 @@ public slots: */ void quadXSelected(int index); - void flyingWingSelected(); - void flyingWingSelected(int index); + void simSelected(); + void simSelected(int index); void planeSelected(); void planeSelected(int index); - + void flyingWingSelected(); + void flyingWingSelected(int index); void quadPlusSelected(); void quadPlusSelected(int index); void hexaXSelected(); diff --git a/src/ui/px4_configuration/QGCPX4AirframeConfig.ui b/src/ui/px4_configuration/QGCPX4AirframeConfig.ui index 245c3741ef40d1ac8dd87a8f9436251fb15e696c..6f7cb3d932a470db00d6d577e43d7398319f704f 100644 --- a/src/ui/px4_configuration/QGCPX4AirframeConfig.ui +++ b/src/ui/px4_configuration/QGCPX4AirframeConfig.ui @@ -26,6 +26,12 @@ + + + 0 + 0 + + true @@ -33,9 +39,9 @@ 0 - 0 + -282 762 - 647 + 638 @@ -345,6 +351,27 @@ + + + + + + Simulation Setup + + + + + + + + + + Simulation / Experimental + + + + +