lynxis lazus has uploaded this change for review. ( 
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, 35 insertions(+), 2 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/85/33985/1

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..768872c 100644
--- a/pySim/ts_31_102_telecom.py
+++ b/pySim/ts_31_102_telecom.py
@@ -31,6 +31,7 @@
 from pySim.construct import *
 from construct import Optional as COptional
 from construct import *
+import binascii

 # TS 31.102 Section 4.2.8
 class EF_UServiceTable(TransparentEF):
@@ -120,7 +121,27 @@
             cmd.lchan.select_file(self)
         return num_problems

+    def ust_update(self, cmd, activate=[], deactivate=[]):
+        service_data, sw = cmd.lchan.read_binary()
+        service_data = bytearray(binascii.a2b_hex(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 = str(binascii.b2a_hex(service_data), 'utf-8')
+        print(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: 1
Gerrit-Owner: lynxis lazus <[email protected]>
Gerrit-MessageType: newchange

Reply via email to