]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr
UEFI HII: Merge UEFI HII support changes from branch.
[mirror_edk2.git] / MdeModulePkg / Universal / DriverSampleDxe / Vfr.vfr
CommitLineData
93e3992d 1// *++\r
2//\r
3// Copyright (c) 2007, Intel Corporation\r
4// All rights reserved. This program and the accompanying materials\r
5// are licensed and made available under the terms and conditions of the BSD License\r
6// which accompanies this distribution. The full text of the license may be found at\r
7// http://opensource.org/licenses/bsd-license.php\r
8//\r
9// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11//\r
12// Module Name:\r
13//\r
14// Vfr.vfr\r
15//\r
16// Abstract:\r
17//\r
18// Sample Setup formset\r
19//\r
20// Revision History:\r
21//\r
22// --*/\r
23\r
24\r
25#include "NVDataStruc.h"\r
26\r
27//\r
28// Formset class used by Device Manager\r
29//\r
30#define EFI_NON_DEVICE_CLASS 0x00\r
31#define EFI_DISK_DEVICE_CLASS 0x01\r
32#define EFI_VIDEO_DEVICE_CLASS 0x02\r
33#define EFI_NETWORK_DEVICE_CLASS 0x04\r
34#define EFI_INPUT_DEVICE_CLASS 0x08\r
35#define EFI_ON_BOARD_DEVICE_CLASS 0x10\r
36#define EFI_OTHER_DEVICE_CLASS 0x20\r
37\r
38//\r
39// Formset subclass\r
40//\r
41#define EFI_SETUP_APPLICATION_SUBCLASS 0x00\r
42#define EFI_GENERAL_APPLICATION_SUBCLASS 0x01\r
43#define EFI_FRONT_PAGE_SUBCLASS 0x02\r
44#define EFI_SINGLE_USE_SUBCLASS 0x03\r
45\r
46//\r
47// EFI Variable attributes\r
48//\r
49#define EFI_VARIABLE_NON_VOLATILE 0x00000001\r
50#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002\r
51#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004\r
52#define EFI_VARIABLE_READ_ONLY 0x00000008\r
53\r
54//\r
55// NV data structure definition\r
56//\r
57typedef struct {\r
58 UINT8 Field8;\r
59 UINT16 Field16;\r
60 UINT8 OrderedList[3];\r
61} MY_DATA2;\r
62\r
63//\r
64// Labels definition\r
65//\r
66#define LABEL_1_VALUE 0x01\r
67#define LABEL_2_VALUE 0x1000\r
68#define LABEL_UPDATE_BBS 0x2222\r
69#define LABEL_END 0x2223\r
70\r
71formset\r
72 guid = FORMSET_GUID,\r
73 title = STRING_TOKEN(STR_FORM_SET_TITLE),\r
74 help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),\r
75 class = EFI_ON_BOARD_DEVICE_CLASS,\r
76 subclass = EFI_SETUP_APPLICATION_SUBCLASS,\r
77\r
78 //\r
79 // Define a Buffer Storage (EFI_IFR_VARSTORE)\r
80 //\r
81 varstore DRIVER_SAMPLE_CONFIGURATION, // This is the data structure type\r
82 varid = 0x1234, // Optional VarStore ID\r
83 name = MyIfrNVData, // Define referenced name in vfr\r
84 guid = FORMSET_GUID; // GUID of this buffer storage\r
85\r
86 //\r
87 // Define another Buffer Storage\r
88 //\r
89 varstore MY_DATA2,\r
90 name = MyIfrNVData2,\r
91 guid = FORMSET_GUID;\r
92\r
93 //\r
94 // Define a EFI variable Storage (EFI_IFR_VARSTORE_EFI)\r
95 //\r
96 efivarstore MyEfiVar, // Define referenced name in vfr\r
97 attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS, // EFI variable attribures\r
98 name = STRING_TOKEN(STR_VAR_NAME), // EFI variable name\r
99 varsize = 1, // Size of the EFI variable\r
100 guid = FORMSET_GUID; // EFI variable GUID\r
101\r
102 //\r
103 // Define a Form (EFI_IFR_FORM)\r
104 //\r
105 form formid = 1, // Form ID\r
106 title = STRING_TOKEN(STR_FORM1_TITLE); // Form title\r
107\r
108 subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT);\r
109\r
110 subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT2);\r
111\r
112 //\r
113 // Define a display only text (EFI_IFR_TEXT)\r
114 //\r
115 text\r
116 help = STRING_TOKEN(STR_TEXT_HELP), // Help string\r
117 text = STRING_TOKEN(STR_CPU_STRING), // Prompt string\r
118 text = STRING_TOKEN(STR_CPU_STRING2); // TextTwo\r
119\r
120 text\r
121 help = STRING_TOKEN(STR_EXIT_TEXT),\r
122 text = STRING_TOKEN(STR_EXIT_TEXT),\r
123 text = STRING_TOKEN(STR_EXIT_TEXT),\r
124 flags = INTERACTIVE,\r
125 key = 0x1237;\r
126\r
127 text\r
128 help = STRING_TOKEN(STR_SAVE_TEXT),\r
129 text = STRING_TOKEN(STR_SAVE_TEXT),\r
130 text = STRING_TOKEN(STR_SAVE_TEXT),\r
131 flags = INTERACTIVE,\r
132 key = 0x1238;\r
133\r
134 //\r
135 // Define oneof (EFI_IFR_ONE_OF)\r
136 //\r
137 oneof varid = MyIfrNVData.SuppressGrayOutSomething, // Use "DataStructure.Member" to reference Buffer Storage\r
138 prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),\r
139 help = STRING_TOKEN(STR_ONE_OF_HELP),\r
140 //\r
141 // Define an option (EFI_IFR_ONE_OF_OPTION)\r
142 //\r
143 option text = STRING_TOKEN(STR_ONE_OF_TEXT4), value = 0x0, flags = 0;\r
144 option text = STRING_TOKEN(STR_ONE_OF_TEXT5), value = 0x1, flags = 0;\r
145 //\r
146 // DEFAULT indicate this option will be marked with EFI_IFR_OPTION_DEFAULT\r
147 //\r
148 option text = STRING_TOKEN(STR_ONE_OF_TEXT6), value = 0x2, flags = DEFAULT;\r
149 endoneof;\r
150\r
151 oneof varid = MyIfrNVData.BootOrderLarge,\r
152 prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),\r
153 help = STRING_TOKEN(STR_ONE_OF_HELP),\r
154 option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0x0, flags = 0;\r
155 option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 0x1, flags = DEFAULT;\r
156 endoneof;\r
157\r
158 grayoutif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;\r
159 suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x0;\r
160\r
161 checkbox varid = MyIfrNVData.ChooseToActivateNuclearWeaponry,\r
162 prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),\r
163 help = STRING_TOKEN(STR_CHECK_BOX_HELP),\r
164 //\r
165 // CHECKBOX_DEFAULT indicate this checkbox is marked with EFI_IFR_CHECKBOX_DEFAULT\r
166 //\r
167 flags = CHECKBOX_DEFAULT,\r
168 key = 0,\r
169\r
170 endcheckbox;\r
171 endif;\r
172 endif;\r
173\r
174 //\r
175 // Ordered list:\r
176 // sizeof(MyIfrNVData) storage must be UINT8 array, and\r
177 // size written for the variable must be size of the entire\r
178 // variable.\r
179 //\r
180 //\r
181 suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x0;\r
182\r
183 //\r
184 // label is defined as an anchor where you want to insert some dynamic\r
185 // opcodes created on-the-fly\r
186 //\r
187 label LABEL_UPDATE_BBS;\r
188\r
189 orderedlist\r
190 varid = MyIfrNVData.BootOrder,\r
191 prompt = STRING_TOKEN(STR_BOOT_OPTIONS),\r
192 help = STRING_TOKEN(STR_NULL_STRING),\r
193 option text = STRING_TOKEN(STR_BOOT_OPTION2), value = 2, flags = RESET_REQUIRED;\r
194 option text = STRING_TOKEN(STR_BOOT_OPTION1), value = 1, flags = RESET_REQUIRED;\r
195 option text = STRING_TOKEN(STR_BOOT_OPTION3), value = 3, flags = RESET_REQUIRED;\r
196 suppressif ideqval MyIfrNVData.BootOrderLarge == 0;\r
197 option text = STRING_TOKEN(STR_BOOT_OPTION4), value = 4, flags = 0;\r
198 endif\r
199 endlist;\r
200\r
201 //\r
202 // label should be paired with each other\r
203 //\r
204 label LABEL_END;\r
205\r
206 endif; // end suppressif\r
207\r
208 suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x2;\r
209 orderedlist\r
210 varid = MyIfrNVData.OrderedList,\r
211 prompt = STRING_TOKEN(STR_TEST_OPCODE),\r
212 help = STRING_TOKEN(STR_TEXT_HELP),\r
213 option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 3, flags = RESET_REQUIRED;\r
214 option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 2, flags = RESET_REQUIRED;\r
215 option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 1, flags = RESET_REQUIRED;\r
216 endlist;\r
217 endif;\r
218\r
219 label 100;\r
220\r
221 //\r
222 // Define a hyperlink (EFI_IFR_REF)\r
223 //\r
224 goto 0x1234, // Destination Form ID\r
225 prompt = STRING_TOKEN(STR_GOTO_DYNAMIC), // Prompt string\r
226 help = STRING_TOKEN(STR_GOTO_HELP), // Help string\r
227 flags = INTERACTIVE, // INTERACTIVE indicate it's marked with EFI_IFR_FLAG_CALLBACK\r
228 key = 0x1234; // Question ID which will be passed-in in COnfigAccess.Callback()\r
229\r
230 goto 0x1234,\r
231 prompt = STRING_TOKEN(STR_GOTO_DYNAMIC2),\r
232 help = STRING_TOKEN(STR_GOTO_HELP),\r
233 flags = INTERACTIVE,\r
234 key = 0x1235;\r
235\r
236 oneof varid = MyIfrNVData.TestLateCheck,\r
237 prompt = STRING_TOKEN(STR_TEST_OPCODE),\r
238 help = STRING_TOKEN(STR_ONE_OF_HELP),\r
239 option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = RESET_REQUIRED;\r
240 option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = DEFAULT | RESET_REQUIRED;\r
241\r
242 endoneof;\r
243\r
244 oneof varid = MyIfrNVData.TestLateCheck2,\r
245 prompt = STRING_TOKEN(STR_TEST_OPCODE2),\r
246 help = STRING_TOKEN(STR_ONE_OF_HELP),\r
247 option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = DEFAULT | RESET_REQUIRED;\r
248 option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = RESET_REQUIRED;\r
249\r
250 inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),\r
251 ideqid MyIfrNVData.TestLateCheck == MyIfrNVData.TestLateCheck2\r
252 endif\r
253\r
254 endoneof;\r
255\r
256 oneof varid = MyIfrNVData.QuestionAboutTreeHugging,\r
257 prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),\r
258 help = STRING_TOKEN(STR_ONE_OF_HELP),\r
259 option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = RESET_REQUIRED;\r
260 option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = DEFAULT | RESET_REQUIRED;\r
261 option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 0x03, flags = RESET_REQUIRED;\r
262\r
263 endoneof;\r
264\r
265 //\r
266 // Define a string (EFI_IFR_STRING)\r
267 //\r
268 string varid = MyIfrNVData.MyStringData,\r
269 prompt = STRING_TOKEN(STR_MY_STRING_PROMPT2),\r
270 help = STRING_TOKEN(STR_MY_STRING_HELP2),\r
271 flags = INTERACTIVE,\r
272 key = 0x1236,\r
273 minsize = 6,\r
274 maxsize = 20,\r
275 endstring;\r
276\r
277 //\r
278 // Define a numeric (EFI_IFR_NUMERIC)\r
279 //\r
280 numeric varid = MyIfrNVData.HowOldAreYouInYearsManual,\r
281 prompt = STRING_TOKEN(STR_NUMERIC_READONLY_PROMPT),\r
282 help = STRING_TOKEN(STR_NUMERIC_HELP0),\r
283 flags = READ_ONLY, // READ_ONLY indicate it's marked with EFI_IFR_FLAG_READ_ONLY\r
284 minimum = 0,\r
285 maximum = 0xf0,\r
286 step = 0, // Stepping of 0 equates to a manual entering\r
287 // of a value, otherwise it will be adjusted by "+"/"-"\r
288 default = 20,\r
289\r
290 endnumeric;\r
291\r
292 numeric varid = MyIfrNVData.HowOldAreYouInYearsManual,\r
293 prompt = STRING_TOKEN(STR_NUMERIC_MANUAL_PROMPT),\r
294 help = STRING_TOKEN(STR_NUMERIC_HELP0),\r
295 minimum = 0,\r
296 maximum = 0xf0,\r
297 step = 0,\r
298 default = 21,\r
299\r
300 inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),\r
301 ideqval MyIfrNVData.HowOldAreYouInYearsManual == 99\r
302 OR\r
303 ideqid MyIfrNVData.HowOldAreYouInYearsManual == MyEfiVar\r
304 OR\r
305 ideqvallist MyIfrNVData.HowOldAreYouInYearsManual == 1 3 5 7\r
306 endif\r
307\r
308 endnumeric;\r
309\r
310 numeric varid = MyEfiVar, // Reference of EFI variable storage\r
311 prompt = STRING_TOKEN(STR_TALL_HEX_PROMPT),\r
312 help = STRING_TOKEN(STR_NUMERIC_HELP1),\r
313 flags = DISPLAY_UINT_HEX, // Display in HEX format (if not specified, default is in decimal format)\r
314 minimum = 0,\r
315 maximum = 250,\r
316 default = 175,\r
317\r
318 endnumeric;\r
319\r
320 label LABEL_1_VALUE;\r
321 label LABEL_2_VALUE;\r
322\r
323 grayoutif ideqval MyIfrNVData.HowOldAreYouInYearsManual == 23 AND ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;\r
324 numeric varid = MyIfrNVData.HowOldAreYouInYears,\r
325 prompt = STRING_TOKEN(STR_NUMERIC_STEP_PROMPT),\r
326 help = STRING_TOKEN(STR_NUMERIC_HELP2),\r
327 minimum = 0,\r
328 maximum = 243,\r
329 step = 1,\r
330 default = 18,\r
331 \r
332 endnumeric;\r
333 endif;\r
334\r
335 //\r
336 // Non-interactive password, validate by Setup Browser\r
337 //\r
338 password varid = MyIfrNVData.WhatIsThePassword,\r
339 prompt = STRING_TOKEN(STR_PASSWORD_PROMPT),\r
340 help = STRING_TOKEN(STR_PASSWORD_HELP),\r
341 minsize = 6,\r
342 maxsize = 20, // new opcode\r
343 endpassword;\r
344\r
345 string varid = MyIfrNVData.PasswordClearText,\r
346 prompt = STRING_TOKEN(STR_MY_STRING_PROMPT),\r
347 help = STRING_TOKEN(STR_MY_STRING_HELP),\r
348 minsize = 6,\r
349 maxsize = 0x14,\r
350 endstring;\r
351\r
352 //\r
353 // Interactive password, validate via ConfigAccess.Callback()\r
354 //\r
355 password varid = MyIfrNVData.WhatIsThePassword2,\r
356 prompt = STRING_TOKEN(STR_PASSWORD_CALLBACK_PROMPT),\r
357 help = STRING_TOKEN(STR_PASSWORD_HELP),\r
358 flags = INTERACTIVE,\r
359 key = 0x2000,\r
360 minsize = 6,\r
361 maxsize = 20, // new opcode\r
362 endpassword;\r
363\r
364 goto 2,\r
365 prompt = STRING_TOKEN(STR_GOTO_FORM2), //SecondSetupPage // this too has no end-op and basically it's a jump to a form ONLY\r
366 help = STRING_TOKEN(STR_GOTO_HELP);\r
367\r
368 goto 3,\r
369 prompt = STRING_TOKEN(STR_GOTO_FORM3), //ThirdSetupPage // this too has no end-op and basically it's a jump to a form ONLY\r
370 help = STRING_TOKEN(STR_GOTO_HELP);\r
371\r
372 endform;\r
373\r
374 form formid = 2, // SecondSetupPage,\r
375 title = STRING_TOKEN(STR_FORM2_TITLE); // note formid is a variable (for readability) (UINT16) - also added Form to the line to signify the Op-Code\r
376\r
377\r
378 date year varid = Date.Year, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from\r
379 prompt = STRING_TOKEN(STR_DATE_PROMPT),\r
380 help = STRING_TOKEN(STR_DATE_YEAR_HELP),\r
381 minimum = 1998,\r
382 maximum = 2099,\r
383 step = 1,\r
384 default = 2004,\r
385\r
386 month varid = Date.Month, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from\r
387 prompt = STRING_TOKEN(STR_DATE_PROMPT),\r
388 help = STRING_TOKEN(STR_DATE_MONTH_HELP),\r
389 minimum = 1,\r
390 maximum = 12,\r
391 step = 1,\r
392 default = 1,\r
393\r
394 day varid = Date.Day, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from\r
395 prompt = STRING_TOKEN(STR_DATE_PROMPT),\r
396 help = STRING_TOKEN(STR_DATE_DAY_HELP),\r
397 minimum = 1,\r
398 maximum = 31,\r
399 step = 0x1,\r
400 default = 1,\r
401\r
402 inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),\r
403 ideqval Date.Day == 31\r
404 AND\r
405 ideqvallist Date.Month == 2 4 6 9 11\r
406 endif\r
407\r
408 //\r
409 // If the day is 30 AND month is 2\r
410 //\r
411 inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),\r
412 ideqval Date.Day == 30\r
413 AND\r
414 ideqval Date.Month == 2\r
415 endif\r
416\r
417 //\r
418 // If the day is 29 AND month is 2 AND it year is NOT a leapyear\r
419 //\r
420 inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),\r
421 ideqval Date.Day == 0x1D\r
422 AND\r
423 ideqval Date.Month == 2\r
424 AND\r
425 NOT\r
426 ideqvallist Date.Year == 2004 2008 20012 20016 2020 2024 2028 2032 2036\r
427 endif\r
428\r
429 enddate;\r
430\r
431 time hour varid = Time.Hours, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from\r
432 prompt = STRING_TOKEN(STR_TIME_PROMPT),\r
433 help = STRING_TOKEN(STR_TIME_HOUR_HELP),\r
434 minimum = 0,\r
435 maximum = 23,\r
436 step = 1,\r
437 default = 0,\r
438\r
439 minute varid = Time.Minutes, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from\r
440 prompt = STRING_TOKEN(STR_TIME_PROMPT),\r
441 help = STRING_TOKEN(STR_TIME_MINUTE_HELP),\r
442 minimum = 0,\r
443 maximum = 59,\r
444 step = 1,\r
445 default = 0,\r
446\r
447 second varid = Time.Seconds, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from\r
448 prompt = STRING_TOKEN(STR_TIME_PROMPT),\r
449 help = STRING_TOKEN(STR_TIME_SECOND_HELP),\r
450 minimum = 0,\r
451 maximum = 59,\r
452 step = 1,\r
453 default = 0,\r
454\r
455 endtime;\r
456\r
457 checkbox varid = MyIfrNVData.ChooseToActivateNuclearWeaponry,\r
458 prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),\r
459 help = STRING_TOKEN(STR_CHECK_BOX_HELP),\r
460 flags = CHECKBOX_DEFAULT,\r
461 key = 0,\r
462 endcheckbox;\r
463\r
464 text\r
465 help = STRING_TOKEN(STR_TEXT_HELP),\r
466 text = STRING_TOKEN(STR_TEXT_TEXT_1);\r
467\r
468 text\r
469 help = STRING_TOKEN(STR_TEXT_HELP),\r
470 text = STRING_TOKEN(STR_TEXT_TEXT_1),\r
471 text = STRING_TOKEN(STR_TEXT_TEXT_2);\r
472\r
473 goto 1,\r
474 prompt = STRING_TOKEN(STR_GOTO_FORM1), //MainSetupPage // this too has no end-op and basically it's a jump to a form ONLY\r
475 help = STRING_TOKEN(STR_GOTO_HELP);\r
476\r
477 endform;\r
478\r
479 form formid = 3, title = STRING_TOKEN(STR_FORM3_TITLE); // note formid is a variable (for readability) (UINT16) - also added Form to the line to signify the Op-Code\r
480\r
481 grayoutif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;\r
482 text\r
483 help = STRING_TOKEN(STR_TEXT_HELP),\r
484 text = STRING_TOKEN(STR_TEXT_TEXT_1);\r
485 endif;\r
486\r
487 endform;\r
488\r
489 form formid = 4, title = STRING_TOKEN(STR_FORM3_TITLE);\r
490\r
491 endform;\r
492\r
493 form formid = 0x1234, // Dynamically created page,\r
494 title = STRING_TOKEN(STR_DYNAMIC_TITLE); // note formid is a variable (for readability) (UINT16) - also added Form to the line to signify the Op-Code\r
495\r
496 label 0x1234;\r
497 //\r
498 // This is where we will insert dynamic created opcodes\r
499 //\r
500 label LABEL_END;\r
501\r
502 endform;\r
503\r
504endformset;\r