From c835f36fe9de20ac733e71c6f9baf08b0d23a7cb Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Sat, 2 Sep 2017 09:47:56 +0200 Subject: [PATCH 1/4] SocketCan: Fix warnings about old style casts and sign changes --- connections/socketcan.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/connections/socketcan.cpp b/connections/socketcan.cpp index 63e7b4a..9be6bec 100644 --- a/connections/socketcan.cpp +++ b/connections/socketcan.cpp @@ -116,7 +116,8 @@ bool SocketCan::piSendFrame(const CANFrame& pFrame) QCanBusFrame frame; frame.setFrameId(pFrame.ID); frame.setExtendedFrameFormat(false); - frame.setPayload(QByteArray((const char*)pFrame.data, pFrame.len)); + frame.setPayload(QByteArray(reinterpret_cast(pFrame.data), + static_cast(pFrame.len))); return mDev_p->writeFrame(frame); } @@ -184,7 +185,7 @@ void SocketCan::framesReceived() { CANFrame* frame_p = getQueue().get(); if(frame_p) { - frame_p->len = recFrame.payload().length(); + frame_p->len = static_cast(recFrame.payload().length()); frame_p->bus = 0; memcpy(frame_p->data, recFrame.payload().data(), frame_p->len); frame_p->extended = false; From 74c7b0afc1f9aca6e76c0e25e53174b59054d4bb Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Sat, 2 Sep 2017 09:50:09 +0200 Subject: [PATCH 2/4] SocketCan: Fix compiler warning about missing break --- connections/socketcan.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/connections/socketcan.cpp b/connections/socketcan.cpp index 9be6bec..941d8cf 100644 --- a/connections/socketcan.cpp +++ b/connections/socketcan.cpp @@ -147,6 +147,7 @@ void SocketCan::errorReceived(QCanBusDevice::CanBusError error) const case QCanBusDevice::ConfigurationError: case QCanBusDevice::UnknownError: qWarning() << mDev_p->errorString(); + break; default: break; } From 3f8e2bb5c3caf954fe436dc84464d4c0fc530081 Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Sat, 2 Sep 2017 09:47:26 +0200 Subject: [PATCH 3/4] SocketCan: Allow receiving CAN frames with empty data field A CAN frame with data size zero is absolutely legal. --- connections/socketcan.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/connections/socketcan.cpp b/connections/socketcan.cpp index 941d8cf..6eff7cd 100644 --- a/connections/socketcan.cpp +++ b/connections/socketcan.cpp @@ -181,9 +181,7 @@ void SocketCan::framesReceived() continue; /* check frame */ - if( !recFrame.payload().isEmpty() && - recFrame.payload().length()<=8 ) - { + if (recFrame.payload().length() <= 8) { CANFrame* frame_p = getQueue().get(); if(frame_p) { frame_p->len = static_cast(recFrame.payload().length()); From ee4a218a6762dbeacf88ff9768615c76066a1a8d Mon Sep 17 00:00:00 2001 From: Andre Hartmann Date: Sat, 2 Sep 2017 10:08:48 +0200 Subject: [PATCH 4/4] SocketCan: Correctly support CAN frames with extended identifier --- connections/socketcan.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/connections/socketcan.cpp b/connections/socketcan.cpp index 6eff7cd..7eefe2f 100644 --- a/connections/socketcan.cpp +++ b/connections/socketcan.cpp @@ -115,7 +115,7 @@ bool SocketCan::piSendFrame(const CANFrame& pFrame) /* fill frame */ QCanBusFrame frame; frame.setFrameId(pFrame.ID); - frame.setExtendedFrameFormat(false); + frame.setExtendedFrameFormat(pFrame.extended); frame.setPayload(QByteArray(reinterpret_cast(pFrame.data), static_cast(pFrame.len))); @@ -187,7 +187,7 @@ void SocketCan::framesReceived() frame_p->len = static_cast(recFrame.payload().length()); frame_p->bus = 0; memcpy(frame_p->data, recFrame.payload().data(), frame_p->len); - frame_p->extended = false; + frame_p->extended = recFrame.hasExtendedFrameFormat(); frame_p->ID = recFrame.frameId(); frame_p->isReceived = true; if (useSystemTime) {