]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/Python/FirmwareStorageFormat/FvHeader.py
BaseTools: Add FMMT Python Tool
[mirror_edk2.git] / BaseTools / Source / Python / FirmwareStorageFormat / FvHeader.py
CommitLineData
a64b9449
CC
1## @file\r
2# This file is used to define the FV Header C Struct.\r
3#\r
4# Copyright (c) 2021-, Intel Corporation. All rights reserved.<BR>\r
5# SPDX-License-Identifier: BSD-2-Clause-Patent\r
6##\r
7from ast import Str\r
8from struct import *\r
9from ctypes import *\r
10from FirmwareStorageFormat.Common import *\r
11\r
12class EFI_FV_BLOCK_MAP_ENTRY(Structure):\r
13 _pack_ = 1\r
14 _fields_ = [\r
15 ('NumBlocks', c_uint32),\r
16 ('Length', c_uint32),\r
17 ]\r
18\r
19\r
20class EFI_FIRMWARE_VOLUME_HEADER(Structure):\r
21 _fields_ = [\r
22 ('ZeroVector', ARRAY(c_uint8, 16)),\r
23 ('FileSystemGuid', GUID),\r
24 ('FvLength', c_uint64),\r
25 ('Signature', c_uint32),\r
26 ('Attributes', c_uint32),\r
27 ('HeaderLength', c_uint16),\r
28 ('Checksum', c_uint16),\r
29 ('ExtHeaderOffset', c_uint16),\r
30 ('Reserved', c_uint8),\r
31 ('Revision', c_uint8),\r
32 ('BlockMap', ARRAY(EFI_FV_BLOCK_MAP_ENTRY, 1)),\r
33 ]\r
34\r
35def Refine_FV_Header(nums):\r
36 class EFI_FIRMWARE_VOLUME_HEADER(Structure):\r
37 _fields_ = [\r
38 ('ZeroVector', ARRAY(c_uint8, 16)),\r
39 ('FileSystemGuid', GUID),\r
40 ('FvLength', c_uint64),\r
41 ('Signature', c_uint32),\r
42 ('Attributes', c_uint32),\r
43 ('HeaderLength', c_uint16),\r
44 ('Checksum', c_uint16),\r
45 ('ExtHeaderOffset', c_uint16),\r
46 ('Reserved', c_uint8),\r
47 ('Revision', c_uint8),\r
48 ('BlockMap', ARRAY(EFI_FV_BLOCK_MAP_ENTRY, nums)),\r
49 ]\r
50 return EFI_FIRMWARE_VOLUME_HEADER\r
51\r
52class EFI_FIRMWARE_VOLUME_EXT_HEADER(Structure):\r
53 _fields_ = [\r
54 ('FvName', GUID),\r
55 ('ExtHeaderSize', c_uint32)\r
56 ]\r
57\r
58class EFI_FIRMWARE_VOLUME_EXT_ENTRY(Structure):\r
59 _fields_ = [\r
60 ('ExtEntrySize', c_uint16),\r
61 ('ExtEntryType', c_uint16)\r
62 ]\r
63\r
64class EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE_0(Structure):\r
65 _fields_ = [\r
66 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
67 ('TypeMask', c_uint32)\r
68 ]\r
69\r
70class EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE(Structure):\r
71 _fields_ = [\r
72 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
73 ('TypeMask', c_uint32),\r
74 ('Types', ARRAY(GUID, 1))\r
75 ]\r
76\r
77def Refine_FV_EXT_ENTRY_OEM_TYPE_Header(nums: int) -> EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE:\r
78 class EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE(Structure):\r
79 _fields_ = [\r
80 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
81 ('TypeMask', c_uint32),\r
82 ('Types', ARRAY(GUID, nums))\r
83 ]\r
84 return EFI_FIRMWARE_VOLUME_EXT_ENTRY_OEM_TYPE(Structure)\r
85\r
86class EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE_0(Structure):\r
87 _fields_ = [\r
88 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
89 ('FormatType', GUID)\r
90 ]\r
91\r
92class EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE(Structure):\r
93 _fields_ = [\r
94 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
95 ('FormatType', GUID),\r
96 ('Data', ARRAY(c_uint8, 1))\r
97 ]\r
98\r
99def Refine_FV_EXT_ENTRY_GUID_TYPE_Header(nums: int) -> EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE:\r
100 class EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE(Structure):\r
101 _fields_ = [\r
102 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
103 ('FormatType', GUID),\r
104 ('Data', ARRAY(c_uint8, nums))\r
105 ]\r
106 return EFI_FIRMWARE_VOLUME_EXT_ENTRY_GUID_TYPE(Structure)\r
107\r
108class EFI_FIRMWARE_VOLUME_EXT_ENTRY_USED_SIZE_TYPE(Structure):\r
109 _fields_ = [\r
110 ('Hdr', EFI_FIRMWARE_VOLUME_EXT_ENTRY),\r
111 ('UsedSize', c_uint32)\r
112 ]\r