-
Notifications
You must be signed in to change notification settings - Fork 69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FUOTAv2 FragGetParityMatrixRow implementation incorrect? #106
Comments
An other observation, this function is called in the v2 implementation as: // fragCounter - FragDecoder.FragNb
FragGetParityMatrixRow( fragCounter - FragDecoder.FragNb, FragDecoder.FragNb, matrixRow ); This is equal to the v1 implementation of the LBM. However, the implementation seems to have changed between v1 and v2: v1 implementation
v2 implementation
Now looking again at: // fragCounter - FragDecoder.FragNb
FragGetParityMatrixRow( fragCounter - FragDecoder.FragNb, FragDecoder.FragNb, matrixRow ); I think this is not correct, it should probably be just |
The LBM implementation is a direct translation of the MATLAB code. Let me explain: Handling of FragmentsIn the LBM implementation, the uncoded fragments are handled separately, and only the coded fragments (where N > M) are managed by calling the function MATLAB SpecificationIn the specification, the MATLAB code for both V1 and V2 is essentially the same, just written in two different ways. The core idea remains: the output is the
In the V1 MATLAB Implementation:
In the V2 MATLAB Implementation:
SummaryBoth V1 and V2 behave identically; the only difference is in the way the combination matrix is constructed—V2 includes more ones in the matrix compared to V1. I also believe that the LBM implementation exhibits the same behavior. |
Are you sure? I think the
In the v1 MATLAB example:
In v2:
|
I think in the LBM stack, this line:
Should therefore be something like this for v2:
|
I'm testing FUOTA v2 and on
FragSessionStatusAns
I'm getting MIC errors. What I'm testing:However, on
FragSessionStatusReq
, it prints that the MIC is incorrect. After printing the reconstructed payload vs the actual payload that was sent, I notice that the reconstructed bytes are incorrect (only the parts that were reconstructed using the FEC scheme). This might be an issue with my implementation or it might be an issue in the LBM firmware, that I do not know yet.However, after looking at the
FragGetParityMatrixRow
function, I noticed there might be something missing:The specs contains an
if (N <= M)
line, which does not seem to be implemented:The text was updated successfully, but these errors were encountered: