From 53e19a006d821cb0b60c49e8dc02b6dc5021cfd9 Mon Sep 17 00:00:00 2001 From: Christian Taedcke Date: Fri, 4 Dec 2020 13:47:03 +0100 Subject: [PATCH] Daum minor code cleanup (#3692) * Daum: Remove redundant virtual keywords These function were not involved in any inheritance, so the virtual keyword is removed. * Daum: Remove unused parent member * Daum: Remove redundant destructor * Daum: Remove default values for contructor parameters This circumvents problems where e.g. explicit would be necessary. The constructor is actually only used when all parameters are given. * Daum: Remove redundant this-> * Daum: Ensure timer only allocated once Also use nullptr instead of 0. * Daum: Remove unused includes * Daum: daumDevice is now a private instance member There is no need for it to be a pointer or public. --- src/Train/Daum.cpp | 31 ++++++++++++++----------------- src/Train/Daum.h | 25 +++++++++++-------------- src/Train/DaumController.cpp | 27 +++++++++++++-------------- src/Train/DaumController.h | 6 +++--- 4 files changed, 41 insertions(+), 48 deletions(-) diff --git a/src/Train/Daum.cpp b/src/Train/Daum.cpp index 91d6ca77f..4a485b568 100755 --- a/src/Train/Daum.cpp +++ b/src/Train/Daum.cpp @@ -20,9 +20,9 @@ #include "Daum.h" Daum::Daum(QObject *parent, QString device, QString profile) : QThread(parent), - timer_(0), + timer_(nullptr), serialDeviceName_(device), - serial_dev_(0), + serial_dev_(nullptr), deviceAddress_(-1), maxDeviceLoad_(800), serialWriteDelay_(0), @@ -35,12 +35,8 @@ Daum::Daum(QObject *parent, QString device, QString profile) : QThread(parent), load_(kDefaultLoad), loadToWrite_(kDefaultLoad), forceUpdate_(profile.contains("force", Qt::CaseInsensitive)) { - - this->parent = parent; } -Daum::~Daum() {} - int Daum::start() { QThread::start(); return isRunning() ? 0 : 1; @@ -56,7 +52,7 @@ int Daum::pause() { return 0; } int Daum::stop() { - this->exit(-1); + exit(-1); return 0; } @@ -115,8 +111,8 @@ double Daum::getHeartRate() const { bool Daum::openPort(QString dev) { QMutexLocker locker(&pvars); - if (serial_dev_ == 0) { - serial_dev_ = new QSerialPort; + if (serial_dev_ == nullptr) { + serial_dev_ = new QSerialPort(); } if (serial_dev_->isOpen()) { serial_dev_->close(); @@ -138,7 +134,8 @@ bool Daum::openPort(QString dev) { bool Daum::closePort() { QMutexLocker locker(&pvars); - delete serial_dev_; serial_dev_ = 0; + delete serial_dev_; + serial_dev_ = nullptr; return true; } @@ -150,12 +147,12 @@ void Daum::run() { { QMutexLocker locker(&pvars); - timer_ = new QTimer(); - if (timer_ == 0) { - exit(-1); + if (timer_ == nullptr) { + timer_ = new QTimer(); + + connect(this, SIGNAL(finished()), timer_, SLOT(stop()), Qt::DirectConnection); + connect(timer_, SIGNAL(timeout()), this, SLOT(requestRealtimeData()), Qt::DirectConnection); } - connect(this, SIGNAL(finished()), timer_, SLOT(stop()), Qt::DirectConnection); - connect(timer_, SIGNAL(timeout()), this, SLOT(requestRealtimeData()), Qt::DirectConnection); // discard prev. read data serial_dev_->readAll(); @@ -192,7 +189,7 @@ void Daum::initializeConnection() { } if (addr < 0) { qWarning() << "unable to detect device address"; - this->exit(-1); + exit(-1); } QThread::msleep(100); @@ -450,7 +447,7 @@ QByteArray Daum::WriteDataAndGetAnswer(QByteArray const& dat, int response_bytes s.write(dat); if(!s.waitForBytesWritten(1000)) { qWarning() << "failed to write data to daum cockpit"; - this->exit(-1); + exit(-1); } if (response_bytes > 0) { diff --git a/src/Train/Daum.h b/src/Train/Daum.h index 0d8b7ca49..eec2cc542 100755 --- a/src/Train/Daum.h +++ b/src/Train/Daum.h @@ -44,10 +44,7 @@ public: const int kDefaultLoad = 100; const int kQueryIntervalMS = 1000; - Daum(QObject *parent = 0, QString device = "", QString profile = ""); - virtual ~Daum(); - - QObject *parent; + Daum(QObject *parent, QString device, QString profile); int start(); int restart(); @@ -71,16 +68,16 @@ private: void initializeConnection(); bool configureForCockpitType(int cockpitType); - virtual bool ResetDevice(); - virtual bool StartProgram(unsigned int prog); - virtual bool StopProgram(unsigned int prog); - virtual int GetAddress(); - virtual int CheckCockpit(); - virtual int GetDeviceVersion(); - virtual bool SetProgram(unsigned int prog); - virtual bool SetDate(); - virtual bool SetTime(); - virtual void PlaySound(); + bool ResetDevice(); + bool StartProgram(unsigned int prog); + bool StopProgram(unsigned int prog); + int GetAddress(); + int CheckCockpit(); + int GetDeviceVersion(); + bool SetProgram(unsigned int prog); + bool SetDate(); + bool SetTime(); + void PlaySound(); QByteArray WriteDataAndGetAnswer(QByteArray const& dat, int response_bytes); char MapLoadToByte(unsigned int load) const; diff --git a/src/Train/DaumController.cpp b/src/Train/DaumController.cpp index dc23597ba..19026febf 100755 --- a/src/Train/DaumController.cpp +++ b/src/Train/DaumController.cpp @@ -22,30 +22,29 @@ #include "RealtimeData.h" #include -#include -DaumController::DaumController(TrainSidebar *parent, DeviceConfiguration *dc) : RealtimeController(parent, dc) { - daumDevice_ = new Daum(this, dc != 0 ? dc->portSpec : "", dc != 0 ? dc->deviceProfile : ""); +DaumController::DaumController(TrainSidebar *parent, DeviceConfiguration *dc) : RealtimeController(parent, dc) + , daumDevice_(this, dc ? dc->portSpec : "", dc ? dc->deviceProfile : "") { } int DaumController::start() { - return daumDevice_->start(); + return daumDevice_.start(); } int DaumController::restart() { - return daumDevice_->restart(); + return daumDevice_.restart(); } int DaumController::pause() { - return daumDevice_->pause(); + return daumDevice_.pause(); } int DaumController::stop() { - return daumDevice_->stop(); + return daumDevice_.stop(); } bool DaumController::discover(QString name) { - return daumDevice_->discover(name); + return daumDevice_.discover(name); } /* @@ -54,7 +53,7 @@ bool DaumController::discover(QString name) { * act accordingly. */ void DaumController::getRealtimeData(RealtimeData &rtData) { - if(!daumDevice_->isRunning()) { + if(!daumDevice_.isRunning()) { QMessageBox msgBox; msgBox.setText(tr("Cannot Connect to Daum")); msgBox.setIcon(QMessageBox::Critical); @@ -63,12 +62,12 @@ void DaumController::getRealtimeData(RealtimeData &rtData) { return; } - rtData.setWatts(daumDevice_->getPower()); - rtData.setHr(daumDevice_->getHeartRate()); - rtData.setCadence(daumDevice_->getCadence()); - rtData.setSpeed(daumDevice_->getSpeed()); + rtData.setWatts(daumDevice_.getPower()); + rtData.setHr(daumDevice_.getHeartRate()); + rtData.setCadence(daumDevice_.getCadence()); + rtData.setSpeed(daumDevice_.getSpeed()); } void DaumController::setLoad(double load) { - daumDevice_->setLoad(load); + daumDevice_.setLoad(load); } diff --git a/src/Train/DaumController.h b/src/Train/DaumController.h index 26d22aca7..39792adce 100755 --- a/src/Train/DaumController.h +++ b/src/Train/DaumController.h @@ -17,7 +17,6 @@ * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - #include #include "GoldenCheetah.h" #include "RealtimeController.h" @@ -33,8 +32,6 @@ class DaumController : public RealtimeController public: DaumController (TrainSidebar *, DeviceConfiguration *); - Daum *daumDevice_; // device instance - // device control int start(); // start capturing int restart(); // restart after paused @@ -53,6 +50,9 @@ public: void setLoad(double); void setMode(int) { return; } + +private: + Daum daumDevice_; // device instance }; #endif // _GC_DaumController_h