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:
Collin Kidder
2016-12-29 19:13:51 -05:00
parent 96523cc082
commit beea680106
11 changed files with 172 additions and 87 deletions
+3 -9
View File
@@ -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();
}
}