Now the root nodes are the sending ID we used, the next level shows the ID(s) that replied. Then each reply ID has under it all the services attempted and results.
57 lines
1.3 KiB
C++
57 lines
1.3 KiB
C++
#ifndef UDSSCANWINDOW_H
|
|
#define UDSSCANWINDOW_H
|
|
|
|
#include "can_structs.h"
|
|
#include "connections/canconnection.h"
|
|
#include "bus_protocols/uds_handler.h"
|
|
|
|
#include <QDialog>
|
|
#include <QFile>
|
|
#include <QTreeWidget>
|
|
|
|
namespace Ui {
|
|
class UDSScanWindow;
|
|
}
|
|
|
|
class UDSScanWindow : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit UDSScanWindow(const QVector<CANFrame> *frames, QWidget *parent = 0);
|
|
~UDSScanWindow();
|
|
|
|
private slots:
|
|
void updatedFrames(int numFrames);
|
|
void gotUDSReply(UDS_MESSAGE msg);
|
|
void scanUDS();
|
|
void saveResults();
|
|
void timeOut();
|
|
void adaptiveToggled();
|
|
void wildcardToggled();
|
|
void readByToggled();
|
|
void numBytesChanged();
|
|
void checkIDRange();
|
|
void checkServiceRange();
|
|
void checkSubFuncRange();
|
|
|
|
private:
|
|
Ui::UDSScanWindow *ui;
|
|
const QVector<CANFrame> *modelFrames;
|
|
UDS_HANDLER *udsHandler;
|
|
QTimer *waitTimer;
|
|
QList<UDS_MESSAGE> sendingFrames;
|
|
QTreeWidgetItem *nodeID;
|
|
QTreeWidgetItem *nodeService;
|
|
QTreeWidgetItem *nodeSubFunc;
|
|
int currIdx = 0;
|
|
bool currentlyRunning;
|
|
|
|
void sendNextMsg();
|
|
void sendOnBuses(UDS_MESSAGE frame, int buses);
|
|
void setupNodes(uint32_t replyID);
|
|
void dumpNode(QTreeWidgetItem* item, QFile *file, int indent);
|
|
bool eventFilter(QObject *obj, QEvent *event);
|
|
};
|
|
#endif // UDSSCANWINDOW_H
|