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