diff --git a/src/uas/QGCUASParamManager.cc b/src/uas/QGCUASParamManager.cc
index 93ab410..82ea6f5 100644
--- a/src/uas/QGCUASParamManager.cc
+++ b/src/uas/QGCUASParamManager.cc
@@ -23,10 +23,4 @@ void QGCUASParamManager::requestParameterListUpdate(int component)
}
-/**
- * The .. signal is emitted
- */
-void QGCUASParamManager::requestParameterUpdate(int component, const QString& parameter)
-{
-}
diff --git a/src/uas/QGCUASParamManager.h b/src/uas/QGCUASParamManager.h
index 1846f18..4a86fbe 100644
--- a/src/uas/QGCUASParamManager.h
+++ b/src/uas/QGCUASParamManager.h
@@ -20,10 +20,7 @@ public:
/** @brief Request an update for the parameter list */
void requestParameterListUpdate(int component = 0);
/** @brief Request an update for this specific parameter */
- void requestParameterUpdate(int component, const QString& parameter);
-
- /** @brief Request list of parameters from MAV */
- virtual void requestParameterList() = 0;
+ virtual void requestParameterUpdate(int component, const QString& parameter) = 0;
signals:
void parameterChanged(int component, QString parameter, float value);
@@ -31,6 +28,10 @@ signals:
void parameterListUpToDate(int component);
public slots:
+ /** @brief Write one parameter to the MAV */
+ virtual void setParameter(int component, QString parameterName, float value) = 0;
+ /** @brief Request list of parameters from MAV */
+ virtual void requestParameterList() = 0;
protected:
UASInterface* mav; ///< The MAV this widget is controlling
diff --git a/src/ui/QGCParamWidget.cc b/src/ui/QGCParamWidget.cc
index ad79618..52c0e31 100644
--- a/src/ui/QGCParamWidget.cc
+++ b/src/ui/QGCParamWidget.cc
@@ -747,6 +747,15 @@ void QGCParamWidget::retransmissionGuardTick()
/**
+ * The .. signal is emitted
+ */
+void QGCParamWidget::requestParameterUpdate(int component, const QString& parameter)
+{
+
+}
+
+
+/**
* @param component the subsystem which has the parameter
* @param parameterName name of the parameter, as delivered by the system
* @param value value of the parameter
diff --git a/src/ui/QGCParamWidget.h b/src/ui/QGCParamWidget.h
index 67db9a2..9c281a4 100644
--- a/src/ui/QGCParamWidget.h
+++ b/src/ui/QGCParamWidget.h
@@ -64,6 +64,8 @@ public slots:
void addParameter(int uas, int component, QString parameterName, float value);
/** @brief Request list of parameters from MAV */
void requestParameterList();
+ /** @brief Request one single parameter */
+ void requestParameterUpdate(int component, const QString& parameter);
/** @brief Set one parameter, changes value in RAM of MAV */
void setParameter(int component, QString parameterName, float value);
/** @brief Set all parameters, changes the value in RAM of MAV */
diff --git a/src/ui/designer/QGCActionButton.ui b/src/ui/designer/QGCActionButton.ui
index 16e38a9..e1d73e3 100644
--- a/src/ui/designer/QGCActionButton.ui
+++ b/src/ui/designer/QGCActionButton.ui
@@ -13,7 +13,7 @@
Form
-
+
-
diff --git a/src/ui/designer/QGCParamSlider.cc b/src/ui/designer/QGCParamSlider.cc
index ee81c8d..0424505 100644
--- a/src/ui/designer/QGCParamSlider.cc
+++ b/src/ui/designer/QGCParamSlider.cc
@@ -1,6 +1,7 @@
#include
#include
#include
+#include
#include "QGCParamSlider.h"
#include "ui_QGCParamSlider.h"
@@ -42,11 +43,16 @@ QGCParamSlider::QGCParamSlider(QWidget *parent) :
connect(ui->editSelectComponentComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectComponent(int)));
connect(ui->editSelectParamComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectParameter(int)));
connect(ui->valueSlider, SIGNAL(valueChanged(int)), this, SLOT(setSliderValue(int)));
+ connect(ui->valueSpinBox, SIGNAL(valueChanged(double)), this, SLOT(setParamValue(double)));
connect(ui->editNameLabel, SIGNAL(textChanged(QString)), ui->nameLabel, SLOT(setText(QString)));
connect(ui->readButton, SIGNAL(clicked()), this, SLOT(requestParameter()));
+ connect(ui->editRefreshParamsButton, SIGNAL(clicked()), this, SLOT(refreshParamList()));
// Set the current UAS if present
setActiveUAS(UASManager::instance()->getActiveUAS());
+
+ // Get param value
+ QTimer::singleShot(1000, this, SLOT(requestParameter()));
}
QGCParamSlider::~QGCParamSlider()
@@ -54,6 +60,16 @@ QGCParamSlider::~QGCParamSlider()
delete ui;
}
+void QGCParamSlider::refreshParamList()
+{
+ ui->editSelectParamComboBox->setEnabled(true);
+ ui->editSelectComponentComboBox->setEnabled(true);
+ if (uas)
+ {
+ uas->getParamManager()->requestParameterList();
+ }
+}
+
void QGCParamSlider::setActiveUAS(UASInterface* activeUas)
{
if (activeUas)
@@ -61,12 +77,10 @@ void QGCParamSlider::setActiveUAS(UASInterface* activeUas)
if (uas)
{
disconnect(uas, SIGNAL(parameterChanged(int,int,int,int,QString,float)), this, SLOT(setParameterValue(int,int,int,int,QString,float)));
- disconnect(ui->editRefreshParamsButton, SIGNAL(clicked()), uas->getParamManager(), SLOT(requestParameterList()));
}
// Connect buttons and signals
connect(activeUas, SIGNAL(parameterChanged(int,int,int,int,QString,float)), this, SLOT(setParameterValue(int,int,int,int,QString,float)), Qt::UniqueConnection);
- connect(ui->editRefreshParamsButton, SIGNAL(clicked()), activeUas->getParamManager(), SLOT(requestParameterList()), Qt::UniqueConnection);
uas = activeUas;
}
}
@@ -79,6 +93,12 @@ void QGCParamSlider::requestParameter()
}
}
+void QGCParamSlider::setParamValue(double value)
+{
+ parameterValue = value;
+ ui->valueSlider->setValue(floatToScaledInt(value));
+}
+
void QGCParamSlider::selectComponent(int componentIndex)
{
this->component = ui->editSelectComponentComboBox->itemData(componentIndex).toInt();
@@ -139,10 +159,10 @@ void QGCParamSlider::endEditMode()
void QGCParamSlider::sendParameter()
{
- if (QGCToolWidgetItem::uas)
+ if (uas)
{
- qDebug() << "SENDING" << component << parameterName << parameterValue;
- QGCToolWidgetItem::uas->setParameter(component, parameterName, parameterValue);
+ // Set value, param manager handles retransmission
+ uas->getParamManager()->setParameter(component, parameterName, parameterValue);
}
else
{
@@ -153,8 +173,9 @@ void QGCParamSlider::sendParameter()
void QGCParamSlider::setSliderValue(int sliderValue)
{
parameterValue = scaledIntToFloat(sliderValue);
- QString unit("");
- ui->valueLabel->setText(QString("%1 %2").arg(parameterValue, 6, 'f', 6, ' ').arg(unit));
+ ui->valueSpinBox->setValue(parameterValue);
+// QString unit("");
+// ui->valueLabel->setText(QString("%1 %2").arg(parameterValue, 6, 'f', 6, ' ').arg(unit));
}
/**
@@ -200,8 +221,7 @@ void QGCParamSlider::setParameterValue(int uas, int component, int paramCount, i
if (component == this->component && parameterName == this->parameterName)
{
parameterValue = value;
- QString unit("");
- ui->valueLabel->setText(QString("%1 %2").arg(value, 0, 'f', 3).arg(unit));
+ ui->valueSpinBox->setValue(value);
ui->valueSlider->setValue(floatToScaledInt(value));
}
}
@@ -221,14 +241,14 @@ void QGCParamSlider::changeEvent(QEvent *e)
float QGCParamSlider::scaledIntToFloat(int sliderValue)
{
float result = (((double)sliderValue)/(double)scaledInt)*(ui->editMaxSpinBox->value() - ui->editMinSpinBox->value());
- qDebug() << "INT TO FLOAT: CONVERTED" << sliderValue << "TO" << result;
+ //qDebug() << "INT TO FLOAT: CONVERTED" << sliderValue << "TO" << result;
return result;
}
int QGCParamSlider::floatToScaledInt(float value)
{
int result = ((value - ui->editMinSpinBox->value())/(ui->editMaxSpinBox->value() - ui->editMinSpinBox->value()))*scaledInt;
- qDebug() << "FLOAT TO INT: CONVERTED" << value << "TO" << result << "SCALEDINT" << scaledInt;
+ //qDebug() << "FLOAT TO INT: CONVERTED" << value << "TO" << result << "SCALEDINT" << scaledInt;
return result;
}
@@ -255,5 +275,6 @@ void QGCParamSlider::readSettings(const QSettings& settings)
ui->editSelectComponentComboBox->addItem(tr("Component #%1").arg(settings.value("QGC_PARAM_SLIDER_COMPONENTID").toInt()), settings.value("QGC_PARAM_SLIDER_COMPONENTID").toInt());
ui->editMinSpinBox->setValue(settings.value("QGC_PARAM_SLIDER_MIN").toFloat());
ui->editMaxSpinBox->setValue(settings.value("QGC_PARAM_SLIDER_MAX").toFloat());
- qDebug() << "DONE READING SETTINGS";
+ ui->editSelectParamComboBox->setEnabled(true);
+ ui->editSelectComponentComboBox->setEnabled(true);
}
diff --git a/src/ui/designer/QGCParamSlider.h b/src/ui/designer/QGCParamSlider.h
index ba941e5..cadfefc 100644
--- a/src/ui/designer/QGCParamSlider.h
+++ b/src/ui/designer/QGCParamSlider.h
@@ -30,9 +30,11 @@ public slots:
void setParameterValue(int uas, int component, int paramCount, int paramIndex, QString parameterName, float value);
void writeSettings(QSettings& settings);
void readSettings(const QSettings& settings);
+ void refreshParamList();
void setActiveUAS(UASInterface *uas);
void selectComponent(int componentIndex);
void selectParameter(int paramIndex);
+ void setParamValue(double value);
protected slots:
/** @brief Request the parameter of this widget from the MAV */
diff --git a/src/ui/designer/QGCParamSlider.ui b/src/ui/designer/QGCParamSlider.ui
index 3b5429f..53a3495 100644
--- a/src/ui/designer/QGCParamSlider.ui
+++ b/src/ui/designer/QGCParamSlider.ui
@@ -6,29 +6,35 @@
0
0
- 606
+ 839
179
Form
-
-
-
+
+
+ 6
+
+
+ 12
+
+
-
Informal Name..
- -
+
-
Min
- -
+
-
Max
@@ -45,14 +51,7 @@
- -
-
-
- 0.00
-
-
-
- -
+
-
-999999999.000000000000000
@@ -62,11 +61,11 @@
- -
+
-
- 300
+ 250
16777215
@@ -78,7 +77,7 @@
- -
+
-
-999999999.000000000000000
@@ -88,22 +87,25 @@
- -
+
-
Please configure the parameter slider now:
- -
+
-
Please click first on refresh to update selection menus..
- -
+
-
+
+ false
+
Select component
@@ -112,8 +114,11 @@
- -
+
-
+
+ false
+
Select parameter
@@ -123,24 +128,13 @@
-
-
-
- Transmit the current slider value to the system
-
-
- Transmit the current slider value to the system
-
-
-
-
-
-
- :/images/devices/network-wireless.svg:/images/devices/network-wireless.svg
-
-
-
- -
+
+
+ 0
+ 0
+
+
Read the current parameter value on the system
@@ -152,7 +146,7 @@
- -
+
-
true
@@ -162,15 +156,22 @@
- -
+
-
Done
- -
-
+
-
+
+
+ -999999999.000000000000000
+
+
+ 999999999.000000000000000
+
+
-
@@ -185,6 +186,35 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Transmit the current slider value to the system
+
+
+ Transmit the current slider value to the system
+
+
+
+
+
+
+ :/images/devices/network-wireless.svg:/images/devices/network-wireless.svg
+
+
+
diff --git a/src/ui/designer/QGCToolWidget.cc b/src/ui/designer/QGCToolWidget.cc
index ccb980c..83bded2 100644
--- a/src/ui/designer/QGCToolWidget.cc
+++ b/src/ui/designer/QGCToolWidget.cc
@@ -23,6 +23,7 @@ QGCToolWidget::QGCToolWidget(const QString& title, QWidget *parent) :
createActions();
toolLayout = ui->toolLayout;
toolLayout->setAlignment(Qt::AlignTop);
+ toolLayout->setSpacing(8);
QDockWidget* dock = dynamic_cast(this->parentWidget());
if (dock)