FSFW Update #21
@ -324,26 +324,23 @@ ReturnValue_t TcpTmTcServer::handleTcRingBufferData(size_t availableReadData) {
|
|||||||
size_t startIdx = 0;
|
size_t startIdx = 0;
|
||||||
size_t foundSize = 0;
|
size_t foundSize = 0;
|
||||||
size_t readLen = 0;
|
size_t readLen = 0;
|
||||||
while(readLen <= readAmount) {
|
while(readLen < readAmount) {
|
||||||
result = spacePacketParser->parseSpacePackets(bufPtrPtr, readAmount,
|
result = spacePacketParser->parseSpacePackets(bufPtrPtr, readAmount,
|
||||||
startIdx, foundSize, readLen);
|
startIdx, foundSize, readLen);
|
||||||
if(result == SpacePacketParser::NO_PACKET_FOUND) {
|
switch(result) {
|
||||||
ringBuffer.deleteData(foundSize);
|
case(SpacePacketParser::NO_PACKET_FOUND):
|
||||||
lastRingBufferSize = ringBuffer.getAvailableReadData();
|
case(SpacePacketParser::SPLIT_PACKET): {
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else if(result == SpacePacketParser::SPLIT_PACKET) {
|
case(HasReturnvaluesIF::RETURN_OK): {
|
||||||
// might be half of a packet? Skip it for now
|
|
||||||
ringBuffer.deleteData(foundSize);
|
|
||||||
lastRingBufferSize = ringBuffer.getAvailableReadData();
|
|
||||||
}
|
|
||||||
else if(result == HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
result = handleTcReception(receptionBuffer.data() + startIdx, foundSize);
|
result = handleTcReception(receptionBuffer.data() + startIdx, foundSize);
|
||||||
ringBuffer.deleteData(foundSize);
|
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
status = result;
|
status = result;
|
||||||
}
|
}
|
||||||
lastRingBufferSize = ringBuffer.getAvailableReadData();
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
ringBuffer.deleteData(foundSize);
|
||||||
|
lastRingBufferSize = ringBuffer.getAvailableReadData();
|
||||||
std::memset(receptionBuffer.data() + startIdx, 0, foundSize);
|
std::memset(receptionBuffer.data() + startIdx, 0, foundSize);
|
||||||
}
|
}
|
||||||
return status;
|
return status;
|
||||||
|
@ -127,7 +127,7 @@ private:
|
|||||||
SpacePacketParser* spacePacketParser = nullptr;
|
SpacePacketParser* spacePacketParser = nullptr;
|
||||||
uint8_t lastRingBufferSize = 0;
|
uint8_t lastRingBufferSize = 0;
|
||||||
|
|
||||||
void handleServerOperation(socket_t& connSocket);
|
virtual void handleServerOperation(socket_t& connSocket);
|
||||||
ReturnValue_t handleTcReception(uint8_t* spacePacket, size_t packetSize);
|
ReturnValue_t handleTcReception(uint8_t* spacePacket, size_t packetSize);
|
||||||
ReturnValue_t handleTmSending(socket_t connSocket, bool& tmSent);
|
ReturnValue_t handleTmSending(socket_t connSocket, bool& tmSent);
|
||||||
ReturnValue_t handleTcRingBufferData(size_t availableReadData);
|
ReturnValue_t handleTcRingBufferData(size_t availableReadData);
|
||||||
|
@ -31,6 +31,16 @@ public:
|
|||||||
* The class's default destructor.
|
* The class's default destructor.
|
||||||
*/
|
*/
|
||||||
virtual ~SpacePacket();
|
virtual ~SpacePacket();
|
||||||
|
|
||||||
|
static constexpr uint16_t getTcSpacePacketIdFromApid(uint16_t apid) {
|
||||||
|
uint16_t tcPacketId = (0x18 << 8) | (((apid >> 8) & 0x07) << 8) | (apid & 0x00ff);
|
||||||
|
return tcPacketId;
|
||||||
|
}
|
||||||
|
static constexpr uint16_t getTmSpacePacketIdFromApid(uint16_t apid) {
|
||||||
|
uint16_t tmPacketId = (0x08 << 8) | (((apid >> 8) & 0x07) << 8) | (apid & 0x00ff);
|
||||||
|
return tmPacketId;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* With this call, the complete data content (including the CCSDS Primary
|
* With this call, the complete data content (including the CCSDS Primary
|
||||||
* Header) is overwritten with the byte stream given.
|
* Header) is overwritten with the byte stream given.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user