[S] Change in pysim[master]: Reimplement ust_service_activate and ust_service_deactivate for USIM/...
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@fe80.eu> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge@osmocom.org> Gerrit-CC: dexter <pmaier@sysmocom.de> Gerrit-MessageType: merged
participants (1)
-
laforge