]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/C/VfrCompile/VfrSyntax.g
MdeModluePkg: Enable refresh opcode to refresh the entire form.
[mirror_edk2.git] / BaseTools / Source / C / VfrCompile / VfrSyntax.g
index a38f770e3b8c01c628dd1ce86f6e822f7a53a0f9..8e9f32b81598047386ecca16a348d6c39cc6f7fa 100644 (file)
@@ -1,4 +1,6 @@
-/*++\r
+/*++ @file\r
+Vfr Syntax\r
+\r
 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
@@ -8,11 +10,6 @@ http://opensource.org/licenses/bsd-license.php
 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
-Module Name:\r
-  VfrSyntax.g\r
-\r
-Abstract:\r
-\r
 --*/\r
 \r
 #header<<\r
@@ -505,10 +502,10 @@ vfrFormSetDefinition :
   {\r
     ClassGuid "=" guidDefinition[ClassGuid1]        << ++ClassGuidNum; >>\r
                   {\r
-                   "\|" guidDefinition[ClassGuid2]  << ++ClassGuidNum; >>\r
-                  }\r
-                  {\r
-                   "\|" guidDefinition[ClassGuid3]  << ++ClassGuidNum; >>\r
+                     "\|" guidDefinition[ClassGuid2]  << ++ClassGuidNum; >>\r
+                     {\r
+                      "\|" guidDefinition[ClassGuid3]  << ++ClassGuidNum; >>\r
+                     }\r
                   }\r
                   ","\r
   }\r
@@ -920,10 +917,11 @@ vfrStatementVarStoreEfi :
      CHAR8           *TypeName;\r
      UINT32          LineNum;\r
      CHAR8           *StoreName = NULL;\r
+     BOOLEAN         CustomizedName = FALSE;\r
   >>\r
   E:Efivarstore                                     << VSEObj.SetLineNo(E->getLine()); >>\r
   (\r
-      TN:StringIdentifier ","                       << TypeName = TN->getText(); LineNum = TN->getLine(); >>\r
+      TN:StringIdentifier ","                       << TypeName = TN->getText(); LineNum = TN->getLine(); CustomizedName = TRUE; >>\r
     | U8:"UINT8" ","                                << TypeName = U8->getText(); LineNum = U8->getLine(); >>\r
     | U16:"UINT16" ","                              << TypeName = U16->getText(); LineNum = U16->getLine(); >>\r
     | C16:"CHAR16" ","                              << TypeName = (CHAR8 *) "UINT16"; LineNum = C16->getLine(); >>\r
@@ -956,6 +954,10 @@ vfrStatementVarStoreEfi :
                                                        if (StoreName == NULL) {\r
                                                          _PCATCH (VFR_RETURN_UNSUPPORTED, VN->getLine(), "Can't get varstore name for this StringId!");\r
                                                        }\r
+                                                       if (!CustomizedName) {\r
+                                                         _PCATCH (VFR_RETURN_UNSUPPORTED, E->getLine(), "Old style efivarstore must have String Identifier!");\r
+                                                         return;\r
+                                                       }\r
                                                        Size = _STOU32(N->getText(), N->getLine());\r
                                                        switch (Size) {\r
                                                        case 1:\r
@@ -1184,9 +1186,35 @@ questionheaderFlagsField[UINT8 & Flags] :
     ReadOnlyFlag                                    << $Flags |= 0x01; >>\r
   | InteractiveFlag                                 << $Flags |= 0x04; >>\r
   | ResetRequiredFlag                               << $Flags |= 0x10; >>\r
-  | OptionOnlyFlag                                  << $Flags |= 0x80; >>\r
-  | NVAccessFlag\r
-  | LateCheckFlag\r
+  | O:OptionOnlyFlag                                << \r
+                                                       if (mCompatibleMode) {\r
+                                                         $Flags |= 0x80;\r
+                                                       } else {\r
+                                                         gCVfrErrorHandle.HandleWarning (\r
+                                                            VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,\r
+                                                            O->getLine(),\r
+                                                            O->getText()\r
+                                                            );\r
+                                                       }\r
+                                                    >>\r
+  | N:NVAccessFlag                                  << \r
+                                                       if (!mCompatibleMode) {\r
+                                                          gCVfrErrorHandle.HandleWarning (\r
+                                                            VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,\r
+                                                            N->getLine(),\r
+                                                            N->getText()\r
+                                                            );\r
+                                                       }\r
+                                                    >>\r
+  | L:LateCheckFlag                                 << \r
+                                                       if (!mCompatibleMode) {\r
+                                                          gCVfrErrorHandle.HandleWarning (\r
+                                                            VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,\r
+                                                            L->getLine(),\r
+                                                            L->getText()\r
+                                                            );\r
+                                                       }\r
+                                                    >>\r
   ;\r
 \r
 vfrStorageVarId[EFI_VARSTORE_INFO & Info, CHAR8 *&QuestVarIdStr, BOOLEAN CheckFlag = TRUE] :\r
@@ -1430,7 +1458,8 @@ vfrFormDefinition :
     // Just for framework vfr compatibility\r
     vfrStatementInvalid                      |\r
     vfrStatementExtension                    |\r
-    vfrStatementModal\r
+    vfrStatementModal                        |\r
+    vfrStatementRefreshEvent ";"\r
   )*\r
   E:EndForm                                         <<\r
                                                       if (mCompatibleMode) {\r
@@ -1476,7 +1505,8 @@ vfrFormMapDefinition :
     vfrStatementLabel                        |\r
     vfrStatementBanner                       |\r
     vfrStatementExtension                    |\r
-    vfrStatementModal\r
+    vfrStatementModal                        |\r
+    vfrStatementRefreshEvent ";"\r
   )*\r
   E:EndForm                                         << CRT_END_OP (E); >>\r
   ";"\r
@@ -1617,8 +1647,29 @@ vfrStatementInvalid :
   ;\r
 \r
 flagsField :\r
-  Number | InteractiveFlag | ManufacturingFlag | DefaultFlag |\r
-  NVAccessFlag | ResetRequiredFlag | LateCheckFlag\r
+  Number \r
+  | InteractiveFlag \r
+  | ManufacturingFlag \r
+  | DefaultFlag \r
+  | ResetRequiredFlag \r
+  | N:NVAccessFlag                                     << \r
+                                                          if (!mCompatibleMode) {\r
+                                                            gCVfrErrorHandle.HandleWarning (\r
+                                                              VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,\r
+                                                              N->getLine(),\r
+                                                              N->getText()\r
+                                                              );\r
+                                                          }\r
+                                                       >>\r
+  | L:LateCheckFlag                                    << \r
+                                                          if (!mCompatibleMode) {\r
+                                                            gCVfrErrorHandle.HandleWarning (\r
+                                                              VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,\r
+                                                              L->getLine(),\r
+                                                              L->getText()\r
+                                                              );\r
+                                                          }\r
+                                                       >> \r
   ;\r
 \r
 vfrStatementValue :\r
@@ -1652,7 +1703,7 @@ vfrStatementSubTitle :
   |\r
     { "," vfrStatementStatTagList}\r
     { "," (vfrStatementStat | vfrStatementQuestions)*}\r
-    E: EndSubtitle ";"                                  << CRT_END_OP (E); >>\r
+    D: EndSubtitle ";"                                  << CRT_END_OP (D); >>\r
   )\r
   ;\r
 \r
