]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Universal / DriverSampleDxe / NVDataStruc.h
index f0906e76cc22f68276ec3198ed86ccc55edc467d..86176176842579fc38ffd39aec68efa4413e9f72 100644 (file)
-/** @file
-
-Copyright (c) 2007 - 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.
-
-Module Name:
-
-  NVDataStruc.h
-
-Abstract:
-
-  NVData structure used by the sample driver
-
-Revision History:
-
-
-**/
-
-#ifndef _NVDATASTRUC_H
-#define _NVDATASTRUC_H
-
-#define FORMSET_GUID \
-  { \
-    0xA04A27f4, 0xDF00, 0x4D42, 0xB5, 0x52, 0x39, 0x51, 0x13, 0x02, 0x11, 0x3D \
-  }
-
-#define INVENTORY_GUID \
-  { \
-    0xb3f56470, 0x6141, 0x4621, 0x8f, 0x19, 0x70, 0x4e, 0x57, 0x7a, 0xa9, 0xe8 \
-  }
-
-#define VAR_EQ_TEST_NAME  0x100
-
-#pragma pack(1)
-typedef struct {
-  UINT16  WhatIsThePassword[20];
-  UINT16  WhatIsThePassword2[20];
-  UINT16  MyStringData[40];
-  UINT16  PasswordClearText[20];
-  UINT16  SomethingHiddenForHtml;
-  UINT8   HowOldAreYouInYearsManual;
-  UINT16  HowTallAreYouManual;
-  UINT8   HowOldAreYouInYears;
-  UINT16  HowTallAreYou;
-  UINT8   MyFavoriteNumber;
-  UINT8   TestLateCheck;
-  UINT8   TestLateCheck2;
-  UINT8   QuestionAboutTreeHugging;
-  UINT8   ChooseToActivateNuclearWeaponry;
-  UINT8   SuppressGrayOutSomething;
-  UINT8   OrderedList[8];
-  UINT8   BootOrder[8];
-  UINT8   BootOrderLarge;
-  UINT8   DynamicCheck;
-} DRIVER_SAMPLE_CONFIGURATION;
-
-//
-// 2nd NV data structure definition
-//
-typedef struct {
-  UINT8         Field8;
-  UINT16        Field16;
-  UINT8         OrderedList[3];
-} MY_DATA2;
-
-
-#pragma pack()
-
-#endif
+/** @file\r
+\r
+Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
+\r
+Module Name:\r
+\r
+  NVDataStruc.h\r
+\r
+Abstract:\r
+\r
+  NVData structure used by the sample driver\r
+\r
+Revision History:\r
+\r
+\r
+**/\r
+\r
+#ifndef _NVDATASTRUC_H_\r
+#define _NVDATASTRUC_H_\r
+\r
+#include <Guid/HiiPlatformSetupFormset.h>\r
+#include <Guid/HiiFormMapMethodGuid.h>\r
+#include <Guid/DriverSampleHii.h>\r
+#include <Guid/ZeroGuid.h>\r
+\r
+#define CONFIGURATION_VARSTORE_ID    0x1234\r
+#define BITS_VARSTORE_ID             0x2345\r
+\r
+#pragma pack(1)\r
+\r
+//\r
+// !!! For a structure with a series of bit fields and used as a storage in vfr file, and if the bit fields do not add up to the size of the defined type.\r
+// In the C code use sizeof() to get the size the strucure, the results may vary form the compiler(VS,GCC...).\r
+// But the size of the storage calculated by VfrCompiler is fixed (calculate with alignment).\r
+// To avoid above case, we need to make the total bit width in the structure aligned with the size of the defined type for these bit fields. We can:\r
+// 1. Add bit field (with/without name) with remianing with for padding.\r
+// 2. Add unnamed bit field with 0 for padding, the amount of padding is determined by the alignment characteristics of the members of the structure.\r
+//\r
+typedef struct {\r
+  UINT16   NestByteField;\r
+  UINT8                    : 1;  // unamed field can be used for padding\r
+  UINT8    NestBitCheckbox : 1;\r
+  UINT8    NestBitOneof    : 2;\r
+  UINT8                    : 0;  // Special width 0 can be used to force alignment at the next word boundary\r
+  UINT8    NestBitNumeric  : 4;\r
+} MY_BITS_DATA;\r
+\r
+typedef union {\r
+  UINT8    UnionNumeric;\r
+  UINT8    UnionNumericAlias;\r
+} MY_EFI_UNION_DATA;\r
+\r
+typedef struct {\r
+  UINT16  MyStringData[40];\r
+  UINT16  SomethingHiddenForHtml;\r
+  UINT8   HowOldAreYouInYearsManual;\r
+  UINT16  HowTallAreYouManual;\r
+  UINT8   HowOldAreYouInYears;\r
+  UINT16  HowTallAreYou;\r
+  UINT8   MyFavoriteNumber;\r
+  UINT8   TestLateCheck;\r
+  UINT8   TestLateCheck2;\r
+  UINT8   QuestionAboutTreeHugging;\r
+  UINT8   ChooseToActivateNuclearWeaponry;\r
+  UINT8   SuppressGrayOutSomething;\r
+  UINT8   OrderedList[8];\r
+  UINT16  BootOrder[8];\r
+  UINT8   BootOrderLarge;\r
+  UINT8   DynamicRefresh;\r
+  UINT8   DynamicOneof;\r
+  UINT8   DynamicOrderedList[5];\r
+  UINT8   Reserved;\r
+  EFI_HII_REF RefData;\r
+  UINT8   NameValueVar0;\r
+  UINT16  NameValueVar1;\r
+  UINT16  NameValueVar2[20];\r
+  UINT8   SerialPortNo;\r
+  UINT8   SerialPortStatus;\r
+  UINT16  SerialPortIo;\r
+  UINT8   SerialPortIrq;\r
+  UINT8   GetDefaultValueFromCallBack;\r
+  UINT8   GetDefaultValueFromAccess;\r
+  EFI_HII_TIME  Time;\r
+  UINT8   RefreshGuidCount;\r
+  UINT8   Match2;\r
+  UINT8   GetDefaultValueFromCallBackForOrderedList[3];\r
+  UINT8   BitCheckbox : 1;\r
+  UINT8   ReservedBits: 7;  // Reserved bit fields for padding.\r
+  UINT16  BitOneof    : 6;\r
+  UINT16              : 0;  // Width 0 used to force alignment.\r
+  UINT16  BitNumeric  : 12;\r
+  MY_BITS_DATA  MyBitData;\r
+  MY_EFI_UNION_DATA MyUnionData;\r
+} DRIVER_SAMPLE_CONFIGURATION;\r
+\r
+//\r
+// 2nd NV data structure definition\r
+//\r
+typedef struct {\r
+  UINT8         Field8;\r
+  UINT16        Field16;\r
+  UINT8         OrderedList[3];\r
+  UINT16        SubmittedCallback;\r
+} MY_EFI_VARSTORE_DATA;\r
+\r
+//\r
+// 3rd NV data structure definition\r
+//\r
+typedef struct {\r
+  MY_BITS_DATA  BitsData;\r
+  UINT32   EfiBitGrayoutTest : 5;\r
+  UINT32   EfiBitNumeric     : 4;\r
+  UINT32   EfiBitOneof       : 10;\r
+  UINT32   EfiBitCheckbox    : 1;\r
+  UINT32                     : 0;  // Width 0 used to force alignment.\r
+} MY_EFI_BITS_VARSTORE_DATA;\r
+\r
+//\r
+// Labels definition\r
+//\r
+#define LABEL_UPDATE1               0x1234\r
+#define LABEL_UPDATE2               0x2234\r
+#define LABEL_UPDATE3               0x3234\r
+#define LABEL_END                   0x2223\r
+\r
+#pragma pack()\r
+\r
+#endif\r