laforge has submitted this change. (
https://gerrit.osmocom.org/c/pysim/+/33985 )
Change subject: Reimplement ust_service_activate and ust_service_deactivate for
USIM/EF.UST
......................................................................
Reimplement ust_service_activate and ust_service_deactivate for USIM/EF.UST
Fixes: f8d2e2ba0892 ("split pySim/legacy/{cards,utils} from
pySim/{cards,utils}")
Change-Id: I7a6a77b872a6f5d8c478ca75dcff8ea067b8203e
---
M pySim/ts_31_102.py
M pySim/ts_31_102_telecom.py
2 files changed, 33 insertions(+), 2 deletions(-)
Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/pySim/ts_31_102.py b/pySim/ts_31_102.py
index dc674b2..a90139d 100644
--- a/pySim/ts_31_102.py
+++ b/pySim/ts_31_102.py
@@ -466,11 +466,13 @@
def do_ust_service_activate(self, arg):
"""Activate a service within EF.UST"""
- self._cmd.card.update_ust(int(arg), 1)
+ selected_file = self._cmd.lchan.selected_file
+ selected_file.ust_update(self._cmd, [int(arg)], [])
def do_ust_service_deactivate(self, arg):
"""Deactivate a service within EF.UST"""
- self._cmd.card.update_ust(int(arg), 0)
+ selected_file = self._cmd.lchan.selected_file
+ selected_file.ust_update(self._cmd, [], [int(arg)])
def do_ust_service_check(self, arg):
"""Check consistency between services of this file and files
present/activated.
diff --git a/pySim/ts_31_102_telecom.py b/pySim/ts_31_102_telecom.py
index a0098c7..575ccae 100644
--- a/pySim/ts_31_102_telecom.py
+++ b/pySim/ts_31_102_telecom.py
@@ -120,7 +120,26 @@
cmd.lchan.select_file(self)
return num_problems
+ def ust_update(self, cmd, activate=[], deactivate=[]):
+ service_data, sw = cmd.lchan.read_binary()
+ service_data = h2b(service_data)
+ for service in activate:
+ nbyte, nbit = EF_UServiceTable._bit_byte_offset_for_service(service)
+ if nbyte > len(service_data):
+ missing = nbyte - service_data
+ service_data.extend(missing * "00")
+ service_data[nbyte] |= (1 << nbit)
+
+ for service in deactivate:
+ nbyte, nbit = EF_UServiceTable._bit_byte_offset_for_service(service)
+ if nbyte > len(service_data):
+ missing = nbyte - service_data
+ service_data.extend(missing * "00")
+ service_data[nbyte] &= ~(1 << nbit)
+
+ service_data = b2h(service_data)
+ cmd.lchan.update_binary(service_data)
# TS 31.102 Section 4.4.2.1
class EF_PBR(LinFixedEF):
--
To view, visit
https://gerrit.osmocom.org/c/pysim/+/33985
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I7a6a77b872a6f5d8c478ca75dcff8ea067b8203e
Gerrit-Change-Number: 33985
Gerrit-PatchSet: 3
Gerrit-Owner: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-CC: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: merged