ts_102_221: properly decode short file identifier

The SFI TLV contanins not the raw SFI, but it contains the SFI
shifted to left by 3 bits (for some strange reason).  So let's
un-shift it.

Change-Id: Ibc69b99010d2a25cbb69b6a3d1585d0cb63f1345
This commit is contained in:
Harald Welte 2022-02-25 09:35:28 +01:00
parent fa578bd601
commit 5e9bd93bbd
1 changed files with 8 additions and 1 deletions

View File

@ -186,7 +186,14 @@ class SecurityAttribReferenced(BER_TLV_IE, tag=0x8b):
# ETSI TS 102 221 11.1.1.4.8
class ShortFileIdentifier(BER_TLV_IE, tag=0x88):
_construct = HexAdapter(COptional(Bytes(1)))
# If the length of the TLV is 1, the SFI value is indicated in the 5 most significant bits (bits b8 to b4)
# of the TLV value field. In this case, bits b3 to b1 shall be set to 0
class Shift3RAdapter(Adapter):
def _decode(self, obj, context, path):
return obj >> 3
def _encode(self, obj, context, path):
return obj << 3
_construct = COptional(Shift3RAdapter(Byte))
# ETSI TS 102 221 11.1.1.4.9
class LifeCycleStatusInteger(BER_TLV_IE, tag=0x8A):