From 5c526736370b475e85c59fafe3900101a95e93d3 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Mon, 23 Feb 2009 15:18:48 +0000 Subject: Move MdeModuleHii.h into Include\Guid directory Move Capsule.h into MdePkg\Include\Protocol directory because Capsule is defined in PI1.0a. Merge WorkingBlockHeader.h into SystemNvDataGuid.h Remove unused NvDataFvHob. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7606 6f19259b-4bc3-4df7-8a09-765794883524 --- MdeModulePkg/Include/Guid/MdeModuleHii.h | 240 +++++++++++++++++++++++++++ MdeModulePkg/Include/Guid/SystemNvDataGuid.h | 56 ++++--- MdeModulePkg/Include/MdeModuleHii.h | 237 -------------------------- MdeModulePkg/Include/Protocol/Capsule.h | 28 ---- MdeModulePkg/Include/WorkingBlockHeader.h | 52 ------ 5 files changed, 273 insertions(+), 340 deletions(-) create mode 100644 MdeModulePkg/Include/Guid/MdeModuleHii.h delete mode 100644 MdeModulePkg/Include/MdeModuleHii.h delete mode 100644 MdeModulePkg/Include/Protocol/Capsule.h delete mode 100644 MdeModulePkg/Include/WorkingBlockHeader.h (limited to 'MdeModulePkg/Include') diff --git a/MdeModulePkg/Include/Guid/MdeModuleHii.h b/MdeModulePkg/Include/Guid/MdeModuleHii.h new file mode 100644 index 0000000000..e66a944c08 --- /dev/null +++ b/MdeModulePkg/Include/Guid/MdeModuleHii.h @@ -0,0 +1,240 @@ +/** @file + EDKII extented HII IFR guid opcodes. + +Copyright (c) 2006 - 2008, Intel Corporation.
+All rights reserved. This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef __MDEMODULE_HII_H__ +#define __MDEMODULE_HII_H__ + +#define NARROW_CHAR 0xFFF0 +#define WIDE_CHAR 0xFFF1 +#define NON_BREAKING_CHAR 0xFFF2 + +/// +/// State defined for password statemachine +/// +#define BROWSER_STATE_VALIDATE_PASSWORD 0 +#define BROWSER_STATE_SET_PASSWORD 1 + + +/// +/// HII specific Vendor Device Path Node definition. +/// +#pragma pack(1) +typedef struct { + VENDOR_DEVICE_PATH VendorDevicePath; + UINT32 Reserved; + UINT64 UniqueId; +} HII_VENDOR_DEVICE_PATH_NODE; +#pragma pack() + +/// +/// HII specific Vendor Device Path definition. +/// +typedef struct { + HII_VENDOR_DEVICE_PATH_NODE Node; + EFI_DEVICE_PATH_PROTOCOL End; +} HII_VENDOR_DEVICE_PATH; + +/// +/// GUIDed opcodes defined for EDKII implementation +/// +#define EFI_IFR_TIANO_GUID \ + { 0xf0b1735, 0x87a0, 0x4193, {0xb2, 0x66, 0x53, 0x8c, 0x38, 0xaf, 0x48, 0xce} } + +#pragma pack(1) + +/// +/// EDKII implementation extension opcodes, new extension can be added here later. +/// +#define EFI_IFR_EXTEND_OP_LABEL 0x0 +#define EFI_IFR_EXTEND_OP_BANNER 0x1 +#define EFI_IFR_EXTEND_OP_TIMEOUT 0x2 +#define EFI_IFR_EXTEND_OP_CLASS 0x3 +#define EFI_IFR_EXTEND_OP_SUBCLASS 0x4 + +/// +/// Label opcode +/// +typedef struct _EFI_IFR_GUID_LABEL { + EFI_IFR_OP_HEADER Header; + /// + /// EFI_IFR_TIANO_GUID + /// + EFI_GUID Guid; + /// + /// EFI_IFR_EXTEND_OP_LABEL + /// + UINT8 ExtendOpCode; + /// + /// Label Number + /// + UINT16 Number; +} EFI_IFR_GUID_LABEL; + +#define EFI_IFR_BANNER_ALIGN_LEFT 0 +#define EFI_IFR_BANNER_ALIGN_CENTER 1 +#define EFI_IFR_BANNER_ALIGN_RIGHT 2 + +/// +/// Banner opcode +/// +typedef struct _EFI_IFR_GUID_BANNER { + EFI_IFR_OP_HEADER Header; + /// + /// EFI_IFR_TIANO_GUID + /// + EFI_GUID Guid; + /// + /// EFI_IFR_EXTEND_OP_BANNER + /// + UINT8 ExtendOpCode; + EFI_STRING_ID Title; ///< The string token for the banner title + UINT16 LineNumber; ///< 1-based line number + UINT8 Alignment; ///< left, center, or right-aligned +} EFI_IFR_GUID_BANNER; + +/// +/// Timeout opcode +/// +typedef struct _EFI_IFR_GUID_TIMEOUT { + EFI_IFR_OP_HEADER Header; + /// + /// EFI_IFR_TIANO_GUID + /// + EFI_GUID Guid; + /// + /// EFI_IFR_EXTEND_OP_TIMEOUT + /// + UINT8 ExtendOpCode; + UINT16 TimeOut; ///< TimeOut Value +} EFI_IFR_GUID_TIMEOUT; + +#define EFI_NON_DEVICE_CLASS 0x00 +#define EFI_DISK_DEVICE_CLASS 0x01 +#define EFI_VIDEO_DEVICE_CLASS 0x02 +#define EFI_NETWORK_DEVICE_CLASS 0x04 +#define EFI_INPUT_DEVICE_CLASS 0x08 +#define EFI_ON_BOARD_DEVICE_CLASS 0x10 +#define EFI_OTHER_DEVICE_CLASS 0x20 + +/// +/// Device Class opcode +/// +typedef struct _EFI_IFR_GUID_CLASS { + EFI_IFR_OP_HEADER Header; + /// + /// EFI_IFR_TIANO_GUID + /// + EFI_GUID Guid; + /// + /// EFI_IFR_EXTEND_OP_CLASS + /// + UINT8 ExtendOpCode; + UINT16 Class; ///< Device Class from the above +} EFI_IFR_GUID_CLASS; + +#define EFI_SETUP_APPLICATION_SUBCLASS 0x00 +#define EFI_GENERAL_APPLICATION_SUBCLASS 0x01 +#define EFI_FRONT_PAGE_SUBCLASS 0x02 +#define EFI_SINGLE_USE_SUBCLASS 0x03 + +/// +/// SubClass opcode +/// +typedef struct _EFI_IFR_GUID_SUBCLASS { + EFI_IFR_OP_HEADER Header; + /// + /// EFI_IFR_TIANO_GUID + /// + EFI_GUID Guid; + /// + /// EFI_IFR_EXTEND_OP_SUBCLASS + /// + UINT8 ExtendOpCode; + UINT16 SubClass; ///< Sub Class type from the above +} EFI_IFR_GUID_SUBCLASS; + +/// +/// GUIDed opcodes support for framework vfr. +/// +#define EFI_IFR_FRAMEWORK_GUID \ + { 0x31ca5d1a, 0xd511, 0x4931, { 0xb7, 0x82, 0xae, 0x6b, 0x2b, 0x17, 0x8c, 0xd7 } } + +/// +/// Two extended opcode are added, new extension can be added here later. +/// One is for framework OneOf question Option Key value, +/// Another is for framework vareqval. +/// +#define EFI_IFR_EXTEND_OP_OPTIONKEY 0x0 +#define EFI_IFR_EXTEND_OP_VAREQNAME 0x1 + +/// +/// Store the framework vfr option key value +/// +typedef struct _EFI_IFR_GUID_OPTIONKEY { + EFI_IFR_OP_HEADER Header; + /// + /// EFI_IFR_FRAMEWORK_GUID + /// + EFI_GUID Guid; + /// + /// EFI_IFR_EXTEND_OP_OPTIONKEY + /// + UINT8 ExtendOpCode; + /// + /// OneOf Questiond ID binded by OneOf Option + /// + EFI_QUESTION_ID QuestionId; + /// + /// The OneOf Option Value. + /// + EFI_IFR_TYPE_VALUE OptionValue; + /// + /// The Framework OneOf Option Key Value. + /// + UINT16 KeyValue; +} EFI_IFR_GUID_OPTIONKEY; + +/// +/// Store the framework vfr vareqval name number +/// +typedef struct _EFI_IFR_GUID_VAREQNAME { + EFI_IFR_OP_HEADER Header; + /// + /// EFI_IFR_FRAMEWORK_GUID + /// + EFI_GUID Guid; + /// + /// EFI_IFR_EXTEND_OP_VAREQNAME + /// + UINT8 ExtendOpCode; + /// + /// Question ID of the Numeric Opcode created. + /// + EFI_QUESTION_ID QuestionId; + /// + /// For vareqval (0x100), NameId is 0x100. + /// This value will converte to a Unicode String following this rule. + /// sprintf(StringBuffer, "%d", NameId) + /// The the Unicode String will be used as a EFI Variable Name. + /// + UINT16 NameId; +} EFI_IFR_GUID_VAREQNAME; + +#pragma pack() + +extern EFI_GUID gEfiIfrTianoGuid; +extern EFI_GUID gEfiIfrFrameworkGuid; + +#endif + diff --git a/MdeModulePkg/Include/Guid/SystemNvDataGuid.h b/MdeModulePkg/Include/Guid/SystemNvDataGuid.h index 583f7a30bf..048ea651da 100644 --- a/MdeModulePkg/Include/Guid/SystemNvDataGuid.h +++ b/MdeModulePkg/Include/Guid/SystemNvDataGuid.h @@ -1,10 +1,5 @@ -/** @file - This file defines NvData Hob GUIDs for System Non Volatile HOB entries - and the corresponding hob data structure. NvData Hob can be used to report - the region of the system non volatile data for the specific purpose, - such as FTW region, Error log region. - - It also defines NvDataFv GUID. +/** @file + This file defines NvDataFv GUID and FTW working block structure header. This guid can be used as FileSystemGuid in EFI_FIRMWARE_VOLUME_HEADER if this FV image contains NV data, such as NV variable data. This guid can also be used as the signature of FTW working block header. @@ -26,27 +21,42 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define EFI_SYSTEM_NV_DATA_FV_GUID \ {0xfff12b8d, 0x7696, 0x4c8b, {0xa9, 0x85, 0x27, 0x47, 0x7, 0x5b, 0x4f, 0x50} } -#define EFI_SYSTEM_NV_DATA_HOB_GUID \ - {0xd6e5092d, 0xc7b2, 0x4872, {0xaf, 0x66, 0xfd, 0xc0, 0xe6, 0xf9, 0x5e, 0x78} } - /// -/// Hob entry for NV data region +/// NvDataFv GUID used as the signature of FTW working block header. /// -typedef struct { - EFI_GUID SystemNvDataHobGuid; ///> EFI_SYSTEM_NV_DATA_HOB_GUID - EFI_GUID SystemNvDataFvGuid; ///> Guid specifies the NvData Fv for the specific purpose, such as FTW, Error Log. - EFI_LBA StartLba; ///> The starting logical block index. - UINTN StartLbaOffset; ///> Offset into the starting block at which to the start of NvData region. - EFI_LBA EndLba; ///> The last logical block index. - UINTN EndLbaOffset; ///> Offset into the last block at which to the end of Nvdata region. - UINT32 DataTypeSignature; ///> NvData type in the specified NV range. -} NV_SYSTEM_DATA_GUID_TYPE; +extern EFI_GUID gEfiSystemNvDataFvGuid; -extern EFI_GUID gEfiSystemNvDataHobGuid; +#define WORKING_BLOCK_VALID 0x1 +#define WORKING_BLOCK_INVALID 0x2 /// -/// NvDataFv GUID used as the signature of FTW working block header. +/// EDKII Fault tolerant working block header +/// The header is immediately followed by the write queue data. /// -extern EFI_GUID gEfiSystemNvDataFvGuid; +typedef struct { + /// + /// System Non Volatile FV Guid + /// + EFI_GUID Signature; + /// + /// 32bit CRC caculated for this header + /// + UINT32 Crc; + /// + /// Working block valid bit + /// + UINT8 WorkingBlockValid : 1; + UINT8 WorkingBlockInvalid : 1; + UINT8 Reserved : 6; + UINT8 Reserved3[3]; + /// + /// Total size of the following write queue range. + /// + UINT64 WriteQueueSize; + /// + /// Write Queue data + /// UINT8 WriteQueue[WriteQueueSize]; + /// +} EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER; #endif diff --git a/MdeModulePkg/Include/MdeModuleHii.h b/MdeModulePkg/Include/MdeModuleHii.h deleted file mode 100644 index 092cdaf310..0000000000 --- a/MdeModulePkg/Include/MdeModuleHii.h +++ /dev/null @@ -1,237 +0,0 @@ -/** @file - EDKII extented HII IFR guid opcodes. - -Copyright (c) 2006 - 2008, Intel Corporation.
-All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __MDEMODULE_HII_H__ -#define __MDEMODULE_HII_H__ - -#define NARROW_CHAR 0xFFF0 -#define WIDE_CHAR 0xFFF1 -#define NON_BREAKING_CHAR 0xFFF2 - -/// -/// State defined for password statemachine -/// -#define BROWSER_STATE_VALIDATE_PASSWORD 0 -#define BROWSER_STATE_SET_PASSWORD 1 - - -/// -/// HII specific Vendor Device Path Node definition. -/// -#pragma pack(1) -typedef struct { - VENDOR_DEVICE_PATH VendorDevicePath; - UINT32 Reserved; - UINT64 UniqueId; -} HII_VENDOR_DEVICE_PATH_NODE; -#pragma pack() - -/// -/// HII specific Vendor Device Path definition. -/// -typedef struct { - HII_VENDOR_DEVICE_PATH_NODE Node; - EFI_DEVICE_PATH_PROTOCOL End; -} HII_VENDOR_DEVICE_PATH; - -/// -/// GUIDed opcodes defined for EDKII implementation -/// -#define EFI_IFR_TIANO_GUID \ - { 0xf0b1735, 0x87a0, 0x4193, {0xb2, 0x66, 0x53, 0x8c, 0x38, 0xaf, 0x48, 0xce} } - -#pragma pack(1) - -/// -/// EDKII implementation extension opcodes, new extension can be added here later. -/// -#define EFI_IFR_EXTEND_OP_LABEL 0x0 -#define EFI_IFR_EXTEND_OP_BANNER 0x1 -#define EFI_IFR_EXTEND_OP_TIMEOUT 0x2 -#define EFI_IFR_EXTEND_OP_CLASS 0x3 -#define EFI_IFR_EXTEND_OP_SUBCLASS 0x4 - -/// -/// Label opcode -/// -typedef struct _EFI_IFR_GUID_LABEL { - EFI_IFR_OP_HEADER Header; - /// - /// EFI_IFR_TIANO_GUID - /// - EFI_GUID Guid; - /// - /// EFI_IFR_EXTEND_OP_LABEL - /// - UINT8 ExtendOpCode; - /// - /// Label Number - /// - UINT16 Number; -} EFI_IFR_GUID_LABEL; - -#define EFI_IFR_BANNER_ALIGN_LEFT 0 -#define EFI_IFR_BANNER_ALIGN_CENTER 1 -#define EFI_IFR_BANNER_ALIGN_RIGHT 2 - -/// -/// Banner opcode -/// -typedef struct _EFI_IFR_GUID_BANNER { - EFI_IFR_OP_HEADER Header; - /// - /// EFI_IFR_TIANO_GUID - /// - EFI_GUID Guid; - /// - /// EFI_IFR_EXTEND_OP_BANNER - /// - UINT8 ExtendOpCode; - EFI_STRING_ID Title; ///< The string token for the banner title - UINT16 LineNumber; ///< 1-based line number - UINT8 Alignment; ///< left, center, or right-aligned -} EFI_IFR_GUID_BANNER; - -/// -/// Timeout opcode -/// -typedef struct _EFI_IFR_GUID_TIMEOUT { - EFI_IFR_OP_HEADER Header; - /// - /// EFI_IFR_TIANO_GUID - /// - EFI_GUID Guid; - /// - /// EFI_IFR_EXTEND_OP_TIMEOUT - /// - UINT8 ExtendOpCode; - UINT16 TimeOut; ///< TimeOut Value -} EFI_IFR_GUID_TIMEOUT; - -#define EFI_NON_DEVICE_CLASS 0x00 -#define EFI_DISK_DEVICE_CLASS 0x01 -#define EFI_VIDEO_DEVICE_CLASS 0x02 -#define EFI_NETWORK_DEVICE_CLASS 0x04 -#define EFI_INPUT_DEVICE_CLASS 0x08 -#define EFI_ON_BOARD_DEVICE_CLASS 0x10 -#define EFI_OTHER_DEVICE_CLASS 0x20 - -/// -/// Device Class opcode -/// -typedef struct _EFI_IFR_GUID_CLASS { - EFI_IFR_OP_HEADER Header; - /// - /// EFI_IFR_TIANO_GUID - /// - EFI_GUID Guid; - /// - /// EFI_IFR_EXTEND_OP_CLASS - /// - UINT8 ExtendOpCode; - UINT16 Class; ///< Device Class from the above -} EFI_IFR_GUID_CLASS; - -#define EFI_SETUP_APPLICATION_SUBCLASS 0x00 -#define EFI_GENERAL_APPLICATION_SUBCLASS 0x01 -#define EFI_FRONT_PAGE_SUBCLASS 0x02 -#define EFI_SINGLE_USE_SUBCLASS 0x03 - -/// -/// SubClass opcode -/// -typedef struct _EFI_IFR_GUID_SUBCLASS { - EFI_IFR_OP_HEADER Header; - /// - /// EFI_IFR_TIANO_GUID - /// - EFI_GUID Guid; - /// - /// EFI_IFR_EXTEND_OP_SUBCLASS - /// - UINT8 ExtendOpCode; - UINT16 SubClass; ///< Sub Class type from the above -} EFI_IFR_GUID_SUBCLASS; - -/// -/// GUIDed opcodes support for framework vfr. -/// -#define EFI_IFR_FRAMEWORK_GUID \ - { 0x31ca5d1a, 0xd511, 0x4931, { 0xb7, 0x82, 0xae, 0x6b, 0x2b, 0x17, 0x8c, 0xd7 } } - -/// -/// Two extended opcode are added, new extension can be added here later. -/// One is for framework OneOf question Option Key value, -/// Another is for framework vareqval. -/// -#define EFI_IFR_EXTEND_OP_OPTIONKEY 0x0 -#define EFI_IFR_EXTEND_OP_VAREQNAME 0x1 - -/// -/// Store the framework vfr option key value -/// -typedef struct _EFI_IFR_GUID_OPTIONKEY { - EFI_IFR_OP_HEADER Header; - /// - /// EFI_IFR_FRAMEWORK_GUID - /// - EFI_GUID Guid; - /// - /// EFI_IFR_EXTEND_OP_OPTIONKEY - /// - UINT8 ExtendOpCode; - /// - /// OneOf Questiond ID binded by OneOf Option - /// - EFI_QUESTION_ID QuestionId; - /// - /// The OneOf Option Value. - /// - EFI_IFR_TYPE_VALUE OptionValue; - /// - /// The Framework OneOf Option Key Value. - /// - UINT16 KeyValue; -} EFI_IFR_GUID_OPTIONKEY; - -/// -/// Store the framework vfr vareqval name number -/// -typedef struct _EFI_IFR_GUID_VAREQNAME { - EFI_IFR_OP_HEADER Header; - /// - /// EFI_IFR_FRAMEWORK_GUID - /// - EFI_GUID Guid; - /// - /// EFI_IFR_EXTEND_OP_VAREQNAME - /// - UINT8 ExtendOpCode; - /// - /// Question ID of the Numeric Opcode created. - /// - EFI_QUESTION_ID QuestionId; - /// - /// For vareqval (0x100), NameId is 0x100. - /// This value will converte to a Unicode String following this rule. - /// sprintf(StringBuffer, "%d", NameId) - /// The the Unicode String will be used as a EFI Variable Name. - /// - UINT16 NameId; -} EFI_IFR_GUID_VAREQNAME; - -#pragma pack() - -#endif - diff --git a/MdeModulePkg/Include/Protocol/Capsule.h b/MdeModulePkg/Include/Protocol/Capsule.h deleted file mode 100644 index 192d9e7851..0000000000 --- a/MdeModulePkg/Include/Protocol/Capsule.h +++ /dev/null @@ -1,28 +0,0 @@ -/** @file - - Capsule Architectural Protocol is responsible to tag UEFI2.0 capsule runtime services - are ready in EFI_RUNTIME_SERVICES table. - -Copyright (c) 2006 - 2008, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __ARCH_PROTOCOL_CAPSULE_ARCH_H__ -#define __ARCH_PROTOCOL_CAPSULE_ARCH_H__ - -// -// Global ID for the Capsule Architectural Protocol -// -#define EFI_CAPSULE_ARCH_PROTOCOL_GUID \ - { 0x5053697e, 0x2cbc, 0x4819, {0x90, 0xd9, 0x05, 0x80, 0xde, 0xee, 0x57, 0x54 }} - -extern EFI_GUID gEfiCapsuleArchProtocolGuid; - -#endif diff --git a/MdeModulePkg/Include/WorkingBlockHeader.h b/MdeModulePkg/Include/WorkingBlockHeader.h deleted file mode 100644 index 4298d5fe18..0000000000 --- a/MdeModulePkg/Include/WorkingBlockHeader.h +++ /dev/null @@ -1,52 +0,0 @@ -/** @file - - The header structure of FTW working block region. - -Copyright (c) 2006 - 2008, Intel Corporation -All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#ifndef __EFI_WORKING_BLOCK_HEADER_H__ -#define __EFI_WORKING_BLOCK_HEADER_H__ - -#define WORKING_BLOCK_VALID 0x1 -#define WORKING_BLOCK_INVALID 0x2 - -/// -/// EDKII Fault tolerant working block header -/// The header is immediately followed by the write queue data. -/// -typedef struct { - /// - /// System Non Volatile FV Guid - /// - EFI_GUID Signature; - /// - /// 32bit CRC caculated for this header - /// - UINT32 Crc; - /// - /// Working block valid bit - /// - UINT8 WorkingBlockValid : 1; - UINT8 WorkingBlockInvalid : 1; - UINT8 Reserved : 6; - UINT8 Reserved3[3]; - /// - /// Total size of the following write queue range. - /// - UINT64 WriteQueueSize; - /// - /// Write Queue data - /// UINT8 WriteQueue[WriteQueueSize]; - /// -} EFI_FAULT_TOLERANT_WORKING_BLOCK_HEADER; - -#endif -- cgit v1.2.3