SJA2: Implement DF.SYSTEM/EF.0348_KEY using construct

This implicitly adds support for JSON->binary encoding, not just
decoding (previous code predating construct support).

Change-Id: I0994d9f66a504dd3c60b43ed5cf6645515dcbc6a
This commit is contained in:
Harald Welte
2023-05-27 20:08:09 +02:00
committed by laforge
parent ba6d6ab64f
commit 954ce95a16
2 changed files with 29 additions and 13 deletions

View File

@@ -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."""