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