mirror of https://gerrit.osmocom.org/pysim
51.011: Define some more files within DF_TELECOM
Add some more minimal definitions for various DF_TELECOM files Change-Id: I155729b4d62969cde2af00fc9fb9901299fe5c25
This commit is contained in:
parent
89e5954773
commit
ec7d0daf6e
|
@ -351,9 +351,39 @@ class EF_ADN(LinFixedEF):
|
||||||
return {'alpha_id': alpha_id, 'len_of_bcd': u[0], 'ton_npi': u[1],
|
return {'alpha_id': alpha_id, 'len_of_bcd': u[0], 'ton_npi': u[1],
|
||||||
'dialing_nr': u[2], 'cap_conf_id': u[3], 'ext1_record_id': u[4]}
|
'dialing_nr': u[2], 'cap_conf_id': u[3], 'ext1_record_id': u[4]}
|
||||||
|
|
||||||
|
# TS 51.011 Section 10.5.5
|
||||||
|
class EF_SMS(LinFixedEF):
|
||||||
|
def __init__(self, fid='6f3c', sfid=None, name='EF.SMS', desc='Short messages'):
|
||||||
|
super().__init__(fid, sfid=sfid, name=name, desc=desc, rec_len={176,176})
|
||||||
|
def _decode_record_bin(self, raw_bin_data):
|
||||||
|
def decode_status(status):
|
||||||
|
if status & 0x01 == 0x00:
|
||||||
|
return (None, 'free_space')
|
||||||
|
elif status & 0x07 == 0x01:
|
||||||
|
return ('mt', 'message_read')
|
||||||
|
elif status & 0x07 == 0x03:
|
||||||
|
return ('mt', 'message_to_be_read')
|
||||||
|
elif status & 0x07 == 0x07:
|
||||||
|
return ('mo', 'message_to_be_sent')
|
||||||
|
elif status & 0x1f == 0x05:
|
||||||
|
return ('mo', 'sent_status_not_requested')
|
||||||
|
elif status & 0x1f == 0x0d:
|
||||||
|
return ('mo', 'sent_status_req_but_not_received')
|
||||||
|
elif status & 0x1f == 0x15:
|
||||||
|
return ('mo', 'sent_status_req_rx_not_stored_smsr')
|
||||||
|
elif status & 0x1f == 0x1d:
|
||||||
|
return ('mo', 'sent_status_req_rx_stored_smsr')
|
||||||
|
else:
|
||||||
|
return (None, 'rfu')
|
||||||
|
|
||||||
|
status = decode_status(raw_bin_data[0])
|
||||||
|
remainder = raw_bin_data[1:]
|
||||||
|
return {'direction': status[0], 'status': status[1], 'remainder': b2h(remainder)}
|
||||||
|
|
||||||
|
|
||||||
# TS 51.011 Section 10.5.5
|
# TS 51.011 Section 10.5.5
|
||||||
class EF_MSISDN(LinFixedEF):
|
class EF_MSISDN(LinFixedEF):
|
||||||
def __init__(self, fid='6f4f', sfid=None, name='EF.MSISDN', desc='MSISDN'):
|
def __init__(self, fid='6f40', sfid=None, name='EF.MSISDN', desc='MSISDN'):
|
||||||
super().__init__(fid, sfid=sfid, name=name, desc=desc, rec_len={15, None})
|
super().__init__(fid, sfid=sfid, name=name, desc=desc, rec_len={15, None})
|
||||||
def _decode_record_hex(self, raw_hex_data):
|
def _decode_record_hex(self, raw_hex_data):
|
||||||
return {'msisdn': dec_msisdn(raw_hex_data)}
|
return {'msisdn': dec_msisdn(raw_hex_data)}
|
||||||
|
@ -370,10 +400,16 @@ class DF_TELECOM(CardDF):
|
||||||
super().__init__(fid=fid, name=name, desc=desc)
|
super().__init__(fid=fid, name=name, desc=desc)
|
||||||
files = [
|
files = [
|
||||||
EF_ADN(),
|
EF_ADN(),
|
||||||
# FDN, SMS, CCP, ECCP
|
EF_ADN(fid='6f3b', name='EF_FDN', desc='Fixed dialling numbers'),
|
||||||
|
EF_SMS(),
|
||||||
|
LinFixedEF(fid='6f3d', name='EF.CCP', desc='Capability Configuration Parameters', rec_len={14,14}),
|
||||||
|
LinFixedEF(fid='6f4f', name='EF.ECCP', desc='Extended Capability Configuration Parameters', rec_len={15,32}),
|
||||||
EF_MSISDN(),
|
EF_MSISDN(),
|
||||||
EF_SMSP(),
|
EF_SMSP(),
|
||||||
# SMSS, LND, SDN, EXT1, EXT2, EXT3, BDN, EXT4, SMSR, CMI
|
TransparentEF(fid='6f43', name='EF.SMSS', desc='SMS status', size={2,8}),
|
||||||
|
# LND, SDN, EXT1, EXT2, EXT3, BDN, EXT4
|
||||||
|
LinFixedEF(fid='6f47', name='EF.SMSR', desc='SMS status reports', rec_len={30,30}),
|
||||||
|
# CMI
|
||||||
]
|
]
|
||||||
self.add_files(files)
|
self.add_files(files)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue