summaryrefslogtreecommitdiffstats
path: root/src/plugins/canbus/socketcan
diff options
context:
space:
mode:
authorAndre Hartmann <aha_1980@gmx.de>2018-10-02 11:41:16 +0200
committerAndré Hartmann <aha_1980@gmx.de>2019-05-02 11:15:05 +0000
commita88ecda86028228174a1ec4e53df235ebac33dcc (patch)
tree9a39dfe2e0e85310c0450fef9be15120f9dd7ba1 /src/plugins/canbus/socketcan
parent4a7f051247b05e1e298ffabc00e8ce3dc3e216a0 (diff)
Add QCanBusDevice::resetController() for CAN controller reset
Currently missing: * VectorCAN: no information in the documentation found * PassthroughCAN: no documentation [ChangeLog][QCanBus][QCanBusDevice] Added the function QCanBusDevice::resetController() to reset a CAN controller from bus off state, as far as supported by the various plugins. Fixes: QTBUG-54943 Change-Id: Ic098054b012726c0c69970c0ae84f434c2b3964a Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
Diffstat (limited to 'src/plugins/canbus/socketcan')
-rw-r--r--src/plugins/canbus/socketcan/socketcanbackend.cpp8
-rw-r--r--src/plugins/canbus/socketcan/socketcanbackend.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/src/plugins/canbus/socketcan/socketcanbackend.cpp b/src/plugins/canbus/socketcan/socketcanbackend.cpp
index cac1db5..9e99a57 100644
--- a/src/plugins/canbus/socketcan/socketcanbackend.cpp
+++ b/src/plugins/canbus/socketcan/socketcanbackend.cpp
@@ -194,6 +194,9 @@ SocketCanBackend::SocketCanBackend(const QString &name) :
}
resetConfigurations();
+
+ std::function<void()> f = std::bind(&SocketCanBackend::resetController, this);
+ setResetControllerFunction(f);
}
SocketCanBackend::~SocketCanBackend()
@@ -750,4 +753,9 @@ void SocketCanBackend::readSocket()
enqueueReceivedFrames(newFrames);
}
+void SocketCanBackend::resetController()
+{
+ libSocketCan->restart(canSocketName);
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/canbus/socketcan/socketcanbackend.h b/src/plugins/canbus/socketcan/socketcanbackend.h
index 1392251..561d4ee 100644
--- a/src/plugins/canbus/socketcan/socketcanbackend.h
+++ b/src/plugins/canbus/socketcan/socketcanbackend.h
@@ -83,6 +83,7 @@ private:
void resetConfigurations();
bool connectSocket();
bool applyConfigurationParameter(int key, const QVariant &value);
+ void resetController();
canfd_frame m_frame;
sockaddr_can m_address;