Skip to content

Commit ceb27e3

Browse files
niloofarYazdaniniloofar.yazdani
andauthored
Fix/fragmentation (#1353)
* fixed probl1: always 1 extra frag was needed * fixed prob1: 1 extra frag needed if all received * added paranthesis Co-authored-by: niloofar.yazdani <[email protected]>
1 parent e533790 commit ceb27e3

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

src/apps/LoRaMac/common/LmHandler/packages/FragDecoder.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,12 @@ int32_t FragDecoderProcess( uint16_t fragCounter, uint8_t *rawData )
336336

337337
// Update the FragDecoder.FragNbMissingIndex with the loosing frame
338338
FragFindMissingFrags( fragCounter );
339+
340+
if( ( FragDecoder.Status.FragNbLost == 0 ) && ( fragCounter == FragDecoder.FragNb ) )
341+
{
342+
// the case : all the M(FragNb) first rows have been transmitted with no error
343+
return FragDecoder.Status.FragNbLost;
344+
}
339345
}
340346
else
341347
{
@@ -350,12 +356,6 @@ int32_t FragDecoderProcess( uint16_t fragCounter, uint8_t *rawData )
350356
// In case of the end of true data is missing
351357
FragFindMissingFrags( fragCounter );
352358

353-
if( FragDecoder.Status.FragNbLost == 0 )
354-
{
355-
// the case : all the M(FragNb) first rows have been transmitted with no error
356-
return FragDecoder.Status.FragNbLost;
357-
}
358-
359359
// fragCounter - FragDecoder.FragNb
360360
FragGetParityMatrixRow( fragCounter - FragDecoder.FragNb, FragDecoder.FragNb, matrixRow );
361361

src/apps/LoRaMac/common/LmHandler/packages/LmhpFragmentation.c

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -467,23 +467,20 @@ static void LmhpFragmentationOnMcpsIndication( McpsIndication_t *mcpsIndication
467467
FragSessionData[fragIndex].FragDecoderStatus.FragNbLost );
468468
}
469469
}
470-
else
470+
if( FragSessionData[fragIndex].FragDecoderProcessStatus >= 0 )
471471
{
472-
if( FragSessionData[fragIndex].FragDecoderProcessStatus >= 0 )
472+
// Fragmentation successfully done
473+
FragSessionData[fragIndex].FragDecoderProcessStatus = FRAG_SESSION_NOT_STARTED;
474+
if( LmhpFragmentationParams->OnDone != NULL )
473475
{
474-
// Fragmentation successfully done
475-
FragSessionData[fragIndex].FragDecoderProcessStatus = FRAG_SESSION_NOT_STARTED;
476-
if( LmhpFragmentationParams->OnDone != NULL )
477-
{
478476
#if( FRAG_DECODER_FILE_HANDLING_NEW_API == 1 )
479-
LmhpFragmentationParams->OnDone( FragSessionData[fragIndex].FragDecoderProcessStatus,
480-
( FragSessionData[fragIndex].FragGroupData.FragNb * FragSessionData[fragIndex].FragGroupData.FragSize ) - FragSessionData[fragIndex].FragGroupData.Padding );
477+
LmhpFragmentationParams->OnDone( FragSessionData[fragIndex].FragDecoderProcessStatus,
478+
( FragSessionData[fragIndex].FragGroupData.FragNb * FragSessionData[fragIndex].FragGroupData.FragSize ) - FragSessionData[fragIndex].FragGroupData.Padding );
481479
#else
482-
LmhpFragmentationParams->OnDone( FragSessionData[fragIndex].FragDecoderProcessStatus,
483-
LmhpFragmentationParams->Buffer,
484-
( FragSessionData[fragIndex].FragGroupData.FragNb * FragSessionData[fragIndex].FragGroupData.FragSize ) - FragSessionData[fragIndex].FragGroupData.Padding );
480+
LmhpFragmentationParams->OnDone( FragSessionData[fragIndex].FragDecoderProcessStatus,
481+
LmhpFragmentationParams->Buffer,
482+
( FragSessionData[fragIndex].FragGroupData.FragNb * FragSessionData[fragIndex].FragGroupData.FragSize ) - FragSessionData[fragIndex].FragGroupData.Padding );
485483
#endif
486-
}
487484
}
488485
}
489486
cmdIndex += FragSessionData[fragIndex].FragGroupData.FragSize;

0 commit comments

Comments
 (0)