neels has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/pysim/+/42261?usp=email )


Change subject: saip: SmspTpScAddr: fix get_values_from_pes
......................................................................

saip: SmspTpScAddr: fix get_values_from_pes

Change-Id: I2010305340499c907bb7618c04c61e194db34814
---
M pySim/esim/saip/personalization.py
1 file changed, 24 insertions(+), 6 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/61/42261/1

diff --git a/pySim/esim/saip/personalization.py 
b/pySim/esim/saip/personalization.py
index 7d24453..de6e6ce 100644
--- a/pySim/esim/saip/personalization.py
+++ b/pySim/esim/saip/personalization.py
@@ -554,21 +554,39 @@
     example_input = '+49301234567'
     default_source = param_source.ConstantSource

-    @classmethod
-    def validate_val(cls, val):
-        val = super().validate_val(val)
-        addr_str = str(val)
+    @staticmethod
+    def str_to_tuple(addr_str):
         if addr_str[0] == '+':
             digits = addr_str[1:]
             international = True
         else:
             digits = addr_str
             international = False
+        return (international, digits)
+
+    @staticmethod
+    def tuple_to_str(addr_tuple):
+        international, digits = addr_tuple
+        if international:
+            ret = '+'
+        else:
+            ret = ''
+        ret += digits
+        return ret
+
+    @classmethod
+    def validate_val(cls, val):
+        val = super().validate_val(val)
+
+        addr_tuple = cls.str_to_tuple(str(val))
+
+        international, digits = addr_tuple
         if len(digits) > 20:
             raise ValueError(f'TP-SC-ADDR must not exceed 20 digits: 
{digits!r}')
         if not digits.isdecimal():
             raise ValueError(f'TP-SC-ADDR must only contain decimal digits: 
{digits!r}')
-        return (international, digits)
+
+        return addr_tuple

     @classmethod
     def apply_val(cls, pes: ProfileElementSequence, val):
@@ -627,7 +645,7 @@
                 continue
             international = (international == 'international')

-            yield (international, digits)
+            yield { cls.name: cls.tuple_to_str((international, digits)) }


 class SdKey(BinaryParam):

--
To view, visit https://gerrit.osmocom.org/c/pysim/+/42261?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: I2010305340499c907bb7618c04c61e194db34814
Gerrit-Change-Number: 42261
Gerrit-PatchSet: 1
Gerrit-Owner: neels <[email protected]>

Reply via email to