neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/pysim/+/40200?usp=email )
Change subject: personalization: indicate default ParamSource per ConfigurableParameter ......................................................................
personalization: indicate default ParamSource per ConfigurableParameter
Add default_source class members pointing to ParamSource classes to all ConfigurableParameter subclasses.
This is useful to automatically set up a default ParamSource for a given ConfigurableParameter subclass, during user interaction to produce a batch personalization.
For example, if the user selects a Pin1 parameter, a calling program can implicitly set this to a RandomDigitSource, which will magically make it work the way that most users need.
BTW, default_source and default_value can be combined to configure a matching ParamSource instance:
my_source = MyParam.default_source.from_str( MyParam.default_value )
Change-Id: Ie58d13bce3fa1aa2547cf3cee918c2f5b30a8b32 --- M pySim/esim/saip/personalization.py 1 file changed, 8 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/00/40200/1
diff --git a/pySim/esim/saip/personalization.py b/pySim/esim/saip/personalization.py index 34d7df9..317cac5 100644 --- a/pySim/esim/saip/personalization.py +++ b/pySim/esim/saip/personalization.py @@ -130,6 +130,7 @@ max_len = None allow_len = None # a list of specific lengths default_value = None + default_source = None # a param_source.ParamSource subclass
def __init__(self, input_value=None): self.input_value = input_value # the raw input value as given by caller @@ -345,6 +346,7 @@ min_len = 18 max_len = 20 default_value = '0' * 18 + default_source = param_source.IncDigitSource
@classmethod def validate_val(cls, val): @@ -378,6 +380,7 @@ min_len = 6 max_len = 15 default_value = '00101' + ('0' * 10) + default_source = param_source.IncDigitSource
@classmethod def apply_val(cls, pes: ProfileElementSequence, val): @@ -410,6 +413,7 @@ key_id = None kvn = None key_usage_qual = None + default_source = param_source.RandomHexDigitSource
@classmethod def _apply_sd(cls, pe: ProfileElement, value): @@ -566,6 +570,7 @@ rpad = 16 keyReference = None default_value = '0' * allow_len + default_source = param_source.RandomDigitSource
@classmethod def apply_val(cls, pes: ProfileElementSequence, val): @@ -603,6 +608,7 @@ min_len = 4 max_len = 8 default_value = '0' * max_len + default_source = param_source.RandomDigitSource keyReference = None
@staticmethod @@ -714,6 +720,7 @@ algo_config_key = 'algorithmID' allow_len = 1 default_value = 1 # Milenage + default_source = param_source.ConstantSource
@classmethod def validate_val(cls, val): @@ -732,6 +739,7 @@ algo_config_key = 'key' allow_len = int(128/8) # length in bytes (from BinaryParam) default_value = '00' * allow_len + default_source = param_source.RandomHexDigitSource
class Opc(K): name = 'OPc'