diff --git a/src/uas/UASInterface.h b/src/uas/UASInterface.h index dac13355b09c45d2a092b1a3c15f981a9abdc4b4..d83e85f3401d51b5fb3d541b25f03aec8293a5ad 100644 --- a/src/uas/UASInterface.h +++ b/src/uas/UASInterface.h @@ -271,6 +271,10 @@ public slots: virtual void enableRCChannelDataTransmission(int rate) = 0; virtual void enableRawControllerDataTransmission(int rate) = 0; //virtual void enableRawSensorFusionTransmission(int rate) = 0; + virtual void enablePositionTransmission(int rate) = 0; + virtual void enableExtra1Transmission(int rate) = 0; + virtual void enableExtra2Transmission(int rate) = 0; + virtual void enableExtra3Transmission(int rate) = 0; virtual void setLocalPositionSetpoint(float x, float y, float z, float yaw) = 0; virtual void setLocalPositionOffset(float x, float y, float z, float yaw) = 0; diff --git a/src/ui/MainWindow.cc b/src/ui/MainWindow.cc index 98d7f5a40b333bc8148363eb40edeb3f2c0c00b7..420705b79a68f9b6451333af39c9975456fcc052 100644 --- a/src/ui/MainWindow.cc +++ b/src/ui/MainWindow.cc @@ -243,6 +243,7 @@ void MainWindow::resizeEvent(QResizeEvent * event) ui.statusBar->setVisible(false); } else { ui.statusBar->setVisible(true); + ui.statusBar->setSizeGripEnabled(true); } } diff --git a/src/ui/QGCSensorSettingsWidget.cc b/src/ui/QGCSensorSettingsWidget.cc index 0083b9faa36dd360c14e22fe819f3f7f2e1f2b19..6f2e30697d7d1473fd20adc3fcdfe53ae05a0bf9 100644 --- a/src/ui/QGCSensorSettingsWidget.cc +++ b/src/ui/QGCSensorSettingsWidget.cc @@ -37,16 +37,34 @@ QGCSensorSettingsWidget::QGCSensorSettingsWidget(UASInterface* uas, QWidget *par ui(new Ui::QGCSensorSettingsWidget) { ui->setupUi(this); - // FIXME James Goppert - // XXX: This might be a bad idea sending a message every time the value changes - connect(ui->spinBox_rawSensor, SIGNAL(valueChanged(int)), mav, SLOT(enableRawSensorDataTransmission(int))); - connect(ui->spinBox_controller, SIGNAL(valueChanged(int)), mav, SLOT(enableRawControllerDataTransmission(int))); - connect(ui->spinBox_extended, SIGNAL(valueChanged(int)), mav, SLOT(enableExtendedSystemStatusTransmission(int))); - connect(ui->spinBox_rc, SIGNAL(valueChanged(int)), mav, SLOT(enableRCChannelDataTransmission(int))); - connect(ui->spinBox_position, SIGNAL(valueChanged(int)), mav, SLOT(enablePositionTransmission(int))); - connect(ui->spinBox_extra1, SIGNAL(valueChanged(int)), mav, SLOT(enableExtra1Transmission(int))); - connect(ui->spinBox_extra2, SIGNAL(valueChanged(int)), mav, SLOT(enableExtra2Transmission(int))); - connect(ui->spinBox_extra3, SIGNAL(valueChanged(int)), mav, SLOT(enableExtra3Transmission(int))); + // Set up delay timers + delayedSendRawSensorTimer.setInterval(800); + delayedSendControllerTimer.setInterval(800); + delayedSendExtendedTimer.setInterval(800); + delayedSendRCTimer.setInterval(800); + delayedSendPositionTimer.setInterval(800); + delayedSendExtra1Timer.setInterval(800); + delayedSendExtra2Timer.setInterval(800); + delayedSendExtra3Timer.setInterval(800); + + connect(&delayedSendRawSensorTimer, SIGNAL(timeout()), this, SLOT(sendRawSensor())); + connect(&delayedSendControllerTimer, SIGNAL(timeout()), this, SLOT(sendController())); + connect(&delayedSendExtendedTimer, SIGNAL(timeout()), this, SLOT(sendExtended())); + connect(&delayedSendRCTimer, SIGNAL(timeout()), this, SLOT(sendRC())); + connect(&delayedSendPositionTimer, SIGNAL(timeout()), this, SLOT(sendPosition())); + connect(&delayedSendExtra1Timer, SIGNAL(timeout()), this, SLOT(sendExtra1())); + connect(&delayedSendExtra2Timer, SIGNAL(timeout()), this, SLOT(sendExtra2())); + connect(&delayedSendExtra3Timer, SIGNAL(timeout()), this, SLOT(sendExtra3())); + + // Connect UI + connect(ui->spinBox_rawSensor, SIGNAL(valueChanged(int)), this, SLOT(delayedSendRawSensor(int)));//mav, SLOT(enableRawSensorDataTransmission(int))); + connect(ui->spinBox_controller, SIGNAL(valueChanged(int)), this, SLOT(delayedSendController(int))); + connect(ui->spinBox_extended, SIGNAL(valueChanged(int)), this, SLOT(delayedSendExtended(int))); + connect(ui->spinBox_rc, SIGNAL(valueChanged(int)), this, SLOT(delayedSendRC(int))); + connect(ui->spinBox_position, SIGNAL(valueChanged(int)), this, SLOT(delayedSendPosition(int))); + connect(ui->spinBox_extra1, SIGNAL(valueChanged(int)), this, SLOT(delayedSendExtra1(int))); + connect(ui->spinBox_extra2, SIGNAL(valueChanged(int)), this, SLOT(delayedSendExtra2(int))); + connect(ui->spinBox_extra3, SIGNAL(valueChanged(int)), this, SLOT(delayedSendExtra3(int))); // Calibration connect(ui->rcCalButton, SIGNAL(clicked()), mav, SLOT(startRadioControlCalibration())); @@ -55,6 +73,102 @@ QGCSensorSettingsWidget::QGCSensorSettingsWidget(UASInterface* uas, QWidget *par connect(ui->gyroCalButton, SIGNAL(clicked()), mav, SLOT(startGyroscopeCalibration())); } +void QGCSensorSettingsWidget::delayedSendRawSensor(int rate) +{ + Q_UNUSED(rate); + delayedSendRawSensorTimer.start(); +} + +void QGCSensorSettingsWidget::delayedSendController(int rate) +{ + Q_UNUSED(rate); + delayedSendControllerTimer.start(); +} + +void QGCSensorSettingsWidget::delayedSendExtended(int rate) +{ + Q_UNUSED(rate); + delayedSendExtendedTimer.start(); +} + +void QGCSensorSettingsWidget::delayedSendRC(int rate) +{ + Q_UNUSED(rate); + delayedSendRCTimer.start(); +} + +void QGCSensorSettingsWidget::delayedSendPosition(int rate) +{ + Q_UNUSED(rate); + delayedSendPositionTimer.start(); +} + +void QGCSensorSettingsWidget::delayedSendExtra1(int rate) +{ + Q_UNUSED(rate); + delayedSendExtra1Timer.start(); +} + +void QGCSensorSettingsWidget::delayedSendExtra2(int rate) +{ + Q_UNUSED(rate); + delayedSendExtra2Timer.start(); +} + +void QGCSensorSettingsWidget::delayedSendExtra3(int rate) +{ + Q_UNUSED(rate); + delayedSendExtra3Timer.start(); +} + +void QGCSensorSettingsWidget::sendRawSensor() +{ + delayedSendRawSensorTimer.stop(); + mav->enableRawSensorDataTransmission(ui->spinBox_rawSensor->value()); +} + +void QGCSensorSettingsWidget::sendController() +{ + delayedSendControllerTimer.stop(); + mav->enableRawControllerDataTransmission(ui->spinBox_controller->value()); +} + +void QGCSensorSettingsWidget::sendExtended() +{ + delayedSendExtendedTimer.stop(); + mav->enableExtendedSystemStatusTransmission(ui->spinBox_extended->value()); +} + +void QGCSensorSettingsWidget::sendRC() +{ + delayedSendRCTimer.stop(); + mav->enableRCChannelDataTransmission(ui->spinBox_rc->value()); +} + +void QGCSensorSettingsWidget::sendPosition() +{ + delayedSendPositionTimer.stop(); + mav->enablePositionTransmission(ui->spinBox_position->value()); +} + +void QGCSensorSettingsWidget::sendExtra1() +{ + delayedSendExtra1Timer.stop(); + mav->enableExtra1Transmission(ui->spinBox_extra1->value()); +} + +void QGCSensorSettingsWidget::sendExtra2() +{ + delayedSendExtra2Timer.stop(); + mav->enableExtra2Transmission(ui->spinBox_extra2->value()); +} + +void QGCSensorSettingsWidget::sendExtra3() +{ + delayedSendExtra3Timer.stop(); + mav->enableExtra3Transmission(ui->spinBox_extra3->value()); +} + QGCSensorSettingsWidget::~QGCSensorSettingsWidget() { delete ui; diff --git a/src/ui/QGCSensorSettingsWidget.h b/src/ui/QGCSensorSettingsWidget.h index b0600321f3fd73c0843a1db1dcbe5fa050e63912..1f78fa7954b604279e2549fd4d39a24b10152a1a 100644 --- a/src/ui/QGCSensorSettingsWidget.h +++ b/src/ui/QGCSensorSettingsWidget.h @@ -46,10 +46,38 @@ public: QGCSensorSettingsWidget(UASInterface* uas, QWidget *parent = 0); ~QGCSensorSettingsWidget(); +public slots: + void delayedSendRawSensor(int rate); + void delayedSendController(int rate); + void delayedSendExtended(int rate); + void delayedSendRC(int rate); + void delayedSendPosition(int rate); + void delayedSendExtra1(int rate); + void delayedSendExtra2(int rate); + void delayedSendExtra3(int rate); + protected: UASInterface* mav; + QTimer delayedSendRawSensorTimer; + QTimer delayedSendControllerTimer; + QTimer delayedSendExtendedTimer; + QTimer delayedSendRCTimer; + QTimer delayedSendPositionTimer; + QTimer delayedSendExtra1Timer; + QTimer delayedSendExtra2Timer; + QTimer delayedSendExtra3Timer; void changeEvent(QEvent *e); +protected slots: + void sendRawSensor(); + void sendController(); + void sendExtended(); + void sendRC(); + void sendPosition(); + void sendExtra1(); + void sendExtra2(); + void sendExtra3(); + private: Ui::QGCSensorSettingsWidget *ui; };