]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/FirmwareStorageFormat/FvHeader.py
BaseTools: Add FMMT Python Tool
[mirror_edk2.git] / BaseTools / Source / Python / FirmwareStorageFormat / FvHeader.py
diff --git a/BaseTools/Source/Python/FirmwareStorageFormat/FvHeader.py b/BaseTools/Source/Python/FirmwareStorageFormat/FvHeader.py
new file mode 100644 (file)
index 0000000..078beda
--- /dev/null
@@ -0,0 +1,112 @@
+## @file\r
+# This file is used to define the FV Header C Struct.\r
+#\r
+# Copyright (c) 2021-, Intel Corporation. All rights reserved.<BR>\r
+# SPDX-License-Identifier: BSD-2-Clause-Patent\r
+##\r
+from ast import Str\r
+from struct import *\r
+from ctypes import *\r
+from FirmwareStorageFormat.Common import *\r
+\r
+class EFI_FV_BLOCK_MAP_ENTRY(Structure):\r
+    _pack_ = 1\r
+    _fields_ = [\r
+        ('NumBlocks',            c_uint32),\r
+        ('Length',               c_uint32),\r
+    ]\r
+\r
+\r
+class EFI_FIRMWARE_VOLUME_HEADER(Structure):\r
+    _fields_ = [\r
+        ('ZeroVector',           ARRAY(c_uint8, 16)),\r
+        ('FileSystemGuid',       GUID),\r
+        ('FvLength',             c_uint64),\r
+        ('Signature',            c_uint32),\r
+        ('Attributes',           c_uint32),\r
+        ('HeaderLength',         c_uint16),\r
+        ('Checksum',             c_uint16),\r
+        ('ExtHeaderOffset',      c_uint16),\r
+        ('Reserved',             c_uint8),\r
+        ('Revision',             c_uint8),\r
+        ('BlockMap',             ARRAY(EFI_FV_BLOCK_MAP_ENTRY, 1)),\r
+        ]\r
+\r
+def Refine_FV_Header(nums):\r
+    class EFI_FIRMWARE_VOLUME_HEADER(Structure):\r
+        _fields_ = [\r
+            ('ZeroVector',           ARRAY(c_uint8, 16)),\r
+            ('FileSystemGuid',       GUID),\r
+            ('FvLength',             c_uint64),\r
+            ('Signature',            c_uint32),\r
+            ('Attributes',           c_uint32),\r
+            ('HeaderLength',         c_uint16),\r
+            ('Checksum',             c_uint16),\r
+            ('ExtHeaderOffset',      c_uint16),\r
+            ('Reserved',             c_uint8),\r
+            ('Revision',             c_uint8),\r
+            ('BlockMap',             ARRAY(EFI_FV_BLOCK_MAP_ENTRY, nums)),\r
+            ]\r
+    return EFI_FIRMWARE_VOLUME_HEADER\r
+\r
+class EFI_FIRMWARE_VOLUME_EXT_HEADER(Structure):\r
+    _fields_ = [\r
+        ('FvName',               GUID),\r
+        ('ExtHeaderSize',        c_uint32)\r
+        ]\r
+\r
+class EFI_FIRMWARE_VOLUME_EXT_ENTRY(Structure):\r
+    _fields_ = [\r
+        ('ExtEntrySize',         c_uint16),\r
+        ('ExtEntryType',         c_uint16)\r
+        ]\r
+\r
+class EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE_0(Structure):\r
+    _fields_ = [\r
+        ('Hdr',                  EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
+        ('TypeMask',             c_uint32)\r
+        ]\r
+\r
+class EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE(Structure):\r
+    _fields_ = [\r
+        ('Hdr',                  EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
+        ('TypeMask',             c_uint32),\r
+        ('Types',                ARRAY(GUID, 1))\r
+        ]\r
+\r
+def Refine_FV_EXT_ENTRY_OEM_TYPE_Header(nums: int) -> EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE:\r
+    class EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE(Structure):\r
+        _fields_ = [\r
+            ('Hdr',                  EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
+            ('TypeMask',             c_uint32),\r
+            ('Types',                ARRAY(GUID, nums))\r
+        ]\r
+    return EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE(Structure)\r
+\r
+class EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE_0(Structure):\r
+    _fields_ = [\r
+        ('Hdr',                  EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
+        ('FormatType',           GUID)\r
+        ]\r
+\r
+class EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE(Structure):\r
+    _fields_ = [\r
+        ('Hdr',                  EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
+        ('FormatType',           GUID),\r
+        ('Data',                 ARRAY(c_uint8, 1))\r
+        ]\r
+\r
+def Refine_FV_EXT_ENTRY_GUID_TYPE_Header(nums: int) -> EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE:\r
+    class EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE(Structure):\r
+        _fields_ = [\r
+            ('Hdr',                  EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
+            ('FormatType',           GUID),\r
+            ('Data',                 ARRAY(c_uint8, nums))\r
+        ]\r
+    return EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE(Structure)\r
+\r
+class EFI_FIRMWARE_VOLUME_EXT_ENTRY_USED_SIZE_TYPE(Structure):\r
+    _fields_ = [\r
+        ('Hdr',                  EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
+        ('UsedSize',             c_uint32)\r
+        ]\r