#include "lfrxmlparser.h" LFRXmlParser::LFRXmlParser(QObject *parent) : QObject(parent) { } void LFRXmlParser::processIncomingStr(QString incomingStr) { int indexOfStartStr; int indexOfStopStr; int result; QString eventBinaryStr; QString startStr = ""; QString stopStr = ""; 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); }