#ifndef FUZZINGWINDOW_H #define FUZZINGWINDOW_H #include #include #include #include "can_structs.h" namespace Ui { class FuzzingWindow; } namespace BitSequenceType { enum { Sequential, Sweeping, Random }; } class FuzzingWindow : public QDialog { Q_OBJECT public: explicit FuzzingWindow(const QVector *frames, QWidget *parent = 0); ~FuzzingWindow(); signals: void sendCANFrame(const CANFrame *); void sendFrameBatch(const QList *); private slots: void changePlaybackSpeed(int newSpeed); void timerTriggered(); void clearAllFilters(); void setAllFilters(); void toggleFuzzing(); void idListChanged(QListWidgetItem *item); void bitfieldClicked(int); void changedNumDataBytes(int newVal); void updatedFrames(int numFrames); void markAllHigh(); void markAllLow(); void markAllAuto(); private: Ui::FuzzingWindow *ui; const QVector *modelFrames; QTimer *fuzzTimer; QList foundIDs; QList selectedIDs; QList sendingBuffer; int startID, endID, currentID, currentIdx; bool seqIDScan, rangeIDSelect; int bitSequenceType; bool currentlyFuzzing; uint8_t currentBytes[64]; uint8_t bitGrid[512]; uint8_t numBits; uint64_t bitAccum; int numSentFrames; void refreshIDList(); void calcNextID(); void calcNextBitPattern(); void redrawGrid(); bool eventFilter(QObject *obj, QEvent *event); void changedDataByteText(int which, QString valu); }; #endif // FUZZINGWINDOW_H