From 5730af5c631a07f6edc166c7ee6f55febb24ead5 Mon Sep 17 00:00:00 2001 From: Bryant Date: Sun, 8 Feb 2015 15:53:52 -0800 Subject: [PATCH] Fix setting the baud rate. There's also a partial fix for the databits and stopbits. I'm unsure how to deal with the logic around the 'is_cdc' variable, as I can't really follow what it's for. --- src/comm/SerialLink.cc | 40 ----------------------------- src/comm/SerialLink.h | 5 ---- src/ui/SerialConfigurationWindow.cc | 35 ++++++++++++++++++++----- src/ui/SerialConfigurationWindow.h | 4 +++ 4 files changed, 33 insertions(+), 51 deletions(-) diff --git a/src/comm/SerialLink.cc b/src/comm/SerialLink.cc index e2b95f6e4..a16401afa 100644 --- a/src/comm/SerialLink.cc +++ b/src/comm/SerialLink.cc @@ -770,17 +770,8 @@ bool SerialLink::setBaudRateType(int rateIndex) return result; } -bool SerialLink::setBaudRateString(const QString& rate) -{ - bool ok; - int intrate = rate.toInt(&ok); - if (!ok) return false; - return setBaudRate(intrate); -} - bool SerialLink::setBaudRate(int rate) { - bool accepted = false; if (rate != m_baud) { m_baud = rate; @@ -839,37 +830,6 @@ bool SerialLink::setParityType(int parity) return accepted; } - -bool SerialLink::setDataBits(int dataBits) -{ - - qDebug("SET DATA BITS"); - bool accepted = false; - if (dataBits != m_dataBits) { - m_dataBits = static_cast(dataBits); - accepted = true; - if (m_port && !m_is_cdc) - accepted = m_port->setDataBits(static_cast(dataBits)); - emit updateLink(this); - } - return accepted; -} - -bool SerialLink::setStopBits(int stopBits) -{ - - // Note 3 is OneAndAHalf stopbits. - bool accepted = false; - if (stopBits != m_stopBits) { - m_stopBits = static_cast(stopBits); - accepted = true; - if (m_port && !m_is_cdc) - accepted = m_port->setStopBits(static_cast(stopBits)); - emit updateLink(this); - } - return accepted; -} - bool SerialLink::setDataBitsType(int dataBits) { diff --git a/src/comm/SerialLink.h b/src/comm/SerialLink.h index 5e9911fdc..7a539f4cd 100644 --- a/src/comm/SerialLink.h +++ b/src/comm/SerialLink.h @@ -123,11 +123,6 @@ signals: //[TODO] Refactor to Linkinterface public slots: bool setPortName(QString portName); bool setBaudRate(int rate); - bool setDataBits(int dataBits); - bool setStopBits(int stopBits); - - // Set string rate - bool setBaudRateString(const QString& rate); // Set ENUM values bool setBaudRateType(int rateIndex); diff --git a/src/ui/SerialConfigurationWindow.cc b/src/ui/SerialConfigurationWindow.cc index 8acbaa95a..42d323dde 100644 --- a/src/ui/SerialConfigurationWindow.cc +++ b/src/ui/SerialConfigurationWindow.cc @@ -29,13 +29,14 @@ This file is part of the QGROUNDCONTROL project */ #include - -#include -#include #include #include #include +#include "SerialConfigurationWindow.h" +#include "SerialLinkInterface.h" +#include "SerialLink.h" + SerialConfigurationWindow::SerialConfigurationWindow(LinkInterface* link, QWidget *parent, Qt::WindowFlags flags) : QWidget(parent, flags), userConfigured(false) { @@ -125,13 +126,13 @@ SerialConfigurationWindow::SerialConfigurationWindow(LinkInterface* link, QWidge // Connect the individual user interface inputs connect(ui.portName, SIGNAL(editTextChanged(QString)), this, SLOT(setPortName(QString))); connect(ui.portName, SIGNAL(currentIndexChanged(QString)), this, SLOT(setPortName(QString))); - connect(ui.baudRate, SIGNAL(activated(QString)), this->link, SLOT(setBaudRateString(QString))); + connect(ui.baudRate, static_cast(&QComboBox::activated), this, &SerialConfigurationWindow::setBaudRate); connect(ui.flowControlCheckBox, SIGNAL(toggled(bool)), this, SLOT(enableFlowControl(bool))); connect(ui.parNone, SIGNAL(toggled(bool)), this, SLOT(setParityNone(bool))); connect(ui.parOdd, SIGNAL(toggled(bool)), this, SLOT(setParityOdd(bool))); connect(ui.parEven, SIGNAL(toggled(bool)), this, SLOT(setParityEven(bool))); - connect(ui.dataBitsSpinBox, SIGNAL(valueChanged(int)), this->link, SLOT(setDataBits(int))); - connect(ui.stopBitsSpinBox, SIGNAL(valueChanged(int)), this->link, SLOT(setStopBits(int))); + connect(ui.dataBitsSpinBox, static_cast(&QSpinBox::valueChanged), this, &SerialConfigurationWindow::setDataBits); + connect(ui.stopBitsSpinBox, static_cast(&QSpinBox::valueChanged), this, &SerialConfigurationWindow::setStopBits); connect(ui.advCheckBox, SIGNAL(clicked(bool)), ui.advGroupBox, SLOT(setVisible(bool))); ui.advCheckBox->setCheckable(true); ui.advCheckBox->setChecked(false); @@ -284,6 +285,28 @@ void SerialConfigurationWindow::setPortName(QString port) userConfigured = true; } +void SerialConfigurationWindow::setBaudRate(QString rate) +{ + bool ok; + int intrate = rate.toInt(&ok); + if (ok) { + link->setBaudRate(intrate); + } + userConfigured = true; +} + +void SerialConfigurationWindow::setDataBits(int dataBits) +{ + link->setDataBitsType(static_cast(dataBits)); + userConfigured = true; +} + +void SerialConfigurationWindow::setStopBits(int stopBits) +{ + link->setStopBitsType(static_cast(stopBits)); + userConfigured = true; +} + void SerialConfigurationWindow::setLinkName(QString name) { Q_UNUSED(name); diff --git a/src/ui/SerialConfigurationWindow.h b/src/ui/SerialConfigurationWindow.h index 57b8600ed..d45d5b016 100644 --- a/src/ui/SerialConfigurationWindow.h +++ b/src/ui/SerialConfigurationWindow.h @@ -59,6 +59,10 @@ public slots: void setParityOdd(bool accept); void setParityEven(bool accept); void setPortName(QString port); + void setBaudRate(QString rate); + void setDataBits(int dataBits); + void setStopBits(int stopBits); + void setLinkName(QString name); /** * @brief setupPortList Populates the dropdown with the list of available serial ports. -- 2.22.0