Compare commits
	
		
			13 Commits 
		
	
	
	| Author | SHA1 | Date | 
|---|---|---|
| 
							
							
								 | 
						64f6e7f618 | 4 years ago | 
| 
							
							
								 | 
						e806f5dca5 | 4 years ago | 
| 
							
							
								 | 
						237bdbe26e | 4 years ago | 
| 
							
							
								 | 
						12654baa73 | 4 years ago | 
| 
							
							
								 | 
						e4db6f0ae0 | 4 years ago | 
| 
							
							
								 | 
						07a5f24ece | 4 years ago | 
| 
							
							
								
								 | 
						8cd10da063 | 4 years ago | 
| 
							
							
								
								 | 
						a1116abb74 | 4 years ago | 
| 
							
							
								 | 
						05063642b4 | 4 years ago | 
| 
							
							
								 | 
						7a5f336957 | 4 years ago | 
| 
							
							
								 | 
						310e843d28 | 4 years ago | 
| 
							
							
								 | 
						72a5e05fce | 4 years ago | 
| 
							
							
								 | 
						f8960c0ea2 | 4 years ago | 
				 28 changed files with 2053 additions and 284 deletions
			
			
		@ -0,0 +1,45 @@ | 
				
			|||
#ifndef HONAAPI_H | 
				
			|||
#define HONAAPI_H | 
				
			|||
 | 
				
			|||
#include <QObject> | 
				
			|||
 | 
				
			|||
#include "LowLevel/Setting/Setting.h" | 
				
			|||
#include "include/LowLevel/Exception/HonaAlreadyStartedException.h" | 
				
			|||
#include "include/LowLevel/Exception/HonaException.h" | 
				
			|||
#include "include/LowLevel/Utils/Utils.h" | 
				
			|||
#include "include/LowLevel/HonaLowLevelAPI.h" | 
				
			|||
 | 
				
			|||
