Lots of large changes to scripting support, changes to the way
filtering works with ISOTP/UDS messages, updated version number.
This commit is contained in:
@@ -130,7 +130,19 @@ void ISOTP_HANDLER::rapidFrames(const CANConnection* conn, const QVector<CANFram
|
||||
{
|
||||
//only process frames that we've marked are ISOTP frames
|
||||
//unless processAll is true
|
||||
if (isoIDs[thisFrame.ID] || processAll) processFrame(thisFrame);
|
||||
if (processAll) processFrame(thisFrame);
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < filters.count(); i++)
|
||||
{
|
||||
if ((thisFrame.bus == filters[i].bus) && ((thisFrame.ID & filters[i].mask) == filters[i].ID))
|
||||
{
|
||||
processFrame(thisFrame);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -327,18 +339,27 @@ void ISOTP_HANDLER::setProcessAll(bool state)
|
||||
processAll = state;
|
||||
}
|
||||
|
||||
void ISOTP_HANDLER::addID(uint32_t id)
|
||||
void ISOTP_HANDLER::addFilter(int pBusId, uint32_t ID, uint32_t mask)
|
||||
{
|
||||
isoIDs[id] = true;
|
||||
CANFilter filt;
|
||||
filt.ID = ID;
|
||||
filt.bus = pBusId;
|
||||
filt.mask = mask;
|
||||
|
||||
filters.append(filt);
|
||||
}
|
||||
|
||||
void ISOTP_HANDLER::removeID(uint32_t id)
|
||||
void ISOTP_HANDLER::removeFilter(int pBusId, uint32_t ID, uint32_t mask)
|
||||
{
|
||||
isoIDs.remove(id);
|
||||
for (int i = 0; i < filters.count(); i++)
|
||||
{
|
||||
if (filters[i].bus == pBusId && filters[i].ID == ID && filters[i].mask == mask) filters.removeAt(i);
|
||||
}
|
||||
}
|
||||
|
||||
void ISOTP_HANDLER::clearAllIDs()
|
||||
void ISOTP_HANDLER::clearAllFilters()
|
||||
{
|
||||
isoIDs.clear();
|
||||
filters.clear();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "mainwindow.h"
|
||||
#include "canframemodel.h"
|
||||
#include "isotp_message.h"
|
||||
#include "canfilter.h"
|
||||
|
||||
class ISOTP_HANDLER : public QObject
|
||||
{
|
||||
@@ -22,9 +23,9 @@ public:
|
||||
void sendISOTPFrame(int bus, int ID, QVector<unsigned char> data);
|
||||
void setProcessAll(bool state);
|
||||
void setFlowCtrl(bool state);
|
||||
void addID(uint32_t id);
|
||||
void removeID(uint32_t id);
|
||||
void clearAllIDs();
|
||||
void addFilter(int pBusId, uint32_t ID, uint32_t mask);
|
||||
void removeFilter(int pBusId, uint32_t ID, uint32_t mask);
|
||||
void clearAllFilters();
|
||||
|
||||
public slots:
|
||||
void updatedFrames(int);
|
||||
@@ -37,7 +38,7 @@ signals:
|
||||
private:
|
||||
QList<ISOTP_MESSAGE> messageBuffer;
|
||||
QList<CANFrame> sendingFrames;
|
||||
QMap<uint32_t, bool> isoIDs;
|
||||
QList<CANFilter> filters;
|
||||
const QVector<CANFrame> *modelFrames;
|
||||
bool useExtendedAddressing;
|
||||
bool isReceiving;
|
||||
|
||||
@@ -270,19 +270,18 @@ void UDS_HANDLER::setProcessAllIDs(bool state)
|
||||
isoHandler->setProcessAll(state);
|
||||
}
|
||||
|
||||
void UDS_HANDLER::addID(uint32_t id)
|
||||
void UDS_HANDLER::addFilter(int pBusId, uint32_t ID, uint32_t mask)
|
||||
{
|
||||
isoHandler->addID(id);
|
||||
isoHandler->addFilter(pBusId, ID, mask);
|
||||
}
|
||||
|
||||
void UDS_HANDLER::removeID(uint32_t id)
|
||||
void UDS_HANDLER::removeFilter(int pBusId, uint32_t ID, uint32_t mask)
|
||||
{
|
||||
isoHandler->removeID(id);
|
||||
isoHandler->removeFilter(pBusId, ID, mask);
|
||||
}
|
||||
|
||||
void UDS_HANDLER::clearAllIDs()
|
||||
void UDS_HANDLER::clearAllFilters()
|
||||
{
|
||||
isoHandler->clearAllIDs();
|
||||
isoHandler->clearAllFilters();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -94,9 +94,10 @@ public:
|
||||
void sendUDSFrame(const UDS_MESSAGE &msg);
|
||||
void setProcessAllIDs(bool state);
|
||||
void setFlowCtrl(bool state);
|
||||
void addID(uint32_t id);
|
||||
void removeID(uint32_t id);
|
||||
void clearAllIDs();
|
||||
void addFilter(int pBusId, uint32_t ID, uint32_t mask);
|
||||
void removeFilter(int pBusId, uint32_t ID, uint32_t mask);
|
||||
void clearAllFilters();
|
||||
|
||||
QString getServiceShortDesc(int service);
|
||||
QString getServiceLongDesc(int service);
|
||||
QString getNegativeResponseShort(int respCode);
|
||||
|
||||
Reference in New Issue
Block a user