76 lines
1.7 KiB
C++
76 lines
1.7 KiB
C++
#ifndef ISOTP_DECODER_H
|
|
#define ISOTP_DECODER_H
|
|
|
|
#include <QObject>
|
|
#include <QDebug>
|
|
#include "can_structs.h"
|
|
|
|
enum OBDII_FUNCTS
|
|
{
|
|
UDS_OBDII_SHOW_CURRENT = 1,
|
|
UDS_OBDII_SHOW_FREEZE = 2,
|
|
UDS_OBDII_SHOW_STORED_DTC = 3,
|
|
UDS_OBDII_CLEAR_DTC = 4,
|
|
UDS_OBDII_TEST_O2 = 5,
|
|
UDS_OBDII_TEST_RESULTS = 6,
|
|
UDS_OBDII_SHOW_PENDING_DTC = 7,
|
|
UDS_OBDII_CONTROL_DEVICES = 8,
|
|
UDS_OBDII_VEH_INFO = 9,
|
|
UDS_OBDII_PERM_DTC = 0xA
|
|
};
|
|
|
|
enum UDS_FUNCTS
|
|
{
|
|
UDS_DIAG_CONTROL=0x10,
|
|
UDS_ECU_RESET=0x11,
|
|
UDS_CLEAR_DIAG=0x14,
|
|
UDS_READ_DTC=0x19,
|
|
UDS_READ_BY_ID=0x22,
|
|
UDS_READ_BY_ADDR=0x23,
|
|
UDS_READ_SCALING_ID=0x24,
|
|
UDS_SECURITY_ACCESS=0x27,
|
|
UDS_COMM_CTRL=0x28,
|
|
UDS_READ_DATA_ID_PERIODIC=0x2A,
|
|
UDS_DYNAMIC_DATA_DEFINE=0x2C,
|
|
UDS_WRITE_BY_ID=0x2E,
|
|
UDS_IO_CTRL=0x2F,
|
|
UDS_ROUTINE_CTRL=0x31,
|
|
UDS_REQUEST_DOWNLOAD=0x34,
|
|
UDS_REQUEST_UPLOAD=0x35,
|
|
UDS_TRANSFER_DATA=0x36,
|
|
UDS_REQ_TRANS_EXIT=0x37,
|
|
UDS_REQ_FILE_TRANS=0x38,
|
|
UDS_WRITE_BY_ADDR=0x3D,
|
|
UDS_TESTER_PRESENT=0x3E,
|
|
UDS_ACCESS_TIMING=0x83,
|
|
UDS_SECURED_DATA_TRANS=0x84,
|
|
UDS_CTRL_DTC_SETTINGS=0x85,
|
|
UDS_RESPONSE_ON_EVENT=0x86,
|
|
UDS_RESPONSE_LINK_CTRL=0x87
|
|
};
|
|
|
|
class ISOTP_DECODER : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit ISOTP_DECODER(const QVector<CANFrame> *frames, QObject *parent = 0);
|
|
void setExtendedAddressing(bool mode);
|
|
|
|
public slots:
|
|
void updatedFrames(int);
|
|
|
|
signals:
|
|
void newISOMessage(ISOTP_MESSAGE &msg);
|
|
|
|
private:
|
|
QList<ISOTP_MESSAGE> messageBuffer;
|
|
const QVector<CANFrame> *modelFrames;
|
|
bool useExtendedAddressing;
|
|
|
|
void processFrame(const CANFrame &frame);
|
|
void checkNeedFlush(uint64_t ID);
|
|
};
|
|
|
|
#endif // ISOTP_DECODER_H
|