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:
Collin Kidder
2017-08-22 21:42:30 -04:00
parent 6ef5757a4d
commit 162d79fbe9
12 changed files with 226 additions and 34 deletions
+28 -7
View File
@@ -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();
}
+5 -4
View File
@@ -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;
+6 -7
View File
@@ -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();
}
+4 -3
View File
@@ -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);