Changed the way the filter system works in the CAN connection objects - now used only for sending frames immediately to relevant objects. Tested to work in firmware updater. Currently broken elsewhere. Also switched main frame update interval from 4 times per second to 8 to make things smoother.
This commit is contained in:
@@ -155,9 +155,6 @@ void SocketCan::framesWritten(qint64 count)
|
||||
|
||||
void SocketCan::framesReceived()
|
||||
{
|
||||
/* test */
|
||||
bool sndNotif = false;
|
||||
|
||||
uint64_t timeBasis = CANConManager::getInstance()->getTimeBasis();
|
||||
|
||||
/* sanity checks */
|
||||
@@ -179,8 +176,7 @@ void SocketCan::framesReceived()
|
||||
|
||||
/* check frame */
|
||||
if( !recFrame.payload().isEmpty() &&
|
||||
recFrame.payload().length()<=8 &&
|
||||
!discard(0, recFrame.frameId(), sndNotif) )
|
||||
recFrame.payload().length()<=8 )
|
||||
{
|
||||
CANFrame* frame_p = getQueue().get();
|
||||
if(frame_p) {
|
||||
@@ -192,6 +188,8 @@ void SocketCan::framesReceived()
|
||||
frame_p->isReceived = true;
|
||||
frame_p->timestamp = (recFrame.timeStamp().seconds()*1000000 + recFrame.timeStamp().microSeconds()) - timeBasis;
|
||||
|
||||
checkTargettedFrame(*frame_p);
|
||||
|
||||
/* enqueue frame */
|
||||
getQueue().queue();
|
||||
}
|
||||
@@ -201,10 +199,6 @@ void SocketCan::framesReceived()
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
if(sndNotif) {
|
||||
emit notify();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user