@@ -1685,6 +1736,13 @@ vfrStatementStaticText :
   }\r
                                                        <<\r
                                                           if (Flags & EFI_IFR_FLAG_CALLBACK) {\r
+                                                            if (TxtTwo != EFI_STRING_ID_INVALID) {\r
+                                                              gCVfrErrorHandle.HandleWarning (\r
+                                                                                VFR_WARNING_ACTION_WITH_TEXT_TWO,\r
+                                                                                S3->getLine(),\r
+                                                                                S3->getText()\r
+                                                                                );\r
+                                                            }\r
                                                             CIfrAction AObj;\r
                                                             mCVfrQuestionDB.RegisterQuestion (NULL, NULL, QId);\r
                                                             AObj.SetLineNo (F->getLine());\r
@@ -2523,7 +2581,7 @@ vfrStatementOrderedList :
                                                           OLObj.SetMaxContainers (_STOU8(M->getText(), M->getLine()));\r
                                                        >>\r
   }\r
-  { F:FLAGS "=" vfrOrderedListFlags[OLObj, F->getLine()] }\r
+  { F:FLAGS "=" vfrOrderedListFlags[OLObj, F->getLine()] {","}}\r
   vfrStatementQuestionOptionList\r
   E:EndList                                            << CRT_END_OP (E); >>\r
   ";"\r
@@ -2654,7 +2712,7 @@ vfrStatementQuestionTag :
   vfrStatementRefresh           |\r
   vfrStatementVarstoreDevice    |\r
   vfrStatementExtension         |\r
-  vfrStatementRefreshEvent      |\r
+  vfrStatementRefreshEvent ","  |\r
   vfrStatementWarningIf\r
   ;\r
 \r
@@ -2884,7 +2942,7 @@ vfrStatementRefreshEvent :
     EFI_GUID      Guid;\r
   >>\r
   L:RefreshGuid                                        << RiObj.SetLineNo(L->getLine()); >>\r
-  "="  guidDefinition[Guid] ","                        << RiObj.SetRefreshEventGroutId (&Guid);  >>\r
+  "="  guidDefinition[Guid]                            << RiObj.SetRefreshEventGroutId (&Guid);  >>\r
   ;\r
 \r
 vfrStatementVarstoreDevice :\r
@@ -3035,11 +3093,31 @@ oneofoptionFlagsField [UINT8 & HFlags, UINT8 & LFlags] :
   | "OPTION_DEFAULT"                                   << $LFlags |= 0x10; >>\r
   | "OPTION_DEFAULT_MFG"                               << $LFlags |= 0x20; >>\r
   | InteractiveFlag                                    << $HFlags |= 0x04; >>\r
-  | NVAccessFlag                                       << $HFlags |= 0x08; >>\r
   | ResetRequiredFlag                                  << $HFlags |= 0x10; >>\r
-  | LateCheckFlag                                      << $HFlags |= 0x20; >>\r
   | ManufacturingFlag                                  << $LFlags |= 0x20; >>\r
   | DefaultFlag                                        << $LFlags |= 0x10; >>\r
+  | A:NVAccessFlag                                     << \r
+                                                          if (mCompatibleMode) {\r
+                                                            $HFlags |= 0x08;\r
+                                                          } else {\r
+                                                            gCVfrErrorHandle.HandleWarning (\r
+                                                              VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,\r
+                                                              A->getLine(),\r
+                                                              A->getText()\r
+                                                              );\r
+                                                          }\r
+                                                       >>\r
+  | L:LateCheckFlag                                    << \r
+                                                          if (mCompatibleMode) {\r
+                                                            $HFlags |= 0x20;\r
+                                                          } else {\r
+                                                            gCVfrErrorHandle.HandleWarning (\r
+                                                              VFR_WARNING_OBSOLETED_FRAMEWORK_OPCODE,\r
+                                                              L->getLine(),\r
+                                                              L->getText()\r
+                                                              );\r
+                                                          }\r
+                                                       >>\r
   ;\r
 \r
 vfrStatementLabel :\r