#ifndef HONALOWLEVELAPI_H #define HONALOWLEVELAPI_H #include #include "include/LowLevel/Setting/Setting.h" #include "include/LowLevel/HonaPacket.h" #include "LowLevel/Setting/Setting.h" #include "HonaPacket.h" #include "QWaitCondition" #include "QMutex" #include "include/LowLevel/Exception/HonaAlreadyStartedException.h" class HonaLowLevelAPI : public QObject { Q_OBJECT private: bool _hsruIsStarted; bool _hiruIsStarted; HonaSetting _honaSetting; QWaitCondition HsruReadDone, HsruUpdateAck, HsruStopEvent; QMutex _mutex; int _threadSforValue = 0; bool _isReaderThreadFree = false; bool _isUpdateThreadFree = false; quint32 honaRegisterBuffer[8]; public: explicit HonaLowLevelAPI(QObject* parent = nullptr); bool isHsruStarted(); bool isHiruStarted(); void deviceReset(); void setConfig(HonaSetting* honaSetting); HonaSetting getConfig(); QString getSwVersion(); QString getDeviceId(); void hsruStart(); void hiruStart(); void init(); bool getHsruIsStarted() const; void setHsruIsStarted(bool hsruIsStarted); bool getHiruIsStarted() const; void setHiruIsStarted(bool hiruIsStarted); private: void writeSettingToRegisters(honaSettings& settings); void setConfig(); void hsruMainThread(); void hsruReadThread(); void hsruUpdateThread(); int hiruGetDOA(); signals: void signalToTop(QList honaPacketList, int i, int j); //uncrustify off public slots: //uncrustify on }; #endif //HONALOWLEVELAPI_H