aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Chemeris <Alexander.Chemeris@gmail.com>2017-07-18 16:44:26 +0300
committerAlexander Chemeris <Alexander.Chemeris@gmail.com>2018-01-10 14:04:08 +0900
commit067f69cade29f08272d2b863986da57f3a186fa6 (patch)
tree2c1c006c1256ac95cf1e05df873b07d841fe735b
parentd17ca3ddd83cd8639d27aaf0c88b1ce616cfc0b6 (diff)
ts_51_011: A file with MF/DF/EF constants from TS 51 011
pySim has been using magic numbers to access various files which makes it hard to read, maintain and extend. With this file in place we can start replacing all those magic numbers with human readable names lile EF['IMSI'] instead of ['3F00', '7F20', '6F07']. Change-Id: I38f5d36d16b41b5d516a6a3e2ec1d09637883932
-rw-r--r--pySim/ts_51_011.py251
1 files changed, 251 insertions, 0 deletions
diff --git a/pySim/ts_51_011.py b/pySim/ts_51_011.py
new file mode 100644
index 0000000..754d57f
--- /dev/null
+++ b/pySim/ts_51_011.py
@@ -0,0 +1,251 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+""" Various constants from ETSI TS 151.011
+"""
+
+#
+# Copyright (C) 2017 Alexander.Chemeris <Alexander.Chemeris@gmail.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+MF_num = '3F00'
+
+DF_num = {
+'TELECOM': '7F10',
+
+'GSM': '7F20',
+'IS-41': '7F22',
+'FP-CTS': '7F23',
+
+'GRAPHICS': '5F50',
+
+'IRIDIUM': '5F30',
+'GLOBST': '5F31',
+'ICO': '5F32',
+'ACeS': '5F33',
+
+'EIA/TIA-553': '5F40',
+'CTS': '5F60',
+'SOLSA': '5F70',
+
+'MExE': '5F3C',
+}
+
+EF_num = {
+# MF
+'ICCID': '2FE2',
+'ELP': '2F05',
+
+# DF_TELECOM
+'ADN': '6F3A',
+'FDN': '6F3B',
+'SMS': '6F3C',
+'CCP': '6F3D',
+'MSISDN': '6F40',
+'SMSP': '6F42',
+'SMSS': '6F43',
+'LND': '6F44',
+'SMSR': '6F47',
+'SDN': '6F49',
+'EXT1': '6F4A',
+'EXT2': '6F4B',
+'EXT3': '6F4C',
+'BDN': '6F4D',
+'EXT4': '6F4E',
+'CMI': '6F58',
+'ECCP': '6F4F',
+
+# DF_GRAPHICS
+'IMG': '4F20',
+
+# DF_SoLSA
+'SAI': '4F30',
+'SLL': '4F31',
+
+# DF_MExE
+'MExE-ST': '4F40',
+'ORPK': '4F41',
+'ARPK': '4F42',
+'TPRPK': '4F43',
+
+# DF_GSM
+'LP': '6F05',
+'IMSI': '6F07',
+'Kc': '6F20',
+'DCK': '6F2C',
+'PLMNsel': '6F30',
+'HPPLMN': '6F31',
+'CNL': '6F32',
+'ACMmax': '6F37',
+'SST': '6F38',
+'ACM': '6F39',
+'GID1': '6F3E',
+'GID2': '6F3F',
+'PUCT': '6F41',
+'CBMI': '6F45',
+'SPN': '6F46',
+'CBMID': '6F48',
+'BCCH': '6F74',
+'ACC': '6F78',
+'FPLMN': '6F7B',
+'LOCI': '6F7E',
+'AD': '6FAD',
+'PHASE': '6FAE',
+'VGCS': '6FB1',
+'VGCSS': '6FB2',
+'VBS': '6FB3',
+'VBSS': '6FB4',
+'eMLPP': '6FB5',
+'AAeM': '6FB6',
+'ECC': '6FB7',
+'CBMIR': '6F50',
+'NIA': '6F51',
+'KcGPRS': '6F52',
+'LOCIGPRS': '6F53',
+'SUME': '6F54',
+'PLMNwAcT': '6F60',
+'OPLMNwAcT': '6F61',
+# Figure 8 names it HPLMNAcT, but in the text it's names it HPLMNwAcT
+'HPLMNAcT': '6F62',
+'HPLMNwAcT': '6F62',
+'CPBCCH': '6F63',
+'INVSCAN': '6F64',
+'PNN': '6FC5',
+'OPL': '6FC6',
+'MBDN': '6FC7',
+'EXT6': '6FC8',
+'MBI': '6FC9',
+'MWIS': '6FCA',
+'CFIS': '6FCB',
+'EXT7': '6FCC',
+'SPDI': '6FCD',
+'MMSN': '6FCE',
+'EXT8': '6FCF',
+'MMSICP': '6FD0',
+'MMSUP': '6FD1',
+'MMSUCP': '6FD2',
+}
+
+DF = {
+'TELECOM': [MF_num, DF_num['TELECOM']],
+
+'GSM': [MF_num, DF_num['GSM']],
+'IS-41': [MF_num, DF_num['IS-41']],
+'FP-CTS': [MF_num, DF_num['FP-CTS']],
+
+'GRAPHICS': [MF_num, DF_num['GRAPHICS']],
+
+'IRIDIUM': [MF_num, DF_num['IRIDIUM']],
+'GLOBST': [MF_num, DF_num['GLOBST']],
+'ICO': [MF_num, DF_num['ICO']],
+'ACeS': [MF_num, DF_num['ACeS']],
+
+'EIA/TIA-553': [MF_num, DF_num['EIA/TIA-553']],
+'CTS': [MF_num, DF_num['CTS']],
+'SoLSA': [MF_num, DF_num['SOLSA']],
+
+'MExE': [MF_num, DF_num['MExE']],
+}
+
+
+EF = {
+'ICCID': [MF_num, EF_num['ICCID']],
+'ELP': [MF_num, EF_num['ELP']],
+
+'ADN': DF['TELECOM']+[EF_num['ADN']],
+'FDN': DF['TELECOM']+[EF_num['FDN']],
+'SMS': DF['TELECOM']+[EF_num['SMS']],
+'CCP': DF['TELECOM']+[EF_num['CCP']],
+'MSISDN': DF['TELECOM']+[EF_num['MSISDN']],
+'SMSP': DF['TELECOM']+[EF_num['SMSP']],
+'SMSS': DF['TELECOM']+[EF_num['SMSS']],
+'LND': DF['TELECOM']+[EF_num['LND']],
+'SMSR': DF['TELECOM']+[EF_num['SMSR']],
+'SDN': DF['TELECOM']+[EF_num['SDN']],
+'EXT1': DF['TELECOM']+[EF_num['EXT1']],
+'EXT2': DF['TELECOM']+[EF_num['EXT2']],
+'EXT3': DF['TELECOM']+[EF_num['EXT3']],
+'BDN': DF['TELECOM']+[EF_num['BDN']],
+'EXT4': DF['TELECOM']+[EF_num['EXT4']],
+'CMI': DF['TELECOM']+[EF_num['CMI']],
+'ECCP': DF['TELECOM']+[EF_num['ECCP']],
+
+'IMG': DF['GRAPHICS']+[EF_num['IMG']],
+
+'SAI': DF['SoLSA']+[EF_num['SAI']],
+'SLL': DF['SoLSA']+[EF_num['SLL']],
+
+'MExE-ST': DF['MExE']+[EF_num['MExE-ST']],
+'ORPK': DF['MExE']+[EF_num['ORPK']],
+'ARPK': DF['MExE']+[EF_num['ARPK']],
+'TPRPK': DF['MExE']+[EF_num['TPRPK']],
+
+'LP': DF['GSM']+[EF_num['LP']],
+'IMSI': DF['GSM']+[EF_num['IMSI']],
+'Kc': DF['GSM']+[EF_num['Kc']],
+'DCK': DF['GSM']+[EF_num['DCK']],
+'PLMNsel': DF['GSM']+[EF_num['PLMNsel']],
+'HPPLMN': DF['GSM']+[EF_num['HPPLMN']],
+'CNL': DF['GSM']+[EF_num['CNL']],
+'ACMmax': DF['GSM']+[EF_num['ACMmax']],
+'SST': DF['GSM']+[EF_num['SST']],
+'ACM': DF['GSM']+[EF_num['ACM']],
+'GID1': DF['GSM']+[EF_num['GID1']],
+'GID2': DF['GSM']+[EF_num['GID2']],
+'PUCT': DF['GSM']+[EF_num['PUCT']],
+'CBMI': DF['GSM']+[EF_num['CBMI']],
+'SPN': DF['GSM']+[EF_num['SPN']],
+'CBMID': DF['GSM']+[EF_num['CBMID']],
+'BCCH': DF['GSM']+[EF_num['BCCH']],
+'ACC': DF['GSM']+[EF_num['ACC']],
+'FPLMN': DF['GSM']+[EF_num['FPLMN']],
+'LOCI': DF['GSM']+[EF_num['LOCI']],
+'AD': DF['GSM']+[EF_num['AD']],
+'PHASE': DF['GSM']+[EF_num['PHASE']],
+'VGCS': DF['GSM']+[EF_num['VGCS']],
+'VGCSS': DF['GSM']+[EF_num['VGCSS']],
+'VBS': DF['GSM']+[EF_num['VBS']],
+'VBSS': DF['GSM']+[EF_num['VBSS']],
+'eMLPP': DF['GSM']+[EF_num['eMLPP']],
+'AAeM': DF['GSM']+[EF_num['AAeM']],
+'ECC': DF['GSM']+[EF_num['ECC']],
+'CBMIR': DF['GSM']+[EF_num['CBMIR']],
+'NIA': DF['GSM']+[EF_num['NIA']],
+'KcGPRS': DF['GSM']+[EF_num['KcGPRS']],
+'LOCIGPRS': DF['GSM']+[EF_num['LOCIGPRS']],
+'SUME': DF['GSM']+[EF_num['SUME']],
+'PLMNwAcT': DF['GSM']+[EF_num['PLMNwAcT']],
+'OPLMNwAcT': DF['GSM']+[EF_num['OPLMNwAcT']],
+# Figure 8 names it HPLMNAcT, but in the text it's names it HPLMNwAcT
+'HPLMNAcT': DF['GSM']+[EF_num['HPLMNAcT']],
+'HPLMNwAcT': DF['GSM']+[EF_num['HPLMNAcT']],
+'CPBCCH': DF['GSM']+[EF_num['CPBCCH']],
+'INVSCAN': DF['GSM']+[EF_num['INVSCAN']],
+'PNN': DF['GSM']+[EF_num['PNN']],
+'OPL': DF['GSM']+[EF_num['OPL']],
+'MBDN': DF['GSM']+[EF_num['MBDN']],
+'EXT6': DF['GSM']+[EF_num['EXT6']],
+'MBI': DF['GSM']+[EF_num['MBI']],
+'MWIS': DF['GSM']+[EF_num['MWIS']],
+'CFIS': DF['GSM']+[EF_num['CFIS']],
+'EXT7': DF['GSM']+[EF_num['EXT7']],
+'SPDI': DF['GSM']+[EF_num['SPDI']],
+'MMSN': DF['GSM']+[EF_num['MMSN']],
+'EXT8': DF['GSM']+[EF_num['EXT8']],
+'MMSICP': DF['GSM']+[EF_num['MMSICP']],
+'MMSUP': DF['GSM']+[EF_num['MMSUP']],
+'MMSUCP': DF['GSM']+[EF_num['MMSUCP']],
+}