diff --git a/pySim/filesystem.py b/pySim/filesystem.py index 182889b2..fe8f591d 100644 --- a/pySim/filesystem.py +++ b/pySim/filesystem.py @@ -49,6 +49,8 @@ from pySim.commands import SimCardCommands # tuple: logical-and of the listed services requires this file CardFileService = Union[int, List[int], Tuple[int, ...]] +Size = Tuple[int, Optional[int]] + def lchan_nr_from_cla(cla: int) -> int: """Resolve the logical channel number from the CLA byte.""" # TS 102 221 10.1.1 Coding of Class Byte @@ -642,7 +644,7 @@ class TransparentEF(CardEF): self._cmd.poutput_json(data) def __init__(self, fid: str, sfid: str = None, name: str = None, desc: str = None, parent: CardDF = None, - size={1, None}, **kwargs): + size: Size = (1, None), **kwargs): """ Args: fid : File Identifier (4 hex digits) @@ -1057,7 +1059,7 @@ class TransRecEF(TransparentEF): """ def __init__(self, fid: str, rec_len: int, sfid: str = None, name: str = None, desc: str = None, - parent: Optional[CardDF] = None, size={1, None}, **kwargs): + parent: Optional[CardDF] = None, size: Size = (1, None), **kwargs): """ Args: fid : File Identifier (4 hex digits) @@ -1245,7 +1247,7 @@ class BerTlvEF(CardEF): self._cmd.poutput(data) def __init__(self, fid: str, sfid: str = None, name: str = None, desc: str = None, parent: CardDF = None, - size={1, None}, **kwargs): + size: Size = (1, None), **kwargs): """ Args: fid : File Identifier (4 hex digits) diff --git a/pySim/gsm_r.py b/pySim/gsm_r.py index b48469ef..ccab87f2 100644 --- a/pySim/gsm_r.py +++ b/pySim/gsm_r.py @@ -149,7 +149,7 @@ class EF_CallconfC(TransparentEF): """Section 7.3""" def __init__(self): - super().__init__(fid='6ff2', sfid=None, name='EF.CallconfC', size={24, 24}, + super().__init__(fid='6ff2', sfid=None, name='EF.CallconfC', size=(24, 24), desc='Call Configuration of emergency calls Configuration') self._construct = Struct('pl_conf'/PlConfAdapter(Int8ub), 'conf_nr'/BcdAdapter(Bytes(8)), @@ -183,7 +183,7 @@ class EF_Shunting(TransparentEF): def __init__(self): super().__init__(fid='6ff4', sfid=None, - name='EF.Shunting', desc='Shunting', size={8, 8}) + name='EF.Shunting', desc='Shunting', size=(8, 8)) self._construct = Struct('common_gid'/Int8ub, 'shunting_gid'/HexAdapter(Bytes(7))) @@ -253,7 +253,7 @@ class EF_DialledVals(TransparentEF): """Section 8.6""" def __init__(self, fid, name, desc): - super().__init__(fid=fid, sfid=None, name=name, desc=desc, size={4, 4}) + super().__init__(fid=fid, sfid=None, name=name, desc=desc, size=(4, 4)) self._construct = Struct('next_table_type'/NextTableType, 'id_of_next_table'/HexAdapter(Bytes(2)), 'dialed_digits'/BcdAdapter(Bytes(1))) diff --git a/pySim/ts_102_221.py b/pySim/ts_102_221.py index 8578f68c..6e04e96b 100644 --- a/pySim/ts_102_221.py +++ b/pySim/ts_102_221.py @@ -594,7 +594,7 @@ class EF_DIR(LinFixedEF): # TS 102 221 Section 13.2 class EF_ICCID(TransparentEF): def __init__(self, fid='2fe2', sfid=0x02, name='EF.ICCID', desc='ICC Identification'): - super().__init__(fid, sfid=sfid, name=name, desc=desc, size={10, 10}) + super().__init__(fid, sfid=sfid, name=name, desc=desc, size=(10, 10)) def _decode_hex(self, raw_hex): return {'iccid': dec_iccid(raw_hex)} @@ -606,7 +606,7 @@ class EF_ICCID(TransparentEF): class EF_PL(TransRecEF): def __init__(self, fid='2f05', sfid=0x05, name='EF.PL', desc='Preferred Languages'): super().__init__(fid, sfid=sfid, name=name, - desc=desc, rec_len=2, size={2, None}) + desc=desc, rec_len=2, size=(2, None)) def _decode_record_bin(self, bin_data): if bin_data == b'\xff\xff': @@ -706,7 +706,7 @@ class EF_ARR(LinFixedEF): # TS 102 221 Section 13.6 class EF_UMPC(TransparentEF): def __init__(self, fid='2f08', sfid=0x08, name='EF.UMPC', desc='UICC Maximum Power Consumption'): - super().__init__(fid, sfid=sfid, name=name, desc=desc, size={5, 5}) + super().__init__(fid, sfid=sfid, name=name, desc=desc, size=(5, 5)) addl_info = FlagsEnum(Byte, req_inc_idle_current=1, support_uicc_suspend=2) self._construct = Struct( diff --git a/pySim/ts_31_102.py b/pySim/ts_31_102.py index 066ee88a..b8a33e7e 100644 --- a/pySim/ts_31_102.py +++ b/pySim/ts_31_102.py @@ -349,7 +349,7 @@ class EF_5GAUTHKEYS(TransparentEF): class FiveGAuthKeys(TLV_IE_Collection, nested=[K_AUSF, K_SEAF]): pass - def __init__(self, fid='4f05', sfid=0x05, name='EF.5GAUTHKEYS', size={68, None}, + def __init__(self, fid='4f05', sfid=0x05, name='EF.5GAUTHKEYS', size=(68, None), desc='5G authentication keys', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._tlv = EF_5GAUTHKEYS.FiveGAuthKeys @@ -383,7 +383,7 @@ class SUCI_CalcInfo(TLV_IE_Collection, nested=[ProtSchemeIdList, HomeNetPubKeyLi # TS 31.102 4.4.11.8 class EF_SUCI_Calc_Info(TransparentEF): - def __init__(self, fid="4f07", sfid=0x07, name='EF.SUCI_Calc_Info', size={2, None}, + def __init__(self, fid="4f07", sfid=0x07, name='EF.SUCI_Calc_Info', size=(2, None), desc='SUCI Calc Info', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) @@ -506,7 +506,7 @@ class EF_SUCI_Calc_Info(TransparentEF): class EF_LI(TransRecEF): - def __init__(self, fid='6f05', sfid=None, name='EF.LI', size={2, None}, rec_len=2, + def __init__(self, fid='6f05', sfid=None, name='EF.LI', size=(2, None), rec_len=2, desc='Language Indication'): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len) @@ -526,7 +526,7 @@ class EF_LI(TransRecEF): class EF_Keys(TransparentEF): - def __init__(self, fid='6f08', sfid=0x08, name='EF.Keys', size={33, 33}, + def __init__(self, fid='6f08', sfid=0x08, name='EF.Keys', size=(33, 33), desc='Ciphering and Integrity Keys'): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size) self._construct = Struct( @@ -534,14 +534,14 @@ class EF_Keys(TransparentEF): # TS 31.102 Section 4.2.6 class EF_HPPLMN(TransparentEF): - def __init__(self, fid='6f31', sfid=0x12, name='EF.HPPLMN', size={1, 1}, + def __init__(self, fid='6f31', sfid=0x12, name='EF.HPPLMN', size=(1, 1), desc='Higher Priority PLMN search period'): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size) self._construct = Int8ub class EF_UST(EF_UServiceTable): def __init__(self, **kwargs): - super().__init__(fid='6f38', sfid=0x04, name='EF.UST', desc='USIM Service Table', size={1,17}, table=EF_UST_map, **kwargs) + super().__init__(fid='6f38', sfid=0x04, name='EF.UST', desc='USIM Service Table', size=(1,17), table=EF_UST_map, **kwargs) # add those commands to the general commands of a TransparentEF self.shell_commands += [self.AddlShellCommands()] @@ -625,7 +625,7 @@ class EF_ECC(LinFixedEF): # TS 31.102 Section 4.2.17 class EF_LOCI(TransparentEF): - def __init__(self, fid='6f7e', sfid=0x0b, name='EF.LOCI', desc='Location information', size={11, 11}): + def __init__(self, fid='6f7e', sfid=0x0b, name='EF.LOCI', desc='Location information', size=(11, 11)): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size) Lai = Struct('mcc_mnc'/BcdAdapter(Bytes(3)), 'lac'/HexAdapter(Bytes(2))) self._construct = Struct('tmsi'/HexAdapter(Bytes(4)), 'lai'/Lai, 'rfu'/Int8ub, 'lu_status'/Int8ub) @@ -639,7 +639,7 @@ class EF_AD(TransparentEF): maintenance_off_line = 0x02 cell_test = 0x04 - def __init__(self, fid='6fad', sfid=0x03, name='EF.AD', desc='Administrative Data', size={4, 6}): + def __init__(self, fid='6fad', sfid=0x03, name='EF.AD', desc='Administrative Data', size=(4, 6)): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size) self._construct = BitStruct( # Byte 1 @@ -654,7 +654,7 @@ class EF_AD(TransparentEF): # TS 31.102 Section 4.2.23 class EF_PSLOCI(TransparentEF): - def __init__(self, fid='6f73', sfid=0x0c, name='EF.PSLOCI', desc='PS Location information', size={14, 14}): + def __init__(self, fid='6f73', sfid=0x0c, name='EF.PSLOCI', desc='PS Location information', size=(14, 14)): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size) self._construct = Struct('ptmsi'/HexAdapter(Bytes(4)), 'ptmsi_sig'/HexAdapter(Bytes(3)), 'rai'/HexAdapter(Bytes(6)), 'rau_status'/Int8ub) @@ -705,7 +705,7 @@ class EF_CCP2(LinFixedEF): # TS 31.102 Section 4.2.47 class EF_EST(EF_UServiceTable): def __init__(self, **kwargs): - super().__init__(fid='6f56', sfid=0x05, name='EF.EST', desc='Enabled Services Table', size={1,None}, table=EF_EST_map, **kwargs) + super().__init__(fid='6f56', sfid=0x05, name='EF.EST', desc='Enabled Services Table', size=(1,None), table=EF_EST_map, **kwargs) # add those commands to the general commands of a TransparentEF self.shell_commands += [self.AddlShellCommands()] @@ -724,28 +724,28 @@ class EF_EST(EF_UServiceTable): # TS 31.102 Section 4.2.48 class EF_ACL(TransparentEF): - def __init__(self, fid='6f57', sfid=None, name='EF.ACL', size={32, None}, + def __init__(self, fid='6f57', sfid=None, name='EF.ACL', size=(32, None), desc='Access Point Name Control List', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = Struct('num_of_apns'/Int8ub, 'tlvs'/HexAdapter(GreedyBytes)) # TS 31.102 Section 4.2.51 class EF_START_HFN(TransparentEF): - def __init__(self, fid='6f5b', sfid=0x0f, name='EF.START-HFN', size={6, 6}, + def __init__(self, fid='6f5b', sfid=0x0f, name='EF.START-HFN', size=(6, 6), desc='Initialisation values for Hyperframe number', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = Struct('start_cs'/Int24ub, 'start_ps'/Int24ub) # TS 31.102 Section 4.2.52 class EF_THRESHOLD(TransparentEF): - def __init__(self, fid='6f5c', sfid=0x10, name='EF.THRESHOLD', size={3, 3}, + def __init__(self, fid='6f5c', sfid=0x10, name='EF.THRESHOLD', size=(3, 3), desc='Maximum value of START', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = Struct('max_start'/Int24ub) # TS 31.102 (old releases like 3.8.0) Section 4.2.56 class EF_RPLMNAcT(TransRecEF): - def __init__(self, fid='6f65', sfid=None, name='EF.RPLMNAcTD', size={2, 4}, rec_len=2, + def __init__(self, fid='6f65', sfid=None, name='EF.RPLMNAcTD', size=(2, 4), rec_len=2, desc='RPLMN Last used Access Technology', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) def _decode_record_hex(self, in_hex): @@ -754,14 +754,14 @@ class EF_RPLMNAcT(TransRecEF): # TS 31.102 Section 4.2.77 class EF_VGCSCA(TransRecEF): - def __init__(self, fid='6fd4', sfid=None, name='EF.VGCSCA', size={2, 100}, rec_len=2, + def __init__(self, fid='6fd4', sfid=None, name='EF.VGCSCA', size=(2, 100), rec_len=2, desc='Voice Group Call Service Ciphering Algorithm', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) self._construct = Struct('alg_v_ki_1'/Int8ub, 'alg_v_ki_2'/Int8ub) # TS 31.102 Section 4.2.79 class EF_GBABP(TransparentEF): - def __init__(self, fid='6fd6', sfid=None, name='EF.GBABP', size={3, 50}, + def __init__(self, fid='6fd6', sfid=None, name='EF.GBABP', size=(3, 50), desc='GBA Bootstrapping parameters', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = Struct('rand'/LV, 'b_tid'/LV, 'key_lifetime'/LV) @@ -812,7 +812,7 @@ class EF_GBANL(LinFixedEF): # TS 31.102 Section 4.2.85 class EF_EHPLMNPI(TransparentEF): - def __init__(self, fid='6fdb', sfid=None, name='EF.EHPLMNPI', size={1, 1}, + def __init__(self, fid='6fdb', sfid=None, name='EF.EHPLMNPI', size=(1, 1), desc='Equivalent HPLMN Presentation Indication', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = Struct('presentation_ind' / @@ -860,7 +860,7 @@ class EF_NCP_IP(LinFixedEF): # TS 31.102 Section 4.2.91 class EF_EPSLOCI(TransparentEF): - def __init__(self, fid='6fe3', sfid=0x1e, name='EF.EPSLOCI', size={18, 18}, + def __init__(self, fid='6fe3', sfid=0x1e, name='EF.EPSLOCI', size=(18, 18), desc='EPS Location Information', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) upd_status_constr = Enum( @@ -897,7 +897,7 @@ class EF_EPSNSC(LinFixedEF): # TS 31.102 Section 4.2.96 class EF_PWS(TransparentEF): - def __init__(self, fid='6fec', sfid=None, name='EF.PWS', desc='Public Warning System', size={1, 1}, **kwargs): + def __init__(self, fid='6fec', sfid=None, name='EF.PWS', desc='Public Warning System', size=(1, 1), **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) pws_config = FlagsEnum( Byte, ignore_pws_in_hplmn_and_equivalent=1, ignore_pws_in_vplmn=2) @@ -926,7 +926,7 @@ class EF_ePDGId(TransparentEF): # TS 31.102 Section 4.2.106 class EF_FromPreferred(TransparentEF): - def __init__(self, fid='6ff7', sfid=None, name='EF.FromPreferred', size={1, 1}, + def __init__(self, fid='6ff7', sfid=None, name='EF.FromPreferred', size=(1, 1), desc='From Preferred', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = BitStruct('rfu'/BitsRFU(7), 'from_preferred'/Bit) @@ -954,7 +954,7 @@ class DF_GSM_ACCESS(CardDF): # TS 31.102 Section 4.4.11.2 class EF_5GS3GPPLOCI(TransparentEF): - def __init__(self, fid='4f01', sfid=0x01, name='EF.5GS3GPPLOCI', size={20, 20}, + def __init__(self, fid='4f01', sfid=0x01, name='EF.5GS3GPPLOCI', size=(20, 20), desc='5S 3GP location information', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) upd_status_constr = Enum( @@ -965,7 +965,7 @@ class EF_5GS3GPPLOCI(TransparentEF): # TS 31.102 Section 4.4.11.7 class EF_UAC_AIC(TransparentEF): - def __init__(self, fid='4f06', sfid=0x06, name='EF.UAC_AIC', size={4, 4}, + def __init__(self, fid='4f06', sfid=0x06, name='EF.UAC_AIC', size=(4, 4), desc='UAC Access Identities Configuration', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) cfg_constr = FlagsEnum(Byte, multimedia_priority_service=1, @@ -1104,7 +1104,7 @@ class DF_USIM_5GS(CardDF): EF_OPL5G(service=129), EF_SUPI_NAI(service=130), TransparentEF('4F0A', 0x0a, 'EF.Routing_Indicator', - 'Routing Indicator', size={4, 4}, service=124), + 'Routing Indicator', size=(4, 4), service=124), TransparentEF('4F0B', 0x0b, 'EF.URSP', 'UE Route Selector Policies per PLMN', service=132), EF_TN3GPPSNN(service=133), @@ -1136,11 +1136,11 @@ class ADF_USIM(CardADF): TransparentEF('6f3f', None, 'EF.GID2', 'Group Identifier Level 2', service=18), EF_SPN(service=19), TransparentEF('6f41', None, 'EF.PUCT', - 'Price per unit and currency table', size={5, 5}, service=13), + 'Price per unit and currency table', size=(5, 5), service=13), EF_CBMI(service=15), EF_ACC(sfid=0x06), EF_PLMNsel('6f7b', 0x0d, 'EF.FPLMN', - 'Forbidden PLMNs', size={12, None}), + 'Forbidden PLMNs', size=(12, None)), EF_LOCI(), EF_AD(), EF_CBMID(sfid=0x0e, service=29), @@ -1204,7 +1204,7 @@ class ADF_USIM(CardADF): EF_MSK(service=69), EF_MUK(service=69), EF_GBANL(service=68), - EF_PLMNsel('6fd9', 0x1d, 'EF.EHPLMN', 'Equivalent HPLMN', size={12, None}, service=71), + EF_PLMNsel('6fd9', 0x1d, 'EF.EHPLMN', 'Equivalent HPLMN', size=(12, None), service=71), EF_EHPLMNPI(service=(71, 73)), # EF_LRPLMNSI ('6fdc', service=74) EF_NAFKCA(service=(68, 76)), @@ -1213,7 +1213,7 @@ class ADF_USIM(CardADF): EF_NCP_IP(service=80), EF_EPSLOCI('6fe3', 0x1e, 'EF.EPSLOCI', 'EPS location information', service=85), EF_EPSNSC(service=85), - TransparentEF('6fe6', None, 'EF.UFC', 'USAT Facility Control', size={1, 16}), + TransparentEF('6fe6', None, 'EF.UFC', 'USAT Facility Control', size=(1, 16)), TransparentEF('6fe8', None, 'EF.NASCONFIG', 'Non Access Stratum Configuration', service=96), # UICC IARI (only in cards that have no ISIM) service=95 EF_PWS(service=97), diff --git a/pySim/ts_31_102_telecom.py b/pySim/ts_31_102_telecom.py index c020a07d..06317b9f 100644 --- a/pySim/ts_31_102_telecom.py +++ b/pySim/ts_31_102_telecom.py @@ -234,7 +234,7 @@ class EF_MCS_CONFIG(BerTlvEF): # TS 31.102 Section 4.6.4.1 class EF_MST(EF_UServiceTable): - def __init__(self, fid='4F01', sfid=0x01, name='EF.MST', desc='MCS Service Table', size={2,2}, + def __init__(self, fid='4F01', sfid=0x01, name='EF.MST', desc='MCS Service Table', size=(2,2), table=EF_MST_map, **kwargs): super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, size=size, table=table) @@ -265,7 +265,7 @@ EF_VST_map = { # TS 31.102 Section 4.6.5.2 class EF_VST(EF_UServiceTable): - def __init__(self, fid='4F01', sfid=0x01, name='EF.VST', desc='V2X Service Table', size={2,2}, + def __init__(self, fid='4F01', sfid=0x01, name='EF.VST', desc='V2X Service Table', size=(2,2), table=EF_VST_map, **kwargs): super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, size=size, table=table) diff --git a/pySim/ts_31_103.py b/pySim/ts_31_103.py index ef60a7d1..30df0b79 100644 --- a/pySim/ts_31_103.py +++ b/pySim/ts_31_103.py @@ -108,7 +108,7 @@ class EF_IMPU(LinFixedEF): # TS 31.103 Section 4.2.7 class EF_IST(EF_UServiceTable): def __init__(self, **kwargs): - super().__init__('6f07', 0x07, 'EF.IST', 'ISIM Service Table', {1, None}, EF_IST_map) + super().__init__('6f07', 0x07, 'EF.IST', 'ISIM Service Table', (1, None), EF_IST_map) # add those commands to the general commands of a TransparentEF self.shell_commands += [self.AddlShellCommands()] diff --git a/pySim/ts_51_011.py b/pySim/ts_51_011.py index c6bb1949..68b32ce9 100644 --- a/pySim/ts_51_011.py +++ b/pySim/ts_51_011.py @@ -448,7 +448,7 @@ class EF_SMSS(TransparentEF): def _encode(self, obj, context, path): return 0 if obj else 1 - def __init__(self, fid='6f43', sfid=None, name='EF.SMSS', desc='SMS status', size={2, 8}, **kwargs): + def __init__(self, fid='6f43', sfid=None, name='EF.SMSS', desc='SMS status', size=(2, 8), **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = Struct( 'last_used_tpmr'/Int8ub, 'memory_capacity_exceeded'/self.MemCapAdapter(Int8ub)) @@ -512,7 +512,7 @@ class DF_TELECOM(CardDF): # TS 51.011 Section 10.3.1 class EF_LP(TransRecEF): - def __init__(self, fid='6f05', sfid=None, name='EF.LP', size={1, None}, rec_len=1, + def __init__(self, fid='6f05', sfid=None, name='EF.LP', size=(1, None), rec_len=1, desc='Language Preference'): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len) @@ -524,7 +524,7 @@ class EF_LP(TransRecEF): # TS 51.011 Section 10.3.2 class EF_IMSI(TransparentEF): - def __init__(self, fid='6f07', sfid=None, name='EF.IMSI', desc='IMSI', size={9, 9}): + def __init__(self, fid='6f07', sfid=None, name='EF.IMSI', desc='IMSI', size=(9, 9)): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size) # add those commands to the general commands of a TransparentEF self.shell_commands += [self.AddlShellCommands(self)] @@ -563,7 +563,7 @@ class EF_IMSI(TransparentEF): # TS 51.011 Section 10.3.4 class EF_PLMNsel(TransRecEF): def __init__(self, fid='6f30', sfid=None, name='EF.PLMNsel', desc='PLMN selector', - size={24, None}, rec_len=3, **kwargs): + size=(24, None), rec_len=3, **kwargs): super().__init__(fid, name=name, sfid=sfid, desc=desc, size=size, rec_len=rec_len, **kwargs) def _decode_record_hex(self, in_hex): @@ -580,7 +580,7 @@ class EF_PLMNsel(TransRecEF): # TS 51.011 Section 10.3.6 class EF_ACMmax(TransparentEF): - def __init__(self, fid='6f37', sfid=None, name='EF.ACMmax', size={3, 3}, + def __init__(self, fid='6f37', sfid=None, name='EF.ACMmax', size=(3, 3), desc='ACM maximum value', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = Struct('acm_max'/Int24ub) @@ -638,7 +638,7 @@ class EF_ServiceTable(TransparentEF): # TS 51.011 Section 10.3.11 class EF_SPN(TransparentEF): def __init__(self, fid='6f46', sfid=None, name='EF.SPN', - desc='Service Provider Name', size={17, 17}, **kwargs): + desc='Service Provider Name', size=(17, 17), **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = BitStruct( # Byte 1 @@ -651,7 +651,7 @@ class EF_SPN(TransparentEF): # TS 51.011 Section 10.3.13 class EF_CBMI(TransRecEF): - def __init__(self, fid='6f45', sfid=None, name='EF.CBMI', size={2, None}, rec_len=2, + def __init__(self, fid='6f45', sfid=None, name='EF.CBMI', size=(2, None), rec_len=2, desc='Cell Broadcast message identifier selection', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) self._construct = GreedyRange(Int16ub) @@ -659,13 +659,13 @@ class EF_CBMI(TransRecEF): # TS 51.011 Section 10.3.15 class EF_ACC(TransparentEF): def __init__(self, fid='6f78', sfid=None, name='EF.ACC', - desc='Access Control Class', size={2, 2}, **kwargs): + desc='Access Control Class', size=(2, 2), **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = HexAdapter(Bytes(2)) # TS 51.011 Section 10.3.16 class EF_LOCI(TransparentEF): - def __init__(self, fid='6f7e', sfid=None, name='EF.LOCI', desc='Location Information', size={11, 11}): + def __init__(self, fid='6f7e', sfid=None, name='EF.LOCI', desc='Location Information', size=(11, 11)): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size) self._construct = Struct('tmsi'/HexAdapter(Bytes(4)), 'lai'/HexAdapter(Bytes(5)), 'tmsi_time'/Int8ub, 'lu_status'/Enum(Byte, updated=0, not_updated=1, plmn_not_allowed=2, @@ -683,7 +683,7 @@ class EF_AD(TransparentEF): #OP_MODE_DICT = {int(v) : str(v) for v in EF_AD.OP_MODE} #OP_MODE_DICT_REVERSED = {str(v) : int(v) for v in EF_AD.OP_MODE} - def __init__(self, fid='6fad', sfid=None, name='EF.AD', desc='Administrative Data', size={3, 4}): + def __init__(self, fid='6fad', sfid=None, name='EF.AD', desc='Administrative Data', size=(3, 4)): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size) self._construct = BitStruct( # Byte 1 @@ -704,14 +704,14 @@ class EF_AD(TransparentEF): # TS 51.011 Section 10.3.20 / 10.3.22 class EF_VGCS(TransRecEF): - def __init__(self, fid='6fb1', sfid=None, name='EF.VGCS', size={4, 200}, rec_len=4, + def __init__(self, fid='6fb1', sfid=None, name='EF.VGCS', size=(4, 200), rec_len=4, desc='Voice Group Call Service', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) self._construct = BcdAdapter(Bytes(4)) # TS 51.011 Section 10.3.21 / 10.3.23 class EF_VGCSS(TransparentEF): - def __init__(self, fid='6fb2', sfid=None, name='EF.VGCSS', size={7, 7}, + def __init__(self, fid='6fb2', sfid=None, name='EF.VGCSS', size=(7, 7), desc='Voice Group Call Service Status', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = BitStruct( @@ -719,7 +719,7 @@ class EF_VGCSS(TransparentEF): # TS 51.011 Section 10.3.24 class EF_eMLPP(TransparentEF): - def __init__(self, fid='6fb5', sfid=None, name='EF.eMLPP', size={2, 2}, + def __init__(self, fid='6fb5', sfid=None, name='EF.eMLPP', size=(2, 2), desc='enhanced Multi Level Pre-emption and Priority', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) FlagsConstruct = FlagsEnum( @@ -729,7 +729,7 @@ class EF_eMLPP(TransparentEF): # TS 51.011 Section 10.3.25 class EF_AAeM(TransparentEF): - def __init__(self, fid='6fb6', sfid=None, name='EF.AAeM', size={1, 1}, + def __init__(self, fid='6fb6', sfid=None, name='EF.AAeM', size=(1, 1), desc='Automatic Answer for eMLPP Service', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) FlagsConstruct = FlagsEnum( @@ -738,28 +738,28 @@ class EF_AAeM(TransparentEF): # TS 51.011 Section 10.3.26 class EF_CBMID(EF_CBMI): - def __init__(self, fid='6f48', sfid=None, name='EF.CBMID', size={2, None}, rec_len=2, + def __init__(self, fid='6f48', sfid=None, name='EF.CBMID', size=(2, None), rec_len=2, desc='Cell Broadcast Message Identifier for Data Download', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) self._construct = GreedyRange(Int16ub) # TS 51.011 Section 10.3.27 class EF_ECC(TransRecEF): - def __init__(self, fid='6fb7', sfid=None, name='EF.ECC', size={3, 15}, rec_len=3, + def __init__(self, fid='6fb7', sfid=None, name='EF.ECC', size=(3, 15), rec_len=3, desc='Emergency Call Codes', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) self._construct = GreedyRange(BcdAdapter(Bytes(3))) # TS 51.011 Section 10.3.28 class EF_CBMIR(TransRecEF): - def __init__(self, fid='6f50', sfid=None, name='EF.CBMIR', size={4, None}, rec_len=4, + def __init__(self, fid='6f50', sfid=None, name='EF.CBMIR', size=(4, None), rec_len=4, desc='Cell Broadcast message identifier range selection', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) self._construct = GreedyRange(Struct('lower'/Int16ub, 'upper'/Int16ub)) # TS 51.011 Section 10.3.29 class EF_DCK(TransparentEF): - def __init__(self, fid='6f2c', sfid=None, name='EF.DCK', size={16, 16}, + def __init__(self, fid='6f2c', sfid=None, name='EF.DCK', size=(16, 16), desc='Depersonalisation Control Keys', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = Struct('network'/BcdAdapter(Bytes(4)), @@ -768,7 +768,7 @@ class EF_DCK(TransparentEF): 'corporate'/BcdAdapter(Bytes(4))) # TS 51.011 Section 10.3.30 class EF_CNL(TransRecEF): - def __init__(self, fid='6f32', sfid=None, name='EF.CNL', size={6, None}, rec_len=6, + def __init__(self, fid='6f32', sfid=None, name='EF.CNL', size=(6, None), rec_len=6, desc='Co-operative Network List', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) @@ -798,13 +798,13 @@ class EF_NIA(LinFixedEF): # TS 51.011 Section 10.3.32 class EF_Kc(TransparentEF): - def __init__(self, fid='6f20', sfid=None, name='EF.Kc', desc='Ciphering key Kc', size={9, 9}, **kwargs): + def __init__(self, fid='6f20', sfid=None, name='EF.Kc', desc='Ciphering key Kc', size=(9, 9), **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = Struct('kc'/HexAdapter(Bytes(8)), 'cksn'/Int8ub) # TS 51.011 Section 10.3.33 class EF_LOCIGPRS(TransparentEF): - def __init__(self, fid='6f53', sfid=None, name='EF.LOCIGPRS', desc='GPRS Location Information', size={14, 14}): + def __init__(self, fid='6f53', sfid=None, name='EF.LOCIGPRS', desc='GPRS Location Information', size=(14, 14)): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size) self._construct = Struct('ptmsi'/HexAdapter(Bytes(4)), 'ptmsi_sig'/Int8ub, 'rai'/HexAdapter(Bytes(6)), 'rau_status'/Enum(Byte, updated=0, not_updated=1, plmn_not_allowed=2, @@ -812,7 +812,7 @@ class EF_LOCIGPRS(TransparentEF): # TS 51.011 Section 10.3.35..37 class EF_xPLMNwAcT(TransRecEF): - def __init__(self, fid, sfid=None, name=None, desc=None, size={40, None}, rec_len=5, **kwargs): + def __init__(self, fid, sfid=None, name=None, desc=None, size=(40, None), rec_len=5, **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) def _decode_record_hex(self, in_hex): @@ -861,14 +861,14 @@ class EF_xPLMNwAcT(TransRecEF): # TS 51.011 Section 10.3.38 class EF_CPBCCH(TransRecEF): - def __init__(self, fid='6f63', sfid=None, name='EF.CPBCCH', size={2, 14}, rec_len=2, + def __init__(self, fid='6f63', sfid=None, name='EF.CPBCCH', size=(2, 14), rec_len=2, desc='CPBCCH Information', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, rec_len=rec_len, **kwargs) self._construct = Struct('cpbcch'/Int16ub) # TS 51.011 Section 10.3.39 class EF_InvScan(TransparentEF): - def __init__(self, fid='6f64', sfid=None, name='EF.InvScan', size={1, 1}, + def __init__(self, fid='6f64', sfid=None, name='EF.InvScan', size=(1, 1), desc='IOnvestigation Scan', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._construct = FlagsEnum( @@ -958,7 +958,7 @@ class EF_MMSICP(TransparentEF): class MMS_ConnectivityParamters(TLV_IE_Collection, nested=[MMS_Implementation, MMS_Relay_Server, Interface_to_CN, Gateway]): pass - def __init__(self, fid='6fd0', sfid=None, name='EF.MMSICP', size={1, None}, + def __init__(self, fid='6fd0', sfid=None, name='EF.MMSICP', size=(1, None), desc='MMS Issuer Connectivity Parameters', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) self._tlv = EF_MMSICP.MMS_ConnectivityParamters @@ -981,7 +981,7 @@ class EF_MMSUP(LinFixedEF): # TS 51.011 Section 10.3.55 class EF_MMSUCP(TransparentEF): - def __init__(self, fid='6fd2', sfid=None, name='EF.MMSUCP', size={1, None}, + def __init__(self, fid='6fd2', sfid=None, name='EF.MMSUCP', size=(1, None), desc='MMS User Connectivity Parameters', **kwargs): super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs) @@ -998,24 +998,24 @@ class DF_GSM(CardDF): 'Higher Priority PLMN search period'), EF_ACMmax(), EF_ServiceTable('6f38', None, 'EF.SST', - 'SIM service table', table=EF_SST_map, size={2, 16}), + 'SIM service table', table=EF_SST_map, size=(2, 16)), CyclicEF('6f39', None, 'EF.ACM', 'Accumulated call meter', rec_len={3, 3}), TransparentEF('6f3e', None, 'EF.GID1', 'Group Identifier Level 1'), TransparentEF('6f3f', None, 'EF.GID2', 'Group Identifier Level 2'), EF_SPN(), TransparentEF('6f41', None, 'EF.PUCT', - 'Price per unit and currency table', size={5, 5}), + 'Price per unit and currency table', size=(5, 5)), EF_CBMI(), TransparentEF('6f7f', None, 'EF.BCCH', - 'Broadcast control channels', size={16, 16}), + 'Broadcast control channels', size=(16, 16)), EF_ACC(), EF_PLMNsel('6f7b', None, 'EF.FPLMN', - 'Forbidden PLMNs', size={12, 12}), + 'Forbidden PLMNs', size=(12, 12)), EF_LOCI(), EF_AD(), TransparentEF('6fa3', None, 'EF.Phase', - 'Phase identification', size={1, 1}), + 'Phase identification', size=(1, 1)), EF_VGCS(), EF_VGCSS(), EF_VGCS('6fb3', None, 'EF.VBS', 'Voice Broadcast Service'),