diff options
author | Andre Hartmann <aha_1980@gmx.de> | 2017-01-13 22:35:13 +0100 |
---|---|---|
committer | André Hartmann <aha_1980@gmx.de> | 2017-01-17 15:11:30 +0000 |
commit | 19d4d81e8dd7ccb9831bea725989d2a08d258207 (patch) | |
tree | af1867778dbb33c3786b24becbe0dcfcf8b376ef /src/plugins/canbus/socketcan | |
parent | d4bbdb83b26f8219b6c64bcff3967aa15db07d9c (diff) |
CAN: Introduce CAN FD flag Error State Indicator (ESI)
Added hasErrorStateIndicator and setErrorStateIndicator to QCanBusFrame.
* Setting QCanBusFrame::setErrorStateIndicator(true)
also sets QCanBusFrame::setFlexibleDataRateFormat(true)
* Setting QCanBusFrame::setFlexibleDataRateFormat(false)
also sets QCanBusFrame::setErrorStateIndicator(false)
[ChangeLog][QCanBusFrame] Added error state indicator flag
to QCanBusFrame and set it appropriate receiving CAN FD
frames with the SocketCAN plugin. Setting this flag for
testing purposes is also possible.
Change-Id: I406b693fc7b7cde8a0d6b2c34c1f313800f11203
Reviewed-by: Rolf Eike Beer <eb@emlix.com>
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/plugins/canbus/socketcan')
-rw-r--r-- | src/plugins/canbus/socketcan/socketcanbackend.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/plugins/canbus/socketcan/socketcanbackend.cpp b/src/plugins/canbus/socketcan/socketcanbackend.cpp index 53836b0..a41c8d1 100644 --- a/src/plugins/canbus/socketcan/socketcanbackend.cpp +++ b/src/plugins/canbus/socketcan/socketcanbackend.cpp @@ -450,6 +450,7 @@ bool SocketCanBackend::writeFrame(const QCanBusFrame &newData) frame.len = newData.payload().size(); frame.can_id = canId; frame.flags = newData.hasBitrateSwitch() ? CANFD_BRS : 0; + frame.flags |= newData.hasErrorStateIndicator() ? CANFD_ESI : 0; ::memcpy(frame.data, newData.payload().constData(), frame.len); bytesWritten = ::write(canSocket, &frame, sizeof(frame)); @@ -679,6 +680,8 @@ void SocketCanBackend::readSocket() bufferedFrame.setFrameType(QCanBusFrame::ErrorFrame); if (frame.flags & CANFD_BRS) bufferedFrame.setBitrateSwitch(true); + if (frame.flags & CANFD_ESI) + bufferedFrame.setErrorStateIndicator(true); bufferedFrame.setFrameId(frame.can_id & CAN_EFF_MASK); |