lfrxmlparser.cpp
89 lines
| 2.3 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() ) ); | ||||
|
r44 | processIncomingDataLESIA( eventBinaryStr ); | ||
r24 | 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 | } | |||
|
r44 | |||
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.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); | ||||
} | ||||