aboutsummaryrefslogtreecommitdiffstats
path: root/pySim/construct.py
diff options
context:
space:
mode:
Diffstat (limited to 'pySim/construct.py')
-rw-r--r--pySim/construct.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/pySim/construct.py b/pySim/construct.py
index 97af235..20a6946 100644
--- a/pySim/construct.py
+++ b/pySim/construct.py
@@ -87,6 +87,26 @@ class Rpad(Adapter):
len(obj), self.sizeof()))
return obj + self.pattern * (self.sizeof() - len(obj))
+class MultiplyAdapter(Adapter):
+ """
+ Decoder multiplies by multiplicator
+ Encoder divides by multiplicator
+
+ Parameters:
+ subcon: Subconstruct as defined by construct library
+ multiplier: Multiplier to apply to raw encoded value
+ """
+
+ def __init__(self, subcon, multiplicator):
+ super().__init__(subcon)
+ self.multiplicator = multiplicator
+
+ def _decode(self, obj, context, path):
+ return obj * 8
+
+ def _encode(self, obj, context, path):
+ return obj // 8
+
class GsmStringAdapter(Adapter):
"""Convert GSM 03.38 encoded bytes to a string."""