]>
Commit | Line | Data |
---|---|---|
cf7e50f8 | 1 | /** @file\r |
2ec4d269 | 2 | Library Routines to create IFR independent of string data - assume tokens already exist\r |
3 | Primarily to be used for exporting op-codes at a label in pre-defined forms.\r | |
4 | \r | |
5d01b0f7 | 5 | Copyright (c) 2006, Intel Corporation \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 | |
cf7e50f8 | 14 | **/\r |
5d01b0f7 | 15 | \r |
82096802 | 16 | #include "IfrSupportLibInternal.h"\r |
5d01b0f7 | 17 | \r |
2ec4d269 | 18 | /**\r |
49a049e6 | 19 | Create a SubTitle opcode independent of string creation.\r |
5d01b0f7 | 20 | This is used primarily by users who need to create just one particular valid op-code and the string\r |
21 | data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r | |
22 | location to pre-defined forms in HII)\r | |
23 | \r | |
49a049e6 | 24 | @param StringToken StringToken of the subtitle\r |
25 | @param FormBuffer Output of subtitle as a form\r | |
5d01b0f7 | 26 | \r |
49a049e6 | 27 | @retval EFI_SUCCESS Subtitle created to be a form\r |
2ec4d269 | 28 | **/\r |
29 | EFI_STATUS\r | |
30 | CreateSubTitleOpCode (\r | |
49a049e6 | 31 | IN STRING_REF StringToken,\r |
32 | IN OUT VOID *FormBuffer\r | |
2ec4d269 | 33 | )\r |
5d01b0f7 | 34 | {\r |
49a049e6 | 35 | FRAMEWORK_EFI_IFR_SUBTITLE Subtitle;\r |
5d01b0f7 | 36 | \r |
dc7b4a5c | 37 | Subtitle.Header.OpCode = FRAMEWORK_EFI_IFR_SUBTITLE_OP;\r |
38 | Subtitle.Header.Length = sizeof (FRAMEWORK_EFI_IFR_SUBTITLE);\r | |
5d01b0f7 | 39 | Subtitle.SubTitle = StringToken;\r |
40 | \r | |
dc7b4a5c | 41 | CopyMem (FormBuffer, &Subtitle, sizeof (FRAMEWORK_EFI_IFR_SUBTITLE));\r |
5d01b0f7 | 42 | return EFI_SUCCESS;\r |
43 | }\r | |
44 | \r | |
2ec4d269 | 45 | /**\r |
49a049e6 | 46 | Create a Text opcode independent of string creation.\r |
47 | \r | |
2ec4d269 | 48 | This is used primarily by users who need to create just one particular valid op-code and the string\r |
49 | data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r | |
50 | location to pre-defined forms in HII)\r | |
51 | \r | |
49a049e6 | 52 | @param StringToken First string token of the text\r |
53 | @param StringTokenTwo Second string token of the text\r | |
54 | @param StringTokenThree Help string token of the text\r | |
55 | @param Flags Flag of the text\r | |
56 | @param Key Key of the text\r | |
57 | @param FormBuffer Output of text as a form\r | |
5d01b0f7 | 58 | \r |
49a049e6 | 59 | @retval EFI_SUCCESS Text created to be a form\r |
2ec4d269 | 60 | **/\r |
5d01b0f7 | 61 | EFI_STATUS\r |
62 | CreateTextOpCode (\r | |
49a049e6 | 63 | IN STRING_REF StringToken,\r |
64 | IN STRING_REF StringTokenTwo,\r | |
65 | IN STRING_REF StringTokenThree,\r | |
66 | IN UINT8 Flags,\r | |
67 | IN UINT16 Key,\r | |
68 | IN OUT VOID *FormBuffer\r | |
5d01b0f7 | 69 | )\r |
5d01b0f7 | 70 | {\r |
49a049e6 | 71 | FRAMEWORK_EFI_IFR_TEXT Text;\r |
5d01b0f7 | 72 | \r |
dc7b4a5c | 73 | Text.Header.OpCode = FRAMEWORK_EFI_IFR_TEXT_OP;\r |
74 | Text.Header.Length = sizeof (FRAMEWORK_EFI_IFR_TEXT);\r | |
5d01b0f7 | 75 | Text.Text = StringToken;\r |
76 | \r | |
77 | Text.TextTwo = StringTokenTwo;\r | |
78 | Text.Help = StringTokenThree;\r | |
79 | Text.Flags = Flags;\r | |
80 | Text.Key = Key;\r | |
81 | \r | |
dc7b4a5c | 82 | CopyMem (FormBuffer, &Text, sizeof (FRAMEWORK_EFI_IFR_TEXT));\r |
5d01b0f7 | 83 | \r |
84 | return EFI_SUCCESS;\r | |
85 | }\r | |
86 | \r | |
2ec4d269 | 87 | /**\r |
49a049e6 | 88 | Create a hyperlink opcode independent of string creation.\r |
89 | \r | |
2ec4d269 | 90 | This is used primarily by users who need to create just one particular valid op-code and the string\r |
91 | data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r | |
92 | location to pre-defined forms in HII)\r | |
93 | \r | |
49a049e6 | 94 | @param FormId Form ID of the hyperlink\r |
95 | @param StringToken Prompt string token of the hyperlink\r | |
96 | @param StringTokenTwo Help string token of the hyperlink\r | |
97 | @param Flags Flags of the hyperlink\r | |
98 | @param Key Key of the hyperlink\r | |
99 | @param FormBuffer Output of hyperlink as a form\r | |
100 | \r | |
101 | @retval EFI_SUCCESS Hyperlink created to be a form\r | |
102 | **/\r | |
5d01b0f7 | 103 | EFI_STATUS\r |
104 | CreateGotoOpCode (\r | |
49a049e6 | 105 | IN UINT16 FormId,\r |
106 | IN STRING_REF StringToken,\r | |
107 | IN STRING_REF StringTokenTwo,\r | |
108 | IN UINT8 Flags,\r | |
109 | IN UINT16 Key,\r | |
110 | IN OUT VOID *FormBuffer\r | |
5d01b0f7 | 111 | )\r |
5d01b0f7 | 112 | {\r |
49a049e6 | 113 | FRAMEWORK_EFI_IFR_REF Hyperlink;\r |
5d01b0f7 | 114 | \r |
dc7b4a5c | 115 | Hyperlink.Header.OpCode = FRAMEWORK_EFI_IFR_REF_OP;\r |
116 | Hyperlink.Header.Length = sizeof (FRAMEWORK_EFI_IFR_REF);\r | |
5d01b0f7 | 117 | Hyperlink.FormId = FormId;\r |
118 | Hyperlink.Prompt = StringToken;\r | |
119 | Hyperlink.Help = StringTokenTwo;\r | |
120 | Hyperlink.Key = Key;\r | |
121 | Hyperlink.Flags = Flags;\r | |
122 | \r | |
dc7b4a5c | 123 | CopyMem (FormBuffer, &Hyperlink, sizeof (FRAMEWORK_EFI_IFR_REF));\r |
5d01b0f7 | 124 | \r |
125 | return EFI_SUCCESS;\r | |
126 | }\r | |
127 | \r | |
2ec4d269 | 128 | /**\r |
129 | Create a one-of opcode with a set of option op-codes to choose from independent of string creation.\r | |
130 | This is used primarily by users who need to create just one particular valid op-code and the string\r | |
131 | data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r | |
132 | location to pre-defined forms in HII)\r | |
133 | \r | |
134 | OptionsList is a pointer to a null-terminated list of option descriptions. Ensure that OptionsList[x].StringToken\r | |
135 | has been filled in since this routine will not generate StringToken values.\r | |
136 | \r | |
49a049e6 | 137 | @param QuestionId Question ID of the one-of box\r |
138 | @param DataWidth DataWidth of the one-of box\r | |
139 | @param PromptToken Prompt string token of the one-of box\r | |
140 | @param HelpToken Help string token of the one-of box\r | |
141 | @param OptionsList Each string in it is an option of the one-of box\r | |
142 | @param OptionCount Option string count\r | |
143 | @param FormBuffer Output of One-Of box as a form\r | |
2ec4d269 | 144 | \r |
5d01b0f7 | 145 | \r |
49a049e6 | 146 | @retval EFI_SUCCESS One-Of box created to be a form\r |
147 | @retval EFI_DEVICE_ERROR DataWidth > 2\r | |
2ec4d269 | 148 | **/\r |
5d01b0f7 | 149 | EFI_STATUS\r |
150 | CreateOneOfOpCode (\r | |
49a049e6 | 151 | IN UINT16 QuestionId,\r |
152 | IN UINT8 DataWidth,\r | |
153 | IN STRING_REF PromptToken,\r | |
154 | IN STRING_REF HelpToken,\r | |
155 | IN IFR_OPTION *OptionsList,\r | |
156 | IN UINTN OptionCount,\r | |
157 | IN OUT VOID *FormBuffer\r | |
5d01b0f7 | 158 | )\r |
5d01b0f7 | 159 | {\r |
49a049e6 | 160 | UINTN Index;\r |
161 | FRAMEWORK_EFI_IFR_ONE_OF OneOf;\r | |
162 | FRAMEWORK_EFI_IFR_ONE_OF_OPTION OneOfOption;\r | |
163 | FRAMEWORK_EFI_IFR_END_ONE_OF EndOneOf;\r | |
164 | UINT8 *LocalBuffer;\r | |
5d01b0f7 | 165 | \r |
166 | //\r | |
167 | // We do not create op-code storage widths for one-of in excess of 16 bits for now\r | |
168 | //\r | |
169 | if (DataWidth > 2) {\r | |
170 | return EFI_DEVICE_ERROR;\r | |
171 | }\r | |
172 | \r | |
dc7b4a5c | 173 | OneOf.Header.OpCode = FRAMEWORK_EFI_IFR_ONE_OF_OP;\r |
174 | OneOf.Header.Length = sizeof (FRAMEWORK_EFI_IFR_ONE_OF);\r | |
5d01b0f7 | 175 | OneOf.QuestionId = QuestionId;\r |
176 | OneOf.Width = DataWidth;\r | |
177 | OneOf.Prompt = PromptToken;\r | |
5d01b0f7 | 178 | OneOf.Help = HelpToken;\r |
5d01b0f7 | 179 | LocalBuffer = (UINT8 *) FormBuffer;\r |
180 | \r | |
dc7b4a5c | 181 | CopyMem (LocalBuffer, &OneOf, sizeof (FRAMEWORK_EFI_IFR_ONE_OF));\r |
5d01b0f7 | 182 | \r |
dc7b4a5c | 183 | LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_ONE_OF));\r |
5d01b0f7 | 184 | \r |
185 | for (Index = 0; Index < OptionCount; Index++) {\r | |
dc7b4a5c | 186 | OneOfOption.Header.OpCode = FRAMEWORK_EFI_IFR_ONE_OF_OPTION_OP;\r |
187 | OneOfOption.Header.Length = sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION);\r | |
5d01b0f7 | 188 | \r |
189 | OneOfOption.Option = OptionsList[Index].StringToken;\r | |
190 | OneOfOption.Value = OptionsList[Index].Value;\r | |
191 | OneOfOption.Flags = OptionsList[Index].Flags;\r | |
192 | OneOfOption.Key = OptionsList[Index].Key;\r | |
193 | \r | |
dc7b4a5c | 194 | CopyMem (LocalBuffer, &OneOfOption, sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION));\r |
5d01b0f7 | 195 | \r |
dc7b4a5c | 196 | LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION));\r |
5d01b0f7 | 197 | }\r |
198 | \r | |
dc7b4a5c | 199 | EndOneOf.Header.Length = sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF);\r |
200 | EndOneOf.Header.OpCode = FRAMEWORK_EFI_IFR_END_ONE_OF_OP;\r | |
5d01b0f7 | 201 | \r |
dc7b4a5c | 202 | CopyMem (LocalBuffer, &EndOneOf, sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF));\r |
5d01b0f7 | 203 | \r |
dc7b4a5c | 204 | LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF));\r |
5d01b0f7 | 205 | \r |
206 | return EFI_SUCCESS;\r | |
207 | }\r | |
208 | \r | |
2ec4d269 | 209 | /**\r |
210 | Create a ordered list opcode with a set of option op-codes to choose from independent of string creation.\r | |
211 | This is used primarily by users who need to create just one particular valid op-code and the string\r | |
212 | data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r | |
213 | location to pre-defined forms in HII)\r | |
214 | \r | |
215 | OptionsList is a pointer to a null-terminated list of option descriptions. Ensure that OptionsList[x].StringToken\r | |
216 | has been filled in since this routine will not generate StringToken values.\r | |
217 | \r | |
49a049e6 | 218 | @param QuestionId Question ID of the ordered list\r |
219 | @param MaxEntries MaxEntries of the ordered list\r | |
220 | @param PromptToken Prompt string token of the ordered list\r | |
221 | @param HelpToken Help string token of the ordered list\r | |
222 | @param OptionsList Each string in it is an option of the ordered list\r | |
223 | @param OptionCount Option string count\r | |
224 | @param FormBuffer Output of ordered list as a form\r | |
2ec4d269 | 225 | \r |
49a049e6 | 226 | @retval EFI_SUCCESS Ordered list created to be a form\r |
2ec4d269 | 227 | **/\r |
5d01b0f7 | 228 | EFI_STATUS\r |
229 | CreateOrderedListOpCode (\r | |
49a049e6 | 230 | IN UINT16 QuestionId,\r |
231 | IN UINT8 MaxEntries,\r | |
232 | IN STRING_REF PromptToken,\r | |
233 | IN STRING_REF HelpToken,\r | |
234 | IN IFR_OPTION *OptionsList,\r | |
235 | IN UINTN OptionCount,\r | |
236 | IN OUT VOID *FormBuffer\r | |
5d01b0f7 | 237 | )\r |
5d01b0f7 | 238 | {\r |
49a049e6 | 239 | UINTN Index;\r |
240 | FRAMEWORK_EFI_IFR_ORDERED_LIST OrderedList;\r | |
241 | FRAMEWORK_EFI_IFR_ONE_OF_OPTION OrderedListOption;\r | |
242 | FRAMEWORK_EFI_IFR_END_ONE_OF EndOrderedList;\r | |
243 | UINT8 *LocalBuffer;\r | |
5d01b0f7 | 244 | \r |
dc7b4a5c | 245 | OrderedList.Header.OpCode = FRAMEWORK_EFI_IFR_ORDERED_LIST_OP;\r |
246 | OrderedList.Header.Length = sizeof (FRAMEWORK_EFI_IFR_ORDERED_LIST);\r | |
5d01b0f7 | 247 | OrderedList.QuestionId = QuestionId;\r |
248 | OrderedList.MaxEntries = MaxEntries;\r | |
249 | OrderedList.Prompt = PromptToken;\r | |
5d01b0f7 | 250 | OrderedList.Help = HelpToken;\r |
5d01b0f7 | 251 | LocalBuffer = (UINT8 *) FormBuffer;\r |
252 | \r | |
dc7b4a5c | 253 | CopyMem (LocalBuffer, &OrderedList, sizeof (FRAMEWORK_EFI_IFR_ORDERED_LIST));\r |
5d01b0f7 | 254 | \r |
dc7b4a5c | 255 | LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_ORDERED_LIST));\r |
5d01b0f7 | 256 | \r |
257 | for (Index = 0; Index < OptionCount; Index++) {\r | |
dc7b4a5c | 258 | OrderedListOption.Header.OpCode = FRAMEWORK_EFI_IFR_ONE_OF_OPTION_OP;\r |
259 | OrderedListOption.Header.Length = sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION);\r | |
5d01b0f7 | 260 | \r |
261 | OrderedListOption.Option = OptionsList[Index].StringToken;\r | |
262 | OrderedListOption.Value = OptionsList[Index].Value;\r | |
263 | OrderedListOption.Flags = OptionsList[Index].Flags;\r | |
264 | OrderedListOption.Key = OptionsList[Index].Key;\r | |
265 | \r | |
dc7b4a5c | 266 | CopyMem (LocalBuffer, &OrderedListOption, sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION));\r |
5d01b0f7 | 267 | \r |
dc7b4a5c | 268 | LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_ONE_OF_OPTION));\r |
5d01b0f7 | 269 | }\r |
270 | \r | |
dc7b4a5c | 271 | EndOrderedList.Header.Length = sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF);\r |
272 | EndOrderedList.Header.OpCode = FRAMEWORK_EFI_IFR_END_ONE_OF_OP;\r | |
5d01b0f7 | 273 | \r |
dc7b4a5c | 274 | CopyMem (LocalBuffer, &EndOrderedList, sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF));\r |
5d01b0f7 | 275 | \r |
dc7b4a5c | 276 | LocalBuffer = (UINT8 *) (LocalBuffer + sizeof (FRAMEWORK_EFI_IFR_END_ONE_OF));\r |
5d01b0f7 | 277 | \r |
278 | return EFI_SUCCESS;\r | |
279 | }\r | |
280 | \r | |
2ec4d269 | 281 | /**\r |
49a049e6 | 282 | Create a checkbox opcode independent of string creation.\r |
2ec4d269 | 283 | This is used primarily by users who need to create just one particular valid op-code and the string\r |
284 | data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r | |
285 | location to pre-defined forms in HII)\r | |
286 | \r | |
49a049e6 | 287 | @param QuestionId Question ID of the check box\r |
288 | @param DataWidth DataWidth of the check box\r | |
289 | @param PromptToken Prompt string token of the check box\r | |
290 | @param HelpToken Help string token of the check box\r | |
291 | @param Flags Flags of the check box\r | |
292 | @param Key Key of the check box\r | |
293 | @param FormBuffer Output of the check box as a form\r | |
2ec4d269 | 294 | \r |
49a049e6 | 295 | @retval EFI_SUCCESS Checkbox created to be a form\r |
296 | @retval EFI_DEVICE_ERROR DataWidth > 1\r | |
2ec4d269 | 297 | **/\r |
5d01b0f7 | 298 | EFI_STATUS\r |
299 | CreateCheckBoxOpCode (\r | |
49a049e6 | 300 | IN UINT16 QuestionId,\r |
301 | IN UINT8 DataWidth,\r | |
302 | IN STRING_REF PromptToken,\r | |
303 | IN STRING_REF HelpToken,\r | |
304 | IN UINT8 Flags,\r | |
305 | IN UINT16 Key,\r | |
306 | IN OUT VOID *FormBuffer\r | |
5d01b0f7 | 307 | )\r |
5d01b0f7 | 308 | {\r |
49a049e6 | 309 | FRAMEWORK_EFI_IFR_CHECKBOX CheckBox;\r |
5d01b0f7 | 310 | \r |
311 | //\r | |
312 | // We do not create op-code storage widths for checkbox in excess of 8 bits for now\r | |
313 | //\r | |
314 | if (DataWidth > 1) {\r | |
315 | return EFI_DEVICE_ERROR;\r | |
316 | }\r | |
317 | \r | |
dc7b4a5c | 318 | CheckBox.Header.OpCode = FRAMEWORK_EFI_IFR_CHECKBOX_OP;\r |
319 | CheckBox.Header.Length = sizeof (FRAMEWORK_EFI_IFR_CHECKBOX);\r | |
5d01b0f7 | 320 | CheckBox.QuestionId = QuestionId;\r |
321 | CheckBox.Width = DataWidth;\r | |
322 | CheckBox.Prompt = PromptToken;\r | |
5d01b0f7 | 323 | CheckBox.Help = HelpToken;\r |
324 | CheckBox.Flags = Flags;\r | |
325 | CheckBox.Key = Key;\r | |
326 | \r | |
dc7b4a5c | 327 | CopyMem (FormBuffer, &CheckBox, sizeof (FRAMEWORK_EFI_IFR_CHECKBOX));\r |
5d01b0f7 | 328 | \r |
329 | return EFI_SUCCESS;\r | |
330 | }\r | |
331 | \r | |
2ec4d269 | 332 | /**\r |
49a049e6 | 333 | Create a numeric opcode independent of string creation.\r |
2ec4d269 | 334 | This is used primarily by users who need to create just one particular valid op-code and the string\r |
335 | data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r | |
336 | location to pre-defined forms in HII)\r | |
337 | \r | |
49a049e6 | 338 | @param QuestionId Question ID of the numeric\r |
339 | @param DataWidth DataWidth of the numeric\r | |
340 | @param PromptToken Prompt string token of the numeric\r | |
341 | @param HelpToken Help string token of the numeric\r | |
342 | @param Minimum Minumun boundary of the numeric\r | |
343 | @param Maximum Maximum boundary of the numeric\r | |
344 | @param Step Step of the numeric\r | |
345 | @param Default Default value of the numeric\r | |
346 | @param Flags Flags of the numeric\r | |
347 | @param Key Key of the numeric\r | |
348 | @param FormBuffer Output of the numeric as a form\r | |
2ec4d269 | 349 | \r |
350 | \r | |
49a049e6 | 351 | @retval EFI_SUCCESS The numeric created to be a form.\r |
352 | @retval EFI_DEVICE_ERROR DataWidth > 2\r | |
2ec4d269 | 353 | **/\r |
5d01b0f7 | 354 | EFI_STATUS\r |
355 | CreateNumericOpCode (\r | |
49a049e6 | 356 | IN UINT16 QuestionId,\r |
357 | IN UINT8 DataWidth,\r | |
358 | IN STRING_REF PromptToken,\r | |
359 | IN STRING_REF HelpToken,\r | |
360 | IN UINT16 Minimum,\r | |
361 | IN UINT16 Maximum,\r | |
362 | IN UINT16 Step,\r | |
363 | IN UINT16 Default,\r | |
364 | IN UINT8 Flags,\r | |
365 | IN UINT16 Key,\r | |
366 | IN OUT VOID *FormBuffer\r | |
5d01b0f7 | 367 | )\r |
5d01b0f7 | 368 | {\r |
49a049e6 | 369 | FRAMEWORK_EFI_IFR_NUMERIC Numeric;\r |
5d01b0f7 | 370 | \r |
371 | //\r | |
372 | // We do not create op-code storage widths for numerics in excess of 16 bits for now\r | |
373 | //\r | |
374 | if (DataWidth > 2) {\r | |
375 | return EFI_DEVICE_ERROR;\r | |
376 | }\r | |
377 | \r | |
dc7b4a5c | 378 | Numeric.Header.OpCode = FRAMEWORK_EFI_IFR_NUMERIC_OP;\r |
379 | Numeric.Header.Length = sizeof (FRAMEWORK_EFI_IFR_NUMERIC);\r | |
5d01b0f7 | 380 | Numeric.QuestionId = QuestionId;\r |
381 | Numeric.Width = DataWidth;\r | |
382 | Numeric.Prompt = PromptToken;\r | |
5d01b0f7 | 383 | Numeric.Help = HelpToken;\r |
384 | Numeric.Minimum = Minimum;\r | |
385 | Numeric.Maximum = Maximum;\r | |
386 | Numeric.Step = Step;\r | |
387 | Numeric.Default = Default;\r | |
388 | Numeric.Flags = Flags;\r | |
389 | Numeric.Key = Key;\r | |
390 | \r | |
dc7b4a5c | 391 | CopyMem (FormBuffer, &Numeric, sizeof (FRAMEWORK_EFI_IFR_NUMERIC));\r |
5d01b0f7 | 392 | \r |
393 | return EFI_SUCCESS;\r | |
394 | }\r | |
395 | \r | |
2ec4d269 | 396 | /**\r |
49a049e6 | 397 | Create a numeric opcode independent of string creation.\r |
2ec4d269 | 398 | This is used primarily by users who need to create just one particular valid op-code and the string\r |
399 | data will be assumed to exist in the HiiDatabase already. (Useful when exporting op-codes at a label\r | |
400 | location to pre-defined forms in HII)\r | |
401 | \r | |
49a049e6 | 402 | @param QuestionId Question ID of the string\r |
403 | @param DataWidth DataWidth of the string\r | |
404 | @param PromptToken Prompt token of the string\r | |
405 | @param HelpToken Help token of the string\r | |
406 | @param MinSize Min size boundary of the string\r | |
407 | @param MaxSize Max size boundary of the string\r | |
408 | @param Flags Flags of the string\r | |
409 | @param Key Key of the string\r | |
410 | @param FormBuffer Output of the string as a form\r | |
2ec4d269 | 411 | \r |
49a049e6 | 412 | @retval EFI_SUCCESS String created to be a form.\r |
2ec4d269 | 413 | **/\r |
5d01b0f7 | 414 | EFI_STATUS\r |
415 | CreateStringOpCode (\r | |
49a049e6 | 416 | IN UINT16 QuestionId,\r |
417 | IN UINT8 DataWidth,\r | |
418 | IN STRING_REF PromptToken,\r | |
419 | IN STRING_REF HelpToken,\r | |
420 | IN UINT8 MinSize,\r | |
421 | IN UINT8 MaxSize,\r | |
422 | IN UINT8 Flags,\r | |
423 | IN UINT16 Key,\r | |
424 | IN OUT VOID *FormBuffer\r | |
5d01b0f7 | 425 | )\r |
5d01b0f7 | 426 | {\r |
49a049e6 | 427 | FRAMEWORK_EFI_IFR_STRING String;\r |
5d01b0f7 | 428 | \r |
dc7b4a5c | 429 | String.Header.OpCode = FRAMEWORK_EFI_IFR_STRING_OP;\r |
430 | String.Header.Length = sizeof (FRAMEWORK_EFI_IFR_STRING);\r | |
5d01b0f7 | 431 | String.QuestionId = QuestionId;\r |
432 | String.Width = DataWidth;\r | |
433 | String.Prompt = PromptToken;\r | |
5d01b0f7 | 434 | String.Help = HelpToken;\r |
435 | String.MinSize = MinSize;\r | |
436 | String.MaxSize = MaxSize;\r | |
437 | String.Flags = Flags;\r | |
438 | String.Key = Key;\r | |
439 | \r | |
dc7b4a5c | 440 | CopyMem (FormBuffer, &String, sizeof (FRAMEWORK_EFI_IFR_STRING));\r |
5d01b0f7 | 441 | \r |
442 | return EFI_SUCCESS;\r | |
443 | }\r | |
444 | \r | |
2ec4d269 | 445 | /**\r |
446 | Create a banner opcode. This is primarily used by the FrontPage implementation from BDS.\r | |
447 | \r | |
49a049e6 | 448 | @param Title Title of the banner\r |
449 | @param LineNumber LineNumber of the banner\r | |
450 | @param Alignment Alignment of the banner\r | |
451 | @param FormBuffer Output of banner as a form\r | |
5d01b0f7 | 452 | \r |
49a049e6 | 453 | @retval EFI_SUCCESS Banner created to be a form.\r |
2ec4d269 | 454 | **/\r |
5d01b0f7 | 455 | EFI_STATUS\r |
456 | CreateBannerOpCode (\r | |
49a049e6 | 457 | IN UINT16 Title,\r |
458 | IN UINT16 LineNumber,\r | |
459 | IN UINT8 Alignment,\r | |
460 | IN OUT VOID *FormBuffer\r | |
5d01b0f7 | 461 | )\r |
5d01b0f7 | 462 | {\r |
49a049e6 | 463 | FRAMEWORK_EFI_IFR_BANNER Banner;\r |
5d01b0f7 | 464 | \r |
dc7b4a5c | 465 | Banner.Header.OpCode = FRAMEWORK_EFI_IFR_BANNER_OP;\r |
466 | Banner.Header.Length = sizeof (FRAMEWORK_EFI_IFR_BANNER);\r | |
5d01b0f7 | 467 | CopyMem (&Banner.Title, &Title, sizeof (UINT16));\r |
468 | CopyMem (&Banner.LineNumber, &LineNumber, sizeof (UINT16));\r | |
469 | Banner.Alignment = Alignment;\r | |
470 | \r | |
dc7b4a5c | 471 | CopyMem (FormBuffer, &Banner, sizeof (FRAMEWORK_EFI_IFR_BANNER));\r |
5d01b0f7 | 472 | \r |
473 | return EFI_SUCCESS;\r | |
474 | }\r | |
2ec4d269 | 475 | \r |
476 | \r |