diff options
Diffstat (limited to 'utility/pack_firmware_image')
-rwxr-xr-x | utility/pack_firmware_image | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/utility/pack_firmware_image b/utility/pack_firmware_image index 7f0c41c5..1ca1b326 100755 --- a/utility/pack_firmware_image +++ b/utility/pack_firmware_image @@ -80,7 +80,17 @@ class Entry(dict): raise PackError('class Entry does not implement Pack()') -class EntryFmap(Entry): +class EntryFmapArea(Entry): + + def __init__(self, **kwargs): + Entry._CheckFields(kwargs, ('flags',)) + super(EntryFmapArea, self).__init__(**kwargs) + + def Pack(self, firmware_image, entries): + pass + + +class EntryFmap(EntryFmapArea): def __init__(self, **kwargs): Entry._CheckFields(kwargs, ('ver_major', 'ver_minor', 'base', 'size')) @@ -90,9 +100,8 @@ class EntryFmap(Entry): # prepare header areas areas = [] for e in entries: - if isinstance(e, EntryFmapArea): - areas.append(dict((name, e[name] if name != 'size' else e['length']) - for name in FMAP_AREA_NAMES)) + areas.append(dict((name, e[name] if name != 'size' else e['length']) + for name in FMAP_AREA_NAMES)) # prepare header obj = {'areas':areas} @@ -114,16 +123,6 @@ class EntryFmap(Entry): firmware_image.write(blob) -class EntryFmapArea(Entry): - - def __init__(self, **kwargs): - Entry._CheckFields(kwargs, ('flags',)) - super(EntryFmapArea, self).__init__(**kwargs) - - def Pack(self, firmware_image, entries): - pass - - class EntryWiped(EntryFmapArea): def __init__(self, **kwargs): @@ -147,6 +146,20 @@ class EntryWiped(EntryFmapArea): firmware_image.write(self.wipe_value * self.length) +class EntryBlobString(EntryFmapArea): + + def __init__(self, **kwargs): + Entry._CheckFields(kwargs, ('value',)) + super(EntryBlobString, self).__init__(**kwargs) + + def Pack(self, firmware_image, entries): + if len(self.value) > self.length: + raise PackError('string too large: len(%s) > %d' % + (self.value, self.length)) + firmware_image.seek(self.offset) + firmware_image.write(self.value) + + class EntryBlob(EntryFmapArea): def __init__(self, **kwargs): |