Make SavvyCAN aware of remote frames.

This commit is contained in:
Fabián Inostroza
2018-04-29 18:52:31 -03:00
parent 9f9ef3649b
commit b8896d76b6
10 changed files with 285 additions and 105 deletions
+6
View File
@@ -236,6 +236,11 @@ bool GVRetSerial::piSendFrame(const CANFrame& frame)
if (!serial->isOpen()) return false;
//if (!isConnected) return false;
// Doesn't make sense to send an error frame
// to an adapter
if (frame.ID & 0x20000000) {
return true;
}
ID = frame.ID;
if (frame.extended) ID |= 1 << 31;
@@ -639,6 +644,7 @@ void GVRetSerial::procRXChar(unsigned char c)
//qDebug() << "GVRET got frame on bus " << frame_p->bus;
/* copy frame */
*frame_p = buildFrame;
frame_p->remote = false;
checkTargettedFrame(buildFrame);
/* enqueue frame */
getQueue().queue();
+11 -2
View File
@@ -117,9 +117,13 @@ bool SerialBusConnection::piSendFrame(const CANFrame& pFrame)
QCanBusFrame frame;
frame.setFrameId(pFrame.ID);
frame.setExtendedFrameFormat(pFrame.extended);
if (pFrame.remote) {
frame.setFrameType(QCanBusFrame::FrameType::RemoteRequestFrame);
} else {
frame.setFrameType(QCanBusFrame::FrameType::DataFrame);
}
frame.setPayload(QByteArray(reinterpret_cast<const char *>(pFrame.data),
static_cast<int>(pFrame.len)));
return mDev_p->writeFrame(frame);
}
@@ -187,7 +191,12 @@ void SerialBusConnection::framesReceived()
if(frame_p) {
frame_p->len = static_cast<uint32_t>(recFrame.payload().length());
frame_p->bus = 0;
memcpy(frame_p->data, recFrame.payload().data(), frame_p->len);
if (recFrame.frameType() == QCanBusFrame::FrameType::RemoteRequestFrame) {
frame_p->remote = true;
} else {
frame_p->remote = false;
memcpy(frame_p->data, recFrame.payload().data(), frame_p->len);
}
frame_p->extended = recFrame.hasExtendedFrameFormat();
frame_p->ID = recFrame.frameId();
frame_p->isReceived = true;