From cf066595e079112cc00c3105f3d9244a975af77f Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Thu, 12 May 2016 17:26:53 +0300 Subject: CAN: Simplify the code of the TinyCAN backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We do not need to keep separate enableWriteNotification() and enableReadNotification() methods; their bodies can be moved to the open()/close() methods, that simplifies the code. Change-Id: I7a6c1dd5ccfea51b0506e717c9809faa59f13161 Reviewed-by: André Hartmann --- src/plugins/canbus/tinycan/tinycanbackend.cpp | 45 +++++++++------------------ src/plugins/canbus/tinycan/tinycanbackend_p.h | 2 -- 2 files changed, 14 insertions(+), 33 deletions(-) (limited to 'src/plugins/canbus/tinycan') diff --git a/src/plugins/canbus/tinycan/tinycanbackend.cpp b/src/plugins/canbus/tinycan/tinycanbackend.cpp index 43640cc..4a36918 100644 --- a/src/plugins/canbus/tinycan/tinycanbackend.cpp +++ b/src/plugins/canbus/tinycan/tinycanbackend.cpp @@ -188,6 +188,9 @@ bool TinyCanBackendPrivate::open() return false; } + writeNotifier = new WriteNotifier(this, q); + writeNotifier->setInterval(0); + isOpen = true; return true; } @@ -196,6 +199,9 @@ void TinyCanBackendPrivate::close() { Q_Q(TinyCanBackend); + delete writeNotifier; + writeNotifier = nullptr; + if (int ret = ::CanDeviceClose(channelIndex) < 0) q->setError(systemErrorString(ret), QCanBusDevice::CanBusError::ConnectionError); @@ -309,30 +315,12 @@ void TinyCanBackendPrivate::setupDefaultConfigurations() q->setConfigurationParameter(QCanBusDevice::BitRateKey, 500000); } -void TinyCanBackendPrivate::enableWriteNotification(bool enable) -{ - Q_Q(TinyCanBackend); - - if (writeNotifier) { - if (enable) { - if (!writeNotifier->isActive()) - writeNotifier->start(); - } else { - writeNotifier->stop(); - } - } else if (enable) { - writeNotifier = new WriteNotifier(this, q); - writeNotifier->setInterval(0); - writeNotifier->start(); - } -} - void TinyCanBackendPrivate::startWrite() { Q_Q(TinyCanBackend); if (!q->hasOutgoingFrames()) { - enableWriteNotification(false); + writeNotifier->stop(); return; } @@ -360,16 +348,8 @@ void TinyCanBackendPrivate::startWrite() emit q->framesWritten(messagesToWrite); } - if (q->hasOutgoingFrames()) - enableWriteNotification(true); -} - -bool TinyCanBackendPrivate::enableReadNotification() -{ - ::CanSetRxEventCallback(&canRxEventCallback); - ::CanSetEvents(EVENT_ENABLE_RX_MESSAGES); - - return true; + if (q->hasOutgoingFrames() && !writeNotifier->isActive()) + writeNotifier->start(); } // this method is called from the different thread! @@ -434,7 +414,8 @@ void TinyCanBackendPrivate::startupDriver() return; } - enableReadNotification(); + ::CanSetRxEventCallback(&canRxEventCallback); + ::CanSetEvents(EVENT_ENABLE_RX_MESSAGES); } else if (driverRefCount < 0) { qCritical("Wrong reference counter: %d", driverRefCount); @@ -563,7 +544,9 @@ bool TinyCanBackend::writeFrame(const QCanBusFrame &newData) } enqueueOutgoingFrame(newData); - d->enableWriteNotification(true); + + if (!d->writeNotifier->isActive()) + d->writeNotifier->start(); return true; } diff --git a/src/plugins/canbus/tinycan/tinycanbackend_p.h b/src/plugins/canbus/tinycan/tinycanbackend_p.h index 14630dd..18c82ef 100644 --- a/src/plugins/canbus/tinycan/tinycanbackend_p.h +++ b/src/plugins/canbus/tinycan/tinycanbackend_p.h @@ -70,9 +70,7 @@ public: QString systemErrorString(int errorCode); void setupChannel(const QString &interfaceName); void setupDefaultConfigurations(); - void enableWriteNotification(bool enable); void startWrite(); - bool enableReadNotification(); void startRead(); void startupDriver(); void cleanupDriver(); -- cgit v1.2.3