Document

LoRaWAN® Fragmented Data Block Transport Specification v1.0.0

Issue link: https://read.uberflip.com/i/1428356

Contents of this Issue

Navigation

Page 19 of 29

LoRaWAN Fragmented Data Block Transport v1.0.0 Specification ©2018 LoRa Alliance™ Page 20 of 30 The authors reserve the right to change specifications without notice. 8 Fragment decoding and reassembling 501 502 The receiver of a fragmentation session must perform the following operations. 503 504 For each frame received extract the coded fragment and its index. 505 506 The receiver also needs to create a null binary A = MxM bit matrix structure in his memory. 507 508 Then process those fragments one by one. 509 510 511 1. For each new fragment P M N , first fetch the corresponding line of the parity check 512 matrix : C=matrix_line(N,M) 513 2. Proceed from left to right along the C vector ( 1 ) : For each entry 514 equal to 1, check if the line of the matrix A contains a 1 in row . If yes, perform a 515 Xor between line of matrix A "A( )" and the vector C and store the result in C. Also 516 perform a xor between P M N and the coded fragment stored at position in the 517 fragment memory store and update P M N with the result. 518 3. Once this process is finished there are two options: 519 a. Either C now contains only zeros, in that case just get rid of the coded 520 fragment P M N ; it isn't bringing any new information 521 b. The vector C is non-null : write it in the matrix A at the line corresponding to 522 the first non-zero element of C. Also add the modified P M N fragment to the 523 memory store at position : 524 4. Loop to 1 until all lines of the matrix A have been updated. The matrix A will have 525 only 1's on its diagonal and will be a triangular matrix with only 0's on the lower left 526 half. The fragment memory store will contain exactly M fragments. 527 5. Starting from matrix line = M-1 down to 1, fetch the ℎ line of matrix A : A(i). The 528 line A(i) has a 1 at position and only zeros on the left. For any 1 at position j> 529 perform a xor between and and update with the result. 530 6. The fragment memory store now contains the original uncoded fragments = 531 7. Reassemble the data block by concatenating all the uncoded fragments. If the 532 fragment memory store is actually allocated as a continuous memory range, then this 533 step is not even necessary, because the original data block consists of 1 : 2 : … : 534 where : represents the concatenation operator. 535 536 537

Articles in this issue

view archives of Document - LoRaWAN® Fragmented Data Block Transport Specification v1.0.0