lfrxmlparser.cpp
91 lines
| 2.4 KiB
| text/x-c
|
CppLexer
r69 | #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); | ||||
} | ||||