##// END OF EJS Templates
Minor update in project gse_lesia
Minor update in project gse_lesia

File last commit:

r69:d8815b251eb0 default
r72:27e89cd58c8b default
Show More
lfrxmlparser.cpp
91 lines | 2.4 KiB | text/x-c | CppLexer
#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);
}