From becb94eb88617c7f3fc4b768f9fcd4fcf6766bb7 Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Sun, 21 Oct 2018 22:38:34 +0200 Subject: [PATCH] More import stuff. --- grmn/tlv.py | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/grmn/tlv.py b/grmn/tlv.py index b8a202d..f0d14cc 100644 --- a/grmn/tlv.py +++ b/grmn/tlv.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from . import devices -from binascii import hexlify +from binascii import hexlify, unhexlify from struct import pack, unpack TLV_TYPES = { @@ -101,7 +101,10 @@ class TLV: return data def load_dump(self, values): - pass + for (k, v) in values: + if k == "value": + self.value = unhexlify("".join(v.split(" "))) + self.length = len(self.value) @staticmethod def create_from_dump(values): @@ -121,9 +124,9 @@ class TLV1(TLV): return data def load_dump(self, values): - for (k, v) in values: - if k == "value": - self.value = int(v, 0) + # Will be calculated in a final pass + self.value = 0x00 + self.length = 1 class TLV2(TLV): def dump(self): @@ -132,6 +135,12 @@ class TLV2(TLV): data.append(("length", self.get_actual_length(), "Length of padding block")) return data + def load_dump(self, values): + for (k, v) in values: + if k == "length": + self.value = b"\x00" * int(v) + self.length = len(self.value) + class TLV5(TLV): def dump(self): data = [] @@ -140,6 +149,16 @@ class TLV5(TLV): data.append(("text", self.value.decode("utf-8"), None)) return data + def load_dump(self, values): + for (k, v) in values: + if k == "text": + self.value = v.encode("utf-8") + elif k == "length": + self.length = int(v) + if len(self.value) != self.length: + print("WARNING: Imported copyright text doesn't match supposed length.") + self.length = len(self.value) + class TLV6(TLV): """ Describes following TLV7: