Merge pull request #134 from FabianInostroza/fix_remote_frames
Make SavvyCAN aware of remote frames.
This commit is contained in:
@@ -230,6 +230,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;
|
||||
|
||||
@@ -641,6 +646,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();
|
||||
|
||||
@@ -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,6 +191,7 @@ void SerialBusConnection::framesReceived()
|
||||
if(frame_p) {
|
||||
frame_p->len = static_cast<uint32_t>(recFrame.payload().length());
|
||||
frame_p->bus = 0;
|
||||
|
||||
if (recFrame.frameType() == QCanBusFrame::ErrorFrame) {
|
||||
// Constants defined in include/uapi/linux/can/error.h
|
||||
switch (recFrame.error()) {
|
||||
@@ -226,6 +231,7 @@ void SerialBusConnection::framesReceived()
|
||||
frame_p->ID = recFrame.frameId();
|
||||
memcpy(frame_p->data, recFrame.payload().data(), frame_p->len);
|
||||
}
|
||||
|
||||
frame_p->isReceived = true;
|
||||
if (useSystemTime) {
|
||||
frame_p->timestamp = QDateTime::currentMSecsSinceEpoch() * 1000ul;
|
||||
|
||||
Reference in New Issue
Block a user