laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/28633 )
Change subject: ts_31_102: Support for DF_MCS (Mission Critical Services) ......................................................................
ts_31_102: Support for DF_MCS (Mission Critical Services)
Change-Id: I0485a14c7820f7b345eeba6109a93b6d4bc639bf --- M pySim/ts_31_102_telecom.py M pySim/ts_51_011.py 2 files changed, 69 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/33/28633/1
diff --git a/pySim/ts_31_102_telecom.py b/pySim/ts_31_102_telecom.py index 5b2162a..d0f33b1 100644 --- a/pySim/ts_31_102_telecom.py +++ b/pySim/ts_31_102_telecom.py @@ -5,7 +5,7 @@ # pylint: disable=undefined-variable
""" -DF_PHONEBOOK, DF_MULTIMEDIA as specified in 3GPP TS 31.102 V16.6.0 +DF_PHONEBOOK, DF_MULTIMEDIA, DF_MCS as specified in 3GPP TS 31.102 V16.6.0 Needs to be a separate python module to avoid cyclic imports """
@@ -180,3 +180,69 @@ EF_MMDF(), ] self.add_files(files) + + +# TS 31.102 Section 4.6.4.1 +EF_MST_map = { + 1: 'MCPTT UE configuration data', + 2: 'MCPTT User profile data', + 3: 'MCS Group configuration data', + 4: 'MCPTT Service configuration data', + 5: 'MCS UE initial configuration data', + 6: 'MCData UE configuration data', + 7: 'MCData user profile data', + 8: 'MCData service configuration data', + 9: 'MCVideo UE configuration data', + 10: 'MCVideo user profile data', + 11: 'MCVideo service configuration data', + } + +# TS 31.102 Section 4.6.4.2 +class EF_MCS_CONFIG(BerTlvEF): + class McpttUeConfigurationData(BER_TLV_IE, tag=0x80): + pass + class McpttUserProfileData(BER_TLV_IE, tag=0x81): + pass + class McsGroupConfigurationData(BER_TLV_IE, tag=0x82): + pass + class McpttServiceConfigurationData(BER_TLV_IE, tag=0x83): + pass + class McsUeInitialConfigurationData(BER_TLV_IE, tag=0x84): + pass + class McdataUeConfigurationData(BER_TLV_IE, tag=0x85): + pass + class McdataUserProfileData(BER_TLV_IE, tag=0x86): + pass + class McdataServiceConfigurationData(BER_TLV_IE, tag=0x87): + pass + class McvideoUeConfigurationData(BER_TLV_IE, tag=0x88): + pass + class McvideoUserProfileData(BER_TLV_IE, tag=0x89): + pass + class McvideoServiceConfigurationData(BER_TLV_IE, tag=0x8a): + pass + class McsConfigDataCollection(TLV_IE_Collection, nested=[McpttUeConfigurationData, + McpttUserProfileData, McsGroupConfigurationData, + McpttServiceConfigurationData, McsUeInitialConfigurationData, + McdataUeConfigurationData, McdataUserProfileData, + McdataServiceConfigurationData, McvideoUeConfigurationData, + McvideoUserProfileData, McvideoServiceConfigurationData]): + pass + def __init__(self, fid='4F02', sfid=0x02, name='EF.MCS_CONFIG', desc='MCS configuration data', **kwargs): + super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, **kwargs) + self._tlv = EF_MCS_CONFIG.McsConfigDataCollection + +# 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}, + table=EF_MST_map, **kwargs): + super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, size=size, table=table) + +class DF_MCS(CardDF): + def __init__(self, fid='5F3D', name='DF.MCS', desc='Mission Critical Services', **kwargs): + super().__init__(fid=fid, name=name, desc=desc, **kwargs) + files = [ + EF_MST(), + EF_MCS_CONFIG(), + ] + self.add_files(files) diff --git a/pySim/ts_51_011.py b/pySim/ts_51_011.py index b2a9ca4..362d484 100644 --- a/pySim/ts_51_011.py +++ b/pySim/ts_51_011.py @@ -32,7 +32,7 @@ from pySim.profile import match_sim from pySim.profile import CardProfile from pySim.filesystem import * -from pySim.ts_31_102_telecom import DF_PHONEBOOK, DF_MULTIMEDIA +from pySim.ts_31_102_telecom import DF_PHONEBOOK, DF_MULTIMEDIA, DF_MCS import enum from pySim.construct import * from construct import Optional as COptional @@ -500,8 +500,8 @@ EF_CMI(), # not really part of 51.011 but something that TS 31.102 specifies may exist here. DF_PHONEBOOK(), - # not really part of 51.011 but something that TS 31.102 specifies may exist here. DF_MULTIMEDIA(), + DF_MCS(), ] self.add_files(files)