diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index afac96bb08cf9857c2019bc345a086e6964f72a4..7bc217da7595d3b8b1dbfb08a4772d6bc381f26c 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -247,7 +247,9 @@ FORMS += src/ui/MainWindow.ui \ src/ui/mission/QGCMissionNavReturnToLaunch.ui \ src/ui/mission/QGCMissionNavLand.ui \ src/ui/mission/QGCMissionNavTakeoff.ui \ - src/ui/mission/QGCMissionNavSweep.ui + src/ui/mission/QGCMissionNavSweep.ui \ + src/ui/mission/QGCMissionDoStartSearch.ui \ + src/ui/mission/QGCMissionDoFinishSearch.ui INCLUDEPATH += src \ src/ui \ src/ui/linechart \ @@ -379,7 +381,9 @@ HEADERS += src/MG.h \ src/ui/mission/QGCMissionNavReturnToLaunch.h \ src/ui/mission/QGCMissionNavLand.h \ src/ui/mission/QGCMissionNavTakeoff.h \ - src/ui/mission/QGCMissionNavSweep.h + src/ui/mission/QGCMissionNavSweep.h \ + src/ui/mission/QGCMissionDoStartSearch.h \ + src/ui/mission/QGCMissionDoFinishSearch.h # Google Earth is only supported on Mac OS and Windows with Visual Studio Compiler macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010::HEADERS += src/ui/map3D/QGCGoogleEarthView.h @@ -520,7 +524,9 @@ SOURCES += src/main.cc \ src/ui/mission/QGCMissionNavReturnToLaunch.cc \ src/ui/mission/QGCMissionNavLand.cc \ src/ui/mission/QGCMissionNavTakeoff.cc \ - src/ui/mission/QGCMissionNavSweep.cc + src/ui/mission/QGCMissionNavSweep.cc \ + src/ui/mission/QGCMissionDoStartSearch.cc \ + src/ui/mission/QGCMissionDoFinishSearch.cc # Enable Google Earth only on Mac OS and Windows with Visual Studio compiler macx|macx-g++|macx-g++42|win32-msvc2008|win32-msvc2010::SOURCES += src/ui/map3D/QGCGoogleEarthView.cc diff --git a/src/ui/WaypointEditableView.cc b/src/ui/WaypointEditableView.cc index 49dfbe24512886c15a8ae09d5e87bc5d6faf02ac..e0d4d456557be769f0bfbe93d174bbe643ffbbcd 100644 --- a/src/ui/WaypointEditableView.cc +++ b/src/ui/WaypointEditableView.cc @@ -31,6 +31,8 @@ #include "QGCMissionNavSweep.h" #include "QGCMissionConditionDelay.h" #include "QGCMissionDoJump.h" +#include "QGCMissionDoStartSearch.h" +#include "QGCMissionDoFinishSearch.h" #include "QGCMissionOther.h" @@ -58,8 +60,10 @@ WaypointEditableView::WaypointEditableView(Waypoint* wp, QWidget* parent) : MissionNavLandWidget = NULL; MissionNavTakeoffWidget = NULL; MissionNavSweepWidget = NULL; - MissionDoJumpWidget = NULL; MissionConditionDelayWidget = NULL; + MissionDoJumpWidget = NULL; + MissionDoStartSearchWidget = NULL; + MissionDoFinishSearchWidget = NULL; MissionOtherWidget = NULL; @@ -77,6 +81,8 @@ WaypointEditableView::WaypointEditableView(Waypoint* wp, QWidget* parent) : m_ui->comboBox_action->addItem(tr("DO: Jump to Index"),MAV_CMD_DO_JUMP); #ifdef MAVLINK_ENABLED_PIXHAWK m_ui->comboBox_action->addItem(tr("NAV: Sweep"),MAV_CMD_NAV_SWEEP); + m_ui->comboBox_action->addItem(tr("Do: Start Search"),MAV_CMD_DO_START_SEARCH); + m_ui->comboBox_action->addItem(tr("Do: Finish Search"),MAV_CMD_DO_FINISH_SEARCH); #endif m_ui->comboBox_action->addItem(tr("Other"), MAV_CMD_ENUM_END); @@ -144,8 +150,11 @@ void WaypointEditableView::updateActionView(int action) if(MissionNavReturnToLaunchWidget) MissionNavReturnToLaunchWidget->hide(); if(MissionNavLandWidget) MissionNavLandWidget->hide(); if(MissionNavTakeoffWidget) MissionNavTakeoffWidget->hide(); + if(MissionNavSweepWidget) MissionNavSweepWidget->hide(); if(MissionConditionDelayWidget) MissionConditionDelayWidget->hide(); if(MissionDoJumpWidget) MissionDoJumpWidget->hide(); + if(MissionDoStartSearchWidget) MissionDoStartSearchWidget->hide(); + if(MissionDoFinishSearchWidget) MissionDoFinishSearchWidget->hide(); if(MissionOtherWidget) MissionOtherWidget->hide(); //Show only the correct one @@ -183,6 +192,12 @@ void WaypointEditableView::updateActionView(int action) case MAV_CMD_NAV_SWEEP: if(MissionNavSweepWidget) MissionNavSweepWidget->show(); break; + case MAV_CMD_DO_START_SEARCH: + if(MissionDoStartSearchWidget) MissionDoStartSearchWidget->show(); + break; + case MAV_CMD_DO_FINISH_SEARCH: + if(MissionDoFinishSearchWidget) MissionDoFinishSearchWidget->show(); + break; #endif default: @@ -295,6 +310,20 @@ void WaypointEditableView::initializeActionView(int actionID) m_ui->customActionWidget->layout()->addWidget(MissionNavSweepWidget); } break; + case MAV_CMD_DO_START_SEARCH: + if (!MissionDoStartSearchWidget) + { + MissionDoStartSearchWidget = new QGCMissionDoStartSearch(this); + m_ui->customActionWidget->layout()->addWidget(MissionDoStartSearchWidget); + } + break; + case MAV_CMD_DO_FINISH_SEARCH: + if (!MissionDoFinishSearchWidget) + { + MissionDoFinishSearchWidget = new QGCMissionDoFinishSearch(this); + m_ui->customActionWidget->layout()->addWidget(MissionDoFinishSearchWidget); + } + break; #endif case MAV_CMD_ENUM_END: default: diff --git a/src/ui/WaypointEditableView.h b/src/ui/WaypointEditableView.h index 3df07554d519c8343008c139982304306a9d8414..4977a4cd55bd115bc5e615426987a09c4279d193 100644 --- a/src/ui/WaypointEditableView.h +++ b/src/ui/WaypointEditableView.h @@ -55,6 +55,8 @@ class QGCMissionNavLand; class QGCMissionNavTakeoff; class QGCMissionNavSweep; class QGCMissionDoJump; +class QGCMissionDoStartSearch; +class QGCMissionDoFinishSearch; class QGCMissionConditionDelay; class QGCMissionOther; @@ -108,6 +110,8 @@ protected: QGCMissionNavTakeoff* MissionNavTakeoffWidget; QGCMissionNavSweep* MissionNavSweepWidget; QGCMissionDoJump* MissionDoJumpWidget; + QGCMissionDoStartSearch* MissionDoStartSearchWidget; + QGCMissionDoFinishSearch* MissionDoFinishSearchWidget; QGCMissionConditionDelay* MissionConditionDelayWidget; QGCMissionOther* MissionOtherWidget; diff --git a/src/ui/WaypointViewOnlyView.cc b/src/ui/WaypointViewOnlyView.cc index 730c632bb332417fdfc0707df7d1a777661aa626..b7858944c060f5bd1554ac50be1e54434a5f7a72 100644 --- a/src/ui/WaypointViewOnlyView.cc +++ b/src/ui/WaypointViewOnlyView.cc @@ -365,17 +365,18 @@ void WaypointViewOnlyView::updateValues() m_ui->displayBar->setText(QString("Delay: %1 sec").arg(wp->getParam1())); break; } - case 237: //MAV_CMD_DO_START_SEARCH +#ifdef MAVLINK_ENABLED_PIXHAWK + case MAV_CMD_DO_START_SEARCH: { m_ui->displayBar->setText(QString("Start searching for pattern. Success when got more than %2 detections with confidence %1").arg(wp->getParam1()).arg(wp->getParam2())); break; } - case 238: //MAV_CMD_DO_FINISH_SEARCH + case MAV_CMD_DO_FINISH_SEARCH: { m_ui->displayBar->setText(QString("Check if search was successful. yes -> jump to %1, no -> jump to %2. Jumps left: %3").arg(wp->getParam1()).arg(wp->getParam2()).arg(wp->getParam3())); break; } - case 240: //MAV_CMD_DO_SWEEP + case MAV_CMD_NAV_SWEEP: { switch (wp->getFrame()) { @@ -394,6 +395,7 @@ void WaypointViewOnlyView::updateValues() } //end Frame switch break; } +#endif default: { m_ui->displayBar->setText(QString("Unknown Command ID (%1) : %2, %3, %4, %5, %6, %7, %8").arg(wp->getAction()).arg(wp->getParam1()).arg(wp->getParam2()).arg(wp->getParam3()).arg(wp->getParam4()).arg(wp->getParam5()).arg(wp->getParam6()).arg(wp->getParam7())); diff --git a/src/ui/mission/QGCMissionDoFinishSearch.cc b/src/ui/mission/QGCMissionDoFinishSearch.cc new file mode 100644 index 0000000000000000000000000000000000000000..d13374e79ae36978ac3e146ee50358832204eeac --- /dev/null +++ b/src/ui/mission/QGCMissionDoFinishSearch.cc @@ -0,0 +1,34 @@ +#include "QGCMissionDoFinishSearch.h" +#include "ui_QGCMissionDoFinishSearch.h" +#include "WaypointEditableView.h" + +QGCMissionDoFinishSearch::QGCMissionDoFinishSearch(WaypointEditableView* WEV) : + QWidget(WEV), + ui(new Ui::QGCMissionDoFinishSearch) +{ + ui->setupUi(this); + this->WEV = WEV; + //Using UI to change WP: + connect(this->ui->param1SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam1(double))); + connect(this->ui->param2SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam2(double))); + connect(this->ui->param3SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam3(double))); + //connect(this->ui->param4SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam4(double))); + //connect(this->ui->param5SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam5(double))); + //connect(this->ui->param6SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam6(double))); + //connect(this->ui->param7SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam7(double))); + + + //Reading WP to update UI: + connect(WEV,SIGNAL(param1Broadcast(double)),this->ui->param1SpinBox,SLOT(setValue(double))); + connect(WEV,SIGNAL(param2Broadcast(double)),this->ui->param2SpinBox,SLOT(setValue(double))); + connect(WEV,SIGNAL(param3Broadcast(double)),this->ui->param3SpinBox,SLOT(setValue(double))); + //connect(WEV,SIGNAL(param4Broadcast(double)),this->ui->param4SpinBox,SLOT(setValue(double))); + //connect(WEV,SIGNAL(param5Broadcast(double)),this->ui->param5SpinBox,SLOT(setValue(double))); + //connect(WEV,SIGNAL(param6Broadcast(double)),this->ui->param6SpinBox,SLOT(setValue(double))); + //connect(WEV,SIGNAL(param7Broadcast(double)),this->ui->param7SpinBox,SLOT(setValue(double))); +} + +QGCMissionDoFinishSearch::~QGCMissionDoFinishSearch() +{ + delete ui; +} diff --git a/src/ui/mission/QGCMissionDoFinishSearch.h b/src/ui/mission/QGCMissionDoFinishSearch.h new file mode 100644 index 0000000000000000000000000000000000000000..2ad07620463689805112d9652cd4651e9ef7821e --- /dev/null +++ b/src/ui/mission/QGCMissionDoFinishSearch.h @@ -0,0 +1,25 @@ +#ifndef QGCMISSIONDOFINISHSEARCH_H +#define QGCMISSIONDOFINISHSEARCH_H + +#include +#include "WaypointEditableView.h" +namespace Ui { + class QGCMissionDoFinishSearch; +} + +class QGCMissionDoFinishSearch : public QWidget +{ + Q_OBJECT + +public: + explicit QGCMissionDoFinishSearch(WaypointEditableView* WEV); + ~QGCMissionDoFinishSearch(); + +protected: + WaypointEditableView* WEV; + +private: + Ui::QGCMissionDoFinishSearch *ui; +}; + +#endif // QGCMISSIONDOFINISHSEARCH_H diff --git a/src/ui/mission/QGCMissionDoFinishSearch.ui b/src/ui/mission/QGCMissionDoFinishSearch.ui new file mode 100644 index 0000000000000000000000000000000000000000..e2099b98e4bcc74bf883b5c84ce188ffce9ef350 --- /dev/null +++ b/src/ui/mission/QGCMissionDoFinishSearch.ui @@ -0,0 +1,129 @@ + + + QGCMissionDoFinishSearch + + + + 0 + 0 + 499 + 27 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 5 + + + 0 + + + + + Jump to this index, if search successful + + + Jump to this index, if search successful + + + + + + false + + + Jump to index: + + + + + + 0 + + + 0.000000000000000 + + + 2147483647.000000000000000 + + + + + + + Jump to this index, if search unsuccessful + + + Jump to this index, if search unsuccessful + + + + + + false + + + Jump to index: + + + 0 + + + 0.000000000000000 + + + 2147483647.000000000000000 + + + + + + + Remaining number of jumps. Terminate search if jumps == 0. + + + Remaining number of jumps. Terminate search if jumps == 0. + + + + + + false + + + + + + time(s) + + + 0 + + + 0.000000000000000 + + + 2147483647.000000000000000 + + + + + + + + diff --git a/src/ui/mission/QGCMissionDoStartSearch.cc b/src/ui/mission/QGCMissionDoStartSearch.cc new file mode 100644 index 0000000000000000000000000000000000000000..61d552a30bc0bb2be6e8faed5fb824444d4c5ad1 --- /dev/null +++ b/src/ui/mission/QGCMissionDoStartSearch.cc @@ -0,0 +1,34 @@ +#include "QGCMissionDoStartSearch.h" +#include "ui_QGCMissionDoStartSearch.h" +#include "WaypointEditableView.h" + +QGCMissionDoStartSearch::QGCMissionDoStartSearch(WaypointEditableView* WEV) : + QWidget(WEV), + ui(new Ui::QGCMissionDoStartSearch) +{ + ui->setupUi(this); + this->WEV = WEV; + //Using UI to change WP: + connect(this->ui->param1SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam1(double))); + connect(this->ui->param2SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam2(double))); + //connect(this->ui->param3SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam3(double))); + //connect(this->ui->param4SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam4(double))); + //connect(this->ui->param5SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam5(double))); + //connect(this->ui->param6SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam6(double))); + //connect(this->ui->param7SpinBox, SIGNAL(valueChanged(double)),WEV,SLOT(changedParam7(double))); + + + //Reading WP to update UI: + connect(WEV,SIGNAL(param1Broadcast(double)),this->ui->param1SpinBox,SLOT(setValue(double))); + connect(WEV,SIGNAL(param2Broadcast(double)),this->ui->param2SpinBox,SLOT(setValue(double))); + //connect(WEV,SIGNAL(param3Broadcast(double)),this->ui->param3SpinBox,SLOT(setValue(double))); + //connect(WEV,SIGNAL(param4Broadcast(double)),this->ui->param4SpinBox,SLOT(setValue(double))); + //connect(WEV,SIGNAL(param5Broadcast(double)),this->ui->param5SpinBox,SLOT(setValue(double))); + //connect(WEV,SIGNAL(param6Broadcast(double)),this->ui->param6SpinBox,SLOT(setValue(double))); + //connect(WEV,SIGNAL(param7Broadcast(double)),this->ui->param7SpinBox,SLOT(setValue(double))); +} + +QGCMissionDoStartSearch::~QGCMissionDoStartSearch() +{ + delete ui; +} diff --git a/src/ui/mission/QGCMissionDoStartSearch.h b/src/ui/mission/QGCMissionDoStartSearch.h new file mode 100644 index 0000000000000000000000000000000000000000..e4c1376402e995bf796d57ad6e2632474ba40310 --- /dev/null +++ b/src/ui/mission/QGCMissionDoStartSearch.h @@ -0,0 +1,26 @@ +#ifndef QGCMISSIONDOSTARTSEARCH_H +#define QGCMISSIONDOSTARTSEARCH_H + +#include +#include "WaypointEditableView.h" + +namespace Ui { + class QGCMissionDoStartSearch; +} + +class QGCMissionDoStartSearch : public QWidget +{ + Q_OBJECT + +public: + explicit QGCMissionDoStartSearch(WaypointEditableView* WEV); + ~QGCMissionDoStartSearch(); + +protected: + WaypointEditableView* WEV; + +private: + Ui::QGCMissionDoStartSearch *ui; +}; + +#endif // QGCMISSIONDOSTARTSEARCH_H diff --git a/src/ui/mission/QGCMissionDoStartSearch.ui b/src/ui/mission/QGCMissionDoStartSearch.ui new file mode 100644 index 0000000000000000000000000000000000000000..51887f6ed812d8cc6e58a132795bb84f5693a3c4 --- /dev/null +++ b/src/ui/mission/QGCMissionDoStartSearch.ui @@ -0,0 +1,92 @@ + + + QGCMissionDoStartSearch + + + + 0 + 0 + 482 + 27 + + + + + 0 + 0 + + + + + 0 + 0 + + + + Form + + + + 5 + + + 0 + + + + + Minimal required detection confidence + + + Minimal required detection confidence + + + false + + + Conf: + + + 3 + + + 0.000000000000000 + + + 100.000000000000000 + + + 0.100000000000000 + + + + + + + Required number of detections + + + Required number of detections + + + false + + + #det: + + + 0 + + + 0.000000000000000 + + + 2147483647.000000000000000 + + + + + + + + diff --git a/src/ui/mission/QGCMissionOther.ui b/src/ui/mission/QGCMissionOther.ui index 54d27eec5cc7649bd10816232cab8a6f53fa5dc8..719a8b2603913d0d7ff880270d2871ce49cb8d82 100644 --- a/src/ui/mission/QGCMissionOther.ui +++ b/src/ui/mission/QGCMissionOther.ui @@ -59,6 +59,12 @@ + + Mission parameter #1 + + + Mission parameter #1 + false @@ -79,7 +85,10 @@ - + Mission parameter #2 + + + Mission parameter #2 false @@ -100,6 +109,12 @@ + + Mission parameter #3 + + + Mission parameter #3 + false @@ -119,6 +134,12 @@ + + Mission parameter #4 + + + Mission parameter #4 + false @@ -138,6 +159,12 @@ + + Mission parameter #5 + + + Mission parameter #5 + false @@ -157,6 +184,12 @@ + + Mission parameter #6 + + + Mission parameter #6 + false @@ -176,6 +209,12 @@ + + Mission parameter #7 + + + Mission parameter #7 + false