Skip to content

Commit fbcbc61

Browse files
committed
Encoding / Decoding is performed based on m_TotalSize
1 parent 71cc337 commit fbcbc61

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

rx.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ void PRINT(Header::Data* data)
2525
printf(" %3hhu ", data->m_Codes[i]);
2626
}
2727
printf("]\n");
28+
for(unsigned long i = 0 ; i < ntohs(data->m_PayloadSize) ; i++)
29+
{
30+
std::cout<<(data->m_Codes+(data->m_MaximumRank-1))[i];
31+
}
32+
std::cout<<std::endl;
2833
}
2934

3035
const u08 ReceptionBlock::FindMaximumRank(Header::Data* hdr)
@@ -303,7 +308,10 @@ bool ReceptionBlock::Decoding()
303308
tmp = 0;
304309
for(u08 i = 0 ; i < MAX_RANK ; i++)
305310
{
306-
tmp ^= FiniteField::instance()->mul(m_DecodingMatrix[row].get()[i], m_DecodedPacketBuffer[i].get()[decodingposition]);
311+
if(decodingposition < ntohs(reinterpret_cast<Header::Data*>(m_DecodedPacketBuffer[i].get())->m_TotalSize))
312+
{
313+
tmp ^= FiniteField::instance()->mul(m_DecodingMatrix[row].get()[i], m_DecodedPacketBuffer[i].get()[decodingposition]);
314+
}
307315
}
308316
DecodeOut.back().get()[decodingposition] = tmp;
309317
}

tx.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,11 @@ void TransmissionBlock::Retransmission()
204204
for(u08 PacketIndex = 0 ; PacketIndex < m_OriginalPacketBuffer.size() ; PacketIndex++)
205205
{
206206
u08* OriginalBuffer = reinterpret_cast<u08*>(m_OriginalPacketBuffer[PacketIndex].get());
207+
Header::Data* OriginalHeader = reinterpret_cast<Header::Data*>(OriginalBuffer);
208+
if(CodingOffset >= ntohs(OriginalHeader->m_TotalSize))
209+
{
210+
continue;
211+
}
207212
m_RemedyPacketBuffer[CodingOffset] ^= FiniteField::instance()->mul(OriginalBuffer[CodingOffset], RandomCoefficients[PacketIndex]);
208213
}
209214
}

0 commit comments

Comments
 (0)