class HonaAPI : public QObject | 
				
			|||
{ | 
				
			|||
	Q_OBJECT | 
				
			|||
 | 
				
			|||
private: | 
				
			|||
	HonaLowLevelAPI _honaLowLevelAPI; | 
				
			|||
 | 
				
			|||
public: | 
				
			|||
	HonaAPI() | 
				
			|||
	{ | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	~HonaAPI() | 
				
			|||
	{ | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	ApiResult isHsruStarted(); | 
				
			|||
	ApiResult isHiruStarted(); | 
				
			|||
	ApiResult deviceReset(); | 
				
			|||
 | 
				
			|||
	ApiResult setConfig(HonaSettings& settings); | 
				
			|||
	ApiResult getConfig(HonaSettings& settings); | 
				
			|||
	ApiResult getSwVersion(QString& swVerion); | 
				
			|||
	ApiResult getDeviceId(QString& deviceId); | 
				
			|||
	ApiResult hsruStart(); | 
				
			|||
	ApiResult hiruStart(); | 
				
			|||
	ApiResult hsruStop(); | 
				
			|||
	ApiResult init(); | 
				
			|||
 | 
				
			|||
signals: | 
				
			|||
	void honaDataResult(QList<HonaPacket> honaPacketList, quint32 hsruLoss, quint32 Doa); | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
#endif //HONAAPI_H
 | 
				
			|||
@ -1,17 +1,27 @@ | 
				
			|||
#ifndef HONAALREADYSTARTEDEXCEPTION_H | 
				
			|||
#define HONAALREADYSTARTEDEXCEPTION_H | 
				
			|||
 | 
				
			|||
#include <QObject> | 
				
			|||
#include <QDebug> | 
				
			|||
#include <QString> | 
				
			|||
 | 
				
			|||
class HonaAlreadyStartedException : public QObject | 
				
			|||
class HonaAlreadyStartedException : public std::exception | 
				
			|||
{ | 
				
			|||
	Q_OBJECT | 
				
			|||
private: | 
				
			|||
	QString _str; | 
				
			|||
 | 
				
			|||
public: | 
				
			|||
	explicit HonaAlreadyStartedException(QObject *parent = nullptr); | 
				
			|||
	HonaAlreadyStartedException(QString str) | 
				
			|||
	{ | 
				
			|||
		_str = str; | 
				
			|||
		qDebug() << "HonaAlreadyStartedException " << str; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
signals: | 
				
			|||
	virtual const char* what() const throw() | 
				
			|||
	{ | 
				
			|||
		qDebug() << "HonaAlreadyStartedException return   " << _str; | 
				
			|||
 | 
				
			|||
public slots: | 
				
			|||
		return _str.toStdString().c_str(); | 
				
			|||
	} | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
#endif // HONAALREADYSTARTEDEXCEPTION_H
 | 
				
			|||
#endif //HONAALREADYSTARTEDEXCEPTION_H
 | 
				
			|||
 | 
				
			|||
@ -1,17 +0,0 @@ | 
				
			|||
#ifndef HONABUSYEXCEPTION_H | 
				
			|||
#define HONABUSYEXCEPTION_H | 
				
			|||
 | 
				
			|||
#include <QObject> | 
				
			|||
 | 
				
			|||
class HonaBusyException : public QObject | 
				
			|||
{ | 
				
			|||
	Q_OBJECT | 
				
			|||
public: | 
				
			|||
	explicit HonaBusyException(QObject *parent = nullptr); | 
				
			|||
 | 
				
			|||
signals: | 
				
			|||
 | 
				
			|||
public slots: | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
#endif // HONABUSYEXCEPTION_H
 | 
				
			|||
@ -1,17 +1,24 @@ | 
				
			|||
#ifndef HONAEXCEPTION_H | 
				
			|||
#define HONAEXCEPTION_H | 
				
			|||
 | 
				
			|||
#include <QObject> | 
				
			|||
#include <QDebug> | 
				
			|||
#include <QString> | 
				
			|||
 | 
				
			|||
class HonaException : public QObject | 
				
			|||
class HonaException : public std::exception | 
				
			|||
{ | 
				
			|||
	Q_OBJECT | 
				
			|||
public: | 
				
			|||
	explicit HonaException(QObject *parent = nullptr); | 
				
			|||
private: | 
				
			|||
	QString _str; | 
				
			|||
 | 
				
			|||
signals: | 
				
			|||
public: | 
				
			|||
	HonaException(QString str) | 
				
			|||
	{ | 
				
			|||
		_str = str; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
public slots: | 
				
			|||
	virtual const char* what() const throw() | 
				
			|||
	{ | 
				
			|||
		return _str.toStdString().c_str(); | 
				
			|||
	} | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
#endif // HONAEXCEPTION_H
 | 
				
			|||
#endif //HONAEXCEPTION_H
 | 
				
			|||
 | 
				
			|||
@ -1,17 +1,136 @@ | 
				
			|||
#ifndef HONALOWLEVELAPI_H | 
				
			|||
#ifndef HONALOWLEVELAPI_H | 
				
			|||
#define HONALOWLEVELAPI_H | 
				
			|||
 | 
				
			|||
#include <QObject> | 
				
			|||
#include "LowLevel/Setting/Setting.h" | 
				
			|||
#include "LowLevel/HonaPacket.h" | 
				
			|||
#include "LowLevel/Setting/Setting.h" | 
				
			|||
#include "HonaPacket.h" | 
				
			|||
#include "QWaitCondition" | 
				
			|||
#include "QMutex" | 
				
			|||
#include "LowLevel/Exception/HonaAlreadyStartedException.h" | 
				
			|||
#include "LowLevel/Exception/HonaException.h" | 
				
			|||
#include "Wrapper/PlxWrapper.h" | 
				
			|||
#include "LowLevel/Utils/Utils.h" | 
				
			|||
 | 
				
			|||
class HonaLowLevelAPI : public QObject | 
				
			|||
{ | 
				
			|||
	Q_OBJECT | 
				
			|||
 | 
				
			|||
private: | 
				
			|||
	bool _hsruIsStarted = false; | 
				
			|||
	bool _hiruIsStarted = false; | 
				
			|||
	quint32 _hsruLoss; | 
				
			|||
	HonaSettings _honaSetting; | 
				
			|||
	QWaitCondition _hsruReadDone, _hsruUpdateAck, _hsruStopEvent, _hiruReadDone0, _hiruCountDone, | 
				
			|||
				   _hiruUpdateAck1; | 
				
			|||
 | 
				
			|||
	QList<HonaPacket> honaPacketList; | 
				
			|||
	QMutex _mutex; | 
				
			|||
	int _threadSforValue = 0; | 
				
			|||
	bool _isHsruMainThreadFree = false; | 
				
			|||
	bool _isHsruReaderThreadFree = false; | 
				
			|||
	bool _isHsruUpdateThreadFree = false; | 
				
			|||
 | 
				
			|||
	bool _isHiruReaderThreadFree = false; | 
				
			|||
	bool _isHiruUpdateThreadFree = false; | 
				
			|||
	QVector<quint32> honaRegisterBuffer; | 
				
			|||
	PlxWrapper plxWrapper; | 
				
			|||
 | 
				
			|||
	static quint32 packetLenInt4; | 
				
			|||
	static quint32 packetLenRes4; | 
				
			|||
	static quint32 packetLenSinglePulse; | 
				
			|||
 | 
				
			|||
	static quint32 packetLenInt123C; | 
				
			|||
	static quint32 packetLenRes123C; | 
				
			|||
	static quint32 packetLenIntS; | 
				
			|||
	static quint32 packetLenResS; | 
				
			|||
 | 
				
			|||
	static quint32 nextInt4; | 
				
			|||
	static quint32 nextRes4; | 
				
			|||
	static quint32 nextSinglePulse; | 
				
			|||
 | 
				
			|||
	static quint32 nextInt123C; | 
				
			|||
	static quint32 nextRes123C; | 
				
			|||
	static quint32 nextIntS; | 
				
			|||
	static quint32 nextResS; | 
				
			|||
 | 
				
			|||
	quint32 lastPNInt4 = 0; | 
				
			|||
	quint32 lastPNRes4 = 0; | 
				
			|||
	quint32 lastPNSinglePulse = 0; | 
				
			|||
 | 
				
			|||
	quint32 lastPNInt123C = 0; | 
				
			|||
	quint32 lastPNRes123C = 0; | 
				
			|||
	quint32 lastPNIntS = 0; | 
				
			|||
	quint32 lastPNResS = 0; | 
				
			|||
 | 
				
			|||
	HonaPacket tempHonaPacketInt4; | 
				
			|||
	HonaPacket tempHonaPacketRes4; | 
				
			|||
	HonaPacket tempHonaPacketSinglePulse; | 
				
			|||
 | 
				
			|||
	HonaPacket tempHonaPacketInt123C; | 
				
			|||
	HonaPacket tempHonaPacketRes123C; | 
				
			|||
	HonaPacket tempHonaPacketIntS; | 
				
			|||
	HonaPacket tempHonaPacketResS; | 
				
			|||
 | 
				
			|||
public: | 
				
			|||
	qulonglong toaStartBoard = 0; | 
				
			|||
 | 
				
			|||
	HonaLowLevelAPI(QObject* parent = nullptr); | 
				
			|||
	~HonaLowLevelAPI() | 
				
			|||
	{ | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	bool isHsruStarted(); | 
				
			|||
	bool isHiruStarted(); | 
				
			|||
	void deviceReset(); | 
				
			|||
 | 
				
			|||
	void setConfig(HonaSettings& settings); | 
				
			|||
	HonaSettings getConfig(); | 
				
			|||
	QString getSwVersion(); | 
				
			|||
	QString getDeviceId(); | 
				
			|||
	void hsruStart(); | 
				
			|||
	void hiruStart(); | 
				
			|||
	void hsruStop(); | 
				
			|||
	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(); | 
				
			|||
	void hiruMainThread(); | 
				
			|||
	void hiruReadThread(); | 
				
			|||
	void hiruUpdateThread(); | 
				
			|||
	quint32 hiruGetDOA(); | 
				
			|||
 | 
				
			|||
	quint32 hsruParserInt123C(const QVector<quint32>& honaData, QList<HonaPacket>& honaPacketList); | 
				
			|||
	quint32 hsruParserRes123C(const QVector<quint32>& honaData, QList<HonaPacket>& honaPacketList); | 
				
			|||
	quint32 hsruParserIntS(const QVector<quint32>& honaData, QList<HonaPacket>& honaPacketList); | 
				
			|||
	quint32 hsruParserResS(const QVector<quint32>& honaData, QList<HonaPacket>& honaPacketList); | 
				
			|||
	quint32 hsruParserInt4(const QVector<quint32>& honaData, QList<HonaPacket>& honaPacketList); | 
				
			|||
	quint32 hsruParserRes4(const QVector<quint32>& honaData, QList<HonaPacket>& honaPacketList); | 
				
			|||
	quint32 hsruParserSinglePulse(const QVector<quint32>& honaData, | 
				
			|||
								  QList<HonaPacket>& honaPacketList); | 
				
			|||
 | 
				
			|||
	QVector<quint32> hsruReadHonaBuffer(honaReceivers receiver); | 
				
			|||
 | 
				
			|||
	bool isValid(HonaPacket hp); | 
				
			|||
 | 
				
			|||
public: | 
				
			|||
	explicit HonaLowLevelAPI(QObject *parent = nullptr); | 
				
			|||
 | 
				
			|||
signals: | 
				
			|||
	void lowLevelHonaData(QList<HonaPacket> honaPacketList, quint32 hsruLoss, quint32 Doa); | 
				
			|||
 | 
				
			|||
public slots: | 
				
			|||
	//uncrustify off
 | 
				
			|||
public	slots: | 
				
			|||
	//uncrustify on
 | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
#endif // HONALOWLEVELAPI_H
 | 
				
			|||
#endif //HONALOWLEVELAPI_H
 | 
				
			|||
 | 
				
			|||
@ -1,41 +1,42 @@ | 
				
			|||
 | 
				
			|||
#ifndef SETTINGS_H | 
				
			|||
#define SETTINGS_H | 
				
			|||
 | 
				
			|||
#include <QtGlobal> | 
				
			|||
#include "include/LowLevel/Utils/Utils.h" | 
				
			|||
#include <QList> | 
				
			|||
 | 
				
			|||
#include "LowLevel/Utils/Utils.h" | 
				
			|||
 | 
				
			|||
/***********************************************************************************************/ | 
				
			|||
typedef struct _HIRUSETTINGS | 
				
			|||
struct hiruSettings_t | 
				
			|||
{ | 
				
			|||
    recorderStart recordStard; | 
				
			|||
    recorderMode recordMode; | 
				
			|||
    quint32 recordChannel; | 
				
			|||
    quint32 threshold = 0; | 
				
			|||
    quint32 timeout = 1000; | 
				
			|||
    quint32 count = 5; | 
				
			|||
	recorderStart recordStard; | 
				
			|||
	recorderMode recordMode; | 
				
			|||
	quint32 recordChannel; | 
				
			|||
	quint32 threshold = 0; | 
				
			|||
	quint32 timeout = 1000; | 
				
			|||
	quint32 count = 5; | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
}hiruSettings; | 
				
			|||
/***********************************************************************************************/ | 
				
			|||
typedef struct _HSRUSETTINGS | 
				
			|||
struct hsruSettings_t | 
				
			|||
{ | 
				
			|||
    bool isReal = true; | 
				
			|||
    quint32 honaInt123CTHR = 128; | 
				
			|||
    quint32 honaRes123CTHR = 128; | 
				
			|||
    quint32 honaIntSTHR = 20; | 
				
			|||
    quint32 honaResSTHR = 20; | 
				
			|||
    quint32 honaSPTHR = 20;     //mode4
 | 
				
			|||
    quint32 intM4_THR = 20;     //mode4
 | 
				
			|||
    quint32 resM4_THR = 20;     //mode4
 | 
				
			|||
	bool isReal = true; | 
				
			|||
	quint32 honaInt123CTHR = 128; | 
				
			|||
	quint32 honaRes123CTHR = 128; | 
				
			|||
	quint32 honaIntSTHR = 20; | 
				
			|||
	quint32 honaResSTHR = 20; | 
				
			|||
	quint32 honaSPTHR = 20;     //mode4
 | 
				
			|||
	quint32 intM4_THR = 20;     //mode4
 | 
				
			|||
	quint32 resM4_THR = 20;     //mode4
 | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
}hsruSettings; | 
				
			|||
/***********************************************************************************************/ | 
				
			|||
typedef struct _HONASETTINGS | 
				
			|||
struct HonaSettings | 
				
			|||
{ | 
				
			|||
    quint32 hsruSettings; | 
				
			|||
    quint32 hiruSettings; | 
				
			|||
	hiruSettings_t hiruSettings; | 
				
			|||
	hsruSettings_t hsruSettings; | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
}honaSettings; | 
				
			|||
/***********************************************************************************************/ | 
				
			|||
 | 
				
			|||
#endif // SETTING_H
 | 
				
			|||
#endif //SETTING_H
 | 
				
			|||
 | 
				
			|||
@ -1,69 +1,66 @@ | 
				
			|||
#ifndef UTILS_H | 
				
			|||
#define UTILS_H | 
				
			|||
 | 
				
			|||
#include <QtCore> | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
typedef  enum _APIRESULT | 
				
			|||
enum ApiResult : quint8 | 
				
			|||
{ | 
				
			|||
    success, | 
				
			|||
    alreadyStarted, | 
				
			|||
    busy, | 
				
			|||
    error | 
				
			|||
	success, | 
				
			|||
	alreadyStarted, | 
				
			|||
	busy, | 
				
			|||
	error | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
}apiResult; | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
typedef  enum _DRXDEVICEIFCHANNEL | 
				
			|||
enum drxDeviceIfChannel : quint8 | 
				
			|||
{ | 
				
			|||
    ifChannel11, | 
				
			|||
    ifChannel12 | 
				
			|||
	ifChannel11, | 
				
			|||
	ifChannel12 | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
}drxDeviceIfChannel; | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
typedef  enum _HONARECEIVERS | 
				
			|||
enum honaReceivers : quint8 | 
				
			|||
{ | 
				
			|||
    int123C, | 
				
			|||
    intS, | 
				
			|||
    resS, | 
				
			|||
    int4,           //Mode 4
 | 
				
			|||
    res4,           //Mode 4
 | 
				
			|||
    signalPulse     //Mode 4
 | 
				
			|||
	int123C, | 
				
			|||
	res123C, | 
				
			|||
	intS, | 
				
			|||
	resS, | 
				
			|||
	int4,           //Mode 4
 | 
				
			|||
	res4,           //Mode 4
 | 
				
			|||
	singlePulse     //Mode 4
 | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
}honaReceivers; | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
typedef  enum _RECORDERMODE | 
				
			|||
enum recorderMode : quint8 | 
				
			|||
{ | 
				
			|||
    signalChannel, | 
				
			|||
    dualChannel | 
				
			|||
	signalChannel, | 
				
			|||
	dualChannel | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
}recorderMode; | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
typedef  enum _RECORDSTART | 
				
			|||
enum  recorderStart : quint8 | 
				
			|||
{ | 
				
			|||
    selfTestCounter, | 
				
			|||
    freeRunRecording | 
				
			|||
	selfTestCounter = 1, | 
				
			|||
	freeRunRecording = 2 | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
}recorderStart; | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
typedef  enum _HONAPACKETTYPE | 
				
			|||
enum honaPacketType : quint8 | 
				
			|||
{ | 
				
			|||
    interrogationMode123C, | 
				
			|||
    interrogationModeS56, | 
				
			|||
    interrogationModeS112, | 
				
			|||
    interrogationMode4, | 
				
			|||
	interrogationMode123C, | 
				
			|||
	interrogationModeS56, | 
				
			|||
	interrogationModeS112, | 
				
			|||
	interrogationMode4, | 
				
			|||
 | 
				
			|||
    responseMode123C, | 
				
			|||
    responseModeS56, | 
				
			|||
    responseModeS112, | 
				
			|||
	responseMode123C, | 
				
			|||
	responseModeS56, | 
				
			|||
	responseModeS112, | 
				
			|||
 | 
				
			|||
    responseMode4, | 
				
			|||
    signalPulseMode4 | 
				
			|||
	responseMode4, | 
				
			|||
	singlePulseMode4 | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
}honaPacketType; | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
 | 
				
			|||
 | 
				
			|||
 | 
				
			|||
 | 
				
			|||
 | 
				
			|||
 | 
				
			|||
#endif // UTILS_H
 | 
				
			|||
#endif //UTILS_H
 | 
				
			|||
 | 
				
			|||
@ -0,0 +1,35 @@ | 
				
			|||
#ifndef PLXWRAPPER_H | 
				
			|||
#define PLXWRAPPER_H | 
				
			|||
 | 
				
			|||
#include <QtGlobal> | 
				
			|||
#include "PlxPci_9054_Func.h" | 
				
			|||
 | 
				
			|||
class PlxWrapper | 
				
			|||
{ | 
				
			|||
public: | 
				
			|||
	PlxWrapper(); | 
				
			|||
 | 
				
			|||
	bool deviceInit(quint32 devicekey); | 
				
			|||
	bool deviceOpen(void); | 
				
			|||
	bool deviceClose(void); | 
				
			|||
	bool deviceReset(void); | 
				
			|||
	bool deviceLoadE2pToFPGA(void); | 
				
			|||
 | 
				
			|||
	bool deviceReadEeprom(quint16 offset, quint32 length, QVector<quint32>& data); | 
				
			|||
	bool deviceWriteEeprom(quint16 offset, quint32 data); | 
				
			|||
 | 
				
			|||
	bool deviceReadRegister(quint32 address, QVector<quint32>& data, quint32 length); | 
				
			|||
	bool deviceReadRegister(quint32 address, quint32& data); | 
				
			|||
	bool deviceWriteRegister(quint32 address, QVector<quint32>& data); | 
				
			|||
	bool deviceWriteRegister(quint32 address, quint32 data); | 
				
			|||
 | 
				
			|||
	bool deviceReadMemory(quint32 localAddress, QVector<quint32>& data, quint32 length); | 
				
			|||
	bool deviceOpenPCIChannel(void); | 
				
			|||
	bool deviceClosePCIChannel(void); | 
				
			|||
	bool deviceEnableInterrupt(void); | 
				
			|||
	bool deviceDisableInterrupt(void); | 
				
			|||
	bool deviceWaitForInterrupt(quint32 timeout); | 
				
			|||
	bool deviceGetChipType(quint8 revision, quint16 chipType); | 
				
			|||
}; | 
				
			|||
 | 
				
			|||
#endif //PLXWRAPPER_H
 | 
				
			|||
@ -0,0 +1,186 @@ | 
				
			|||
#include "include/API/HonaAPI.h" | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
 | 
				
			|||
ApiResult HonaAPI::isHsruStarted() | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		if(_honaLowLevelAPI.isHsruStarted()) | 
				
			|||
			return ApiResult::success; | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::isHiruStarted() | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		if(_honaLowLevelAPI.isHiruStarted()) | 
				
			|||
			return ApiResult::success; | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::deviceReset() | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		_honaLowLevelAPI.deviceReset(); | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
	catch(HonaAlreadyStartedException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::setConfig(HonaSettings& settings) | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		_honaLowLevelAPI.setConfig(settings); | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
	catch(HonaAlreadyStartedException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::getConfig(HonaSettings& settings) | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		settings = _honaLowLevelAPI.getConfig(); | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::getSwVersion(QString& swVerion) | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		swVerion = _honaLowLevelAPI.getSwVersion(); | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::getDeviceId(QString& deviceId) | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		deviceId = _honaLowLevelAPI.getDeviceId(); | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::hsruStart() | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		_honaLowLevelAPI.hsruStart(); | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
	catch(HonaAlreadyStartedException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::hiruStart() | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		_honaLowLevelAPI.hiruStart(); | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
	catch(HonaAlreadyStartedException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::hsruStop() | 
				
			|||
{ | 
				
			|||
	try { | 
				
			|||
		_honaLowLevelAPI.hsruStop(); | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
	catch(HonaAlreadyStartedException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
ApiResult HonaAPI::init() | 
				
			|||
{ | 
				
			|||
	connect(&_honaLowLevelAPI, &HonaLowLevelAPI::lowLevelHonaData, this, &HonaAPI::honaDataResult); | 
				
			|||
 | 
				
			|||
	try { | 
				
			|||
		_honaLowLevelAPI.init(); | 
				
			|||
	} | 
				
			|||
	catch(HonaException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
	catch(HonaAlreadyStartedException ex) | 
				
			|||
	{ | 
				
			|||
		return ApiResult::error; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ApiResult::success; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
@ -1,6 +0,0 @@ | 
				
			|||
#include "../../../include/LowLevel/Exception/HonaAlreadyStartedException.h" | 
				
			|||
 | 
				
			|||
HonaAlreadyStartedException::HonaAlreadyStartedException(QObject *parent) : QObject(parent) | 
				
			|||
{ | 
				
			|||
 | 
				
			|||
} | 
				
			|||
@ -1,6 +0,0 @@ | 
				
			|||
#include "../../../include/LowLevel/Exception/HonaBusyException.h" | 
				
			|||
 | 
				
			|||
HonaBusyException::HonaBusyException(QObject *parent) : QObject(parent) | 
				
			|||
{ | 
				
			|||
 | 
				
			|||
} | 
				
			|||
@ -1,6 +0,0 @@ | 
				
			|||
#include "../../../include/LowLevel/Exception/HonaException.h" | 
				
			|||
 | 
				
			|||
HonaException::HonaException(QObject *parent) : QObject(parent) | 
				
			|||
{ | 
				
			|||
 | 
				
			|||
} | 
				
			|||
@ -1,6 +1,947 @@ | 
				
			|||
#include "../../include/LowLevel/HonaLowLevelAPI.h" | 
				
			|||
#include <QtConcurrent/QtConcurrent> | 
				
			|||
 | 
				
			|||
HonaLowLevelAPI::HonaLowLevelAPI(QObject *parent) : QObject(parent) | 
				
			|||
#include <include/LowLevel/Utils/Utils.h> | 
				
			|||
#include "include/LowLevel/HonaLowLevelAPI.h" | 
				
			|||
#include "include/Wrapper/PlxWrapper.h" | 
				
			|||
 | 
				
			|||
#include <QDebug> | 
				
			|||
 | 
				
			|||
quint32 HonaLowLevelAPI::packetLenInt4; | 
				
			|||
quint32 HonaLowLevelAPI::packetLenRes4; | 
				
			|||
quint32 HonaLowLevelAPI::packetLenSinglePulse; | 
				
			|||
 | 
				
			|||
quint32 HonaLowLevelAPI::packetLenInt123C; | 
				
			|||
quint32 HonaLowLevelAPI::packetLenRes123C; | 
				
			|||
quint32 HonaLowLevelAPI::packetLenIntS; | 
				
			|||
quint32 HonaLowLevelAPI::packetLenResS; | 
				
			|||
 | 
				
			|||
quint32 HonaLowLevelAPI::nextInt4; | 
				
			|||
quint32 HonaLowLevelAPI::nextRes4; | 
				
			|||
quint32 HonaLowLevelAPI::nextSinglePulse; | 
				
			|||
 | 
				
			|||
quint32 HonaLowLevelAPI::nextResS; | 
				
			|||
quint32 HonaLowLevelAPI::nextInt123C; | 
				
			|||
quint32 HonaLowLevelAPI::nextRes123C; | 
				
			|||
quint32 HonaLowLevelAPI::nextIntS; | 
				
			|||
 | 
				
			|||
bool HonaLowLevelAPI::getHsruIsStarted() const | 
				
			|||
{ | 
				
			|||
	return _hsruIsStarted; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::setHsruIsStarted(bool hsruIsStarted) | 
				
			|||
{ | 
				
			|||
	_hsruIsStarted = hsruIsStarted; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool HonaLowLevelAPI::getHiruIsStarted() const | 
				
			|||
{ | 
				
			|||
	return _hiruIsStarted; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::setHiruIsStarted(bool hiruIsStarted) | 
				
			|||
{ | 
				
			|||
	_hiruIsStarted = hiruIsStarted; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
HonaLowLevelAPI::HonaLowLevelAPI(QObject* parent) : QObject(parent) | 
				
			|||
{ | 
				
			|||
	packetLenInt4 = 7; | 
				
			|||
	packetLenRes4 = 5; | 
				
			|||
	packetLenSinglePulse = 5; | 
				
			|||
	packetLenInt123C = 6; | 
				
			|||
	packetLenRes123C = 6; | 
				
			|||
	packetLenIntS = 7; | 
				
			|||
	packetLenResS = 7; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool HonaLowLevelAPI::isHsruStarted() | 
				
			|||
{ | 
				
			|||
	return getHsruIsStarted(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool HonaLowLevelAPI::isHiruStarted() | 
				
			|||
{ | 
				
			|||
	return getHiruIsStarted(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::deviceReset() | 
				
			|||
{ | 
				
			|||
	if(!plxWrapper.deviceReset()) | 
				
			|||
		throw HonaException("Reset Doesnt Occur"); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::setConfig(HonaSettings& settings) | 
				
			|||
{ | 
				
			|||
	if(!plxWrapper.deviceReadRegister(0x10000000, honaRegisterBuffer, 8)) | 
				
			|||
	{ | 
				
			|||
		throw HonaException("DeviceReadRegister Doesnt Occur"); | 
				
			|||
	} | 
				
			|||
	_honaSetting = settings; | 
				
			|||
	writeSettingToRegisters(settings); | 
				
			|||
	if(!plxWrapper.deviceWriteRegister(0x10000000, honaRegisterBuffer)) | 
				
			|||
	{ | 
				
			|||
		throw HonaException("DeviceWriteRegister Doesnt Occur"); | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	if(!plxWrapper.deviceReadRegister(0x10000000, honaRegisterBuffer, 8)) | 
				
			|||
	{ | 
				
			|||
		throw HonaException("DeviceReadRegister Doesnt Occur"); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
HonaSettings HonaLowLevelAPI::getConfig() | 
				
			|||
{ | 
				
			|||
	return _honaSetting; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
 | 
				
			|||
QString HonaLowLevelAPI::getSwVersion() | 
				
			|||
{ | 
				
			|||
	return("94072200"); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
QString HonaLowLevelAPI::getDeviceId() | 
				
			|||
{ | 
				
			|||
	return("ssr"); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::hsruStart() | 
				
			|||
{ | 
				
			|||
	if(HonaLowLevelAPI::isHsruStarted()) | 
				
			|||
	{ | 
				
			|||
		throw HonaAlreadyStartedException(" alreadyStarted"); | 
				
			|||
	} | 
				
			|||
	else | 
				
			|||
	{ | 
				
			|||
		setHsruIsStarted(true); | 
				
			|||
		QtConcurrent::run(this, &HonaLowLevelAPI::hsruMainThread); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::hiruStart() | 
				
			|||
{ | 
				
			|||
	if(!isHiruStarted()) | 
				
			|||
		throw HonaException("HiruStarted doesn't started "); | 
				
			|||
	QtConcurrent::run(this, &HonaLowLevelAPI::hiruMainThread); | 
				
			|||
	setHiruIsStarted(true); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::hsruStop() | 
				
			|||
{ | 
				
			|||
	if(isHiruStarted()) | 
				
			|||
		setHsruIsStarted(false); | 
				
			|||
	_hsruStopEvent.wakeAll(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::init() | 
				
			|||
{ | 
				
			|||
	if(!plxWrapper.deviceInit(0X9054)) | 
				
			|||
	{ | 
				
			|||
		throw HonaException("Init Doesn't Occur"); | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	if(!plxWrapper.deviceOpen()) | 
				
			|||
	{ | 
				
			|||
		throw HonaException("deviceOpen Doesn't Occur"); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::writeSettingToRegisters(HonaSettings& settings) | 
				
			|||
{ | 
				
			|||
	honaRegisterBuffer.clear(); | 
				
			|||
	honaRegisterBuffer.insert(0, 0x00000000); | 
				
			|||
	/************************************************************************/ | 
				
			|||
	if(settings.hiruSettings.recordStard == recorderStart::selfTestCounter) | 
				
			|||
		honaRegisterBuffer.insert(0, 0x80000000); | 
				
			|||
	else | 
				
			|||
		honaRegisterBuffer.insert(0, 0x7FFFFFFF); | 
				
			|||
	/************************************************************************/ | 
				
			|||
	if(settings.hiruSettings.recordChannel == drxDeviceIfChannel::ifChannel12) | 
				
			|||
		honaRegisterBuffer.insert(0, 0x20000000); | 
				
			|||
	else | 
				
			|||
		honaRegisterBuffer.insert(0, 0xDFFFFFFF); | 
				
			|||
	/************************************************************************/ | 
				
			|||
	if(settings.hiruSettings.recordMode == recorderMode::dualChannel) | 
				
			|||
		honaRegisterBuffer.insert(0, 0x10000000); | 
				
			|||
	else | 
				
			|||
		honaRegisterBuffer.insert(0, 0xEFFFFFFF); | 
				
			|||
	/************************************************************************/ | 
				
			|||
 | 
				
			|||
	honaRegisterBuffer.insert(0, | 
				
			|||
							  (honaRegisterBuffer.at(0) + | 
				
			|||
							   (settings.hiruSettings.threshold & 0x00000FFF))); | 
				
			|||
 | 
				
			|||
	honaRegisterBuffer.insert(1, settings.hsruSettings.honaInt123CTHR); | 
				
			|||
	honaRegisterBuffer.insert(2, settings.hsruSettings.honaRes123CTHR); | 
				
			|||
	honaRegisterBuffer.insert(3, settings.hsruSettings.honaIntSTHR); | 
				
			|||
	honaRegisterBuffer.insert(4, settings.hsruSettings.honaResSTHR); | 
				
			|||
	honaRegisterBuffer.insert(5, settings.hsruSettings.honaSPTHR); | 
				
			|||
	honaRegisterBuffer.insert(6, settings.hsruSettings.intM4_THR); | 
				
			|||
	honaRegisterBuffer.insert(7, settings.hsruSettings.resM4_THR); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::setConfig() | 
				
			|||
{ | 
				
			|||
	setConfig(_honaSetting); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::hsruMainThread() | 
				
			|||
{ | 
				
			|||
	//try
 | 
				
			|||
	//{
 | 
				
			|||
	deviceReset(); | 
				
			|||
	setConfig(); | 
				
			|||
	deviceReset(); | 
				
			|||
	if(!plxWrapper.deviceEnableInterrupt()) | 
				
			|||
	{ | 
				
			|||
		throw HonaException("DeviceEnableInterrupt Doesnt Occur"); | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	QtConcurrent::run(this, &HonaLowLevelAPI::hsruReadThread); | 
				
			|||
	QtConcurrent::run(this, &HonaLowLevelAPI::hsruUpdateThread); | 
				
			|||
	//}
 | 
				
			|||
	//catch(...)
 | 
				
			|||
	//{
 | 
				
			|||
	//_isHsruReaderThreadFree = true;
 | 
				
			|||
	//_isHsruUpdateThreadFree = true;
 | 
				
			|||
	//hsruStop();
 | 
				
			|||
	//}
 | 
				
			|||
 | 
				
			|||
	_mutex.lock(); | 
				
			|||
	_hsruStopEvent.wait(&_mutex); | 
				
			|||
	_mutex.unlock(); | 
				
			|||
	_isHsruReaderThreadFree = true; | 
				
			|||
	_isHsruUpdateThreadFree = true; | 
				
			|||
 | 
				
			|||
	if(!plxWrapper.deviceDisableInterrupt()) | 
				
			|||
	{ | 
				
			|||
		throw HonaException("DeviceEnableInterrupt Doesnt Occur"); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::hsruReadThread() | 
				
			|||
{ | 
				
			|||
	_hsruLoss = 0; | 
				
			|||
	while(true) | 
				
			|||
	{ | 
				
			|||
		if(_isHsruReaderThreadFree) | 
				
			|||
			break; | 
				
			|||
 | 
				
			|||
		if(!plxWrapper.deviceWaitForInterrupt(1000)) | 
				
			|||
		{ | 
				
			|||
			throw HonaException("DeviceWaitForInterrupt Doesnt Occur"); | 
				
			|||
		} | 
				
			|||
		honaPacketList.clear(); | 
				
			|||
		_hsruLoss = 0; | 
				
			|||
		if(!plxWrapper.deviceOpenPCIChannel()) | 
				
			|||
		{ | 
				
			|||
			throw HonaException("DeviceOpenPCIChannel Doesnt Occur"); | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		_hsruLoss += hsruParserInt123C(hsruReadHonaBuffer(honaReceivers::int123C), | 
				
			|||
									   honaPacketList); | 
				
			|||
		_hsruLoss += hsruParserRes123C(hsruReadHonaBuffer(honaReceivers::res123C), | 
				
			|||
									   honaPacketList); | 
				
			|||
		_hsruLoss += hsruParserIntS(hsruReadHonaBuffer(honaReceivers::intS), honaPacketList); | 
				
			|||
		_hsruLoss += hsruParserResS(hsruReadHonaBuffer(honaReceivers::resS), honaPacketList); | 
				
			|||
		_hsruLoss += hsruParserInt4(hsruReadHonaBuffer(honaReceivers::int4), honaPacketList); | 
				
			|||
		_hsruLoss += hsruParserRes4(hsruReadHonaBuffer(honaReceivers::res4), honaPacketList); | 
				
			|||
		_hsruLoss += hsruParserSinglePulse(hsruReadHonaBuffer(honaReceivers::singlePulse), | 
				
			|||
										   honaPacketList); | 
				
			|||
		if(!plxWrapper.deviceClosePCIChannel()) | 
				
			|||
		{ | 
				
			|||
			throw HonaException("DeviceClosePCIChannel Doesnt Occur"); | 
				
			|||
		} | 
				
			|||
		if(!plxWrapper.deviceEnableInterrupt()) | 
				
			|||
		{ | 
				
			|||
			throw HonaException("DeviceEnableInterrupt Doesnt Occur"); | 
				
			|||
		} | 
				
			|||
		_mutex.lock(); | 
				
			|||
		_hsruReadDone.wakeAll(); | 
				
			|||
		_hsruUpdateAck.wait(&_mutex); | 
				
			|||
		_mutex.unlock(); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::hsruUpdateThread() | 
				
			|||
{ | 
				
			|||
	while(true) | 
				
			|||
	{ | 
				
			|||
		_mutex.lock(); | 
				
			|||
		_hsruReadDone.wait(&_mutex); | 
				
			|||
		_mutex.unlock(); | 
				
			|||
		if(_isHsruUpdateThreadFree) | 
				
			|||
			break; | 
				
			|||
		quint32 Doa = 0; | 
				
			|||
		Doa = hiruGetDOA(); | 
				
			|||
		emit lowLevelHonaData(honaPacketList, _hsruLoss, Doa); | 
				
			|||
		_hsruUpdateAck.wakeAll(); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::hiruMainThread() | 
				
			|||
{ | 
				
			|||
	QtConcurrent::run(this, &HonaLowLevelAPI::hiruReadThread); | 
				
			|||
	QtConcurrent::run(this, &HonaLowLevelAPI::hiruUpdateThread); | 
				
			|||
	while(true) | 
				
			|||
	{ | 
				
			|||
		_mutex.lock(); | 
				
			|||
		_hsruStopEvent.wait(&_mutex); | 
				
			|||
		_mutex.unlock(); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::hiruReadThread() | 
				
			|||
{ | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void HonaLowLevelAPI::hiruUpdateThread() | 
				
			|||
{ | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
quint32 HonaLowLevelAPI::hiruGetDOA() | 
				
			|||
{ | 
				
			|||
	quint32 Doa = 0; | 
				
			|||
	if(!plxWrapper.deviceReadRegister(0x30000004, Doa)) | 
				
			|||
	{ | 
				
			|||
		throw HonaException("DeviceReadRegister Doesnt Occur"); | 
				
			|||
	} | 
				
			|||
	Doa = Doa & 0x0000FFFF; | 
				
			|||
 | 
				
			|||
	return Doa; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
quint32 HonaLowLevelAPI::hsruParserInt123C(const QVector<quint32>& honaData, | 
				
			|||
										   QList<HonaPacket>& honaPacketList) | 
				
			|||
{ | 
				
			|||
	quint32 lossFound = 0; | 
				
			|||
	for(qint32 Ind = 0; Ind < honaData.length(); Ind++) | 
				
			|||
	{ | 
				
			|||
		if((honaData[Ind] & 0xFF000000) == 0x0F000000) | 
				
			|||
		{ | 
				
			|||
			HonaPacket tempHonaPacketInt123C; | 
				
			|||
			tempHonaPacketInt123C.setPacketType(honaPacketType::interrogationMode123C); | 
				
			|||
			packetLenInt123C = 6; | 
				
			|||
			tempHonaPacketInt123C.setPacketNumber(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			if((tempHonaPacketInt123C.getPacketNumber() != | 
				
			|||
				(lastPNInt123C + 1)) & (lastPNInt123C > 0)) | 
				
			|||
			{ | 
				
			|||
				lossFound += | 
				
			|||
					((tempHonaPacketInt123C.getPacketNumber() - lastPNInt123C + 65536) % 65536 - 1); | 
				
			|||
			} | 
				
			|||
			lastPNInt123C = tempHonaPacketInt123C.getPacketNumber(); | 
				
			|||
			if(nextInt123C > 0) | 
				
			|||
				lossFound++; | 
				
			|||
			nextInt123C = 1; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextInt123C == 1)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt123C.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); | 
				
			|||
			nextInt123C = 2; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextInt123C == 2)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt123C.setToa((tempHonaPacketInt123C.getToa()) + | 
				
			|||
										 (static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF) << | 
				
			|||
										  28)); | 
				
			|||
 | 
				
			|||
			tempHonaPacketInt123C.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextInt123C = 3; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextInt123C == 3)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt123C.setDoa(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketInt123C.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextInt123C = 4; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextInt123C == 4)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt123C.setPa1(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketInt123C.setPa2(tempHonaPacketInt123C.getPa2() + | 
				
			|||
										 ((honaData[Ind] & 0x000F0000) >> 4)); | 
				
			|||
			tempHonaPacketInt123C.setPa3(tempHonaPacketInt123C.getPa3() + | 
				
			|||
										 ((honaData[Ind] & 0x00F00000) >> 8)); | 
				
			|||
			nextInt123C = 5; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextInt123C == 5)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt123C.setCodeM( | 
				
			|||
				(static_cast<qulonglong>(honaData[Ind] & 0x0000001F)) << 59); | 
				
			|||
			tempHonaPacketInt123C.setCodeL(0); | 
				
			|||
			nextInt123C = 6; | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		if(nextInt123C == packetLenInt123C) | 
				
			|||
		{ | 
				
			|||
			if(isValid(tempHonaPacketInt123C)) | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketInt123C.setToa((tempHonaPacketInt123C.getToa() / 8) + toaStartBoard); | 
				
			|||
				honaPacketList.append(tempHonaPacketInt123C); | 
				
			|||
			} | 
				
			|||
			nextInt123C = 0; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return lossFound; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
quint32 HonaLowLevelAPI::hsruParserRes123C(const QVector<quint32>& honaData, | 
				
			|||
										   QList<HonaPacket>& honaPacketList) | 
				
			|||
{ | 
				
			|||
	quint32 lossFound = 0; | 
				
			|||
	for(qint32 Ind = 0; Ind < honaData.length(); Ind++) | 
				
			|||
	{ | 
				
			|||
		if((honaData[Ind] & 0xFF000000) == 0x0F000000) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes123C.setPacketType(honaPacketType::responseMode123C); | 
				
			|||
			packetLenRes123C = 6; | 
				
			|||
			tempHonaPacketRes123C.setPacketNumber(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			if((tempHonaPacketRes123C.getPacketNumber() != | 
				
			|||
				(lastPNRes123C + 1)) & (lastPNRes123C > 0)) | 
				
			|||
			{ | 
				
			|||
				lossFound += | 
				
			|||
					((tempHonaPacketRes123C.getPacketNumber() - lastPNRes123C + 65536) % 65536 - 1); | 
				
			|||
			} | 
				
			|||
			lastPNRes123C = tempHonaPacketRes123C.getPacketNumber(); | 
				
			|||
			if(nextRes123C > 0) | 
				
			|||
				lossFound++; | 
				
			|||
			nextRes123C = 1; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextRes123C == 1)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes123C.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); | 
				
			|||
			nextRes123C = 2; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextRes123C == 2)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes123C.setToa(tempHonaPacketRes123C.getToa() + | 
				
			|||
										 ((static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF)) << | 
				
			|||
										  28)); | 
				
			|||
			tempHonaPacketRes123C.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextRes123C = 3; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextRes123C == 3)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes123C.setDoa(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketRes123C.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextRes123C = 4; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextRes123C == 4)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes123C.setPa1(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketRes123C.setPa2(tempHonaPacketRes123C.getPa2() + | 
				
			|||
										 ((honaData[Ind] & 0x000F0000) >> 4)); | 
				
			|||
			tempHonaPacketRes123C.setPa3(tempHonaPacketRes123C.getPa3() + | 
				
			|||
										 ((honaData[Ind] & 0x00F00000) >> 8)); | 
				
			|||
			nextRes123C = 5; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextRes123C == 5)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes123C.setCodeM( | 
				
			|||
				(static_cast<qulonglong>(honaData[Ind] & 0x00001FFF)) << 51); | 
				
			|||
			tempHonaPacketRes123C.setCodeL(0); | 
				
			|||
			nextRes123C = 6; | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		if(nextRes123C == packetLenRes123C) | 
				
			|||
		{ | 
				
			|||
			if(isValid(tempHonaPacketRes123C)) | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketRes123C.setToa((tempHonaPacketRes123C.getToa() / 8) + toaStartBoard); | 
				
			|||
				honaPacketList.append(tempHonaPacketRes123C); | 
				
			|||
			} | 
				
			|||
			nextRes123C = 0; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return lossFound; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
quint32 HonaLowLevelAPI::hsruParserIntS(const QVector<quint32>& honaData, | 
				
			|||
										QList<HonaPacket>& honaPacketList) | 
				
			|||
{ | 
				
			|||
	uint lossFound = 0; | 
				
			|||
	for(qint32 Ind = 0; Ind < honaData.length(); Ind++) | 
				
			|||
	{ | 
				
			|||
		if((honaData[Ind] & 0xFF000000) == 0x0F000000) | 
				
			|||
		{ | 
				
			|||
			qint32 TypeVal = (honaData[Ind] & 0x00F00000) >> 20; | 
				
			|||
			if(TypeVal == 2) | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketIntS.setPacketType(honaPacketType::interrogationModeS56); | 
				
			|||
				packetLenIntS = 7; | 
				
			|||
			} | 
				
			|||
			else | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketIntS.setPacketType(honaPacketType::interrogationModeS112); | 
				
			|||
				packetLenIntS = 9; | 
				
			|||
			} | 
				
			|||
			tempHonaPacketIntS.setPacketNumber(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			if((tempHonaPacketIntS.getPacketNumber() != (lastPNIntS + 1)) & (lastPNIntS > 0)) | 
				
			|||
			{ | 
				
			|||
				lossFound += | 
				
			|||
					((tempHonaPacketIntS.getPacketNumber() - lastPNIntS + 65536) % 65536 - 1); | 
				
			|||
			} | 
				
			|||
			lastPNIntS = tempHonaPacketIntS.getPacketNumber(); | 
				
			|||
			if(nextIntS > 0) | 
				
			|||
				lossFound++; | 
				
			|||
			nextIntS = 1; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextIntS == 1)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketIntS.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); | 
				
			|||
			nextIntS = 2; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextIntS == 2)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketIntS.setToa(tempHonaPacketIntS.getToa() + | 
				
			|||
									  ((static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF)) << | 
				
			|||
									   28)); | 
				
			|||
			tempHonaPacketIntS.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextIntS = 3; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextIntS == 3)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketIntS.setDoa(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketIntS.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextIntS = 4; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextIntS == 4)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketIntS.setPa1(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketIntS.setPa2(tempHonaPacketIntS.getPa2() + ((honaData[Ind] & 0x000F0000))); | 
				
			|||
			tempHonaPacketIntS.setPa3(tempHonaPacketIntS.getPa3() + | 
				
			|||
									  ((honaData[Ind] & 0x00F00000) >> 4)); | 
				
			|||
			nextIntS = 5; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextIntS == 5)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketIntS.setCodeM((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << 8); | 
				
			|||
			tempHonaPacketIntS.setCodeL(0); | 
				
			|||
			nextIntS = 6; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x60000000) && (nextIntS == 6)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketIntS.setCodeM(tempHonaPacketIntS.getCodeM() + | 
				
			|||
										(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << | 
				
			|||
										36); | 
				
			|||
			tempHonaPacketIntS.setCodeL(0); | 
				
			|||
			nextIntS = 7; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x70000000) && (nextIntS == 7)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketIntS.setCodeL(tempHonaPacketIntS.getCodeM()); | 
				
			|||
			tempHonaPacketIntS.setCodeM((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << 8); | 
				
			|||
			nextIntS = 8; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x80000000) && (nextIntS == 8)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketIntS.setCodeM(tempHonaPacketIntS.getCodeM() + | 
				
			|||
										(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << | 
				
			|||
										36); | 
				
			|||
			nextIntS = 9; | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		if(nextIntS == packetLenIntS) | 
				
			|||
		{ | 
				
			|||
			if(isValid(tempHonaPacketIntS)) | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketIntS.setToa((tempHonaPacketIntS.getToa() / 8) + toaStartBoard); | 
				
			|||
				honaPacketList.append(tempHonaPacketIntS); | 
				
			|||
			} | 
				
			|||
			nextIntS = 0; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return lossFound; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
quint32 HonaLowLevelAPI::hsruParserResS(const QVector<quint32>& honaData, | 
				
			|||
										QList<HonaPacket>& honaPacketList) | 
				
			|||
{ | 
				
			|||
	uint lossFound = 0; | 
				
			|||
	for(qint32 Ind = 0; Ind < honaData.length(); Ind++) | 
				
			|||
	{ | 
				
			|||
		if((honaData[Ind] & 0xFF000000) == 0x0F000000) | 
				
			|||
		{ | 
				
			|||
			qint32 TypeVal = (honaData[Ind] & 0x00F00000) >> 20; | 
				
			|||
			if(TypeVal == 4) | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketResS.setPacketType(honaPacketType::responseModeS56); | 
				
			|||
				packetLenResS = 7; | 
				
			|||
			} | 
				
			|||
			else | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketResS.setPacketType(honaPacketType::responseModeS112); | 
				
			|||
				packetLenResS = 9; | 
				
			|||
			} | 
				
			|||
			tempHonaPacketResS.setPacketNumber(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			if((tempHonaPacketResS.getPacketNumber() != (lastPNResS + 1)) & (lastPNResS > 0)) | 
				
			|||
			{ | 
				
			|||
				lossFound += | 
				
			|||
					((tempHonaPacketResS.getPacketNumber() - lastPNResS + 65536) % 65536 - 1); | 
				
			|||
			} | 
				
			|||
			lastPNResS = tempHonaPacketResS.getPacketNumber(); | 
				
			|||
			if(nextResS > 0) | 
				
			|||
				lossFound++; | 
				
			|||
			nextResS = 1; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextResS == 1)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketResS.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); | 
				
			|||
			nextResS = 2; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextResS == 2)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketResS.setToa(tempHonaPacketResS.getToa() + | 
				
			|||
									  ((static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF)) << | 
				
			|||
									   28)); | 
				
			|||
			tempHonaPacketResS.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextResS = 3; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextResS == 3)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketResS.setDoa(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketResS.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextResS = 4; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextResS == 4)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketResS.setPa1(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketResS.setPa2(tempHonaPacketResS.getPa2() + ((honaData[Ind] & 0x000F0000))); | 
				
			|||
			tempHonaPacketResS.setPa3(tempHonaPacketResS.getPa3() + | 
				
			|||
									  ((honaData[Ind] & 0x00F00000) >> 4)); | 
				
			|||
			nextResS = 5; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextResS == 5)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketResS.setCodeM((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << 8); | 
				
			|||
			tempHonaPacketResS.setCodeL(0); | 
				
			|||
			nextResS = 6; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x60000000) && (nextResS == 6)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketResS.setCodeM(tempHonaPacketResS.getCodeM() + | 
				
			|||
										(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << | 
				
			|||
										36); | 
				
			|||
			tempHonaPacketResS.setCodeL(0); | 
				
			|||
			nextResS = 7; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x70000000) && (nextResS == 7)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketResS.setCodeL(tempHonaPacketResS.getCodeM()); | 
				
			|||
			tempHonaPacketResS.setCodeM((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << 8); | 
				
			|||
			nextResS = 8; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x80000000) && (nextResS == 8)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketResS.setCodeM(tempHonaPacketResS.getCodeM() + | 
				
			|||
										(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << | 
				
			|||
										36); | 
				
			|||
			nextResS = 9; | 
				
			|||
		} | 
				
			|||
		if(nextResS == packetLenResS) | 
				
			|||
		{ | 
				
			|||
			if(isValid(tempHonaPacketResS)) | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketResS.setToa((tempHonaPacketResS.getToa() / 8) + toaStartBoard); | 
				
			|||
				honaPacketList.append(tempHonaPacketResS); | 
				
			|||
			} | 
				
			|||
			nextResS = 0; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return lossFound; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
quint32 HonaLowLevelAPI::hsruParserInt4(const QVector<quint32>& honaData, | 
				
			|||
										QList<HonaPacket>& honaPacketList) | 
				
			|||
{ | 
				
			|||
	uint lossFound = 0; | 
				
			|||
 | 
				
			|||
	for(qint32 Ind = 0; Ind < honaData.length(); Ind++) | 
				
			|||
	{ | 
				
			|||
		if((honaData[Ind] & 0xFF000000) == 0x0F000000) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt4.setPacketType(honaPacketType::interrogationMode4); | 
				
			|||
			packetLenInt4 = 7; | 
				
			|||
			tempHonaPacketInt4.setPacketNumber(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			if((tempHonaPacketInt4.getPacketNumber() != (lastPNInt4 + 1)) & (lastPNInt4 > 0)) | 
				
			|||
			{ | 
				
			|||
				lossFound += | 
				
			|||
					((tempHonaPacketInt4.getPacketNumber() - lastPNInt4 + 65536) % 65536 - 1); | 
				
			|||
			} | 
				
			|||
			lastPNInt4 = tempHonaPacketInt4.getPacketNumber(); | 
				
			|||
			if(nextInt4 > 0) | 
				
			|||
				lossFound++; | 
				
			|||
			nextInt4 = 1; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextInt4 == 1)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt4.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); | 
				
			|||
			nextInt4 = 2; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextInt4 == 2)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt4.setToa(tempHonaPacketInt4.getToa() + | 
				
			|||
									  ((static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF)) << | 
				
			|||
									   28)); | 
				
			|||
			tempHonaPacketInt4.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextInt4 = 3; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextInt4 == 3)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt4.setDoa(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketInt4.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextInt4 = 4; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextInt4 == 4)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt4.setPa1(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketInt4.setPa2(tempHonaPacketInt4.getPa2() + | 
				
			|||
									  ((honaData[Ind] & 0x000F0000) >> 4)); | 
				
			|||
			tempHonaPacketInt4.setPa3(tempHonaPacketInt4.getPa3() + | 
				
			|||
									  ((honaData[Ind] & 0x00F00000) >> 8)); | 
				
			|||
			nextInt4 = 5; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextInt4 == 5)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt4.setCodeM(0); | 
				
			|||
			tempHonaPacketInt4.setCodeL(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); | 
				
			|||
			nextInt4 = 6; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x60000000) && (nextInt4 == 6)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketInt4.setPa4(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketInt4.setCodeL(tempHonaPacketInt4.getCodeL() + | 
				
			|||
										((static_cast<qulonglong>(honaData[Ind] & 0x000F0000)) << | 
				
			|||
										 12)); | 
				
			|||
			tempHonaPacketInt4.setm4Status(static_cast<quint8>((honaData[Ind] & 0x0F000000) >> 20)); | 
				
			|||
			nextInt4 = 7; | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		if(nextInt4 == packetLenInt4) | 
				
			|||
		{ | 
				
			|||
			if(isValid(tempHonaPacketInt4)) | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketInt4.setToa((tempHonaPacketInt4.getToa() / 6) + toaStartBoard); | 
				
			|||
				honaPacketList.append(tempHonaPacketInt4); | 
				
			|||
			} | 
				
			|||
			nextInt4 = 0; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return lossFound; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
quint32 HonaLowLevelAPI::hsruParserRes4(const QVector<quint32>& honaData, | 
				
			|||
										QList<HonaPacket>& honaPacketList) | 
				
			|||
{ | 
				
			|||
	uint lossFound = 0; | 
				
			|||
	for(qint32 Ind = 0; Ind < honaData.length(); Ind++) | 
				
			|||
	{ | 
				
			|||
		if((honaData[Ind] & 0xFF000000) == 0x0F000000) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes4.setPacketType(honaPacketType::responseMode4); | 
				
			|||
			packetLenRes4 = 5; | 
				
			|||
			tempHonaPacketRes4.setPacketNumber(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			if((tempHonaPacketRes4.getPacketNumber() != (lastPNRes4 + 1)) & (lastPNRes4 > 0)) | 
				
			|||
			{ | 
				
			|||
				lossFound += | 
				
			|||
					((tempHonaPacketRes4.getPacketNumber() - lastPNRes4 + 65536) % 65536 - 1); | 
				
			|||
			} | 
				
			|||
			lastPNRes4 = tempHonaPacketRes4.getPacketNumber(); | 
				
			|||
			if(nextRes4 > 0) | 
				
			|||
				lossFound++; | 
				
			|||
			nextRes4 = 1; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextRes4 == 1)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes4.setToa((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF))); | 
				
			|||
			nextRes4 = 2; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextRes4 == 2)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes4.setToa(tempHonaPacketRes4.getToa() + | 
				
			|||
									  (static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF) << | 
				
			|||
									   28)); | 
				
			|||
			tempHonaPacketRes4.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextRes4 = 3; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextRes4 == 3)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes4.setDoa(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketRes4.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextRes4 = 4; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextRes4 == 4)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketRes4.setPa1(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketRes4.setPa2(tempHonaPacketRes4.getPa2() + | 
				
			|||
									  ((honaData[Ind] & 0x000F0000) >> 4)); | 
				
			|||
			tempHonaPacketRes4.setPa3(tempHonaPacketRes4.getPa3() + | 
				
			|||
									  ((honaData[Ind] & 0x00F00000) >> 8)); | 
				
			|||
			nextRes4 = 5; | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		if(nextRes4 == packetLenRes4) | 
				
			|||
		{ | 
				
			|||
			if(isValid(tempHonaPacketRes4)) | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketRes4.setToa((tempHonaPacketRes4.getToa() / 6) + toaStartBoard); | 
				
			|||
				honaPacketList.append(tempHonaPacketRes4); | 
				
			|||
			} | 
				
			|||
			nextRes4 = 0; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return lossFound; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
quint32 HonaLowLevelAPI::hsruParserSinglePulse(const QVector<quint32>& honaData, | 
				
			|||
											   QList<HonaPacket>& honaPacketList) | 
				
			|||
{ | 
				
			|||
	uint lossFound = 0; | 
				
			|||
	for(qint32 Ind = 0; Ind < honaData.length(); Ind++) | 
				
			|||
	{ | 
				
			|||
		if((honaData[Ind] & 0xFF000000) == 0x0F000000) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketSinglePulse.setPacketType(honaPacketType::singlePulseMode4); | 
				
			|||
			packetLenSinglePulse = 5; | 
				
			|||
			tempHonaPacketSinglePulse.setPacketNumber(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			if((tempHonaPacketSinglePulse.getPacketNumber() != | 
				
			|||
				(lastPNSinglePulse + 1)) & (lastPNSinglePulse > 0)) | 
				
			|||
			{ | 
				
			|||
				lossFound += | 
				
			|||
					((tempHonaPacketSinglePulse.getPacketNumber() - lastPNSinglePulse + 65536) % | 
				
			|||
					 65536 - | 
				
			|||
					 1); | 
				
			|||
			} | 
				
			|||
			lastPNSinglePulse = tempHonaPacketSinglePulse.getPacketNumber(); | 
				
			|||
			if(nextSinglePulse > 0) | 
				
			|||
				lossFound++; | 
				
			|||
			nextSinglePulse = 1; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextSinglePulse == 1)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketSinglePulse.setToa(static_cast<qulonglong>(honaData[Ind] & | 
				
			|||
																	 0x0FFFFFFF)); | 
				
			|||
			nextSinglePulse = 2; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextSinglePulse == 2)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketSinglePulse.setToa(tempHonaPacketSinglePulse.getToa() + | 
				
			|||
											 ((static_cast<qulonglong>(honaData[Ind] & | 
				
			|||
																	   0x0000FFFF)) << 28)); | 
				
			|||
			tempHonaPacketSinglePulse.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextSinglePulse = 3; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextSinglePulse == 3)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketSinglePulse.setDoa(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketSinglePulse.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); | 
				
			|||
			nextSinglePulse = 4; | 
				
			|||
		} | 
				
			|||
		else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextSinglePulse == 4)) | 
				
			|||
		{ | 
				
			|||
			tempHonaPacketSinglePulse.setPa1(honaData[Ind] & 0x0000FFFF); | 
				
			|||
			tempHonaPacketSinglePulse.setPa2(tempHonaPacketSinglePulse.getPa2() + | 
				
			|||
											 ((honaData[Ind] & 0x000F0000) >> 4)); | 
				
			|||
			tempHonaPacketSinglePulse.setPa3(tempHonaPacketSinglePulse.getPa3() + | 
				
			|||
											 ((honaData[Ind] & 0x00F00000) >> 8)); | 
				
			|||
			nextSinglePulse = 5; | 
				
			|||
		} | 
				
			|||
 | 
				
			|||
		if(nextSinglePulse == packetLenSinglePulse) | 
				
			|||
		{ | 
				
			|||
			if(isValid(tempHonaPacketSinglePulse)) | 
				
			|||
			{ | 
				
			|||
				tempHonaPacketSinglePulse.setToa( | 
				
			|||
					(tempHonaPacketSinglePulse.getToa() / 6) + toaStartBoard); | 
				
			|||
				honaPacketList.append(tempHonaPacketSinglePulse); | 
				
			|||
			} | 
				
			|||
			nextSinglePulse = 0; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return lossFound; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
QVector<quint32> HonaLowLevelAPI::hsruReadHonaBuffer(honaReceivers receiver) | 
				
			|||
{ | 
				
			|||
	QVector<quint32> honaData; | 
				
			|||
	honaData.resize(16384); | 
				
			|||
	quint32 address = 0; | 
				
			|||
 | 
				
			|||
	if(receiver == honaReceivers::int123C) | 
				
			|||
		address = 0X50000000; | 
				
			|||
	else if(receiver == honaReceivers::res123C) | 
				
			|||
		address = 0X60000000; | 
				
			|||
	else if(receiver == honaReceivers::intS) | 
				
			|||
		address = 0X70000000; | 
				
			|||
	else if(receiver == honaReceivers::resS) | 
				
			|||
		address = 0X80000000; | 
				
			|||
	else if(receiver == honaReceivers::int4) | 
				
			|||
		address = 0X90000000; | 
				
			|||
	else if(receiver == honaReceivers::res4) | 
				
			|||
		address = 0XA0000000; | 
				
			|||
	else if(receiver == honaReceivers::singlePulse) | 
				
			|||
		address = 0XB0000000; | 
				
			|||
 | 
				
			|||
	else | 
				
			|||
		throw HonaException("honaReceivers is Not Valid"); | 
				
			|||
 | 
				
			|||
	if(!plxWrapper.deviceReadMemory(address, honaData, honaData.size())) | 
				
			|||
	{ | 
				
			|||
		throw HonaException("DeviceReadMemory Doesnt Occur"); | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	//qDebug() << " hsruReadHonaBuffer  receiver "<< receiver;
 | 
				
			|||
	//for(auto i = 0 ; i < 10; i++)
 | 
				
			|||
	//qDebug() << "[" << i << "] " << "0x" << QString::number(honaData[i], 16);
 | 
				
			|||
	//qDebug() << "------------------------------------------------------------";
 | 
				
			|||
	return honaData; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool HonaLowLevelAPI::isValid(HonaPacket hp) | 
				
			|||
{ | 
				
			|||
	if(hp.getToa() <= 0) | 
				
			|||
		return false; | 
				
			|||
 | 
				
			|||
	return true; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
 | 
				
			|||
@ -1,106 +1,139 @@ | 
				
			|||
#include "../../include/LowLevel/HonaPacket.h" | 
				
			|||
#include "LowLevel/HonaPacket.h" | 
				
			|||
 | 
				
			|||
HonaPacket::HonaPacket() | 
				
			|||
{ | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
honaPacketType HonaPacket::getPacketType() | 
				
			|||
{ | 
				
			|||
	return m_PacketType; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setPacketType(honaPacketType temp) | 
				
			|||
{ | 
				
			|||
	m_PacketType = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
honaPacketType HonaPacket::getPacketType(void) | 
				
			|||
quint32 HonaPacket::getPacketNumber() | 
				
			|||
{ | 
				
			|||
    return m_PacketType; | 
				
			|||
	return m_PacketNumber; | 
				
			|||
} | 
				
			|||
 void HonaPacket::setPacketType(honaPacketType &temp) | 
				
			|||
 | 
				
			|||
void HonaPacket::setPacketNumber(quint32 temp) | 
				
			|||
{ | 
				
			|||
    m_PacketType = temp; | 
				
			|||
	m_PacketNumber = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
 quint32 HonaPacket::getPacketNumber(void) | 
				
			|||
 { | 
				
			|||
     return m_PacketNumber; | 
				
			|||
 } | 
				
			|||
  void HonaPacket::setPacketNumber(quint32 temp) | 
				
			|||
 { | 
				
			|||
     m_PacketNumber = temp; | 
				
			|||
 } | 
				
			|||
qulonglong HonaPacket::getToa() | 
				
			|||
{ | 
				
			|||
	return m_Toa; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setToa(qulonglong temp) | 
				
			|||
{ | 
				
			|||
	m_Toa = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
  qulonglong HonaPacket::getToa(void) | 
				
			|||
  { | 
				
			|||
      return m_Toa; | 
				
			|||
  } | 
				
			|||
  void HonaPacket::setToa(qulonglong temp) | 
				
			|||
  { | 
				
			|||
       m_Toa = temp; | 
				
			|||
  } | 
				
			|||
quint32 HonaPacket::getDoa() | 
				
			|||
{ | 
				
			|||
	return m_Doa; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setDoa(quint32 temp) | 
				
			|||
{ | 
				
			|||
	m_Doa = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
  quint32 HonaPacket::getDoa(void) | 
				
			|||
  { | 
				
			|||
      return m_Doa; | 
				
			|||
  } | 
				
			|||
  void HonaPacket::setDoa(quint32 temp) | 
				
			|||
  { | 
				
			|||
       m_Doa = temp; | 
				
			|||
  } | 
				
			|||
quint32 HonaPacket::getPa1() | 
				
			|||
{ | 
				
			|||
	return m_Pa1; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setPa1(quint32 temp) | 
				
			|||
{ | 
				
			|||
	m_Pa1 = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
  quint32 HonaPacket::getPa1(void) | 
				
			|||
  { | 
				
			|||
      return m_Pa1; | 
				
			|||
  } | 
				
			|||
  void HonaPacket::setPa1(quint32 temp) | 
				
			|||
  { | 
				
			|||
       m_Pa1 = temp; | 
				
			|||
  } | 
				
			|||
quint32 HonaPacket::getPa2() | 
				
			|||
{ | 
				
			|||
	return m_Pa2; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setPa2(quint32 temp) | 
				
			|||
{ | 
				
			|||
	m_Pa2 = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
  quint32 HonaPacket::getPa2(void) | 
				
			|||
  { | 
				
			|||
      return m_Pa2; | 
				
			|||
  } | 
				
			|||
  void HonaPacket::setPa2(quint32 temp) | 
				
			|||
  { | 
				
			|||
       m_Pa2 = temp; | 
				
			|||
  } | 
				
			|||
quint32 HonaPacket::getPa3() | 
				
			|||
{ | 
				
			|||
	return m_Pa3; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setPa3(quint32 temp) | 
				
			|||
{ | 
				
			|||
	m_Pa3 = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
  quint32 HonaPacket::getPa3(void) | 
				
			|||
  { | 
				
			|||
      return m_Pa3; | 
				
			|||
  } | 
				
			|||
  void HonaPacket::setPa3(quint32 temp) | 
				
			|||
  { | 
				
			|||
       m_Pa3= temp; | 
				
			|||
  } | 
				
			|||
quint32 HonaPacket::getPa4() | 
				
			|||
{ | 
				
			|||
	return m_Pa4; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setPa4(quint32 temp) | 
				
			|||
{ | 
				
			|||
	m_Pa4 = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
  quint32 HonaPacket::getPa4(void) | 
				
			|||
  { | 
				
			|||
      return m_Pa4; | 
				
			|||
  } | 
				
			|||
  void HonaPacket::setPa4(quint32 temp) | 
				
			|||
  { | 
				
			|||
       m_Pa4= temp; | 
				
			|||
  } | 
				
			|||
quint32 HonaPacket::getCode() | 
				
			|||
{ | 
				
			|||
	return m_Code; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setCode(quint32 temp) | 
				
			|||
{ | 
				
			|||
	m_Code = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
  quint32 HonaPacket::getCode(void) | 
				
			|||
  { | 
				
			|||
      return m_Code; | 
				
			|||
  } | 
				
			|||
  void HonaPacket::setCode(quint32 temp) | 
				
			|||
  { | 
				
			|||
       m_Code = temp; | 
				
			|||
  } | 
				
			|||
quint32 HonaPacket::getCodeL() | 
				
			|||
{ | 
				
			|||
	return m_CodeL; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setCodeL(quint32 temp) | 
				
			|||
{ | 
				
			|||
	m_CodeL = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
  quint32 HonaPacket::getCodeL(void) | 
				
			|||
  { | 
				
			|||
      return m_CodeL; | 
				
			|||
  } | 
				
			|||
  void HonaPacket::setCodeL(quint32 temp) | 
				
			|||
  { | 
				
			|||
       m_CodeL = temp; | 
				
			|||
  } | 
				
			|||
quint32 HonaPacket::getCodeM() | 
				
			|||
{ | 
				
			|||
	return m_CodeM; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setCodeM(quint32 temp) | 
				
			|||
{ | 
				
			|||
	m_CodeM = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
  quint32 HonaPacket::getCodeM(void) | 
				
			|||
  { | 
				
			|||
      return m_CodeM; | 
				
			|||
  } | 
				
			|||
  void HonaPacket::setCodeM(quint32 temp) | 
				
			|||
  { | 
				
			|||
       m_CodeM= temp; | 
				
			|||
  } | 
				
			|||
quint8 HonaPacket::getm4Status() | 
				
			|||
{ | 
				
			|||
	return m4Status; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void HonaPacket::setm4Status(quint8 temp) | 
				
			|||
{ | 
				
			|||
	m4Status = temp; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
 | 
				
			|||
@ -0,0 +1,160 @@ | 
				
			|||
#include <QDebug> | 
				
			|||
#include <QVector> | 
				
			|||
 | 
				
			|||
#include "include/Wrapper/PlxWrapper.h" | 
				
			|||
 | 
				
			|||
PlxWrapper::PlxWrapper() | 
				
			|||
{ | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceInit(quint32 devicekey) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_SelDevice(devicekey); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceOpen() | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_Open(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
 | 
				
			|||
bool PlxWrapper::deviceClose() | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_Close(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceReset() | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_Reset(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceLoadE2pToFPGA() | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_LoadE2pToFPGA(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceReadEeprom(quint16 offset, quint32 length, QVector<quint32>& data) | 
				
			|||
{ | 
				
			|||
	bool ret = true; | 
				
			|||
	data.clear(); | 
				
			|||
 | 
				
			|||
	for(auto i = 0U; i < (length - 1) * 4; i += 4) | 
				
			|||
	{ | 
				
			|||
		quint32 temp; | 
				
			|||
		ret &= PlxPci_9054_ReadEep(offset + i, &temp); | 
				
			|||
		data.append(temp); | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ret; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceWriteEeprom(quint16 offset, quint32 data) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_WriteEep(offset, data); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceReadRegister(quint32 address, QVector<quint32>& data, quint32 length) | 
				
			|||
{ | 
				
			|||
	bool ret = true; | 
				
			|||
	data.clear(); | 
				
			|||
 | 
				
			|||
	quint32 temp[length]; | 
				
			|||
	ret &= PlxPci_9054_ReadBar(address, &temp, length * 4); | 
				
			|||
	if(ret == true) | 
				
			|||
	{ | 
				
			|||
		for(auto i = 0U; i < length; i++) | 
				
			|||
		{ | 
				
			|||
			data.append(temp[i]); | 
				
			|||
			qDebug() << hex << temp[i]; | 
				
			|||
		} | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	return ret; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceReadRegister(quint32 address, quint32& data) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_ReadBar(address, &data, 4); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceWriteRegister(quint32 address, QVector<quint32>& data) | 
				
			|||
{ | 
				
			|||
	bool ret = true; | 
				
			|||
	auto length = data.length(); | 
				
			|||
	quint32 temp[length]; | 
				
			|||
 | 
				
			|||
	for(auto i = 0U; i < length; i++) | 
				
			|||
		temp[i] = data.at(i); | 
				
			|||
 | 
				
			|||
	ret &= PlxPci_9054_WriteBar(address, &temp, length * 4); | 
				
			|||
 | 
				
			|||
	return ret; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceWriteRegister(quint32 address, quint32 data) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_WriteBar(address, &data, 4); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceReadMemory(quint32 localAddress, QVector<quint32>& data, quint32 length) | 
				
			|||
{ | 
				
			|||
	bool ret = true; | 
				
			|||
	data.clear(); | 
				
			|||
 | 
				
			|||
	quint32 temp[length]; | 
				
			|||
	ret &= PlxPci_9054_DMATransfer(localAddress, &temp, (quint32)(length * 4)); | 
				
			|||
 | 
				
			|||
	for(auto i = 0U; i < length; i++) | 
				
			|||
		data.append(temp[i]); | 
				
			|||
 | 
				
			|||
	return ret; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceOpenPCIChannel(void) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_DMAChannelOpen(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceClosePCIChannel(void) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_DMAChannelClose(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
 | 
				
			|||
bool PlxWrapper::deviceEnableInterrupt(void) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_EnableInterrupt(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceDisableInterrupt(void) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_DisableInterrupt(); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceWaitForInterrupt(quint32 timeout) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_WaitForInterrupt(timeout); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
bool PlxWrapper::deviceGetChipType(quint8 revision, quint16 chipType) | 
				
			|||
{ | 
				
			|||
	return PlxPci_9054_ChipTypeGet(revision, chipType); | 
				
			|||
} | 
				
			|||
@ -1,7 +1,7 @@ | 
				
			|||
TEMPLATE = subdirs | 
				
			|||
 | 
				
			|||
SUBDIRS += \ | 
				
			|||
    Plx\ | 
				
			|||
    Plx \ | 
				
			|||
    Test | 
				
			|||
Test.depends += Plx | 
				
			|||
 | 
				
			|||
 | 
				
			|||
@ -1,15 +1,72 @@ | 
				
			|||
#include "MainWindow.h" | 
				
			|||
#include "ui_MainWindow.h" | 
				
			|||
HonaAPI _honaAPI; | 
				
			|||
 | 
				
			|||
MainWindow::MainWindow(QWidget *parent) | 
				
			|||
    : QMainWindow(parent) | 
				
			|||
    , ui(new Ui::MainWindow) | 
				
			|||
MainWindow::MainWindow(QWidget* parent) | 
				
			|||
	: QMainWindow(parent) | 
				
			|||
	, ui(new Ui::MainWindow) | 
				
			|||
{ | 
				
			|||
    ui->setupUi(this); | 
				
			|||
	ui->setupUi(this); | 
				
			|||
	connect(&_honaAPI, &HonaAPI::honaDataResult, this, &MainWindow::honaDataResultUi); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
MainWindow::~MainWindow() | 
				
			|||
{ | 
				
			|||
    delete ui; | 
				
			|||
	delete ui; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
/*************************************************************************************************/ | 
				
			|||
void MainWindow::honaDataResultUi(QList<HonaPacket> honaPacketList, quint32 hsruLoss, quint32 Doa) | 
				
			|||
{ | 
				
			|||
	qDebug() << "honaDataResultUi inside " << honaPacketList.length(); | 
				
			|||
	QString _str; | 
				
			|||
	for(auto i = 0; i < honaPacketList.length(); i++) | 
				
			|||
	{ | 
				
			|||
		_str = "[" + QString::number(i) + "] " + "0x hsruLoss" + QString::number(hsruLoss); | 
				
			|||
		_str += "\n *********************************************"; | 
				
			|||
	} | 
				
			|||
 | 
				
			|||
	ui->dataFromMemory->setText(_str); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void MainWindow::on_testPLX_clicked() | 
				
			|||
{ | 
				
			|||
	ApiResult _resultInit = _honaAPI.init(); | 
				
			|||
	//ApiResult _deviceReset = _honaAPI.deviceReset();
 | 
				
			|||
	//HonaSettings settings;
 | 
				
			|||
	//ApiResult _configResult = _honaAPI.setConfig(settings);
 | 
				
			|||
	//ApiResult isHsruStarted = _honaAPI.isHsruStarted();
 | 
				
			|||
	ApiResult _hsruStartResult = _honaAPI.hsruStart(); | 
				
			|||
 | 
				
			|||
	//********************************************************
 | 
				
			|||
	QString temp = ui->errorMonitoring->text(); | 
				
			|||
	if(_resultInit == ApiResult::error) | 
				
			|||
	{ | 
				
			|||
		ui->errorMonitoring->setText(temp + "\n" + " Error _resultInit"); | 
				
			|||
	} | 
				
			|||
	else if(_resultInit == ApiResult::success) | 
				
			|||
	{ | 
				
			|||
		ui->errorMonitoring->setText(temp + "\n" + "success _resultInit"); | 
				
			|||
	} | 
				
			|||
	//********************************************************
 | 
				
			|||
 | 
				
			|||
	if(_hsruStartResult == ApiResult::error) | 
				
			|||
	{ | 
				
			|||
		ui->errorMonitoring->setText(temp + "\n" + " Error _hsruStartResult"); | 
				
			|||
	} | 
				
			|||
	else if(_hsruStartResult == ApiResult::success) | 
				
			|||
	{ | 
				
			|||
		ui->errorMonitoring->setText(temp + "\n" + " success _hsruStartResult"); | 
				
			|||
	} | 
				
			|||
	//********************************************************
 | 
				
			|||
} | 
				
			|||
 | 
				
			|||
void MainWindow::on_stopHsru_clicked() | 
				
			|||
{ | 
				
			|||
	QString temp = ui->errorMonitoring->text(); | 
				
			|||
	ApiResult _hsruStop = _honaAPI.hsruStop(); | 
				
			|||
	if(_hsruStop == ApiResult::error) | 
				
			|||
	{ | 
				
			|||
		ui->errorMonitoring->setText(temp + "\n" + " success _hsruStartResult"); | 
				
			|||
	} | 
				
			|||
} | 
				
			|||
 | 
				
			|||
@ -0,0 +1,15 @@ | 
				
			|||
#include "MainWindow.h" | 
				
			|||
#include "ui_MainWindow.h" | 
				
			|||
 | 
				
			|||
MainWindow::MainWindow(QWidget *parent) | 
				
			|||
	: QMainWindow(parent) | 
				
			|||
	, ui(new Ui::MainWindow) | 
				
			|||
{ | 
				
			|||
	ui->setupUi(this); | 
				
			|||
} | 
				
			|||
 | 
				
			|||
MainWindow::~MainWindow() | 
				
			|||
{ | 
				
			|||
	delete ui; | 
				
			|||
} | 
				
			|||
 | 
				
			|||
@ -0,0 +1,21 @@ | 
				
			|||
#ifndef MAINWINDOW_H | 
				
			|||
#define MAINWINDOW_H | 
				
			|||
 | 
				
			|||
#include <QMainWindow> | 
				
			|||
 | 
				
			|||
QT_BEGIN_NAMESPACE | 
				
			|||
namespace Ui { class MainWindow; } | 
				
			|||
QT_END_NAMESPACE | 
				
			|||
 | 
				
			|||
class MainWindow : public QMainWindow | 
				
			|||
{ | 
				
			|||
	Q_OBJECT | 
				
			|||
 | 
				
			|||
public: | 
				
			|||
	MainWindow(QWidget *parent = nullptr); | 
				
			|||
	~MainWindow(); | 
				
			|||
 | 
				
			|||
private: | 
				
			|||
	Ui::MainWindow *ui; | 
				
			|||
}; | 
				
			|||
#endif // MAINWINDOW_H
 | 
				
			|||
@ -0,0 +1,22 @@ | 
				
			|||
<?xml version="1.0" encoding="UTF-8"?> | 
				
			|||
<ui version="4.0"> | 
				
			|||
 <class>MainWindow</class> | 
				
			|||
 <widget class="QMainWindow" name="MainWindow"> | 
				
			|||
  <property name="geometry"> | 
				
			|||
   <rect> | 
				
			|||
    <x>0</x> | 
				
			|||
    <y>0</y> | 
				
			|||
    <width>800</width> | 
				
			|||
    <height>600</height> | 
				
			|||
   </rect> | 
				
			|||
  </property> | 
				
			|||
  <property name="windowTitle"> | 
				
			|||
   <string>MainWindow</string> | 
				
			|||
  </property> | 
				
			|||
  <widget class="QWidget" name="centralwidget"/> | 
				
			|||
  <widget class="QMenuBar" name="menubar"/> | 
				
			|||
  <widget class="QStatusBar" name="statusbar"/> | 
				
			|||
 </widget> | 
				
			|||
 <resources/> | 
				
			|||
 <connections/> | 
				
			|||
</ui> | 
				
			|||
@ -0,0 +1,31 @@ | 
				
			|||
QT       += core gui | 
				
			|||
 | 
				
			|||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets | 
				
			|||
 | 
				
			|||
CONFIG += c++11 | 
				
			|||
 | 
				
			|||
# The following define makes your compiler emit warnings if you use | 
				
			|||
# any Qt feature that has been marked deprecated (the exact warnings | 
				
			|||
# depend on your compiler). Please consult the documentation of the | 
				
			|||
# deprecated API in order to know how to port your code away from it. | 
				
			|||
DEFINES += QT_DEPRECATED_WARNINGS | 
				
			|||
 | 
				
			|||
# You can also make your code fail to compile if it uses deprecated APIs. | 
				
			|||
# In order to do so, uncomment the following line. | 
				
			|||
# You can also select to disable deprecated APIs only up to a certain version of Qt. | 
				
			|||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0 | 
				
			|||
 | 
				
			|||
SOURCES += \ | 
				
			|||
    main.cpp \ | 
				
			|||
    MainWindow.cpp | 
				
			|||
 | 
				
			|||
HEADERS += \ | 
				
			|||
    MainWindow.h | 
				
			|||
 | 
				
			|||
FORMS += \ | 
				
			|||
    MainWindow.ui | 
				
			|||
 | 
				
			|||
# Default rules for deployment. | 
				
			|||
qnx: target.path = /tmp/$${TARGET}/bin | 
				
			|||
else: unix:!android: target.path = /opt/$${TARGET}/bin | 
				
			|||
!isEmpty(target.path): INSTALLS += target | 
				
			|||
@ -0,0 +1,11 @@ | 
				
			|||
#include "MainWindow.h" | 
				
			|||
 | 
				
			|||
#include <QApplication> | 
				
			|||
 | 
				
			|||
int main(int argc, char *argv[]) | 
				
			|||
{ | 
				
			|||
	QApplication a(argc, argv); | 
				
			|||
	MainWindow w; | 
				
			|||
	w.show(); | 
				
			|||
	return a.exec(); | 
				
			|||
} | 
				
			|||
					Loading…
					
					
				
		Reference in new issue