NGAP: Correct encoding of AMF Set ID and Pointer
Taking the example of the AMF Set ID, the previous version of the macro used another macro to encode the number, then marked the last 6 bits in the bit string (of length 16/2 bytes) as unused. This is wrong, because, assuming AMF Set ID=3, it basically truncates the number by encoding all 16 bits and cutting off the last 6, like this: ------------------- encode 16 bits 0000 0000 0000 0011 ------------ take these 10 bits So what remains is these bit positions of the number: (16,15,14,13,12,11,10,9,8,7) -- the last 6 bits are cut (and the first 6 are either 0 or garbage, because they don't exist). Instead, manually encode bits (10,9,8,7,6,5,4,3) in the first byte, and (2,1) in the second byte of the bit string, like so: ------------ encode 10 bits 0000 0000 1100 0000 ------------ take these 10 bits Do the same with the pointer. The AMF Region ID above is correct, as it is exactly 8 bits.
Showing
Please register or sign in to comment