incomingtcparser.cpp
43 lines
| 1.2 KiB
| text/x-c
|
CppLexer
/ spwplugin / incomingtcparser.cpp
paul
|
r40 | #include "incomingtcparser.h" | ||
IncomingTCParser::IncomingTCParser(QObject *parent) : | ||||
QObject(parent) | ||||
{ | ||||
incompleteData = false; | ||||
localDataArray.clear(); | ||||
} | ||||
void IncomingTCParser::processIncomingQByteArray(QByteArray incomingQByteArray) | ||||
{ | ||||
int ccsdsSize; | ||||
bool keepParsing; | ||||
QByteArray tcPacket; | ||||
keepParsing = true; | ||||
localDataArray.append( incomingQByteArray ); | ||||
if (localDataArray.size() >= 4 ) | ||||
{ | ||||
while(keepParsing == true) | ||||
{ | ||||
ccsdsSize = ( (unsigned char) localDataArray[1] ) * 256 * 256 | ||||
+ ( (unsigned char) localDataArray[2] ) * 256 | ||||
+ ( (unsigned char) localDataArray[3] ); | ||||
if (localDataArray.size() < (ccsdsSize+4) ) keepParsing = false; | ||||
else | ||||
{ | ||||
tcPacket = QByteArray( localDataArray ); | ||||
tcPacket.resize( ccsdsSize + 4 ); | ||||
emit sendPacketUsingSpaceWire( tcPacket ); | ||||
localDataArray.remove(0, ccsdsSize + 4); | ||||
} | ||||
if (localDataArray.size() >= 4 ) keepParsing = true; | ||||
else keepParsing = false; | ||||
} | ||||
} | ||||
} | ||||