|
|
#include "lfrxmlparser.h"
|
|
|
|
|
|
LFRXmlParser::LFRXmlParser(QObject *parent) :
|
|
|
QObject(parent)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
void LFRXmlParser::processIncomingStr(QString incomingStr)
|
|
|
{
|
|
|
int indexOfStartStr;
|
|
|
int indexOfStopStr;
|
|
|
int result;
|
|
|
QString eventBinaryStr;
|
|
|
QString startStr = "<EventBinary>";
|
|
|
QString stopStr = "</EventBinary>";
|
|
|
|
|
|
xmlBuffer.append(incomingStr);
|
|
|
|
|
|
result = findPattern( startStr, stopStr, &indexOfStartStr, &indexOfStopStr);
|
|
|
while( result !=-1 )
|
|
|
{
|
|
|
eventBinaryStr = xmlBuffer.mid(
|
|
|
indexOfStartStr + startStr.size(),
|
|
|
indexOfStopStr - (indexOfStartStr + startStr.size() ) );
|
|
|
processIncomingDataLESIA( eventBinaryStr );
|
|
|
xmlBuffer.remove(0, indexOfStopStr + stopStr.size());
|
|
|
result = findPattern( startStr, stopStr, &indexOfStartStr, &indexOfStopStr);
|
|
|
}
|
|
|
emit processPacketStore();
|
|
|
}
|
|
|
|
|
|
int LFRXmlParser::findPattern(QString startStr, QString stopStr, int *indexOfStartStr, int *indexOfStopStr)
|
|
|
{
|
|
|
*indexOfStartStr = xmlBuffer.indexOf(startStr);
|
|
|
*indexOfStopStr = xmlBuffer.indexOf(stopStr);
|
|
|
|
|
|
if ( (*indexOfStartStr==-1) | (*indexOfStopStr==-1) | (*indexOfStartStr > *indexOfStopStr) )
|
|
|
{
|
|
|
return -1;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
return 0;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void LFRXmlParser::processIncomingData(const QString &ch)
|
|
|
{
|
|
|
QByteArray newdat;
|
|
|
char *values;
|
|
|
unsigned char *ccsdsData;
|
|
|
unsigned int ccsdsSize = 0;
|
|
|
|
|
|
TMPacketToRead *incomingPacket;
|
|
|
|
|
|
// newdat = QByteArray::fromHex(ch.toAscii());
|
|
|
newdat = QByteArray::fromHex(ch.toLatin1());
|
|
|
|
|
|
values = (char*) newdat.data();
|
|
|
ccsdsSize = newdat.size();
|
|
|
ccsdsData = (unsigned char *) values;
|
|
|
|
|
|
incomingPacket = new TMPacketToRead(ccsdsData, ccsdsSize);
|
|
|
|
|
|
generalCCSDSPacketStore->append(incomingPacket);
|
|
|
}
|
|
|
|
|
|
void LFRXmlParser::processIncomingDataLESIA(const QString &ch)
|
|
|
{
|
|
|
QByteArray newdat;
|
|
|
char *values;
|
|
|
unsigned char *ccsdsData;
|
|
|
unsigned int ccsdsSize = 0;
|
|
|
|
|
|
TMPacketToRead *incomingPacket;
|
|
|
|
|
|
// newdat = QByteArray::fromHex(ch.toAscii());
|
|
|
newdat = QByteArray::fromHex(ch.toLatin1());
|
|
|
newdat.prepend((char) 1);
|
|
|
newdat.prepend((char) 2);
|
|
|
newdat.prepend((char) 0);
|
|
|
newdat.prepend((char) 0);
|
|
|
|
|
|
values = (char*) newdat.data();
|
|
|
ccsdsSize = newdat.size();
|
|
|
ccsdsData = (unsigned char *) values;
|
|
|
|
|
|
incomingPacket = new TMPacketToRead(ccsdsData, ccsdsSize);
|
|
|
|
|
|
generalCCSDSPacketStore->append(incomingPacket);
|
|
|
}
|
|
|
|