Fixed bug affecting LSF reassembling from LICH segments inside M17 frame decoder class
This commit is contained in:
parent
35c1f062c6
commit
d2c7be9cc8
|
|
@ -94,15 +94,17 @@ void M17FrameDecoder::decodeStream(const std::array< uint8_t, 46 >& data)
|
||||||
if(decodeOk)
|
if(decodeOk)
|
||||||
{
|
{
|
||||||
// Append LICH segment
|
// Append LICH segment
|
||||||
uint8_t segmentNum = lsfSegment[5];
|
uint8_t segmentNum = lsfSegment[5];
|
||||||
|
uint8_t segmentSize = lsfSegment.size() - 1;
|
||||||
uint8_t *ptr = reinterpret_cast < uint8_t * >(&lsfFromLich.data);
|
uint8_t *ptr = reinterpret_cast < uint8_t * >(&lsfFromLich.data);
|
||||||
memcpy(ptr + segmentNum, lsfSegment.data(), 5);
|
ptr += segmentNum * segmentSize;
|
||||||
|
memcpy(ptr, lsfSegment.data(), segmentSize);
|
||||||
|
|
||||||
// Mark this segment as present
|
// Mark this segment as present
|
||||||
lsfSegmentMap |= 1 << segmentNum;
|
lsfSegmentMap |= 1 << segmentNum;
|
||||||
|
|
||||||
// Check if we have received all the five LICH segments
|
// Check if we have received all the five LICH segments
|
||||||
if(lsfSegmentMap == 0x1F)
|
if(lsfSegmentMap == 0x3F)
|
||||||
{
|
{
|
||||||
if(lsfFromLich.valid()) lsf = lsfFromLich;
|
if(lsfFromLich.valid()) lsf = lsfFromLich;
|
||||||
lsfSegmentMap = 0;
|
lsfSegmentMap = 0;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue