laforge has submitted this change. (
https://gerrit.osmocom.org/c/pysim/+/28683 )
Change subject: Never use Bytes without any 'Adapter'
......................................................................
Never use Bytes without any 'Adapter'
Otherwise we have binary/bytes as values inside the dict, rather than a
hexadecimal string. That's ugly when printing without json formatting.
Change-Id: Ia3e7c4791d11bd4e3719a43d58e11e05ec986d1f
---
M pySim/gsm_r.py
M pySim/sysmocom_sja2.py
M pySim/ts_31_102.py
M pySim/ts_51_011.py
4 files changed, 34 insertions(+), 31 deletions(-)
Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, approved
dexter: Looks good to me, but someone else must approve
diff --git a/pySim/gsm_r.py b/pySim/gsm_r.py
index 3364b3d..b48469e 100644
--- a/pySim/gsm_r.py
+++ b/pySim/gsm_r.py
@@ -185,7 +185,7 @@
super().__init__(fid='6ff4', sfid=None,
name='EF.Shunting', desc='Shunting', size={8,
8})
self._construct = Struct('common_gid'/Int8ub,
- 'shunting_gid'/Bytes(7))
+ 'shunting_gid'/HexAdapter(Bytes(7)))
class EF_GsmrPLMN(LinFixedEF):
diff --git a/pySim/sysmocom_sja2.py b/pySim/sysmocom_sja2.py
index f87e45a..2edc916 100644
--- a/pySim/sysmocom_sja2.py
+++ b/pySim/sysmocom_sja2.py
@@ -142,13 +142,12 @@
'use_opc_instead_of_op'/Bit,
'algorithm'/Enum(Nibble, milenage=4, comp128v1=1,
comp128v2=2, comp128v3=3))
self._construct = Struct('cfg'/CfgByte,
- 'key'/Bytes(16),
- 'op' /
- If(this.cfg.algorithm == 'milenage' and not
this.cfg.use_opc_instead_of_op, Bytes(
- 16)),
+ 'key'/HexAdapter(Bytes(16)),
+ 'op'/ If(this.cfg.algorithm ==
'milenage' and not this.cfg.use_opc_instead_of_op,
+ HexAdapter(Bytes(16))),
'opc' /
- If(this.cfg.algorithm == 'milenage' and
this.cfg.use_opc_instead_of_op, Bytes(
- 16))
+ If(this.cfg.algorithm == 'milenage' and
this.cfg.use_opc_instead_of_op,
+ HexAdapter(Bytes(16)))
)
@@ -198,13 +197,13 @@
'use_opc_instead_of_op'/Bit,
'algorithm'/Enum(Nibble, milenage=4, sha1_aka=5,
xor=15))
self._construct = Struct('cfg'/CfgByte,
- 'key'/Bytes(16),
+ 'key'/HexAdapter(Bytes(16)),
'op' /
- If(this.cfg.algorithm == 'milenage' and not
this.cfg.use_opc_instead_of_op, Bytes(
- 16)),
+ If(this.cfg.algorithm == 'milenage' and not
this.cfg.use_opc_instead_of_op,
+ HexAdapter(Bytes(16))),
'opc' /
- If(this.cfg.algorithm == 'milenage' and
this.cfg.use_opc_instead_of_op, Bytes(
- 16))
+ If(this.cfg.algorithm == 'milenage' and
this.cfg.use_opc_instead_of_op,
+ HexAdapter(Bytes(16)))
)
@@ -216,13 +215,13 @@
'use_opc_instead_of_op'/Bit,
'algorithm'/Enum(Nibble, milenage=4, comp128v1=1,
comp128v2=2, comp128v3=3))
self._construct = Struct('cfg'/CfgByte,
- 'key'/Bytes(16),
+ 'key'/HexAdapter(Bytes(16)),
'op' /
- If(this.cfg.algorithm == 'milenage' and not
this.cfg.use_opc_instead_of_op, Bytes(
- 16)),
+ If(this.cfg.algorithm == 'milenage' and not
this.cfg.use_opc_instead_of_op,
+ HexAdapter(Bytes(16))),
'opc' /
- If(this.cfg.algorithm == 'milenage' and
this.cfg.use_opc_instead_of_op, Bytes(
- 16))
+ If(this.cfg.algorithm == 'milenage' and
this.cfg.use_opc_instead_of_op,
+ HexAdapter(Bytes(16)))
)
diff --git a/pySim/ts_31_102.py b/pySim/ts_31_102.py
index 314f3c2..066ee88 100644
--- a/pySim/ts_31_102.py
+++ b/pySim/ts_31_102.py
@@ -664,7 +664,7 @@
def __init__(self, fid='6f80', sfid=0x14, name='EF.ICI', rec_len={28,
48},
desc='Incoming Call Information', **kwargs):
super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, rec_len=rec_len,
**kwargs)
- self._construct = Struct('alpha_id'/Bytes(this._.total_len-28),
+ self._construct =
Struct('alpha_id'/HexAdapter(Bytes(this._.total_len-28)),
'len_of_bcd_contents'/Int8ub,
'ton_npi'/Int8ub,
'call_number'/BcdAdapter(Bytes(10)),
@@ -673,14 +673,14 @@
'date_and_time'/BcdAdapter(Bytes(7)),
'duration'/Int24ub,
'status'/Byte,
- 'link_to_phonebook'/Bytes(3))
+ 'link_to_phonebook'/HexAdapter(Bytes(3)))
# TS 31.102 Section 4.2.34
class EF_OCI(CyclicEF):
def __init__(self, fid='6f81', sfid=0x15, name='EF.OCI', rec_len={27,
47},
desc='Outgoing Call Information', **kwargs):
super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, rec_len=rec_len,
**kwargs)
- self._construct = Struct('alpha_id'/Bytes(this._.total_len-27),
+ self._construct =
Struct('alpha_id'/HexAdapter(Bytes(this._.total_len-27)),
'len_of_bcd_contents'/Int8ub,
'ton_npi'/Int8ub,
'call_number'/BcdAdapter(Bytes(10)),
@@ -688,7 +688,7 @@
'ext5_record_id'/Int8ub,
'date_and_time'/BcdAdapter(Bytes(7)),
'duration'/Int24ub,
- 'link_to_phonebook'/Bytes(3))
+ 'link_to_phonebook'/HexAdapter(Bytes(3)))
# TS 31.102 Section 4.2.35
class EF_ICT(CyclicEF):
@@ -727,7 +727,7 @@
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'/GreedyBytes)
+ self._construct = Struct('num_of_apns'/Int8ub,
'tlvs'/HexAdapter(GreedyBytes))
# TS 31.102 Section 4.2.51
class EF_START_HFN(TransparentEF):
@@ -771,7 +771,7 @@
def __init__(self, fid='6fd7', sfid=None, name='EF.MSK',
desc='MBMS Service Key List', **kwargs):
super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, rec_len={20, None},
**kwargs)
msk_ts_constr = Struct('msk_id'/Int32ub,
'timestamp_counter'/Int32ub)
- self._construct = Struct('key_domain_id'/Bytes(3),
+ self._construct = Struct('key_domain_id'/HexAdapter(Bytes(3)),
'num_msk_id'/Int8ub,
'msk_ids'/msk_ts_constr[this.num_msk_id])
# TS 31.102 Section 4.2.81
@@ -865,7 +865,8 @@
super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs)
upd_status_constr = Enum(
Byte, updated=0, not_updated=1, roaming_not_allowed=2)
- self._construct = Struct('guti'/Bytes(12),
'last_visited_registered_tai'/Bytes(5),
+ self._construct = Struct('guti'/HexAdapter(Bytes(12)),
+
'last_visited_registered_tai'/HexAdapter(Bytes(5)),
'eps_update_status'/upd_status_constr)
# TS 31.102 Section 4.2.92
@@ -958,7 +959,8 @@
super().__init__(fid, sfid=sfid, name=name, desc=desc, size=size, **kwargs)
upd_status_constr = Enum(
Byte, updated=0, not_updated=1, roaming_not_allowed=2)
- self._construct = Struct('5g_guti'/Bytes(13),
'last_visited_registered_tai_in_5gs'/Bytes(6),
+ self._construct = Struct('5g_guti'/HexAdapter(Bytes(13)),
+
'last_visited_registered_tai_in_5gs'/HexAdapter(Bytes(6)),
'5gs_update_status'/upd_status_constr)
# TS 31.102 Section 4.4.11.7
@@ -974,7 +976,8 @@
class EF_OPL5G(LinFixedEF):
def __init__(self, fid='6f08', sfid=0x08, name='EF.OPL5G',
desc='5GS Operator PLMN List', **kwargs):
super().__init__(fid=fid, sfid=sfid, name=name, desc=desc, rec_len={10, None},
**kwargs)
- Tai = Struct('mcc_mnc'/BcdAdapter(Bytes(3)), 'tac_min'/Bytes(3),
'tac_max'/Bytes(3))
+ Tai = Struct('mcc_mnc'/BcdAdapter(Bytes(3)),
'tac_min'/HexAdapter(Bytes(3)),
+ 'tac_max'/HexAdapter(Bytes(3)))
self._construct = Struct('tai'/Tai, 'pnn_record_id'/Int8ub)
# TS 31.102 Section 4.4.11.10
diff --git a/pySim/ts_51_011.py b/pySim/ts_51_011.py
index 7e7020b..c6bb194 100644
--- a/pySim/ts_51_011.py
+++ b/pySim/ts_51_011.py
@@ -667,7 +667,7 @@
class EF_LOCI(TransparentEF):
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'/Bytes(4), 'lai'/Bytes(5),
'tmsi_time'/Int8ub,
+ 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,
location_area_not_allowed=3))
@@ -806,7 +806,7 @@
class EF_LOCIGPRS(TransparentEF):
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'/Bytes(4), 'ptmsi_sig'/Int8ub,
'rai'/Bytes(6),
+ 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,
routing_area_not_allowed=3))
@@ -897,7 +897,8 @@
class EF_OPL(LinFixedEF):
def __init__(self, fid='6fc6', sfid=None, name='EF.OPL', rec_len={8,
8}, desc='Operator PLMN List', **kwargs):
super().__init__(fid, sfid=sfid, name=name, desc=desc, rec_len=rec_len,
**kwargs)
- self._construct =
Struct('lai'/Struct('mcc_mnc'/BcdAdapter(Bytes(3)),
'lac_min'/Bytes(2), 'lac_max'/Bytes(2)), 'pnn_record_id'/Int8ub)
+ self._construct =
Struct('lai'/Struct('mcc_mnc'/BcdAdapter(Bytes(3)),
+ 'lac_min'/HexAdapter(Bytes(2)),
'lac_max'/HexAdapter(Bytes(2))), 'pnn_record_id'/Int8ub)
# TS 51.011 Section 10.3.44 + TS 31.102 4.2.62
class EF_MBI(LinFixedEF):
@@ -933,8 +934,8 @@
class EF_MMSN(LinFixedEF):
def __init__(self, fid='6fce', sfid=None, name='EF.MMSN', rec_len={4,
20}, desc='MMS Notification', **kwargs):
super().__init__(fid, sfid=sfid, name=name, desc=desc, rec_len=rec_len,
**kwargs)
- self._construct = Struct('mms_status'/Bytes(2),
'mms_implementation'/Bytes(1),
- 'mms_notification'/Bytes(this._.total_len-4),
'ext_record_nr'/Byte)
+ self._construct = Struct('mms_status'/HexAdapter(Bytes(2)),
'mms_implementation'/HexAdapter(Bytes(1)),
+
'mms_notification'/HexAdapter(Bytes(this._.total_len-4)),
'ext_record_nr'/Byte)
# TS 51.011 Annex K.1
class MMS_Implementation(BER_TLV_IE, tag=0x80):
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
--
To view, visit
https://gerrit.osmocom.org/c/pysim/+/28683
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Ia3e7c4791d11bd4e3719a43d58e11e05ec986d1f
Gerrit-Change-Number: 28683
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged