#include #include "include/LowLevel/HonaLowLevelAPI.h" #include "include/Wrapper/PlxWrapper.h" #include "qdebug.h" #include "QTime" #include "QtConcurrent/QtConcurrent" PlxWrapper plx; 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) { } /*************************************************************************************************/ bool HonaLowLevelAPI::isHsruStarted() { return getHsruIsStarted(); } /*************************************************************************************************/ bool HonaLowLevelAPI::isHiruStarted() { return getHiruIsStarted(); } /*************************************************************************************************/ void HonaLowLevelAPI::deviceReset() { //ApiResult status; //if(ApiResult::success) //{ //} /* QTime t; t.elapsed() PLX_STATUS status = base.DeviceReset(); qDebug() << "Board Reseted, status: " + status.ToString()); if (status == PLX_STATUS.ApiSuccess) { toaStartBoard = (ulong) (DateTime.Now.Ticks); return ApiResult.Success; } else return ApiResult.Error; */ } /*************************************************************************************************/ void HonaLowLevelAPI::setConfig(HonaSettings* honaSetting) { //Initial State Checking /* HonaRegisterBuffer = new uint[8]; // Mode4 :: changed from 5 to 8 by H.H DeviceReadRegisters(0x10000000, ref HonaRegisterBuffer); _honaSetting = Settings; HonaFillRegisters(Settings); DeviceWriteRegisters(0x10000000, HonaRegisterBuffer); HonaRegisterBuffer = new uint[8]; // Mode4 :: changed from 5 to 8 by H.H DeviceReadRegisters(0x10000000, ref HonaRegisterBuffer); return ApiResult.Success; */ } /*************************************************************************************************/ HonaSettings HonaLowLevelAPI::getConfig() { } /*************************************************************************************************/ QString HonaLowLevelAPI::getSwVersion() { } /*************************************************************************************************/ QString HonaLowLevelAPI::getDeviceId() { } /*************************************************************************************************/ void HonaLowLevelAPI::hsruStart() { } /*************************************************************************************************/ void HonaLowLevelAPI::hiruStart() { if(isHiruStarted()) //exceptiom QtConcurrent::run(this, &HonaLowLevelAPI::hsruMainThread); } /*************************************************************************************************/ void HonaLowLevelAPI::init() { } /*************************************************************************************************/ void HonaLowLevelAPI::writeSettingToRegisters(HonaSettings& settings) { honaRegisterBuffer[0] = 0x00000000; /************************************************************************/ if(settings.hiruSettings.recordStard == recorderStart::selfTestCounter) honaRegisterBuffer[0] = 0x80000000; else honaRegisterBuffer[0] = 0x7FFFFFFF; /************************************************************************/ if(settings.hiruSettings.recordChannel == drxDeviceIfChannel::ifChannel12) honaRegisterBuffer[0] = 0x20000000; else honaRegisterBuffer[0] = 0xDFFFFFFF; /************************************************************************/ if(settings.hiruSettings.recordMode == recorderMode::dualChannel) honaRegisterBuffer[0] = 0x10000000; else honaRegisterBuffer[0] = 0xEFFFFFFF; /************************************************************************/ honaRegisterBuffer[0] += (settings.hiruSettings.threshold & 0x00000FFF); honaRegisterBuffer[1] = settings.hsruSettings.honaInt123CTHR; honaRegisterBuffer[2] = settings.hsruSettings.honaRes123CTHR; honaRegisterBuffer[3] = settings.hsruSettings.honaIntSTHR; honaRegisterBuffer[4] = settings.hsruSettings.honaResSTHR; honaRegisterBuffer[5] = settings.hsruSettings.honaSPTHR; honaRegisterBuffer[6] = settings.hsruSettings.intM4_THR; honaRegisterBuffer[7] = settings.hsruSettings.resM4_THR; } /*************************************************************************************************/ void HonaLowLevelAPI::setConfig() { } /*************************************************************************************************/ void HonaLowLevelAPI::hsruMainThread() { QtConcurrent::run(this, &HonaLowLevelAPI::hsruReadThread); QtConcurrent::run(this, &HonaLowLevelAPI::hsruUpdateThread); _mutex.lock(); _hsruStopEvent.wait(&_mutex); _mutex.unlock(); _isReaderThreadFree = true; _isUpdateThreadFree = true; } /*************************************************************************************************/ void HonaLowLevelAPI::hsruReadThread() { while(true) { if(_isReaderThreadFree) break; //dosth _mutex.lock(); _hsruReadDone.wakeAll(); _hsruUpdateAck.wait(&_mutex); _mutex.unlock(); } } /*************************************************************************************************/ void HonaLowLevelAPI::hsruUpdateThread() { while(true) { _mutex.lock(); _hsruReadDone.wait(&_mutex); _mutex.unlock(); if(_isUpdateThreadFree) break; //dosth _hsruUpdateAck.wakeAll(); } } /*************************************************************************************************/ int HonaLowLevelAPI::hiruGetDOA() { } /*************************************************************************************************/