|
|
@ -1,9 +1,28 @@ |
|
|
|
#include <QtConcurrent/QtConcurrent> |
|
|
|
|
|
|
|
#include <include/LowLevel/Utils/Utils.h> |
|
|
|
#include "include/LowLevel/HonaLowLevelAPI.h" |
|
|
|
#include "include/Wrapper/PlxWrapper.h" |
|
|
|
#include "qdebug.h" |
|
|
|
#include "QTime" |
|
|
|
#include "QtConcurrent/QtConcurrent" |
|
|
|
|
|
|
|
#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 |
|
|
|
{ |
|
|
@ -56,7 +75,7 @@ bool HonaLowLevelAPI::isHiruStarted() |
|
|
|
void HonaLowLevelAPI::deviceReset() |
|
|
|
{ |
|
|
|
if(!plxWrapper.deviceReset()) |
|
|
|
throw HonaAlreadyStartedException("Reset Doesnt Occur"); |
|
|
|
throw HonaException("Reset Doesnt Occur"); |
|
|
|
} |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
@ -64,18 +83,18 @@ void HonaLowLevelAPI::setConfig(HonaSettings& settings) |
|
|
|
{ |
|
|
|
if(!plxWrapper.deviceReadRegister(0x10000000, honaRegisterBuffer, 8)) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceReadRegister Doesnt Occur"); |
|
|
|
throw HonaException("DeviceReadRegister Doesnt Occur"); |
|
|
|
} |
|
|
|
_honaSetting = settings; |
|
|
|
writeSettingToRegisters(settings); |
|
|
|
if(!plxWrapper.deviceWriteRegister(0x10000000, honaRegisterBuffer)) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceWriteRegister Doesnt Occur"); |
|
|
|
throw HonaException("DeviceWriteRegister Doesnt Occur"); |
|
|
|
} |
|
|
|
|
|
|
|
if(!plxWrapper.deviceReadRegister(0x10000000, honaRegisterBuffer, 8)) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceReadRegister Doesnt Occur"); |
|
|
|
throw HonaException("DeviceReadRegister Doesnt Occur"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -101,10 +120,15 @@ QString HonaLowLevelAPI::getDeviceId() |
|
|
|
/*************************************************************************************************/ |
|
|
|
void HonaLowLevelAPI::hsruStart() |
|
|
|
{ |
|
|
|
if(!isHsruStarted()) |
|
|
|
throw HonaException("HsruStarted doesn't started "); |
|
|
|
QtConcurrent::run(this, &HonaLowLevelAPI::hsruMainThread); |
|
|
|
setHsruIsStarted(true); |
|
|
|
if(HonaLowLevelAPI::isHsruStarted()) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException(" alreadyStarted"); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
setHsruIsStarted(true); |
|
|
|
QtConcurrent::run(this, &HonaLowLevelAPI::hsruMainThread); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
@ -129,7 +153,12 @@ void HonaLowLevelAPI::init() |
|
|
|
{ |
|
|
|
if(!plxWrapper.deviceInit(0X9054)) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("Init Doesnt Occur"); |
|
|
|
throw HonaException("Init Doesn't Occur"); |
|
|
|
} |
|
|
|
|
|
|
|
if(!plxWrapper.deviceOpen()) |
|
|
|
{ |
|
|
|
throw HonaException("deviceOpen Doesn't Occur"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -156,8 +185,8 @@ void HonaLowLevelAPI::writeSettingToRegisters(HonaSettings& settings) |
|
|
|
/************************************************************************/ |
|
|
|
|
|
|
|
honaRegisterBuffer.insert(0, |
|
|
|
(honaRegisterBuffer.at(0) + |
|
|
|
(settings.hiruSettings.threshold & 0x00000FFF))); |
|
|
|
(honaRegisterBuffer.at(0) + |
|
|
|
(settings.hiruSettings.threshold & 0x00000FFF))); |
|
|
|
|
|
|
|
honaRegisterBuffer.insert(1, settings.hsruSettings.honaInt123CTHR); |
|
|
|
honaRegisterBuffer.insert(2, settings.hsruSettings.honaRes123CTHR); |
|
|
@ -177,26 +206,26 @@ void HonaLowLevelAPI::setConfig() |
|
|
|
/*************************************************************************************************/ |
|
|
|
void HonaLowLevelAPI::hsruMainThread() |
|
|
|
{ |
|
|
|
try |
|
|
|
{ |
|
|
|
deviceReset(); |
|
|
|
setConfig(); |
|
|
|
deviceReset(); |
|
|
|
if(!plxWrapper.deviceEnableInterrupt()) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceEnableInterrupt Doesnt Occur"); |
|
|
|
} |
|
|
|
|
|
|
|
QtConcurrent::run(this, &HonaLowLevelAPI::hsruReadThread); |
|
|
|
QtConcurrent::run(this, &HonaLowLevelAPI::hsruUpdateThread); |
|
|
|
} |
|
|
|
catch(...) |
|
|
|
//try
|
|
|
|
//{
|
|
|
|
deviceReset(); |
|
|
|
setConfig(); |
|
|
|
deviceReset(); |
|
|
|
if(!plxWrapper.deviceEnableInterrupt()) |
|
|
|
{ |
|
|
|
_isHsruReaderThreadFree = true; |
|
|
|
_isHsruUpdateThreadFree = true; |
|
|
|
hsruStop(); |
|
|
|
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(); |
|
|
@ -205,7 +234,7 @@ void HonaLowLevelAPI::hsruMainThread() |
|
|
|
|
|
|
|
if(!plxWrapper.deviceDisableInterrupt()) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceEnableInterrupt Doesnt Occur"); |
|
|
|
throw HonaException("DeviceEnableInterrupt Doesnt Occur"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -220,34 +249,33 @@ void HonaLowLevelAPI::hsruReadThread() |
|
|
|
|
|
|
|
if(!plxWrapper.deviceWaitForInterrupt(1000)) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceWaitForInterrupt Doesnt Occur"); |
|
|
|
throw HonaException("DeviceWaitForInterrupt Doesnt Occur"); |
|
|
|
} |
|
|
|
honaPacketList.clear(); |
|
|
|
_hsruLoss = 0; |
|
|
|
if(!plxWrapper.deviceOpenPCIChannel()) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceOpenPCIChannel Doesnt Occur"); |
|
|
|
throw HonaException("DeviceOpenPCIChannel Doesnt Occur"); |
|
|
|
} |
|
|
|
|
|
|
|
_hsruLoss += hsruParserInt123C(hsruReadHonaBuffer(honaReceivers::int123C), |
|
|
|
honaPacketList); |
|
|
|
honaPacketList); |
|
|
|
_hsruLoss += hsruParserRes123C(hsruReadHonaBuffer(honaReceivers::res123C), |
|
|
|
honaPacketList); |
|
|
|
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); |
|
|
|
honaPacketList); |
|
|
|
if(!plxWrapper.deviceClosePCIChannel()) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceClosePCIChannel Doesnt Occur"); |
|
|
|
throw HonaException("DeviceClosePCIChannel Doesnt Occur"); |
|
|
|
} |
|
|
|
if(!plxWrapper.deviceEnableInterrupt()) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceEnableInterrupt Doesnt Occur"); |
|
|
|
throw HonaException("DeviceEnableInterrupt Doesnt Occur"); |
|
|
|
} |
|
|
|
|
|
|
|
_mutex.lock(); |
|
|
|
_hsruReadDone.wakeAll(); |
|
|
|
_hsruUpdateAck.wait(&_mutex); |
|
|
@ -267,7 +295,7 @@ void HonaLowLevelAPI::hsruUpdateThread() |
|
|
|
break; |
|
|
|
quint32 Doa = 0; |
|
|
|
Doa = hiruGetDOA(); |
|
|
|
emit signalToTop(honaPacketList, _hsruLoss, Doa); |
|
|
|
emit lowLevelHonaData(honaPacketList, _hsruLoss, Doa); |
|
|
|
_hsruUpdateAck.wakeAll(); |
|
|
|
} |
|
|
|
} |
|
|
@ -301,7 +329,7 @@ quint32 HonaLowLevelAPI::hiruGetDOA() |
|
|
|
quint32 Doa = 0; |
|
|
|
if(!plxWrapper.deviceReadRegister(0x30000004, Doa)) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceReadRegister Doesnt Occur"); |
|
|
|
throw HonaException("DeviceReadRegister Doesnt Occur"); |
|
|
|
} |
|
|
|
Doa = Doa & 0x0000FFFF; |
|
|
|
|
|
|
@ -310,20 +338,19 @@ quint32 HonaLowLevelAPI::hiruGetDOA() |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
quint32 HonaLowLevelAPI::hsruParserInt123C(const QVector<quint32>& honaData, |
|
|
|
QList<HonaPacket> honaPacketList) |
|
|
|
QList<HonaPacket>& honaPacketList) |
|
|
|
{ |
|
|
|
quint32 lossFound; |
|
|
|
for(quint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
quint32 lossFound = 0; |
|
|
|
for(qint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
{ |
|
|
|
if((honaData.at(Ind) & 0xFF000000) == 0x0F000000) |
|
|
|
if((honaData[Ind] & 0xFF000000) == 0x0F000000) |
|
|
|
{ |
|
|
|
HonaPacket tempHonaPacketInt123C; |
|
|
|
tempHonaPacketInt123C.setPacketType(honaPacketType::responseMode123C); |
|
|
|
tempHonaPacketInt123C.setPacketType(honaPacketType::interrogationMode123C); |
|
|
|
packetLenInt123C = 6; |
|
|
|
tempHonaPacketInt123C.setPacketNumber(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketInt123C.setPacketNumber(honaData[Ind] & 0x0000FFFF); |
|
|
|
if((tempHonaPacketInt123C.getPacketNumber() != |
|
|
|
(lastPNInt123C + 1)) & (lastPNInt123C > 0)) |
|
|
|
//& (LastPNInt123C != 65535))
|
|
|
|
(lastPNInt123C + 1)) & (lastPNInt123C > 0)) |
|
|
|
{ |
|
|
|
lossFound += |
|
|
|
((tempHonaPacketInt123C.getPacketNumber() - lastPNInt123C + 65536) % 65536 - 1); |
|
|
@ -333,53 +360,49 @@ quint32 HonaLowLevelAPI::hsruParserInt123C(const QVector<quint32>& honaData, |
|
|
|
lossFound++; |
|
|
|
nextInt123C = 1; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x10000000) && (nextInt123C == 1)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextInt123C == 1)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt123C.setToa((qulonglong)(honaData.at(Ind) & 0x0FFFFFFF)); |
|
|
|
tempHonaPacketInt123C.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); |
|
|
|
nextInt123C = 2; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x20000000) && (nextInt123C == 2)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextInt123C == 2)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt123C.setToa(((tempHonaPacketInt123C.getToa()) + |
|
|
|
(qulonglong)((honaData.at(Ind) & 0x0000FFFF) << 28))); |
|
|
|
tempHonaPacketInt123C.setToa((tempHonaPacketInt123C.getToa()) + |
|
|
|
(static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF) << |
|
|
|
28)); |
|
|
|
|
|
|
|
tempHonaPacketInt123C.setPa2((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
tempHonaPacketInt123C.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextInt123C = 3; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x30000000) && (nextInt123C == 3)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextInt123C == 3)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt123C.setDoa(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketInt123C.setPa3((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
tempHonaPacketInt123C.setDoa(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketInt123C.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextInt123C = 4; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x40000000) && (nextInt123C == 4)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextInt123C == 4)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt123C.setPa1(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketInt123C.setPa2((honaData.at(Ind) & 0x000F0000) >> 4); |
|
|
|
tempHonaPacketInt123C.setPa3((honaData.at(Ind) & 0x00F00000) >> 8); |
|
|
|
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.at(Ind) & 0xF0000000) == 0x50000000) && (nextInt123C == 5)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextInt123C == 5)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt123C.setCodeM(((ulong)(honaData.at(Ind) & 0x0000001F)) << 59); |
|
|
|
tempHonaPacketInt123C.setCodeM( |
|
|
|
(static_cast<qulonglong>(honaData[Ind] & 0x0000001F)) << 59); |
|
|
|
tempHonaPacketInt123C.setCodeL(0); |
|
|
|
nextInt123C = 6; |
|
|
|
} |
|
|
|
else if(honaData.at(Ind) == 0xEEEEEEEE) |
|
|
|
{ |
|
|
|
//Console.Write("-");
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
//Console.Write(".");
|
|
|
|
} |
|
|
|
|
|
|
|
if(nextInt123C == packetLenInt123C) |
|
|
|
{ |
|
|
|
if(isValid(tempHonaPacketInt123C)) |
|
|
|
{ |
|
|
|
//tempHonaPacketInt123C.setToa((tempHonaPacketInt123C.getToa()/8)/SimulationSpeed + toaStartBoard);
|
|
|
|
//honaPacketList.append(tempHonaPacketInt123C);
|
|
|
|
tempHonaPacketInt123C.setToa((tempHonaPacketInt123C.getToa() / 8) + toaStartBoard); |
|
|
|
honaPacketList.append(tempHonaPacketInt123C); |
|
|
|
} |
|
|
|
nextInt123C = 0; |
|
|
|
} |
|
|
@ -390,19 +413,18 @@ quint32 HonaLowLevelAPI::hsruParserInt123C(const QVector<quint32>& honaData, |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
quint32 HonaLowLevelAPI::hsruParserRes123C(const QVector<quint32>& honaData, |
|
|
|
QList<HonaPacket> honaPacketList) |
|
|
|
QList<HonaPacket>& honaPacketList) |
|
|
|
{ |
|
|
|
quint32 lossFound = 0; |
|
|
|
for(quint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
for(qint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
{ |
|
|
|
if((honaData.at(Ind) & 0xFF000000) == 0x0F000000) |
|
|
|
if((honaData[Ind] & 0xFF000000) == 0x0F000000) |
|
|
|
{ |
|
|
|
tempHonaPacketRes123C.setPacketNumber(honaPacketType::responseMode123C); |
|
|
|
tempHonaPacketRes123C.setPacketType(honaPacketType::responseMode123C); |
|
|
|
packetLenRes123C = 6; |
|
|
|
tempHonaPacketRes123C.setPacketNumber(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketRes123C.setPacketNumber(honaData[Ind] & 0x0000FFFF); |
|
|
|
if((tempHonaPacketRes123C.getPacketNumber() != |
|
|
|
(lastPNRes123C + 1)) & (lastPNRes123C > 0)) |
|
|
|
//& (LastPNRes123C != 65535))
|
|
|
|
(lastPNRes123C + 1)) & (lastPNRes123C > 0)) |
|
|
|
{ |
|
|
|
lossFound += |
|
|
|
((tempHonaPacketRes123C.getPacketNumber() - lastPNRes123C + 65536) % 65536 - 1); |
|
|
@ -412,54 +434,48 @@ quint32 HonaLowLevelAPI::hsruParserRes123C(const QVector<quint32>& honaData, |
|
|
|
lossFound++; |
|
|
|
nextRes123C = 1; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x10000000) && (nextRes123C == 1)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextRes123C == 1)) |
|
|
|
{ |
|
|
|
tempHonaPacketRes123C.setToa((qulonglong)(honaData.at(Ind) & 0x0FFFFFFF)); |
|
|
|
tempHonaPacketRes123C.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); |
|
|
|
nextRes123C = 2; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x20000000) && (nextRes123C == 2)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextRes123C == 2)) |
|
|
|
{ |
|
|
|
tempHonaPacketRes123C.setToa(tempHonaPacketRes123C.getToa() + |
|
|
|
(((ulong)(honaData.at(Ind) & 0x0000FFFF)) << 28)); |
|
|
|
tempHonaPacketRes123C.setPa2((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
((static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF)) << |
|
|
|
28)); |
|
|
|
tempHonaPacketRes123C.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextRes123C = 3; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x30000000) && (nextRes123C == 3)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextRes123C == 3)) |
|
|
|
{ |
|
|
|
tempHonaPacketRes123C.setDoa(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketRes123C.setPa3((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
tempHonaPacketRes123C.setDoa(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketRes123C.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextRes123C = 4; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x40000000) && (nextRes123C == 4)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextRes123C == 4)) |
|
|
|
{ |
|
|
|
tempHonaPacketRes123C.setPa1(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketRes123C.setPa1(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketRes123C.setPa2(tempHonaPacketRes123C.getPa2() + |
|
|
|
((honaData.at(Ind) & 0x000F0000) >> 4)); |
|
|
|
((honaData[Ind] & 0x000F0000) >> 4)); |
|
|
|
tempHonaPacketRes123C.setPa3(tempHonaPacketRes123C.getPa3() + |
|
|
|
((honaData.at(Ind) & 0x00F00000) >> 8)); |
|
|
|
((honaData[Ind] & 0x00F00000) >> 8)); |
|
|
|
nextRes123C = 5; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x50000000) && (nextRes123C == 5)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextRes123C == 5)) |
|
|
|
{ |
|
|
|
tempHonaPacketRes123C.setCodeM(((ulong)(honaData.at(Ind) & 0x00001FFF)) << 51); |
|
|
|
tempHonaPacketRes123C.setCodeM( |
|
|
|
(static_cast<qulonglong>(honaData[Ind] & 0x00001FFF)) << 51); |
|
|
|
tempHonaPacketRes123C.setCodeL(0); |
|
|
|
nextRes123C = 6; |
|
|
|
} |
|
|
|
else if(honaData.at(Ind) == 0xEEEEEEEE) |
|
|
|
{ |
|
|
|
//Console.Write("-");
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
//Console.Write(".");
|
|
|
|
} |
|
|
|
|
|
|
|
if(nextRes123C == packetLenRes123C) |
|
|
|
{ |
|
|
|
if(isValid(tempHonaPacketRes123C)) |
|
|
|
{ |
|
|
|
//tempHonaPacketRes123C.setDoa((tempHonaPacketRes123C.TOA/8)/SimulationSpeed + toaStartBoard);
|
|
|
|
//honaPacketList.append(tempHonaPacketRes123C);
|
|
|
|
tempHonaPacketRes123C.setToa((tempHonaPacketRes123C.getToa() / 8) + toaStartBoard); |
|
|
|
honaPacketList.append(tempHonaPacketRes123C); |
|
|
|
} |
|
|
|
nextRes123C = 0; |
|
|
|
} |
|
|
@ -470,14 +486,14 @@ quint32 HonaLowLevelAPI::hsruParserRes123C(const QVector<quint32>& honaData, |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
quint32 HonaLowLevelAPI::hsruParserIntS(const QVector<quint32>& honaData, |
|
|
|
QList<HonaPacket> honaPacketList) |
|
|
|
QList<HonaPacket>& honaPacketList) |
|
|
|
{ |
|
|
|
uint lossFound = 0; |
|
|
|
for(quint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
for(qint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
{ |
|
|
|
if((honaData.at(Ind) & 0xFF000000) == 0x0F000000) |
|
|
|
if((honaData[Ind] & 0xFF000000) == 0x0F000000) |
|
|
|
{ |
|
|
|
uint TypeVal = (honaData.at(Ind) & 0x00F00000) >> 20; |
|
|
|
qint32 TypeVal = (honaData[Ind] & 0x00F00000) >> 20; |
|
|
|
if(TypeVal == 2) |
|
|
|
{ |
|
|
|
tempHonaPacketIntS.setPacketType(honaPacketType::interrogationModeS56); |
|
|
@ -488,9 +504,8 @@ quint32 HonaLowLevelAPI::hsruParserIntS(const QVector<quint32>& honaData, |
|
|
|
tempHonaPacketIntS.setPacketType(honaPacketType::interrogationModeS112); |
|
|
|
packetLenIntS = 9; |
|
|
|
} |
|
|
|
tempHonaPacketIntS.setPacketNumber(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketIntS.setPacketNumber(honaData[Ind] & 0x0000FFFF); |
|
|
|
if((tempHonaPacketIntS.getPacketNumber() != (lastPNIntS + 1)) & (lastPNIntS > 0)) |
|
|
|
//& (LastPNIntS != 65535))
|
|
|
|
{ |
|
|
|
lossFound += |
|
|
|
((tempHonaPacketIntS.getPacketNumber() - lastPNIntS + 65536) % 65536 - 1); |
|
|
@ -500,74 +515,67 @@ quint32 HonaLowLevelAPI::hsruParserIntS(const QVector<quint32>& honaData, |
|
|
|
lossFound++; |
|
|
|
nextIntS = 1; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x10000000) && (nextIntS == 1)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextIntS == 1)) |
|
|
|
{ |
|
|
|
tempHonaPacketIntS.setToa((qulonglong)(honaData.at(Ind) & 0x0FFFFFFF)); |
|
|
|
tempHonaPacketIntS.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); |
|
|
|
nextIntS = 2; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x20000000) && (nextIntS == 2)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextIntS == 2)) |
|
|
|
{ |
|
|
|
tempHonaPacketIntS.setToa(tempHonaPacketIntS.getToa() + |
|
|
|
(((ulong)(honaData.at(Ind) & 0x0000FFFF)) << 28)); |
|
|
|
tempHonaPacketIntS.setToa((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
((static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF)) << |
|
|
|
28)); |
|
|
|
tempHonaPacketIntS.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextIntS = 3; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x30000000) && (nextIntS == 3)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextIntS == 3)) |
|
|
|
{ |
|
|
|
tempHonaPacketIntS.setDoa(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketIntS.setPa3((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
tempHonaPacketIntS.setDoa(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketIntS.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextIntS = 4; |
|
|
|
} |
|
|
|
else if(((honaData.at(static_cast<int>(Ind)) & 0xF0000000) == 0x40000000) && |
|
|
|
(nextIntS == 4)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextIntS == 4)) |
|
|
|
{ |
|
|
|
tempHonaPacketIntS.setPa1(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketIntS.setPa2(tempHonaPacketIntS.getPa2() + ((honaData.at( |
|
|
|
Ind) & 0x000F0000))); |
|
|
|
tempHonaPacketIntS.setPa1(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketIntS.setPa2(tempHonaPacketIntS.getPa2() + ((honaData[Ind] & 0x000F0000))); |
|
|
|
tempHonaPacketIntS.setPa3(tempHonaPacketIntS.getPa3() + |
|
|
|
((honaData.at(Ind) & 0x00F00000) >> 4)); |
|
|
|
((honaData[Ind] & 0x00F00000) >> 4)); |
|
|
|
nextIntS = 5; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x50000000) && (nextIntS == 5)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextIntS == 5)) |
|
|
|
{ |
|
|
|
tempHonaPacketIntS.setCodeM(((ulong)(honaData.at(Ind) & 0x0FFFFFFF)) << 8); |
|
|
|
tempHonaPacketIntS.setCodeM((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << 8); |
|
|
|
tempHonaPacketIntS.setCodeL(0); |
|
|
|
nextIntS = 6; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x60000000) && (nextIntS == 6)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x60000000) && (nextIntS == 6)) |
|
|
|
{ |
|
|
|
tempHonaPacketIntS.setCodeM(tempHonaPacketIntS.getCodeM() + |
|
|
|
((ulong)(honaData.at(Ind) & 0x0FFFFFFF)) << 36); |
|
|
|
(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << |
|
|
|
36); |
|
|
|
tempHonaPacketIntS.setCodeL(0); |
|
|
|
nextIntS = 7; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x70000000) && (nextIntS == 7)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x70000000) && (nextIntS == 7)) |
|
|
|
{ |
|
|
|
tempHonaPacketIntS.setCodeL(tempHonaPacketIntS.getCodeM()); |
|
|
|
tempHonaPacketIntS.setCodeM(((ulong)(honaData.at(Ind) & 0x0FFFFFFF)) << 8); |
|
|
|
tempHonaPacketIntS.setCodeM((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << 8); |
|
|
|
nextIntS = 8; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x80000000) && (nextIntS == 8)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x80000000) && (nextIntS == 8)) |
|
|
|
{ |
|
|
|
tempHonaPacketIntS.setCodeM(tempHonaPacketIntS.getCodeM() + |
|
|
|
((ulong)(honaData.at(Ind) & 0x0FFFFFFF)) << 36); |
|
|
|
(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << |
|
|
|
36); |
|
|
|
nextIntS = 9; |
|
|
|
} |
|
|
|
else if(honaData.at(Ind) == 0xEEEEEEEE) |
|
|
|
{ |
|
|
|
//Console.Write("-");
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
//Console.Write(".");
|
|
|
|
} |
|
|
|
|
|
|
|
if(nextIntS == packetLenIntS) |
|
|
|
{ |
|
|
|
if(isValid(tempHonaPacketIntS)) |
|
|
|
{ |
|
|
|
//tempHonaPacketIntS.setToa( (tempHonaPacketIntS.getToa()/8)/SimulationSpeed + toaStartBoard;
|
|
|
|
//honaPacketList.append(tempHonaPacketIntS);
|
|
|
|
tempHonaPacketIntS.setToa((tempHonaPacketIntS.getToa() / 8) + toaStartBoard); |
|
|
|
honaPacketList.append(tempHonaPacketIntS); |
|
|
|
} |
|
|
|
nextIntS = 0; |
|
|
|
} |
|
|
@ -578,14 +586,14 @@ quint32 HonaLowLevelAPI::hsruParserIntS(const QVector<quint32>& honaData, |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
quint32 HonaLowLevelAPI::hsruParserResS(const QVector<quint32>& honaData, |
|
|
|
QList<HonaPacket> honaPacketList) |
|
|
|
QList<HonaPacket>& honaPacketList) |
|
|
|
{ |
|
|
|
uint lossFound = 0; |
|
|
|
for(quint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
for(qint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
{ |
|
|
|
if((honaData.at(Ind) & 0xFF000000) == 0x0F000000) |
|
|
|
if((honaData[Ind] & 0xFF000000) == 0x0F000000) |
|
|
|
{ |
|
|
|
uint TypeVal = (honaData.at(Ind) & 0x00F00000) >> 20; |
|
|
|
qint32 TypeVal = (honaData[Ind] & 0x00F00000) >> 20; |
|
|
|
if(TypeVal == 4) |
|
|
|
{ |
|
|
|
tempHonaPacketResS.setPacketType(honaPacketType::responseModeS56); |
|
|
@ -596,9 +604,8 @@ quint32 HonaLowLevelAPI::hsruParserResS(const QVector<quint32>& honaData, |
|
|
|
tempHonaPacketResS.setPacketType(honaPacketType::responseModeS112); |
|
|
|
packetLenResS = 9; |
|
|
|
} |
|
|
|
tempHonaPacketResS.setPacketNumber(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketResS.setPacketNumber(honaData[Ind] & 0x0000FFFF); |
|
|
|
if((tempHonaPacketResS.getPacketNumber() != (lastPNResS + 1)) & (lastPNResS > 0)) |
|
|
|
//& (LastPNResS != 65535))
|
|
|
|
{ |
|
|
|
lossFound += |
|
|
|
((tempHonaPacketResS.getPacketNumber() - lastPNResS + 65536) % 65536 - 1); |
|
|
@ -608,78 +615,66 @@ quint32 HonaLowLevelAPI::hsruParserResS(const QVector<quint32>& honaData, |
|
|
|
lossFound++; |
|
|
|
nextResS = 1; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x10000000) && (nextResS == 1)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextResS == 1)) |
|
|
|
{ |
|
|
|
tempHonaPacketResS.setToa(static_cast<qulonglong>(honaData.at(Ind) & 0x0FFFFFFF)); |
|
|
|
tempHonaPacketResS.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); |
|
|
|
nextResS = 2; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x20000000) && (nextResS == 2)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextResS == 2)) |
|
|
|
{ |
|
|
|
tempHonaPacketResS.setDoa(tempHonaPacketResS.getDoa() + |
|
|
|
((static_cast<qulonglong>(honaData.at(Ind) & 0x0000FFFF)) << |
|
|
|
28)); |
|
|
|
tempHonaPacketResS.setPa2((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
tempHonaPacketResS.setToa(tempHonaPacketResS.getToa() + |
|
|
|
((static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF)) << |
|
|
|
28)); |
|
|
|
tempHonaPacketResS.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextResS = 3; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x30000000) && (nextResS == 3)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextResS == 3)) |
|
|
|
{ |
|
|
|
tempHonaPacketResS.setDoa(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketResS.setPa3((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
tempHonaPacketResS.setDoa(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketResS.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextResS = 4; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x40000000) && (nextResS == 4)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextResS == 4)) |
|
|
|
{ |
|
|
|
tempHonaPacketResS.setPa1(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketResS.setPa2(tempHonaPacketResS.getPa2() + ((honaData.at( |
|
|
|
Ind) & 0x000F0000))); |
|
|
|
tempHonaPacketResS.setPa1(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketResS.setPa2(tempHonaPacketResS.getPa2() + ((honaData[Ind] & 0x000F0000))); |
|
|
|
tempHonaPacketResS.setPa3(tempHonaPacketResS.getPa3() + |
|
|
|
((honaData.at(Ind) & 0x00F00000) >> 4)); |
|
|
|
((honaData[Ind] & 0x00F00000) >> 4)); |
|
|
|
nextResS = 5; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x50000000) && (nextResS == 5)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextResS == 5)) |
|
|
|
{ |
|
|
|
tempHonaPacketResS.setCodeM((static_cast<qulonglong>(honaData.at( |
|
|
|
Ind) & 0x0FFFFFFF)) << 8); |
|
|
|
tempHonaPacketResS.setCodeM((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << 8); |
|
|
|
tempHonaPacketResS.setCodeL(0); |
|
|
|
nextResS = 6; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x60000000) && (nextResS == 6)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x60000000) && (nextResS == 6)) |
|
|
|
{ |
|
|
|
tempHonaPacketResS.setCodeM(tempHonaPacketResS.getCodeM() + |
|
|
|
(static_cast<qulonglong>(honaData.at( |
|
|
|
Ind) & 0x0FFFFFFF)) << 36); |
|
|
|
(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << |
|
|
|
36); |
|
|
|
tempHonaPacketResS.setCodeL(0); |
|
|
|
nextResS = 7; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x70000000) && (nextResS == 7)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x70000000) && (nextResS == 7)) |
|
|
|
{ |
|
|
|
tempHonaPacketResS.setCodeL(tempHonaPacketResS.getCodeM()); |
|
|
|
tempHonaPacketResS.setCodeM((static_cast<qulonglong>(honaData.at( |
|
|
|
Ind) & 0x0FFFFFFF)) << 8); |
|
|
|
tempHonaPacketResS.setCodeM((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << 8); |
|
|
|
nextResS = 8; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x80000000) && (nextResS == 8)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x80000000) && (nextResS == 8)) |
|
|
|
{ |
|
|
|
tempHonaPacketResS.setCodeM(tempHonaPacketResS.getCodeM() + |
|
|
|
(static_cast<qulonglong>(honaData.at( |
|
|
|
Ind) & 0x0FFFFFFF)) << 36); |
|
|
|
(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)) << |
|
|
|
36); |
|
|
|
nextResS = 9; |
|
|
|
} |
|
|
|
else if(honaData.at(Ind) == 0xEEEEEEEE) |
|
|
|
{ |
|
|
|
//Console.Write("-");
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
//Console.Write(".");
|
|
|
|
} |
|
|
|
|
|
|
|
if(nextResS == packetLenResS) |
|
|
|
{ |
|
|
|
if(isValid(tempHonaPacketResS)) |
|
|
|
{ |
|
|
|
//tempHonaPacketResS.setToa( (tempHonaPacketResS.getToa()/8)/SimulationSpeed + toaStartBoard;
|
|
|
|
//honaPacketList.append(tempHonaPacketResS);
|
|
|
|
tempHonaPacketResS.setToa((tempHonaPacketResS.getToa() / 8) + toaStartBoard); |
|
|
|
honaPacketList.append(tempHonaPacketResS); |
|
|
|
} |
|
|
|
nextResS = 0; |
|
|
|
} |
|
|
@ -690,18 +685,18 @@ quint32 HonaLowLevelAPI::hsruParserResS(const QVector<quint32>& honaData, |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
quint32 HonaLowLevelAPI::hsruParserInt4(const QVector<quint32>& honaData, |
|
|
|
QList<HonaPacket> honaPacketList) |
|
|
|
QList<HonaPacket>& honaPacketList) |
|
|
|
{ |
|
|
|
uint lossFound = 0; |
|
|
|
|
|
|
|
for(quint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
for(qint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
{ |
|
|
|
if((honaData.at(Ind) & 0xFF000000) == 0x0F000000) |
|
|
|
if((honaData[Ind] & 0xFF000000) == 0x0F000000) |
|
|
|
{ |
|
|
|
tempHonaPacketInt4.setPacketType(honaPacketType::interrogationMode4); |
|
|
|
packetLenInt4 = 7; |
|
|
|
tempHonaPacketInt4.setPacketNumber(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
if((tempHonaPacketInt4.getPacketNumber() != (lastPNInt4 + 1)) & (lastPNInt4 > 0)) //& (LastPNInt123C != 65535))
|
|
|
|
tempHonaPacketInt4.setPacketNumber(honaData[Ind] & 0x0000FFFF); |
|
|
|
if((tempHonaPacketInt4.getPacketNumber() != (lastPNInt4 + 1)) & (lastPNInt4 > 0)) |
|
|
|
{ |
|
|
|
lossFound += |
|
|
|
((tempHonaPacketInt4.getPacketNumber() - lastPNInt4 + 65536) % 65536 - 1); |
|
|
@ -711,64 +706,56 @@ quint32 HonaLowLevelAPI::hsruParserInt4(const QVector<quint32>& honaData, |
|
|
|
lossFound++; |
|
|
|
nextInt4 = 1; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x10000000) && (nextInt4 == 1)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextInt4 == 1)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt4.setToa(static_cast<qulonglong>(honaData.at(Ind) & 0x0FFFFFFF)); |
|
|
|
tempHonaPacketInt4.setToa(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); |
|
|
|
nextInt4 = 2; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x20000000) && (nextInt4 == 2)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextInt4 == 2)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt4.setToa(tempHonaPacketInt4.getToa() + |
|
|
|
((static_cast<qulonglong>(honaData.at(Ind) & 0x0000FFFF)) << |
|
|
|
28)); |
|
|
|
tempHonaPacketInt4.setPa2((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
((static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF)) << |
|
|
|
28)); |
|
|
|
tempHonaPacketInt4.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextInt4 = 3; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x30000000) && (nextInt4 == 3)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextInt4 == 3)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt4.setDoa(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketInt4.setPa3((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
tempHonaPacketInt4.setDoa(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketInt4.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextInt4 = 4; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x40000000) && (nextInt4 == 4)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextInt4 == 4)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt4.setPa1(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketInt4.setPa1(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketInt4.setPa2(tempHonaPacketInt4.getPa2() + |
|
|
|
((honaData.at(Ind) & 0x000F0000) >> 4)); |
|
|
|
((honaData[Ind] & 0x000F0000) >> 4)); |
|
|
|
tempHonaPacketInt4.setPa3(tempHonaPacketInt4.getPa3() + |
|
|
|
((honaData.at(Ind) & 0x00F00000) >> 8)); |
|
|
|
((honaData[Ind] & 0x00F00000) >> 8)); |
|
|
|
nextInt4 = 5; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x50000000) && (nextInt4 == 5)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x50000000) && (nextInt4 == 5)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt4.setCodeM(0); |
|
|
|
tempHonaPacketInt4.setCodeL(static_cast<qulonglong>(honaData.at(Ind) & 0x0FFFFFFF)); |
|
|
|
tempHonaPacketInt4.setCodeL(static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF)); |
|
|
|
nextInt4 = 6; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x60000000) && (nextInt4 == 6)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x60000000) && (nextInt4 == 6)) |
|
|
|
{ |
|
|
|
tempHonaPacketInt4.setPa4(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketInt4.setPa4(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketInt4.setCodeL(tempHonaPacketInt4.getCodeL() + |
|
|
|
((static_cast<qulonglong>(honaData.at(Ind) & 0x000F0000)) << |
|
|
|
12)); |
|
|
|
tempHonaPacketInt4.setm4Status((quint8)((honaData.at(Ind) & 0x0F000000) >> 20)); |
|
|
|
((static_cast<qulonglong>(honaData[Ind] & 0x000F0000)) << |
|
|
|
12)); |
|
|
|
tempHonaPacketInt4.setm4Status(static_cast<quint8>((honaData[Ind] & 0x0F000000) >> 20)); |
|
|
|
nextInt4 = 7; |
|
|
|
} |
|
|
|
else if(honaData.at(Ind) == 0xEEEEEEEE) |
|
|
|
{ |
|
|
|
//Console.Write("-");
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
//Console.Write(".");
|
|
|
|
} |
|
|
|
|
|
|
|
if(nextInt4 == packetLenInt4) |
|
|
|
{ |
|
|
|
if(isValid(tempHonaPacketInt4)) |
|
|
|
{ |
|
|
|
//tempHonaPacketInt4.setToa((tempHonaPacketInt4.TOA / 6) / SimulationSpeed + toaStartBoard);
|
|
|
|
//honaPacketList.append(tempHonaPacketInt4);
|
|
|
|
tempHonaPacketInt4.setToa((tempHonaPacketInt4.getToa() / 6) + toaStartBoard); |
|
|
|
honaPacketList.append(tempHonaPacketInt4); |
|
|
|
} |
|
|
|
nextInt4 = 0; |
|
|
|
} |
|
|
@ -778,17 +765,17 @@ quint32 HonaLowLevelAPI::hsruParserInt4(const QVector<quint32>& honaData, |
|
|
|
} |
|
|
|
|
|
|
|
quint32 HonaLowLevelAPI::hsruParserRes4(const QVector<quint32>& honaData, |
|
|
|
QList<HonaPacket> honaPacketList) |
|
|
|
QList<HonaPacket>& honaPacketList) |
|
|
|
{ |
|
|
|
uint lossFound = 0; |
|
|
|
for(quint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
for(qint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
{ |
|
|
|
if((honaData.at(Ind) & 0xFF000000) == 0x0F000000) |
|
|
|
if((honaData[Ind] & 0xFF000000) == 0x0F000000) |
|
|
|
{ |
|
|
|
tempHonaPacketRes4.setPacketType(honaPacketType::responseMode4); |
|
|
|
packetLenRes4 = 5; |
|
|
|
tempHonaPacketRes4.setPacketNumber(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
if((tempHonaPacketRes4.getPacketNumber() != (lastPNRes4 + 1)) & (lastPNRes4 > 0)) //& (LastPNRes123C != 65535))
|
|
|
|
tempHonaPacketRes4.setPacketNumber(honaData[Ind] & 0x0000FFFF); |
|
|
|
if((tempHonaPacketRes4.getPacketNumber() != (lastPNRes4 + 1)) & (lastPNRes4 > 0)) |
|
|
|
{ |
|
|
|
lossFound += |
|
|
|
((tempHonaPacketRes4.getPacketNumber() - lastPNRes4 + 65536) % 65536 - 1); |
|
|
@ -798,49 +785,41 @@ quint32 HonaLowLevelAPI::hsruParserRes4(const QVector<quint32>& honaData, |
|
|
|
lossFound++; |
|
|
|
nextRes4 = 1; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x10000000) && (nextRes4 == 1)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextRes4 == 1)) |
|
|
|
{ |
|
|
|
tempHonaPacketRes4.setToa((static_cast<qulonglong>(honaData.at(Ind) & 0x0FFFFFFF))); |
|
|
|
tempHonaPacketRes4.setToa((static_cast<qulonglong>(honaData[Ind] & 0x0FFFFFFF))); |
|
|
|
nextRes4 = 2; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x20000000) && (nextRes4 == 2)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextRes4 == 2)) |
|
|
|
{ |
|
|
|
tempHonaPacketRes4.setToa(tempHonaPacketRes4.getToa() + |
|
|
|
(static_cast<qulonglong>(honaData.at(Ind) & 0x0000FFFF) << |
|
|
|
28)); |
|
|
|
tempHonaPacketRes4.setPa2((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
(static_cast<qulonglong>(honaData[Ind] & 0x0000FFFF) << |
|
|
|
28)); |
|
|
|
tempHonaPacketRes4.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextRes4 = 3; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x30000000) && (nextRes4 == 3)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextRes4 == 3)) |
|
|
|
{ |
|
|
|
tempHonaPacketRes4.setDoa(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketRes4.setPa3((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
tempHonaPacketRes4.setDoa(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketRes4.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextRes4 = 4; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x40000000) && (nextRes4 == 4)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextRes4 == 4)) |
|
|
|
{ |
|
|
|
tempHonaPacketRes4.setPa1(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketRes4.setPa2(tempHonaPacketRes4.getPa2() + (honaData.at( |
|
|
|
Ind) & 0x000F0000) >> 4); //NOTE: shifted by 4
|
|
|
|
tempHonaPacketRes4.setPa3(tempHonaPacketRes4.getPa3() + (honaData.at( |
|
|
|
Ind) & 0x00F00000) >> 8); //NOTE: shifted by 8
|
|
|
|
tempHonaPacketRes4.setPa1(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketRes4.setPa2(tempHonaPacketRes4.getPa2() + |
|
|
|
((honaData[Ind] & 0x000F0000) >> 4)); |
|
|
|
tempHonaPacketRes4.setPa3(tempHonaPacketRes4.getPa3() + |
|
|
|
((honaData[Ind] & 0x00F00000) >> 8)); |
|
|
|
nextRes4 = 5; |
|
|
|
} |
|
|
|
else if(honaData.at(Ind) == 0xEEEEEEEE) |
|
|
|
{ |
|
|
|
//Console.Write("-");
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
//Console.Write(".");
|
|
|
|
} |
|
|
|
|
|
|
|
if(nextRes4 == packetLenRes4) |
|
|
|
{ |
|
|
|
if(isValid(tempHonaPacketRes4)) |
|
|
|
{ |
|
|
|
//tempHonaPacketRes4.setToa((tempHonaPacketRes4.getToa() / 6) / SimulationSpeed + toaStartBoard);
|
|
|
|
//honaPacketList.append(tempHonaPacketRes4);
|
|
|
|
tempHonaPacketRes4.setToa((tempHonaPacketRes4.getToa() / 6) + toaStartBoard); |
|
|
|
honaPacketList.append(tempHonaPacketRes4); |
|
|
|
} |
|
|
|
nextRes4 = 0; |
|
|
|
} |
|
|
@ -851,19 +830,18 @@ quint32 HonaLowLevelAPI::hsruParserRes4(const QVector<quint32>& honaData, |
|
|
|
|
|
|
|
/*************************************************************************************************/ |
|
|
|
quint32 HonaLowLevelAPI::hsruParserSinglePulse(const QVector<quint32>& honaData, |
|
|
|
QList<HonaPacket> honaPacketList) |
|
|
|
QList<HonaPacket>& honaPacketList) |
|
|
|
{ |
|
|
|
uint lossFound = 0; |
|
|
|
for(quint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
for(qint32 Ind = 0; Ind < honaData.length(); Ind++) |
|
|
|
{ |
|
|
|
if((honaData.at(Ind) & 0xFF000000) == 0x0F000000) |
|
|
|
if((honaData[Ind] & 0xFF000000) == 0x0F000000) |
|
|
|
{ |
|
|
|
tempHonaPacketSinglePulse.setPacketType(honaPacketType::singlePulseMode4); |
|
|
|
packetLenSinglePulse = 5; |
|
|
|
tempHonaPacketSinglePulse.setPacketNumber(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketSinglePulse.setPacketNumber(honaData[Ind] & 0x0000FFFF); |
|
|
|
if((tempHonaPacketSinglePulse.getPacketNumber() != |
|
|
|
(lastPNSinglePulse + 1)) & (lastPNSinglePulse > 0)) |
|
|
|
; |
|
|
|
(lastPNSinglePulse + 1)) & (lastPNSinglePulse > 0)) |
|
|
|
{ |
|
|
|
lossFound += |
|
|
|
((tempHonaPacketSinglePulse.getPacketNumber() - lastPNSinglePulse + 65536) % |
|
|
@ -875,50 +853,43 @@ quint32 HonaLowLevelAPI::hsruParserSinglePulse(const QVector<quint32>& honaData, |
|
|
|
lossFound++; |
|
|
|
nextSinglePulse = 1; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x10000000) && (nextSinglePulse == 1)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x10000000) && (nextSinglePulse == 1)) |
|
|
|
{ |
|
|
|
tempHonaPacketSinglePulse.setToa(static_cast<qulonglong>(honaData.at(Ind) & |
|
|
|
0x0FFFFFFF)); |
|
|
|
tempHonaPacketSinglePulse.setToa(static_cast<qulonglong>(honaData[Ind] & |
|
|
|
0x0FFFFFFF)); |
|
|
|
nextSinglePulse = 2; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x20000000) && (nextSinglePulse == 2)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x20000000) && (nextSinglePulse == 2)) |
|
|
|
{ |
|
|
|
tempHonaPacketSinglePulse.setToa(tempHonaPacketSinglePulse.getToa() + |
|
|
|
((static_cast<qulonglong>(honaData.at(Ind) & |
|
|
|
0x0000FFFF)) << 28)); |
|
|
|
tempHonaPacketSinglePulse.setPa2((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
((static_cast<qulonglong>(honaData[Ind] & |
|
|
|
0x0000FFFF)) << 28)); |
|
|
|
tempHonaPacketSinglePulse.setPa2((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextSinglePulse = 3; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x30000000) && (nextSinglePulse == 3)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x30000000) && (nextSinglePulse == 3)) |
|
|
|
{ |
|
|
|
tempHonaPacketSinglePulse.setDoa(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketSinglePulse.setPa3((honaData.at(Ind) & 0x0FFF0000) >> 16); |
|
|
|
tempHonaPacketSinglePulse.setDoa(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketSinglePulse.setPa3((honaData[Ind] & 0x0FFF0000) >> 16); |
|
|
|
nextSinglePulse = 4; |
|
|
|
} |
|
|
|
else if(((honaData.at(Ind) & 0xF0000000) == 0x40000000) && (nextSinglePulse == 4)) |
|
|
|
else if(((honaData[Ind] & 0xF0000000) == 0x40000000) && (nextSinglePulse == 4)) |
|
|
|
{ |
|
|
|
tempHonaPacketSinglePulse.setPa1(honaData.at(Ind) & 0x0000FFFF); |
|
|
|
tempHonaPacketSinglePulse.setPa1(honaData[Ind] & 0x0000FFFF); |
|
|
|
tempHonaPacketSinglePulse.setPa2(tempHonaPacketSinglePulse.getPa2() + |
|
|
|
((honaData.at(Ind) & 0x000F0000) >> 4)); //NOTE: shifted by 4
|
|
|
|
((honaData[Ind] & 0x000F0000) >> 4)); |
|
|
|
tempHonaPacketSinglePulse.setPa3(tempHonaPacketSinglePulse.getPa3() + |
|
|
|
((honaData.at(Ind) & 0x00F00000) >> 8)); //NOTE: shifted by 8
|
|
|
|
((honaData[Ind] & 0x00F00000) >> 8)); |
|
|
|
nextSinglePulse = 5; |
|
|
|
} |
|
|
|
else if(honaData.at(Ind) == 0xEEEEEEEE) |
|
|
|
{ |
|
|
|
//Console.Write("-");
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
//Console.Write(".");
|
|
|
|
} |
|
|
|
|
|
|
|
if(nextSinglePulse == packetLenSinglePulse) |
|
|
|
{ |
|
|
|
if(isValid(tempHonaPacketSinglePulse)) |
|
|
|
{ |
|
|
|
//tempHonaPacketSinglePulse.setToa((tempHonaPacketSinglePulse.getToa() / 6) / SimulationSpeed + toaStartBoard);
|
|
|
|
//honaPacketList.append(tempHonaPacketSinglePulse);
|
|
|
|
tempHonaPacketSinglePulse.setToa( |
|
|
|
(tempHonaPacketSinglePulse.getToa() / 6) + toaStartBoard); |
|
|
|
honaPacketList.append(tempHonaPacketSinglePulse); |
|
|
|
} |
|
|
|
nextSinglePulse = 0; |
|
|
|
} |
|
|
@ -942,11 +913,11 @@ QVector<quint32> HonaLowLevelAPI::hsruReadHonaBuffer(honaReceivers receiver) |
|
|
|
address = 0X70000000; |
|
|
|
else if(receiver == honaReceivers::resS) |
|
|
|
address = 0X80000000; |
|
|
|
else if(receiver == honaReceivers::int4) //Mode4 :: added by H.H
|
|
|
|
else if(receiver == honaReceivers::int4) |
|
|
|
address = 0X90000000; |
|
|
|
else if(receiver == honaReceivers::res4) //Mode4 :: added by H.H
|
|
|
|
else if(receiver == honaReceivers::res4) |
|
|
|
address = 0XA0000000; |
|
|
|
else if(receiver == honaReceivers::singlePulse) //Mode4 :: added by H.H
|
|
|
|
else if(receiver == honaReceivers::singlePulse) |
|
|
|
address = 0XB0000000; |
|
|
|
|
|
|
|
else |
|
|
@ -954,9 +925,13 @@ QVector<quint32> HonaLowLevelAPI::hsruReadHonaBuffer(honaReceivers receiver) |
|
|
|
|
|
|
|
if(!plxWrapper.deviceReadMemory(address, honaData, honaData.size())) |
|
|
|
{ |
|
|
|
throw HonaAlreadyStartedException("DeviceReadMemory Doesnt Occur"); |
|
|
|
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; |
|
|
|
} |
|
|
|
|
|
|
|