dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/38117?usp=email )
Change subject: ts_51_011: replace encoding of EF.MSISDN with construct model ......................................................................
ts_51_011: replace encoding of EF.MSISDN with construct model
The encoding of EF.MSISDN is currently done with enc_msisdn and dec_msisdn from utils.py. Let's replace this with a construct based model, similar to the one we already use with EF.ADN
Related: OS#5714 Change-Id: I647f5c63f7f87902a86c0c5d8e92fdc7f4350a5a --- M pySim/ts_51_011.py 1 file changed, 16 insertions(+), 12 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/17/38117/1
diff --git a/pySim/ts_51_011.py b/pySim/ts_51_011.py index c6720fe..401db9e 100644 --- a/pySim/ts_51_011.py +++ b/pySim/ts_51_011.py @@ -190,20 +190,24 @@
# TS 51.011 Section 10.5.5 class EF_MSISDN(LinFixedEF): + _test_decode = [ + ( 'ffffffffffffffffffffffffffffffffffffffff04b12143f5ffffffffffffffffff', + {"alpha_id": "", "len_of_bcd": 4, "ton_npi": {"ext": True, "type_of_number": "network_specific", + "numbering_plan_id": "isdn_e164"}, + "dialing_nr": "12345f"}), + ( '456967656e65205275666e756d6d6572ffffffff0891947172199181f3ffffffffff', + {"alpha_id": "Eigene Rufnummer", "len_of_bcd": 8, "ton_npi": {"ext": True, "type_of_number": "international", + "numbering_plan_id": "isdn_e164"}, + "dialing_nr": "4917279119183f"}), + ] + _test_no_pad = True + def __init__(self, fid='6f40', sfid=None, name='EF.MSISDN', desc='MSISDN', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, rec_len=(15, 34), leftpad=True, **kwargs) - - def _decode_record_hex(self, raw_hex_data, **kwargs): - return {'msisdn': dec_msisdn(raw_hex_data)} - - def _encode_record_hex(self, abstract, **kwargs): - msisdn = abstract['msisdn'] - if type(msisdn) == str: - encoded_msisdn = enc_msisdn(msisdn) - else: - encoded_msisdn = enc_msisdn(msisdn[2], msisdn[0], msisdn[1]) - alpha_identifier = (list(self.rec_len)[0] - len(encoded_msisdn) // 2) * "ff" - return alpha_identifier + encoded_msisdn + self._construct = Struct('alpha_id'/COptional(GsmOrUcs2Adapter(Rpad(Bytes(this._.total_len-14)))), + 'len_of_bcd'/Int8ub, + 'ton_npi'/TonNpi, + 'dialing_nr'/ExtendedBcdAdapter(BcdAdapter(Rpad(Bytes(10)))))
# TS 51.011 Section 10.5.6 class EF_SMSP(LinFixedEF):