lfrxmlparser.cpp
65 lines
| 1.7 KiB
| text/x-c
|
CppLexer
/ gse_lesia / lfrxmlparser.cpp
r24 | #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() ) ); | ||||
processIncomingData( eventBinaryStr ); | ||||
xmlBuffer.remove(0, indexOfStopStr + stopStr.size()); | ||||
result = findPattern( startStr, stopStr, &indexOfStartStr, &indexOfStopStr); | ||||
} | ||||
r27 | emit processPacketStore(); | |||
r24 | } | |||
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()); | ||||
values = (char*) newdat.data(); | ||||
ccsdsSize = newdat.size(); | ||||
ccsdsData = (unsigned char *) values; | ||||
incomingPacket = new TMPacketToRead(ccsdsData, ccsdsSize); | ||||
r27 | ||||
generalCCSDSPacketStore->append(incomingPacket); | ||||
r24 | } | |||