]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitter.h
Update prototype of DxeLoadCore().
[mirror_edk2.git] / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitter.h
CommitLineData
a4d608d1 1/** @file\r
95276127 2 Private data structures for the Console Splitter driver\r
3\r
a4d608d1 4Copyright (c) 2006 - 2008 Intel Corporation. <BR>\r
95276127 5All rights reserved. This program and the accompanying materials\r
6are licensed and made available under the terms and conditions of the BSD License\r
7which accompanies this distribution. The full text of the license may be found at\r
8http://opensource.org/licenses/bsd-license.php\r
9\r
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
12\r
13**/\r
14\r
15#ifndef _CON_SPLITTER_H_\r
16#define _CON_SPLITTER_H_\r
17\r
60c93673 18#include <Uefi.h>\r
97a079ed
A
19#include <Guid/PrimaryStandardErrorDevice.h>\r
20#include <Guid/PrimaryConsoleOutDevice.h>\r
21#include <Protocol/GraphicsOutput.h>\r
22#include <Guid/PrimaryConsoleInDevice.h>\r
189eac21 23#include <Guid/GenericPlatformVariable.h>\r
97a079ed 24#include <Protocol/SimplePointer.h>\r
8ae0b360 25#include <Protocol/AbsolutePointer.h>\r
97a079ed
A
26#include <Protocol/SimpleTextOut.h>\r
27#include <Guid/ConsoleInDevice.h>\r
28#include <Protocol/SimpleTextIn.h>\r
66aa04e4 29#include <Protocol/SimpleTextInEx.h>\r
97a079ed
A
30#include <Protocol/ConsoleControl.h>\r
31#include <Guid/StandardErrorDevice.h>\r
32#include <Guid/ConsoleOutDevice.h>\r
33#include <Protocol/UgaDraw.h>\r
d0c64728 34#include <Library/PcdLib.h>\r
97a079ed
A
35#include <Library/DebugLib.h>\r
36#include <Library/UefiDriverEntryPoint.h>\r
37#include <Library/UefiLib.h>\r
38#include <Library/BaseLib.h>\r
39#include <Library/BaseMemoryLib.h>\r
40#include <Library/MemoryAllocationLib.h>\r
41#include <Library/UefiBootServicesTableLib.h>\r
189eac21 42#include <Library/UefiRuntimeServicesTableLib.h>\r
43\r
97a079ed 44\r
95276127 45//\r
97a079ed 46// Driver Binding Externs\r
95276127 47//\r
5bca971e 48extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConInDriverBinding;\r
49extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConInComponentName;\r
50extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;\r
51extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterSimplePointerDriverBinding;\r
52extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterSimplePointerComponentName;\r
53extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;\r
b71f6b3c 54extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterAbsolutePointerDriverBinding;\r
8ae0b360 55extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterAbsolutePointerComponentName;\r
56extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;\r
5bca971e 57extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterConOutDriverBinding;\r
58extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterConOutComponentName;\r
59extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;\r
60extern EFI_DRIVER_BINDING_PROTOCOL gConSplitterStdErrDriverBinding;\r
61extern EFI_COMPONENT_NAME_PROTOCOL gConSplitterStdErrComponentName;\r
62extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;\r
97a079ed 63\r
66aa04e4 64extern EFI_GUID gSimpleTextInExNotifyGuid;\r
65\r
97a079ed
A
66// These definitions were in the old Hii protocol, but are not in the new UEFI\r
67// version. So they are defined locally.\r
68#define UNICODE_NARROW_CHAR 0xFFF0\r
d0c64728 69#define UNICODE_WIDE_CHAR 0xFFF1\r
97a079ed 70\r
95276127 71\r
72//\r
73// Private Data Structures\r
74//\r
75#define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32\r
76#define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32\r
77#define MAX_STD_IN_PASSWORD 80\r
78\r
a4d608d1 79#define VARCONOUTMODE L"ConOutMode"\r
189eac21 80\r
81typedef struct {\r
82 UINTN Column;\r
83 UINTN Row;\r
84} CONSOLE_OUT_MODE;\r
85\r
95276127 86typedef struct {\r
87 UINTN Columns;\r
88 UINTN Rows;\r
89} TEXT_OUT_SPLITTER_QUERY_DATA;\r
90\r
91//\r
92// Private data for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL splitter\r
93//\r
94#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')\r
95\r
66aa04e4 96#define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'n')\r
97\r
98typedef struct _TEXT_IN_EX_SPLITTER_NOTIFY {\r
99 UINTN Signature;\r
100 EFI_HANDLE *NotifyHandleList;\r
101 EFI_HANDLE NotifyHandle;\r
102 EFI_KEY_DATA KeyData;\r
103 EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;\r
104 LIST_ENTRY NotifyEntry;\r
105} TEXT_IN_EX_SPLITTER_NOTIFY;\r
8ae0b360 106\r
95276127 107typedef struct {\r
db9d722d 108 UINT64 Signature;\r
109 EFI_HANDLE VirtualHandle;\r
110\r
111 EFI_SIMPLE_TEXT_INPUT_PROTOCOL TextIn;\r
112 UINTN CurrentNumberOfConsoles;\r
113 EFI_SIMPLE_TEXT_INPUT_PROTOCOL **TextInList;\r
114 UINTN TextInListCount;\r
115\r
116 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL TextInEx;\r
117 UINTN CurrentNumberOfExConsoles;\r
118 EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL **TextInExList;\r
119 UINTN TextInExListCount;\r
aec072ad 120 LIST_ENTRY NotifyList;\r
db9d722d 121\r
122\r
123 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
124 EFI_SIMPLE_POINTER_MODE SimplePointerMode;\r
125 UINTN CurrentNumberOfPointers;\r
126 EFI_SIMPLE_POINTER_PROTOCOL **PointerList;\r
127 UINTN PointerListCount;\r
128\r
129 EFI_ABSOLUTE_POINTER_PROTOCOL AbsolutePointer;\r
130 EFI_ABSOLUTE_POINTER_MODE AbsolutePointerMode;\r
131 UINTN CurrentNumberOfAbsolutePointers;\r
132 EFI_ABSOLUTE_POINTER_PROTOCOL **AbsolutePointerList;\r
133 UINTN AbsolutePointerListCount;\r
aec072ad 134 BOOLEAN AbsoluteInputEventSignalState;\r
db9d722d 135\r
136 BOOLEAN PasswordEnabled;\r
137 CHAR16 Password[MAX_STD_IN_PASSWORD];\r
138 UINTN PwdIndex;\r
139 CHAR16 PwdAttempt[MAX_STD_IN_PASSWORD];\r
140 EFI_EVENT LockEvent;\r
141\r
142 BOOLEAN KeyEventSignalState;\r
143 BOOLEAN InputEventSignalState;\r
95276127 144} TEXT_IN_SPLITTER_PRIVATE_DATA;\r
145\r
146#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
147 CR ((a), \\r
148 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
149 TextIn, \\r
150 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
151 )\r
152\r
153#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \\r
154 CR ((a), \\r
155 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
156 SimplePointer, \\r
157 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
158 )\r
66aa04e4 159#define TEXT_IN_EX_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
160 CR (a, \\r
161 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
162 TextInEx, \\r
163 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
164 )\r
165\r
166#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_ABSOLUTE_POINTER_THIS(a) \\r
167 CR (a, \\r
168 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
169 AbsolutePointer, \\r
170 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
171 )\r
95276127 172\r
173//\r
174// Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter\r
175//\r
176#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')\r
177\r
178typedef struct {\r
179 EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput;\r
180 EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
181 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut;\r
182 BOOLEAN TextOutEnabled;\r
183} TEXT_OUT_AND_GOP_DATA;\r
184\r
95276127 185typedef struct {\r
4b5c4fba 186 UINT64 Signature;\r
187 EFI_HANDLE VirtualHandle;\r
188 EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL TextOut;\r
189 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;\r
190 \r
191 EFI_UGA_DRAW_PROTOCOL UgaDraw;\r
192 UINT32 UgaHorizontalResolution;\r
193 UINT32 UgaVerticalResolution;\r
194 UINT32 UgaColorDepth;\r
195 UINT32 UgaRefreshRate;\r
196 EFI_UGA_PIXEL *UgaBlt;\r
197 \r
198 EFI_GRAPHICS_OUTPUT_PROTOCOL GraphicsOutput;\r
199 EFI_GRAPHICS_OUTPUT_BLT_PIXEL *GraphicsOutputBlt;\r
aec072ad 200 EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *GraphicsOutputModeBuffer;\r
4b5c4fba 201 UINTN CurrentNumberOfGraphicsOutput;\r
202 UINTN CurrentNumberOfUgaDraw;\r
203 BOOLEAN HardwareNeedsStarting;\r
204 \r
205 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;\r
206 \r
207 UINTN CurrentNumberOfConsoles;\r
208 TEXT_OUT_AND_GOP_DATA *TextOutList;\r
209 UINTN TextOutListCount;\r
210 TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;\r
211 UINTN TextOutQueryDataCount;\r
212 INT32 *TextOutModeMap;\r
213 \r
214 EFI_CONSOLE_CONTROL_SCREEN_MODE ConsoleOutputMode;\r
215 \r
216 UINTN DevNullColumns;\r
217 UINTN DevNullRows;\r
218 CHAR16 *DevNullScreen;\r
219 INT32 *DevNullAttributes;\r
95276127 220\r
221} TEXT_OUT_SPLITTER_PRIVATE_DATA;\r
222\r
223#define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
224 CR ((a), \\r
225 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
226 TextOut, \\r
227 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
228 )\r
229\r
230#define GRAPHICS_OUTPUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
231 CR ((a), \\r
232 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
233 GraphicsOutput, \\r
234 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
235 )\r
236\r
237#define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
238 CR ((a), \\r
239 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
240 UgaDraw, \\r
241 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
242 )\r
243\r
244#define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
245 CR ((a), \\r
246 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
247 ConsoleControl, \\r
248 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
249 )\r
250\r
251//\r
252// Function Prototypes\r
253//\r
415df2a3 254\r
255/**\r
256 The user Entry Point for module ConSplitter. The user code starts with this function.\r
257\r
258 Installs driver module protocols and. Creates virtual device handles for ConIn,\r
259 ConOut, and StdErr. Installs Simple Text In protocol, Simple Text In Ex protocol,\r
260 Simple Pointer protocol, Absolute Pointer protocol on those virtual handlers. \r
261 Installs Graphics Output protocol and/or UGA Draw protocol if needed.\r
262\r
263 @param[in] ImageHandle The firmware allocated handle for the EFI image.\r
264 @param[in] SystemTable A pointer to the EFI System Table.\r
265\r
266 @retval EFI_SUCCESS The entry point is executed successfully.\r
267 @retval other Some error occurs when executing this entry point.\r
268\r
269**/\r
95276127 270EFI_STATUS\r
271EFIAPI\r
272ConSplitterDriverEntry (\r
273 IN EFI_HANDLE ImageHandle,\r
274 IN EFI_SYSTEM_TABLE *SystemTable\r
275 )\r
276;\r
277\r
a4d608d1 278/**\r
4b5c4fba 279 Construct console input devices' private data.\r
a4d608d1 280\r
281 @param ConInPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA\r
282 structure.\r
283\r
284 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
4b5c4fba 285 @retval EFI_SUCCESS Console Input Devcie's private data has been constructed.\r
286 @retval other Failed to construct private data.\r
a4d608d1 287\r
288**/\r
95276127 289EFI_STATUS\r
290ConSplitterTextInConstructor (\r
291 TEXT_IN_SPLITTER_PRIVATE_DATA *Private\r
292 )\r
293;\r
294\r
415df2a3 295/**\r
296 Construct console output devices' private data.\r
297\r
4b5c4fba 298 @param ConOutPrivate A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA\r
415df2a3 299 structure.\r
300\r
301 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
4b5c4fba 302 @retval EFI_SUCCESS Text Input Devcie's private data has been constructed.\r
415df2a3 303\r
304**/\r
95276127 305EFI_STATUS\r
306ConSplitterTextOutConstructor (\r
307 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
308 )\r
309;\r
310\r
311//\r
312// Driver Binding Functions\r
313//\r
a4d608d1 314\r
315/**\r
4b5c4fba 316 Test to see if Console In Device could be supported on the ControllerHandle. \r
a4d608d1 317\r
4b5c4fba 318 @param This Protocol instance pointer.\r
319 @param ControllerHandle Handle of device to test.\r
320 @param RemainingDevicePath Optional parameter use to pick a specific child\r
321 device to start.\r
a4d608d1 322\r
4b5c4fba 323 @retval EFI_SUCCESS This driver supports this device.\r
324 @retval other This driver does not support this device.\r
a4d608d1 325\r
326**/\r
95276127 327EFI_STATUS\r
328EFIAPI\r
329ConSplitterConInDriverBindingSupported (\r
330 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
331 IN EFI_HANDLE ControllerHandle,\r
332 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
333 )\r
334;\r
335\r
a4d608d1 336/**\r
4b5c4fba 337 Test to see if Simple Pointer protocol could be supported on the ControllerHandle. \r
a4d608d1 338\r
4b5c4fba 339 @param This Protocol instance pointer.\r
340 @param ControllerHandle Handle of device to test.\r
341 @param RemainingDevicePath Optional parameter use to pick a specific child\r
342 device to start.\r
a4d608d1 343\r
4b5c4fba 344 @retval EFI_SUCCESS This driver supports this device.\r
345 @retval other This driver does not support this device.\r
a4d608d1 346\r
347**/\r
95276127 348EFI_STATUS\r
349EFIAPI\r
350ConSplitterSimplePointerDriverBindingSupported (\r
351 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
352 IN EFI_HANDLE ControllerHandle,\r
353 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
354 )\r
355;\r
356\r
a4d608d1 357/**\r
4b5c4fba 358 Test to see if Console Out Device could be supported on the ControllerHandle. \r
a4d608d1 359\r
4b5c4fba 360 @param This Protocol instance pointer.\r
361 @param ControllerHandle Handle of device to test.\r
362 @param RemainingDevicePath Optional parameter use to pick a specific child\r
363 device to start.\r
a4d608d1 364\r
4b5c4fba 365 @retval EFI_SUCCESS This driver supports this device.\r
366 @retval other This driver does not support this device.\r
a4d608d1 367\r
368**/\r
95276127 369EFI_STATUS\r
370EFIAPI\r
371ConSplitterConOutDriverBindingSupported (\r
372 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
373 IN EFI_HANDLE ControllerHandle,\r
374 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
375 )\r
376;\r
377\r
a4d608d1 378/**\r
4b5c4fba 379 Test to see if Standard Error Device could be supported on the ControllerHandle. \r
a4d608d1 380\r
4b5c4fba 381 @param This Protocol instance pointer.\r
382 @param ControllerHandle Handle of device to test.\r
383 @param RemainingDevicePath Optional parameter use to pick a specific child\r
384 device to start.\r
a4d608d1 385\r
4b5c4fba 386 @retval EFI_SUCCESS This driver supports this device.\r
387 @retval other This driver does not support this device.\r
a4d608d1 388\r
389**/\r
95276127 390EFI_STATUS\r
391EFIAPI\r
392ConSplitterStdErrDriverBindingSupported (\r
393 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
394 IN EFI_HANDLE ControllerHandle,\r
395 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
396 )\r
397;\r
398\r
415df2a3 399/**\r
400 Start Console In Consplitter on device handle. \r
401 \r
402 @param This Protocol instance pointer.\r
403 @param ControllerHandle Handle of device to bind driver to.\r
404 @param RemainingDevicePath Optional parameter use to pick a specific child\r
405 device to start.\r
406\r
407 @retval EFI_SUCCESS Console In Consplitter is added to ControllerHandle.\r
408 @retval other Console In Consplitter does not support this device.\r
409\r
410**/\r
95276127 411EFI_STATUS\r
412EFIAPI\r
413ConSplitterConInDriverBindingStart (\r
414 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
415 IN EFI_HANDLE ControllerHandle,\r
416 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
417 )\r
418;\r
419\r
415df2a3 420/**\r
421 Start Simple Pointer Consplitter on device handle. \r
422 \r
423 @param This Protocol instance pointer.\r
424 @param ControllerHandle Handle of device to bind driver to.\r
425 @param RemainingDevicePath Optional parameter use to pick a specific child\r
426 device to start.\r
427\r
428 @retval EFI_SUCCESS Simple Pointer Consplitter is added to ControllerHandle.\r
429 @retval other Simple Pointer Consplitter does not support this device.\r
430\r
431**/\r
95276127 432EFI_STATUS\r
433EFIAPI\r
434ConSplitterSimplePointerDriverBindingStart (\r
435 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
436 IN EFI_HANDLE ControllerHandle,\r
437 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
438 )\r
439;\r
440\r
415df2a3 441/**\r
442 Start Console Out Consplitter on device handle. \r
443 \r
444 @param This Protocol instance pointer.\r
445 @param ControllerHandle Handle of device to bind driver to.\r
446 @param RemainingDevicePath Optional parameter use to pick a specific child\r
447 device to start.\r
448\r
449 @retval EFI_SUCCESS Console Out Consplitter is added to ControllerHandle.\r
450 @retval other Console Out Consplitter does not support this device.\r
451\r
452**/\r
95276127 453EFI_STATUS\r
454EFIAPI\r
455ConSplitterConOutDriverBindingStart (\r
456 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
457 IN EFI_HANDLE ControllerHandle,\r
458 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
459 )\r
460;\r
461\r
415df2a3 462/**\r
463 Start Standard Error Consplitter on device handle. \r
464 \r
465 @param This Protocol instance pointer.\r
466 @param ControllerHandle Handle of device to bind driver to.\r
467 @param RemainingDevicePath Optional parameter use to pick a specific child\r
468 device to start.\r
469\r
470 @retval EFI_SUCCESS Standard Error Consplitter is added to ControllerHandle.\r
471 @retval other Standard Error Consplitter does not support this device.\r
472\r
473**/\r
95276127 474EFI_STATUS\r
475EFIAPI\r
476ConSplitterStdErrDriverBindingStart (\r
477 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
478 IN EFI_HANDLE ControllerHandle,\r
479 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
480 )\r
481;\r
482\r
415df2a3 483/**\r
484 Stop Console In ConSplitter on ControllerHandle by closing Console In Devcice GUID.\r
485\r
486 @param This Protocol instance pointer.\r
487 @param ControllerHandle Handle of device to stop driver on\r
488 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
489 children is zero stop the entire bus driver.\r
490 @param ChildHandleBuffer List of Child Handles to Stop.\r
491\r
492 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
493 @retval other This driver was not removed from this device\r
494\r
495**/\r
95276127 496EFI_STATUS\r
497EFIAPI\r
498ConSplitterConInDriverBindingStop (\r
499 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
500 IN EFI_HANDLE ControllerHandle,\r
501 IN UINTN NumberOfChildren,\r
502 IN EFI_HANDLE *ChildHandleBuffer\r
503 )\r
504;\r
505\r
415df2a3 506/**\r
507 Stop Simple Pointer protocol ConSplitter on ControllerHandle by closing\r
508 Simple Pointer protocol.\r
509\r
510 @param This Protocol instance pointer.\r
511 @param ControllerHandle Handle of device to stop driver on\r
512 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
513 children is zero stop the entire bus driver.\r
514 @param ChildHandleBuffer List of Child Handles to Stop.\r
515\r
516 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
517 @retval other This driver was not removed from this device\r
518\r
519**/\r
95276127 520EFI_STATUS\r
521EFIAPI\r
522ConSplitterSimplePointerDriverBindingStop (\r
523 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
524 IN EFI_HANDLE ControllerHandle,\r
525 IN UINTN NumberOfChildren,\r
526 IN EFI_HANDLE *ChildHandleBuffer\r
527 )\r
528;\r
529\r
415df2a3 530/**\r
531 Stop Console Out ConSplitter on ControllerHandle by closing Console Out Devcice GUID.\r
532\r
533 @param This Protocol instance pointer.\r
534 @param ControllerHandle Handle of device to stop driver on\r
535 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
536 children is zero stop the entire bus driver.\r
537 @param ChildHandleBuffer List of Child Handles to Stop.\r
538\r
539 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
540 @retval other This driver was not removed from this device\r
541\r
542**/\r
95276127 543EFI_STATUS\r
544EFIAPI\r
545ConSplitterConOutDriverBindingStop (\r
546 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
547 IN EFI_HANDLE ControllerHandle,\r
548 IN UINTN NumberOfChildren,\r
549 IN EFI_HANDLE *ChildHandleBuffer\r
550 )\r
551;\r
552\r
415df2a3 553/**\r
554 Stop Standard Error ConSplitter on ControllerHandle by closing Standard Error GUID.\r
555\r
556 @param This Protocol instance pointer.\r
557 @param ControllerHandle Handle of device to stop driver on\r
558 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
559 children is zero stop the entire bus driver.\r
560 @param ChildHandleBuffer List of Child Handles to Stop.\r
561\r
562 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
563 @retval other This driver was not removed from this device\r
564\r
565**/\r
95276127 566EFI_STATUS\r
567EFIAPI\r
568ConSplitterStdErrDriverBindingStop (\r
569 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
570 IN EFI_HANDLE ControllerHandle,\r
571 IN UINTN NumberOfChildren,\r
572 IN EFI_HANDLE *ChildHandleBuffer\r
573 )\r
574;\r
575\r
8ae0b360 576\r
415df2a3 577/**\r
578 Test to see if Absolute Pointer protocol could be supported on the ControllerHandle. \r
579\r
580 @param This Protocol instance pointer.\r
581 @param ControllerHandle Handle of device to test.\r
582 @param RemainingDevicePath Optional parameter use to pick a specific child\r
583 device to start.\r
584\r
4b5c4fba 585 @retval EFI_SUCCESS This driver supports this device.\r
586 @retval other This driver does not support this device.\r
415df2a3 587\r
588**/\r
8ae0b360 589EFI_STATUS\r
590EFIAPI\r
591ConSplitterAbsolutePointerDriverBindingSupported (\r
592 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
593 IN EFI_HANDLE ControllerHandle,\r
594 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
595 )\r
596;\r
597\r
415df2a3 598/**\r
599 Start Absolute Pointer Consplitter on device handle. \r
600 \r
601 @param This Protocol instance pointer.\r
602 @param ControllerHandle Handle of device to bind driver to.\r
603 @param RemainingDevicePath Optional parameter use to pick a specific child\r
604 device to start.\r
605\r
606 @retval EFI_SUCCESS Absolute Pointer Consplitter is added to ControllerHandle.\r
607 @retval other Absolute Pointer Consplitter does not support this device.\r
608\r
609**/\r
8ae0b360 610EFI_STATUS\r
611EFIAPI\r
612ConSplitterAbsolutePointerDriverBindingStart (\r
613 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
614 IN EFI_HANDLE ControllerHandle,\r
615 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
616 )\r
617;\r
618\r
415df2a3 619/**\r
620 Stop Absolute Pointer protocol ConSplitter on ControllerHandle by closing\r
621 Absolute Pointer protocol.\r
622\r
623 @param This Protocol instance pointer.\r
624 @param ControllerHandle Handle of device to stop driver on\r
625 @param NumberOfChildren Number of Handles in ChildHandleBuffer. If number of\r
626 children is zero stop the entire bus driver.\r
627 @param ChildHandleBuffer List of Child Handles to Stop.\r
628\r
629 @retval EFI_SUCCESS This driver is removed ControllerHandle\r
630 @retval other This driver was not removed from this device\r
631\r
632**/\r
8ae0b360 633EFI_STATUS\r
634EFIAPI\r
635ConSplitterAbsolutePointerDriverBindingStop (\r
636 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
637 IN EFI_HANDLE ControllerHandle,\r
638 IN UINTN NumberOfChildren,\r
639 IN EFI_HANDLE *ChildHandleBuffer\r
640 )\r
641;\r
642\r
415df2a3 643/**\r
644 Add Absolute Pointer Device in Consplitter Absolute Pointer list.\r
645\r
646 @param Private Text In Splitter pointer.\r
647 @param AbsolutePointer Absolute Pointer protocol pointer.\r
648\r
649 @retval EFI_SUCCESS Absolute Pointer Device added successfully.\r
650 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
651\r
652**/\r
8ae0b360 653EFI_STATUS\r
654ConSplitterAbsolutePointerAddDevice (\r
655 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
656 IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer\r
657 )\r
658;\r
659\r
415df2a3 660/**\r
661 Remove Absolute Pointer Device in Consplitter Absolute Pointer list.\r
662\r
663 @param Private Text In Splitter pointer.\r
664 @param AbsolutePointer Absolute Pointer protocol pointer.\r
665\r
666 @retval EFI_SUCCESS Absolute Pointer Device removed successfully.\r
667 @retval EFI_NOT_FOUND No Absolute Pointer Device found.\r
668\r
669**/\r
8ae0b360 670EFI_STATUS\r
671ConSplitterAbsolutePointerDeleteDevice (\r
672 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
673 IN EFI_ABSOLUTE_POINTER_PROTOCOL *AbsolutePointer\r
674 )\r
675;\r
676\r
677//\r
678// Absolute Pointer protocol interfaces\r
679//\r
680\r
a4d608d1 681\r
682/**\r
683 Resets the pointer device hardware.\r
684\r
685 @param This Protocol instance pointer.\r
686 @param ExtendedVerification Driver may perform diagnostics on reset.\r
687\r
688 @retval EFI_SUCCESS The device was reset.\r
689 @retval EFI_DEVICE_ERROR The device is not functioning correctly and\r
690 could not be reset.\r
691\r
692**/\r
8ae0b360 693EFI_STATUS\r
694EFIAPI\r
695ConSplitterAbsolutePointerReset (\r
696 IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,\r
697 IN BOOLEAN ExtendedVerification\r
698 )\r
a4d608d1 699;\r
8ae0b360 700\r
8ae0b360 701\r
a4d608d1 702/**\r
703 Retrieves the current state of a pointer device.\r
8ae0b360 704\r
a4d608d1 705 @param This Protocol instance pointer.\r
706 @param State A pointer to the state information on the\r
707 pointer device.\r
aec072ad 708\r
a4d608d1 709 @retval EFI_SUCCESS The state of the pointer device was returned in\r
710 State..\r
711 @retval EFI_NOT_READY The state of the pointer device has not changed\r
712 since the last call to GetState().\r
713 @retval EFI_DEVICE_ERROR A device error occurred while attempting to\r
714 retrieve the pointer device's current state.\r
8ae0b360 715\r
a4d608d1 716**/\r
8ae0b360 717EFI_STATUS\r
aec072ad 718EFIAPI\r
8ae0b360 719ConSplitterAbsolutePointerGetState (\r
720 IN EFI_ABSOLUTE_POINTER_PROTOCOL *This,\r
721 IN OUT EFI_ABSOLUTE_POINTER_STATE *State\r
722 )\r
8ae0b360 723;\r
724\r
415df2a3 725/**\r
726 This event agregates all the events of the pointer devices in the splitter.\r
727 If the ConIn is password locked then return.\r
728 If any events of physical pointer devices are signaled, signal the pointer\r
729 splitter event. This will cause the calling code to call\r
730 ConSplitterAbsolutePointerGetState ().\r
731\r
732 @param Event The Event assoicated with callback.\r
733 @param Context Context registered when Event was created.\r
734\r
735 @return None\r
736\r
737**/\r
8ae0b360 738VOID\r
739EFIAPI\r
740ConSplitterAbsolutePointerWaitForInput (\r
741 IN EFI_EVENT Event,\r
742 IN VOID *Context\r
743 )\r
744;\r
745\r
5bca971e 746/**\r
747 Retrieves a Unicode string that is the user readable name of the driver.\r
748\r
749 This function retrieves the user readable name of a driver in the form of a\r
750 Unicode string. If the driver specified by This has a user readable name in\r
751 the language specified by Language, then a pointer to the driver name is\r
752 returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
753 by This does not support the language specified by Language,\r
754 then EFI_UNSUPPORTED is returned.\r
755\r
756 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
757 EFI_COMPONENT_NAME_PROTOCOL instance.\r
758\r
759 @param Language[in] A pointer to a Null-terminated ASCII string\r
760 array indicating the language. This is the\r
761 language of the driver name that the caller is\r
762 requesting, and it must match one of the\r
763 languages specified in SupportedLanguages. The\r
764 number of languages supported by a driver is up\r
765 to the driver writer. Language is specified\r
766 in RFC 3066 or ISO 639-2 language code format.\r
767\r
768 @param DriverName[out] A pointer to the Unicode string to return.\r
769 This Unicode string is the name of the\r
770 driver specified by This in the language\r
771 specified by Language.\r
772\r
773 @retval EFI_SUCCESS The Unicode string for the Driver specified by\r
774 This and the language specified by Language was\r
775 returned in DriverName.\r
776\r
777 @retval EFI_INVALID_PARAMETER Language is NULL.\r
778\r
779 @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
780\r
781 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
782 the language specified by Language.\r
783\r
784**/\r
95276127 785EFI_STATUS\r
786EFIAPI\r
787ConSplitterComponentNameGetDriverName (\r
788 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
789 IN CHAR8 *Language,\r
790 OUT CHAR16 **DriverName\r
791 );\r
792\r
5bca971e 793\r
794/**\r
795 Retrieves a Unicode string that is the user readable name of the controller\r
796 that is being managed by a driver.\r
797\r
798 This function retrieves the user readable name of the controller specified by\r
799 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
800 driver specified by This has a user readable name in the language specified by\r
801 Language, then a pointer to the controller name is returned in ControllerName,\r
802 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
803 managing the controller specified by ControllerHandle and ChildHandle,\r
804 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
805 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
806\r
807 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
808 EFI_COMPONENT_NAME_PROTOCOL instance.\r
809\r
810 @param ControllerHandle[in] The handle of a controller that the driver\r
811 specified by This is managing. This handle\r
812 specifies the controller whose name is to be\r
813 returned.\r
814\r
815 @param ChildHandle[in] The handle of the child controller to retrieve\r
816 the name of. This is an optional parameter that\r
817 may be NULL. It will be NULL for device\r
818 drivers. It will also be NULL for a bus drivers\r
819 that wish to retrieve the name of the bus\r
820 controller. It will not be NULL for a bus\r
821 driver that wishes to retrieve the name of a\r
822 child controller.\r
823\r
824 @param Language[in] A pointer to a Null-terminated ASCII string\r
825 array indicating the language. This is the\r
826 language of the driver name that the caller is\r
827 requesting, and it must match one of the\r
828 languages specified in SupportedLanguages. The\r
829 number of languages supported by a driver is up\r
830 to the driver writer. Language is specified in\r
831 RFC 3066 or ISO 639-2 language code format.\r
832\r
833 @param ControllerName[out] A pointer to the Unicode string to return.\r
834 This Unicode string is the name of the\r
835 controller specified by ControllerHandle and\r
836 ChildHandle in the language specified by\r
837 Language from the point of view of the driver\r
838 specified by This.\r
839\r
840 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
841 the language specified by Language for the\r
842 driver specified by This was returned in\r
843 DriverName.\r
844\r
845 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
846\r
847 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
848 EFI_HANDLE.\r
849\r
850 @retval EFI_INVALID_PARAMETER Language is NULL.\r
851\r
852 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
853\r
854 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
855 managing the controller specified by\r
856 ControllerHandle and ChildHandle.\r
857\r
858 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
859 the language specified by Language.\r
860\r
861**/\r
95276127 862EFI_STATUS\r
863EFIAPI\r
864ConSplitterConInComponentNameGetControllerName (\r
865 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
866 IN EFI_HANDLE ControllerHandle,\r
867 IN EFI_HANDLE ChildHandle OPTIONAL,\r
868 IN CHAR8 *Language,\r
869 OUT CHAR16 **ControllerName\r
870 );\r
871\r
5bca971e 872\r
873/**\r
874 Retrieves a Unicode string that is the user readable name of the controller\r
875 that is being managed by a driver.\r
876\r
877 This function retrieves the user readable name of the controller specified by\r
878 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
879 driver specified by This has a user readable name in the language specified by\r
880 Language, then a pointer to the controller name is returned in ControllerName,\r
881 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
882 managing the controller specified by ControllerHandle and ChildHandle,\r
883 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
884 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
885\r
886 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
887 EFI_COMPONENT_NAME_PROTOCOL instance.\r
888\r
889 @param ControllerHandle[in] The handle of a controller that the driver\r
890 specified by This is managing. This handle\r
891 specifies the controller whose name is to be\r
892 returned.\r
893\r
894 @param ChildHandle[in] The handle of the child controller to retrieve\r
895 the name of. This is an optional parameter that\r
896 may be NULL. It will be NULL for device\r
897 drivers. It will also be NULL for a bus drivers\r
898 that wish to retrieve the name of the bus\r
899 controller. It will not be NULL for a bus\r
900 driver that wishes to retrieve the name of a\r
901 child controller.\r
902\r
903 @param Language[in] A pointer to a Null-terminated ASCII string\r
904 array indicating the language. This is the\r
905 language of the driver name that the caller is\r
906 requesting, and it must match one of the\r
907 languages specified in SupportedLanguages. The\r
908 number of languages supported by a driver is up\r
909 to the driver writer. Language is specified in\r
910 RFC 3066 or ISO 639-2 language code format.\r
911\r
912 @param ControllerName[out] A pointer to the Unicode string to return.\r
913 This Unicode string is the name of the\r
914 controller specified by ControllerHandle and\r
915 ChildHandle in the language specified by\r
916 Language from the point of view of the driver\r
917 specified by This.\r
918\r
919 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
920 the language specified by Language for the\r
921 driver specified by This was returned in\r
922 DriverName.\r
923\r
924 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
925\r
926 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
927 EFI_HANDLE.\r
928\r
929 @retval EFI_INVALID_PARAMETER Language is NULL.\r
930\r
931 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
932\r
933 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
934 managing the controller specified by\r
935 ControllerHandle and ChildHandle.\r
936\r
937 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
938 the language specified by Language.\r
939\r
940**/\r
95276127 941EFI_STATUS\r
942EFIAPI\r
943ConSplitterSimplePointerComponentNameGetControllerName (\r
944 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
945 IN EFI_HANDLE ControllerHandle,\r
946 IN EFI_HANDLE ChildHandle OPTIONAL,\r
947 IN CHAR8 *Language,\r
948 OUT CHAR16 **ControllerName\r
949 );\r
950\r
415df2a3 951/**\r
952 Retrieves a Unicode string that is the user readable name of the controller\r
953 that is being managed by an EFI Driver.\r
954\r
955 @param This A pointer to the EFI_COMPONENT_NAME_PROTOCOL\r
956 instance.\r
957 @param ControllerHandle The handle of a controller that the driver\r
958 specified by This is managing. This handle\r
959 specifies the controller whose name is to be\r
960 returned.\r
961 @param ChildHandle The handle of the child controller to retrieve the\r
962 name of. This is an optional parameter that may\r
963 be NULL. It will be NULL for device drivers. It\r
964 will also be NULL for a bus drivers that wish to\r
965 retrieve the name of the bus controller. It will\r
966 not be NULL for a bus driver that wishes to\r
967 retrieve the name of a child controller.\r
968 @param Language A pointer to RFC3066 language identifier. This is\r
969 the language of the controller name that that the\r
970 caller is requesting, and it must match one of the\r
971 languages specified in SupportedLanguages. The\r
972 number of languages supported by a driver is up to\r
973 the driver writer.\r
974 @param ControllerName A pointer to the Unicode string to return. This\r
975 Unicode string is the name of the controller\r
976 specified by ControllerHandle and ChildHandle in\r
977 the language specified by Language from the point\r
978 of view of the driver specified by This.\r
979\r
980 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
981 the language specified by Language for the driver\r
982 specified by This was returned in DriverName.\r
983 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
984 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
985 EFI_HANDLE.\r
986 @retval EFI_INVALID_PARAMETER Language is NULL.\r
987 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
988 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
989 managing the controller specified by\r
990 ControllerHandle and ChildHandle.\r
991 @retval EFI_UNSUPPORTED The driver specified by This does not support the\r
992 language specified by Language.\r
993\r
994**/\r
8ae0b360 995EFI_STATUS\r
996EFIAPI\r
997ConSplitterAbsolutePointerComponentNameGetControllerName (\r
998 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
999 IN EFI_HANDLE ControllerHandle,\r
1000 IN EFI_HANDLE ChildHandle OPTIONAL,\r
1001 IN CHAR8 *Language,\r
1002 OUT CHAR16 **ControllerName\r
1003 )\r
1004;\r
5bca971e 1005\r
1006/**\r
1007 Retrieves a Unicode string that is the user readable name of the controller\r
1008 that is being managed by a driver.\r
1009\r
1010 This function retrieves the user readable name of the controller specified by\r
1011 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
1012 driver specified by This has a user readable name in the language specified by\r
1013 Language, then a pointer to the controller name is returned in ControllerName,\r
1014 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
1015 managing the controller specified by ControllerHandle and ChildHandle,\r
1016 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
1017 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
1018\r
1019 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
1020 EFI_COMPONENT_NAME_PROTOCOL instance.\r
1021\r
1022 @param ControllerHandle[in] The handle of a controller that the driver\r
1023 specified by This is managing. This handle\r
1024 specifies the controller whose name is to be\r
1025 returned.\r
1026\r
1027 @param ChildHandle[in] The handle of the child controller to retrieve\r
1028 the name of. This is an optional parameter that\r
1029 may be NULL. It will be NULL for device\r
1030 drivers. It will also be NULL for a bus drivers\r
1031 that wish to retrieve the name of the bus\r
1032 controller. It will not be NULL for a bus\r
1033 driver that wishes to retrieve the name of a\r
1034 child controller.\r
1035\r
1036 @param Language[in] A pointer to a Null-terminated ASCII string\r
1037 array indicating the language. This is the\r
1038 language of the driver name that the caller is\r
1039 requesting, and it must match one of the\r
1040 languages specified in SupportedLanguages. The\r
1041 number of languages supported by a driver is up\r
1042 to the driver writer. Language is specified in\r
1043 RFC 3066 or ISO 639-2 language code format.\r
1044\r
1045 @param ControllerName[out] A pointer to the Unicode string to return.\r
1046 This Unicode string is the name of the\r
1047 controller specified by ControllerHandle and\r
1048 ChildHandle in the language specified by\r
1049 Language from the point of view of the driver\r
1050 specified by This.\r
1051\r
1052 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
1053 the language specified by Language for the\r
1054 driver specified by This was returned in\r
1055 DriverName.\r
1056\r
1057 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
1058\r
1059 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
1060 EFI_HANDLE.\r
1061\r
1062 @retval EFI_INVALID_PARAMETER Language is NULL.\r
1063\r
1064 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
1065\r
1066 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
1067 managing the controller specified by\r
1068 ControllerHandle and ChildHandle.\r
1069\r
1070 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
1071 the language specified by Language.\r
1072\r
1073**/\r
95276127 1074EFI_STATUS\r
1075EFIAPI\r
1076ConSplitterConOutComponentNameGetControllerName (\r
1077 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
1078 IN EFI_HANDLE ControllerHandle,\r
1079 IN EFI_HANDLE ChildHandle OPTIONAL,\r
1080 IN CHAR8 *Language,\r
1081 OUT CHAR16 **ControllerName\r
1082 );\r
1083\r
5bca971e 1084\r
1085/**\r
1086 Retrieves a Unicode string that is the user readable name of the controller\r
1087 that is being managed by a driver.\r
1088\r
1089 This function retrieves the user readable name of the controller specified by\r
1090 ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
1091 driver specified by This has a user readable name in the language specified by\r
1092 Language, then a pointer to the controller name is returned in ControllerName,\r
1093 and EFI_SUCCESS is returned. If the driver specified by This is not currently\r
1094 managing the controller specified by ControllerHandle and ChildHandle,\r
1095 then EFI_UNSUPPORTED is returned. If the driver specified by This does not\r
1096 support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
1097\r
1098 @param This[in] A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
1099 EFI_COMPONENT_NAME_PROTOCOL instance.\r
1100\r
1101 @param ControllerHandle[in] The handle of a controller that the driver\r
1102 specified by This is managing. This handle\r
1103 specifies the controller whose name is to be\r
1104 returned.\r
1105\r
1106 @param ChildHandle[in] The handle of the child controller to retrieve\r
1107 the name of. This is an optional parameter that\r
1108 may be NULL. It will be NULL for device\r
1109 drivers. It will also be NULL for a bus drivers\r
1110 that wish to retrieve the name of the bus\r
1111 controller. It will not be NULL for a bus\r
1112 driver that wishes to retrieve the name of a\r
1113 child controller.\r
1114\r
1115 @param Language[in] A pointer to a Null-terminated ASCII string\r
1116 array indicating the language. This is the\r
1117 language of the driver name that the caller is\r
1118 requesting, and it must match one of the\r
1119 languages specified in SupportedLanguages. The\r
1120 number of languages supported by a driver is up\r
1121 to the driver writer. Language is specified in\r
1122 RFC 3066 or ISO 639-2 language code format.\r
1123\r
1124 @param ControllerName[out] A pointer to the Unicode string to return.\r
1125 This Unicode string is the name of the\r
1126 controller specified by ControllerHandle and\r
1127 ChildHandle in the language specified by\r
1128 Language from the point of view of the driver\r
1129 specified by This.\r
1130\r
1131 @retval EFI_SUCCESS The Unicode string for the user readable name in\r
1132 the language specified by Language for the\r
1133 driver specified by This was returned in\r
1134 DriverName.\r
1135\r
1136 @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
1137\r
1138 @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
1139 EFI_HANDLE.\r
1140\r
1141 @retval EFI_INVALID_PARAMETER Language is NULL.\r
1142\r
1143 @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
1144\r
1145 @retval EFI_UNSUPPORTED The driver specified by This is not currently\r
1146 managing the controller specified by\r
1147 ControllerHandle and ChildHandle.\r
1148\r
1149 @retval EFI_UNSUPPORTED The driver specified by This does not support\r
1150 the language specified by Language.\r
1151\r
1152**/\r
95276127 1153EFI_STATUS\r
1154EFIAPI\r
1155ConSplitterStdErrComponentNameGetControllerName (\r
1156 IN EFI_COMPONENT_NAME_PROTOCOL *This,\r
1157 IN EFI_HANDLE ControllerHandle,\r
1158 IN EFI_HANDLE ChildHandle OPTIONAL,\r
1159 IN CHAR8 *Language,\r
1160 OUT CHAR16 **ControllerName\r
1161 );\r
1162\r
5bca971e 1163\r
95276127 1164//\r
1165// TextIn Constructor/Destructor functions\r
1166//\r
415df2a3 1167\r
1168/**\r
1169 Add Text Input Device in Consplitter Text Input list.\r
1170\r
1171 @param Private Text In Splitter pointer.\r
1172 @param TextIn Simple Text Input protocol pointer.\r
1173\r
1174 @retval EFI_SUCCESS Text Input Device added successfully.\r
1175 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1176\r
1177**/\r
95276127 1178EFI_STATUS\r
1179ConSplitterTextInAddDevice (\r
1180 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1181 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
1182 )\r
1183;\r
1184\r
415df2a3 1185/**\r
1186 Remove Simple Text Device in Consplitter Absolute Pointer list.\r
1187\r
1188 @param Private Text In Splitter pointer.\r
1189 @param TextIn Simple Text protocol pointer.\r
1190\r
1191 @retval EFI_SUCCESS Simple Text Device removed successfully.\r
1192 @retval EFI_NOT_FOUND No Simple Text Device found.\r
1193\r
1194**/\r
95276127 1195EFI_STATUS\r
1196ConSplitterTextInDeleteDevice (\r
1197 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1198 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *TextIn\r
1199 )\r
1200;\r
1201\r
1202//\r
1203// SimplePointer Constuctor/Destructor functions\r
1204//\r
415df2a3 1205\r
1206/**\r
1207 Add Simple Pointer Device in Consplitter Simple Pointer list.\r
1208\r
1209 @param Private Text In Splitter pointer.\r
1210 @param SimplePointer Simple Pointer protocol pointer.\r
1211\r
1212 @retval EFI_SUCCESS Simple Pointer Device added successfully.\r
1213 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1214\r
1215**/\r
95276127 1216EFI_STATUS\r
1217ConSplitterSimplePointerAddDevice (\r
1218 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1219 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
1220 )\r
1221;\r
1222\r
415df2a3 1223/**\r
1224 Remove Simple Pointer Device in Consplitter Absolute Pointer list.\r
1225\r
1226 @param Private Text In Splitter pointer.\r
1227 @param SimplePointer Simple Pointer protocol pointer.\r
1228\r
1229 @retval EFI_SUCCESS Simple Pointer Device removed successfully.\r
1230 @retval EFI_NOT_FOUND No Simple Pointer Device found.\r
1231\r
1232**/\r
95276127 1233EFI_STATUS\r
1234ConSplitterSimplePointerDeleteDevice (\r
1235 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1236 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
1237 )\r
1238;\r
1239\r
1240//\r
1241// TextOut Constuctor/Destructor functions\r
1242//\r
415df2a3 1243\r
1244/**\r
1245 Add Text Output Device in Consplitter Text Output list.\r
1246\r
1247 @param Private Text Out Splitter pointer.\r
1248 @param TextOut Simple Text Output protocol pointer.\r
1249 @param GraphicsOutput Graphics Output protocol pointer.\r
1250 @param UgaDraw UGA Draw protocol pointer.\r
1251\r
1252 @retval EFI_SUCCESS Text Output Device added successfully.\r
1253 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1254\r
1255**/\r
95276127 1256EFI_STATUS\r
1257ConSplitterTextOutAddDevice (\r
1258 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1259 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut,\r
1260 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
1261 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
1262 )\r
1263;\r
1264\r
415df2a3 1265/**\r
1266 Remove Text Out Device in Consplitter Text Out list.\r
1267\r
1268 @param Private Text Out Splitter pointer.\r
1269 @param TextOut Simple Text Output Pointer protocol pointer.\r
1270\r
1271 @retval EFI_SUCCESS Text Out Device removed successfully.\r
1272 @retval EFI_NOT_FOUND No Text Out Device found.\r
1273\r
1274**/\r
95276127 1275EFI_STATUS\r
1276ConSplitterTextOutDeleteDevice (\r
1277 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
1278 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *TextOut\r
1279 )\r
1280;\r
1281\r
1282//\r
1283// TextIn I/O Functions\r
1284//\r
415df2a3 1285\r
1286/**\r
1287 Reset the input device and optionaly run diagnostics\r
1288\r
1289 @param This Protocol instance pointer.\r
1290 @param ExtendedVerification Driver may perform diagnostics on reset.\r
1291\r
1292 @retval EFI_SUCCESS The device was reset.\r
1293 @retval EFI_DEVICE_ERROR The device is not functioning properly and could\r
1294 not be reset.\r
1295\r
1296**/\r
95276127 1297EFI_STATUS\r
1298EFIAPI\r
1299ConSplitterTextInReset (\r
1300 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
1301 IN BOOLEAN ExtendedVerification\r
1302 )\r
1303;\r
1304\r
415df2a3 1305/**\r
1306 Reads the next keystroke from the input device. The WaitForKey Event can\r
1307 be used to test for existance of a keystroke via WaitForEvent () call.\r
1308 If the ConIn is password locked make it look like no keystroke is availible\r
1309\r
1310 @param This Protocol instance pointer.\r
1311 @param Key Driver may perform diagnostics on reset.\r
1312\r
1313 @retval EFI_SUCCESS The keystroke information was returned.\r
1314 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1315 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due\r
1316 to hardware errors.\r
1317\r
1318**/\r
95276127 1319EFI_STATUS\r
1320EFIAPI\r
1321ConSplitterTextInReadKeyStroke (\r
1322 IN EFI_SIMPLE_TEXT_INPUT_PROTOCOL *This,\r
1323 OUT EFI_INPUT_KEY *Key\r
1324 )\r
1325;\r
415df2a3 1326\r
1327/**\r
1328 Add Text Input Ex Device in Consplitter Text Input Ex list.\r
1329\r
1330 @param Private Text In Splitter pointer.\r
1331 @param TextInEx Simple Text Ex Input protocol pointer.\r
1332\r
1333 @retval EFI_SUCCESS Text Input Ex Device added successfully.\r
1334 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1335\r
1336**/\r
66aa04e4 1337EFI_STATUS\r
1338ConSplitterTextInExAddDevice (\r
1339 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1340 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx\r
1341 )\r
1342;\r
1343\r
415df2a3 1344/**\r
1345 Remove Simple Text Ex Device in Consplitter Absolute Pointer list.\r
1346\r
1347 @param Private Text In Splitter pointer.\r
1348 @param TextInEx Simple Text Ex protocol pointer.\r
1349\r
1350 @retval EFI_SUCCESS Simple Text Ex Device removed successfully.\r
1351 @retval EFI_NOT_FOUND No Simple Text Ex Device found.\r
1352\r
1353**/\r
66aa04e4 1354EFI_STATUS\r
1355ConSplitterTextInExDeleteDevice (\r
1356 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1357 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInEx\r
1358 )\r
1359;\r
1360\r
1361//\r
1362// Simple Text Input Ex protocol function prototypes\r
1363//\r
1364\r
a4d608d1 1365\r
1366/**\r
1367 Reset the input device and optionaly run diagnostics\r
1368\r
1369 @param This Protocol instance pointer.\r
1370 @param ExtendedVerification Driver may perform diagnostics on reset.\r
1371\r
1372 @retval EFI_SUCCESS The device was reset.\r
1373 @retval EFI_DEVICE_ERROR The device is not functioning properly and could\r
1374 not be reset.\r
1375\r
1376**/\r
66aa04e4 1377EFI_STATUS\r
1378EFIAPI\r
1379ConSplitterTextInResetEx (\r
1380 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1381 IN BOOLEAN ExtendedVerification\r
1382 )\r
a4d608d1 1383;\r
66aa04e4 1384\r
66aa04e4 1385\r
a4d608d1 1386/**\r
1387 Reads the next keystroke from the input device. The WaitForKey Event can\r
1388 be used to test for existance of a keystroke via WaitForEvent () call.\r
66aa04e4 1389\r
a4d608d1 1390 @param This Protocol instance pointer.\r
1391 @param KeyData A pointer to a buffer that is filled in with the\r
1392 keystroke state data for the key that was\r
1393 pressed.\r
66aa04e4 1394\r
a4d608d1 1395 @retval EFI_SUCCESS The keystroke information was returned.\r
1396 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1397 @retval EFI_DEVICE_ERROR The keystroke information was not returned due\r
1398 to hardware errors.\r
1399 @retval EFI_INVALID_PARAMETER KeyData is NULL.\r
66aa04e4 1400\r
a4d608d1 1401**/\r
66aa04e4 1402EFI_STATUS\r
1403EFIAPI\r
1404ConSplitterTextInReadKeyStrokeEx (\r
1405 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1406 OUT EFI_KEY_DATA *KeyData\r
1407 )\r
a4d608d1 1408;\r
66aa04e4 1409\r
66aa04e4 1410\r
a4d608d1 1411/**\r
1412 Set certain state for the input device.\r
66aa04e4 1413\r
a4d608d1 1414 @param This Protocol instance pointer.\r
1415 @param KeyToggleState A pointer to the EFI_KEY_TOGGLE_STATE to set the\r
1416 state for the input device.\r
66aa04e4 1417\r
a4d608d1 1418 @retval EFI_SUCCESS The device state was set successfully.\r
1419 @retval EFI_DEVICE_ERROR The device is not functioning correctly and\r
1420 could not have the setting adjusted.\r
1421 @retval EFI_UNSUPPORTED The device does not have the ability to set its\r
1422 state.\r
1423 @retval EFI_INVALID_PARAMETER KeyToggleState is NULL.\r
66aa04e4 1424\r
a4d608d1 1425**/\r
66aa04e4 1426EFI_STATUS\r
1427EFIAPI\r
1428ConSplitterTextInSetState (\r
1429 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1430 IN EFI_KEY_TOGGLE_STATE *KeyToggleState\r
1431 )\r
a4d608d1 1432;\r
aec072ad 1433\r
66aa04e4 1434\r
a4d608d1 1435/**\r
1436 Register a notification function for a particular keystroke for the input device.\r
1437\r
1438 @param This Protocol instance pointer.\r
1439 @param KeyData A pointer to a buffer that is filled in with the\r
1440 keystroke information data for the key that was\r
1441 pressed.\r
1442 @param KeyNotificationFunction Points to the function to be called when the key\r
1443 sequence is typed specified by KeyData.\r
1444 @param NotifyHandle Points to the unique handle assigned to the\r
1445 registered notification.\r
1446\r
1447 @retval EFI_SUCCESS The notification function was registered\r
1448 successfully.\r
1449 @retval EFI_OUT_OF_RESOURCES Unable to allocate resources for necesssary data\r
1450 structures.\r
1451 @retval EFI_INVALID_PARAMETER KeyData or NotifyHandle is NULL.\r
95276127 1452\r
a4d608d1 1453**/\r
66aa04e4 1454EFI_STATUS\r
1455EFIAPI\r
1456ConSplitterTextInRegisterKeyNotify (\r
1457 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1458 IN EFI_KEY_DATA *KeyData,\r
1459 IN EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,\r
1460 OUT EFI_HANDLE *NotifyHandle\r
1461 )\r
a4d608d1 1462;\r
66aa04e4 1463\r
66aa04e4 1464\r
a4d608d1 1465/**\r
1466 Remove a registered notification function from a particular keystroke.\r
66aa04e4 1467\r
a4d608d1 1468 @param This Protocol instance pointer.\r
1469 @param NotificationHandle The handle of the notification function being\r
1470 unregistered.\r
aec072ad 1471\r
a4d608d1 1472 @retval EFI_SUCCESS The notification function was unregistered\r
1473 successfully.\r
1474 @retval EFI_INVALID_PARAMETER The NotificationHandle is invalid.\r
1475 @retval EFI_NOT_FOUND Can not find the matching entry in database.\r
66aa04e4 1476\r
a4d608d1 1477**/\r
66aa04e4 1478EFI_STATUS\r
1479EFIAPI\r
1480ConSplitterTextInUnregisterKeyNotify (\r
1481 IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1482 IN EFI_HANDLE NotificationHandle\r
1483 )\r
66aa04e4 1484;\r
415df2a3 1485\r
1486/**\r
1487 This event agregates all the events of the ConIn devices in the spliter.\r
1488 If the ConIn is password locked then return.\r
1489 If any events of physical ConIn devices are signaled, signal the ConIn\r
1490 spliter event. This will cause the calling code to call\r
1491 ConSplitterTextInReadKeyStroke ().\r
1492\r
1493 @param Event The Event assoicated with callback.\r
1494 @param Context Context registered when Event was created.\r
1495\r
1496 @return None\r
1497\r
1498**/\r
95276127 1499VOID\r
1500EFIAPI\r
1501ConSplitterTextInWaitForKey (\r
1502 IN EFI_EVENT Event,\r
1503 IN VOID *Context\r
1504 )\r
1505;\r
415df2a3 1506/**\r
1507 Return TRUE if StdIn is locked. The ConIn device on the virtual handle is\r
1508 the only device locked.\r
1509\r
1510 NONE\r
1511\r
1512 @retval TRUE StdIn locked\r
1513 @retval FALSE StdIn working normally\r
95276127 1514\r
415df2a3 1515**/\r
95276127 1516BOOLEAN\r
1517ConSpliterConssoleControlStdInLocked (\r
1518 VOID\r
1519 )\r
1520;\r
415df2a3 1521/**\r
1522 This timer event will fire when StdIn is locked. It will check the key\r
1523 sequence on StdIn to see if it matches the password. Any error in the\r
1524 password will cause the check to reset. As long a mConIn.PasswordEnabled is\r
1525 TRUE the StdIn splitter will not report any input.\r
1526\r
1527 @param Event The Event this notify function registered to.\r
1528 @param Context Pointer to the context data registerd to the\r
1529 Event.\r
95276127 1530\r
415df2a3 1531 @return None\r
1532\r
1533**/\r
95276127 1534VOID\r
1535EFIAPI\r
1536ConSpliterConsoleControlLockStdInEvent (\r
1537 IN EFI_EVENT Event,\r
1538 IN VOID *Context\r
1539 )\r
1540;\r
1541\r
415df2a3 1542/**\r
1543 If Password is NULL unlock the password state variable and set the event\r
1544 timer. If the Password is too big return an error. If the Password is valid\r
1545 Copy the Password and enable state variable and then arm the periodic timer\r
1546\r
33019a71 1547 @param This Console Control protocol pointer.\r
1548 @param Password The password input.\r
415df2a3 1549\r
1550 @retval EFI_SUCCESS Lock the StdIn device\r
1551 @retval EFI_INVALID_PARAMETER Password is NULL\r
1552 @retval EFI_OUT_OF_RESOURCES Buffer allocation to store the password fails\r
1553\r
1554**/\r
95276127 1555EFI_STATUS\r
1556EFIAPI\r
1557ConSpliterConsoleControlLockStdIn (\r
1558 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
1559 IN CHAR16 *Password\r
1560 )\r
1561;\r
1562\r
415df2a3 1563/**\r
1564 Reads the next keystroke from the input device. The WaitForKey Event can\r
1565 be used to test for existance of a keystroke via WaitForEvent () call.\r
1566\r
33019a71 1567 @param Private Protocol instance pointer.\r
415df2a3 1568 @param Key Driver may perform diagnostics on reset.\r
1569\r
1570 @retval EFI_SUCCESS The keystroke information was returned.\r
1571 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1572 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due\r
1573 to hardware errors.\r
1574\r
1575**/\r
95276127 1576EFI_STATUS\r
1577EFIAPI\r
1578ConSplitterTextInPrivateReadKeyStroke (\r
1579 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
1580 OUT EFI_INPUT_KEY *Key\r
1581 )\r
1582;\r
1583\r
415df2a3 1584/**\r
1585 Reset the input device and optionaly run diagnostics\r
1586\r
1587 @param This Protocol instance pointer.\r
1588 @param ExtendedVerification Driver may perform diagnostics on reset.\r
1589\r
1590 @retval EFI_SUCCESS The device was reset.\r
1591 @retval EFI_DEVICE_ERROR The device is not functioning properly and could\r
1592 not be reset.\r
1593\r
1594**/\r
95276127 1595EFI_STATUS\r
1596EFIAPI\r
1597ConSplitterSimplePointerReset (\r
1598 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
1599 IN BOOLEAN ExtendedVerification\r
1600 )\r
1601;\r
1602\r
415df2a3 1603/**\r
1604 Reads the next keystroke from the input device. The WaitForKey Event can\r
1605 be used to test for existance of a keystroke via WaitForEvent () call.\r
1606 If the ConIn is password locked make it look like no keystroke is availible\r
1607\r
1608 @param This A pointer to protocol instance.\r
1609 @param State A pointer to state information on the pointer device\r
1610\r
1611 @retval EFI_SUCCESS The keystroke information was returned in State.\r
1612 @retval EFI_NOT_READY There was no keystroke data availiable.\r
1613 @retval EFI_DEVICE_ERROR The keydtroke information was not returned due\r
1614 to hardware errors.\r
1615\r
1616**/\r
95276127 1617EFI_STATUS\r
1618EFIAPI\r
1619ConSplitterSimplePointerGetState (\r
1620 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
1621 IN OUT EFI_SIMPLE_POINTER_STATE *State\r
1622 )\r
1623;\r
1624\r
a4d608d1 1625/**\r
1626 This event agregates all the events of the ConIn devices in the spliter.\r
1627 If the ConIn is password locked then return.\r
1628 If any events of physical ConIn devices are signaled, signal the ConIn\r
1629 spliter event. This will cause the calling code to call\r
1630 ConSplitterTextInReadKeyStroke ().\r
1631\r
1632 @param Event The Event assoicated with callback.\r
1633 @param Context Context registered when Event was created.\r
1634\r
1635 @return None\r
1636\r
1637**/\r
95276127 1638VOID\r
1639EFIAPI\r
1640ConSplitterSimplePointerWaitForInput (\r
1641 IN EFI_EVENT Event,\r
1642 IN VOID *Context\r
1643 )\r
1644;\r
1645\r
1646//\r
1647// TextOut I/O Functions\r
1648//\r
95276127 1649\r
415df2a3 1650/**\r
1651 Reset the text output device hardware and optionaly run diagnostics\r
1652\r
1653 @param This Protocol instance pointer.\r
1654 @param ExtendedVerification Driver may perform more exhaustive verfication\r
1655 operation of the device during reset.\r
1656\r
1657 @retval EFI_SUCCESS The text output device was reset.\r
1658 @retval EFI_DEVICE_ERROR The text output device is not functioning\r
1659 correctly and could not be reset.\r
1660\r
1661**/\r
95276127 1662EFI_STATUS\r
1663EFIAPI\r
1664ConSplitterTextOutReset (\r
1665 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1666 IN BOOLEAN ExtendedVerification\r
1667 )\r
1668;\r
1669\r
415df2a3 1670/**\r
1671 Write a Unicode string to the output device.\r
1672\r
1673 @param This Protocol instance pointer.\r
33019a71 1674 @param WString The NULL-terminated Unicode string to be\r
415df2a3 1675 displayed on the output device(s). All output\r
1676 devices must also support the Unicode drawing\r
1677 defined in this file.\r
1678\r
1679 @retval EFI_SUCCESS The string was output to the device.\r
1680 @retval EFI_DEVICE_ERROR The device reported an error while attempting to\r
1681 output the text.\r
1682 @retval EFI_UNSUPPORTED The output device's mode is not currently in a\r
1683 defined text mode.\r
1684 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the\r
1685 characters in the Unicode string could not be\r
1686 rendered and were skipped.\r
1687\r
1688**/\r
95276127 1689EFI_STATUS\r
1690EFIAPI\r
1691ConSplitterTextOutOutputString (\r
1692 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1693 IN CHAR16 *WString\r
1694 )\r
1695;\r
1696\r
415df2a3 1697/**\r
1698 Verifies that all characters in a Unicode string can be output to the\r
1699 target device.\r
1700\r
1701 @param This Protocol instance pointer.\r
33019a71 1702 @param WString The NULL-terminated Unicode string to be\r
415df2a3 1703 examined for the output device(s).\r
1704\r
1705 @retval EFI_SUCCESS The device(s) are capable of rendering the\r
1706 output string.\r
1707 @retval EFI_UNSUPPORTED Some of the characters in the Unicode string\r
1708 cannot be rendered by one or more of the output\r
1709 devices mapped by the EFI handle.\r
1710\r
1711**/\r
95276127 1712EFI_STATUS\r
1713EFIAPI\r
1714ConSplitterTextOutTestString (\r
1715 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1716 IN CHAR16 *WString\r
1717 )\r
1718;\r
1719\r
415df2a3 1720/**\r
1721 Returns information for an available text mode that the output device(s)\r
1722 supports.\r
1723\r
1724 @param This Protocol instance pointer.\r
1725 @param ModeNumber The mode number to return information on.\r
33019a71 1726 @param Columns Returns the columns of the text output device\r
1727 for the requested ModeNumber.\r
1728 @param Rows Returns the rows of the text output device\r
415df2a3 1729 for the requested ModeNumber.\r
1730\r
1731 @retval EFI_SUCCESS The requested mode information was returned.\r
1732 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1733 the request.\r
1734 @retval EFI_UNSUPPORTED The mode number was not valid.\r
1735\r
1736**/\r
95276127 1737EFI_STATUS\r
1738EFIAPI\r
1739ConSplitterTextOutQueryMode (\r
1740 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1741 IN UINTN ModeNumber,\r
1742 OUT UINTN *Columns,\r
1743 OUT UINTN *Rows\r
1744 )\r
1745;\r
1746\r
415df2a3 1747/**\r
1748 Sets the output device(s) to a specified mode.\r
1749\r
1750 @param This Protocol instance pointer.\r
1751 @param ModeNumber The mode number to set.\r
1752\r
1753 @retval EFI_SUCCESS The requested text mode was set.\r
1754 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1755 the request.\r
1756 @retval EFI_UNSUPPORTED The mode number was not valid.\r
1757\r
1758**/\r
95276127 1759EFI_STATUS\r
1760EFIAPI\r
1761ConSplitterTextOutSetMode (\r
1762 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1763 IN UINTN ModeNumber\r
1764 )\r
1765;\r
1766\r
415df2a3 1767/**\r
1768 Sets the background and foreground colors for the OutputString () and\r
1769 ClearScreen () functions.\r
1770\r
1771 @param This Protocol instance pointer.\r
1772 @param Attribute The attribute to set. Bits 0..3 are the\r
1773 foreground color, and bits 4..6 are the\r
1774 background color. All other bits are undefined\r
1775 and must be zero. The valid Attributes are\r
1776 defined in this file.\r
1777\r
1778 @retval EFI_SUCCESS The attribute was set.\r
1779 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1780 the request.\r
1781 @retval EFI_UNSUPPORTED The attribute requested is not defined.\r
1782\r
1783**/\r
95276127 1784EFI_STATUS\r
1785EFIAPI\r
1786ConSplitterTextOutSetAttribute (\r
1787 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1788 IN UINTN Attribute\r
1789 )\r
1790;\r
1791\r
415df2a3 1792/**\r
1793 Clears the output device(s) display to the currently selected background\r
1794 color.\r
1795\r
1796 @param This Protocol instance pointer.\r
1797\r
1798 @retval EFI_SUCCESS The operation completed successfully.\r
1799 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1800 the request.\r
1801 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.\r
1802\r
1803**/\r
95276127 1804EFI_STATUS\r
1805EFIAPI\r
1806ConSplitterTextOutClearScreen (\r
1807 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This\r
1808 )\r
1809;\r
1810\r
415df2a3 1811/**\r
1812 Sets the current coordinates of the cursor position\r
1813\r
1814 @param This Protocol instance pointer.\r
33019a71 1815 @param Column The column position to set the cursor to. Must be\r
415df2a3 1816 greater than or equal to zero and less than the\r
33019a71 1817 number of columns by QueryMode ().\r
1818 @param Row The row position to set the cursor to. Must be\r
1819 greater than or equal to zero and less than the\r
1820 number of rows by QueryMode ().\r
415df2a3 1821\r
1822 @retval EFI_SUCCESS The operation completed successfully.\r
1823 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1824 the request.\r
1825 @retval EFI_UNSUPPORTED The output device is not in a valid text mode,\r
1826 or the cursor position is invalid for the\r
1827 current mode.\r
1828\r
1829**/\r
95276127 1830EFI_STATUS\r
1831EFIAPI\r
1832ConSplitterTextOutSetCursorPosition (\r
1833 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1834 IN UINTN Column,\r
1835 IN UINTN Row\r
1836 )\r
1837;\r
1838\r
415df2a3 1839\r
1840/**\r
1841 Makes the cursor visible or invisible\r
1842\r
1843 @param This Protocol instance pointer.\r
1844 @param Visible If TRUE, the cursor is set to be visible. If\r
1845 FALSE, the cursor is set to be invisible.\r
1846\r
1847 @retval EFI_SUCCESS The operation completed successfully.\r
1848 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1849 the request, or the device does not support\r
1850 changing the cursor mode.\r
1851 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.\r
1852\r
1853**/\r
95276127 1854EFI_STATUS\r
1855EFIAPI\r
1856ConSplitterTextOutEnableCursor (\r
1857 IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,\r
1858 IN BOOLEAN Visible\r
1859 )\r
1860;\r
1861\r
415df2a3 1862/**\r
1863 Take the passed in Buffer of size SizeOfCount and grow the buffer\r
1864 by MAX (CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT, MaxGrow) * SizeOfCount\r
1865 bytes. Copy the current data in Buffer to the new version of Buffer\r
1866 and free the old version of buffer.\r
1867\r
1868 @param SizeOfCount Size of element in array\r
1869 @param Count Current number of elements in array\r
1870 @param Buffer Bigger version of passed in Buffer with all the\r
1871 data\r
1872\r
1873 @retval EFI_SUCCESS Buffer size has grown\r
1874 @retval EFI_OUT_OF_RESOURCES Could not grow the buffer size.\r
1875\r
1876**/\r
95276127 1877EFI_STATUS\r
1878ConSplitterGrowBuffer (\r
1879 IN UINTN SizeOfCount,\r
1880 IN UINTN *Count,\r
1881 IN OUT VOID **Buffer\r
1882 )\r
1883;\r
1884\r
415df2a3 1885/**\r
1886 Return the current video mode information. Also returns info about existence\r
1887 of Graphics Output devices or UGA Draw devices in system, and if the Std In device is locked. All the\r
1888 arguments are optional and only returned if a non NULL pointer is passed in.\r
1889\r
1890 @param This Protocol instance pointer.\r
1891 @param Mode Are we in text of grahics mode.\r
1892 @param GopExists TRUE if GOP Spliter has found a GOP/UGA device\r
1893 @param StdInLocked TRUE if StdIn device is keyboard locked\r
1894\r
1895 @retval EFI_SUCCESS Mode information returned.\r
1896 @retval EFI_INVALID_PARAMETER Invalid parameters.\r
1897\r
1898**/\r
95276127 1899EFI_STATUS\r
1900EFIAPI\r
1901ConSpliterConsoleControlGetMode (\r
1902 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
1903 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,\r
1904 OUT BOOLEAN *GopExists,\r
1905 OUT BOOLEAN *StdInLocked\r
1906 )\r
1907;\r
1908\r
415df2a3 1909/**\r
1910 Set the current mode to either text or graphics. Graphics is\r
1911 for Quiet Boot.\r
1912\r
1913 @param This Protocol instance pointer.\r
1914 @param Mode Mode to set the\r
1915\r
1916 @retval EFI_SUCCESS Mode information returned.\r
1917 @retval EFI_INVALID_PARAMETER Invalid parameter.\r
1918 @retval EFI_UNSUPPORTED Operation unsupported.\r
1919\r
1920**/\r
95276127 1921EFI_STATUS\r
1922EFIAPI\r
1923ConSpliterConsoleControlSetMode (\r
1924 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
1925 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode\r
1926 )\r
1927;\r
1928\r
415df2a3 1929/**\r
1930 Return the current video mode information.\r
1931\r
1932 @param This Protocol instance pointer.\r
1933 @param ModeNumber The mode number to return information on.\r
1934 @param SizeOfInfo A pointer to the size, in bytes, of the Info\r
1935 buffer.\r
1936 @param Info Caller allocated buffer that returns information\r
1937 about ModeNumber.\r
1938\r
1939 @retval EFI_SUCCESS Mode information returned.\r
1940 @retval EFI_BUFFER_TOO_SMALL The Info buffer was too small.\r
1941 @retval EFI_DEVICE_ERROR A hardware error occurred trying to retrieve the\r
1942 video mode.\r
1943 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()\r
1944 @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
1945\r
1946**/\r
95276127 1947EFI_STATUS\r
1948EFIAPI\r
1949ConSpliterGraphicsOutputQueryMode (\r
66aa04e4 1950 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
1951 IN UINT32 ModeNumber,\r
1952 OUT UINTN *SizeOfInfo,\r
1953 OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION **Info\r
95276127 1954 )\r
1955;\r
1956\r
415df2a3 1957/**\r
4b5c4fba 1958 Graphics output protocol interface to set video mode.\r
415df2a3 1959\r
1960 @param This Protocol instance pointer.\r
1961 @param ModeNumber The mode number to be set.\r
1962\r
1963 @retval EFI_SUCCESS Graphics mode was changed.\r
1964 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
1965 the request.\r
1966 @retval EFI_UNSUPPORTED ModeNumber is not supported by this device.\r
1967\r
1968**/\r
95276127 1969EFI_STATUS\r
1970EFIAPI\r
1971ConSpliterGraphicsOutputSetMode (\r
1972 IN EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
1973 IN UINT32 ModeNumber\r
1974 )\r
1975;\r
1976\r
415df2a3 1977/**\r
1978 The following table defines actions for BltOperations.\r
1979\r
1980 EfiBltVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY)\r
1981 directly to every pixel of the video display rectangle\r
1982 (DestinationX, DestinationY)\r
1983 (DestinationX + Width, DestinationY + Height).\r
1984 Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
1985 EfiBltVideoToBltBuffer - Read data from the video display rectangle\r
1986 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
1987 the BltBuffer rectangle (DestinationX, DestinationY )\r
1988 (DestinationX + Width, DestinationY + Height). If DestinationX or\r
1989 DestinationY is not zero then Delta must be set to the length in bytes\r
1990 of a row in the BltBuffer.\r
1991 EfiBltBufferToVideo - Write data from the BltBuffer rectangle\r
1992 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
1993 video display rectangle (DestinationX, DestinationY)\r
1994 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
1995 not zero then Delta must be set to the length in bytes of a row in the\r
1996 BltBuffer.\r
1997 EfiBltVideoToVideo - Copy from the video display rectangle\r
1998 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
1999 to the video display rectangle (DestinationX, DestinationY)\r
2000 (DestinationX + Width, DestinationY + Height).\r
2001 The BltBuffer and Delta are not used in this mode.\r
2002\r
2003 @param This Protocol instance pointer.\r
2004 @param BltBuffer Buffer containing data to blit into video buffer.\r
2005 This buffer has a size of\r
2006 Width*Height*sizeof(EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
2007 @param BltOperation Operation to perform on BlitBuffer and video\r
2008 memory\r
2009 @param SourceX X coordinate of source for the BltBuffer.\r
2010 @param SourceY Y coordinate of source for the BltBuffer.\r
2011 @param DestinationX X coordinate of destination for the BltBuffer.\r
2012 @param DestinationY Y coordinate of destination for the BltBuffer.\r
2013 @param Width Width of rectangle in BltBuffer in pixels.\r
33019a71 2014 @param Height Hight of rectangle in BltBuffer in pixels. \r
2015 @param Delta OPTIONAL.\r
415df2a3 2016\r
2017 @retval EFI_SUCCESS The Blt operation completed.\r
2018 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
2019 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video\r
2020 buffer.\r
2021\r
2022**/\r
95276127 2023EFI_STATUS\r
2024EFIAPI\r
2025ConSpliterGraphicsOutputBlt (\r
2026 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *This,\r
2027 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer, OPTIONAL\r
2028 IN EFI_GRAPHICS_OUTPUT_BLT_OPERATION BltOperation,\r
2029 IN UINTN SourceX,\r
2030 IN UINTN SourceY,\r
2031 IN UINTN DestinationX,\r
2032 IN UINTN DestinationY,\r
2033 IN UINTN Width,\r
2034 IN UINTN Height,\r
2035 IN UINTN Delta OPTIONAL\r
2036 )\r
2037;\r
2038\r
33019a71 2039/**\r
2040 Write data from the buffer to video display based on Graphics Output setting. \r
2041\r
2042 @param Private Consplitter Text Out pointer.\r
2043 @param GraphicsOutput Graphics Output protocol pointer.\r
2044 @param UgaDraw UGA Draw protocol pointer.\r
2045\r
2046 @retval EFI_UNSUPPORTED No graphics devcie available .\r
2047 @retval EFI_SUCCESS The Blt operation completed.\r
2048 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
2049 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.\r
2050 \r
2051\r
2052**/\r
95276127 2053EFI_STATUS\r
2054DevNullGopSync (\r
2055 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2056 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
2057 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
2058 )\r
2059;\r
2060\r
415df2a3 2061/**\r
2062 Return the current video mode information.\r
2063\r
2064 @param This Protocol instance pointer.\r
2065 @param HorizontalResolution Current video horizontal resolution in pixels\r
2066 @param VerticalResolution Current video vertical resolution in pixels\r
2067 @param ColorDepth Current video color depth in bits per pixel\r
2068 @param RefreshRate Current video refresh rate in Hz.\r
2069\r
2070 @retval EFI_SUCCESS Mode information returned.\r
2071 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()\r
2072 @retval EFI_INVALID_PARAMETER One of the input args was NULL.\r
2073\r
2074**/\r
d0c64728 2075EFI_STATUS\r
2076EFIAPI\r
2077ConSpliterUgaDrawGetMode (\r
2078 IN EFI_UGA_DRAW_PROTOCOL *This,\r
2079 OUT UINT32 *HorizontalResolution,\r
2080 OUT UINT32 *VerticalResolution,\r
2081 OUT UINT32 *ColorDepth,\r
2082 OUT UINT32 *RefreshRate\r
2083 )\r
2084;\r
2085\r
415df2a3 2086/**\r
2087 Return the current video mode information.\r
2088\r
2089 @param This Protocol instance pointer.\r
2090 @param HorizontalResolution Current video horizontal resolution in pixels\r
2091 @param VerticalResolution Current video vertical resolution in pixels\r
2092 @param ColorDepth Current video color depth in bits per pixel\r
2093 @param RefreshRate Current video refresh rate in Hz.\r
2094\r
2095 @retval EFI_SUCCESS Mode information returned.\r
2096 @retval EFI_NOT_STARTED Video display is not initialized. Call SetMode ()\r
2097 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
2098\r
2099**/\r
d0c64728 2100EFI_STATUS\r
2101EFIAPI\r
2102ConSpliterUgaDrawSetMode (\r
2103 IN EFI_UGA_DRAW_PROTOCOL *This,\r
2104 IN UINT32 HorizontalResolution,\r
2105 IN UINT32 VerticalResolution,\r
2106 IN UINT32 ColorDepth,\r
2107 IN UINT32 RefreshRate\r
2108 )\r
2109;\r
2110\r
415df2a3 2111/**\r
2112 The following table defines actions for BltOperations.\r
2113\r
2114 EfiUgaVideoFill - Write data from the BltBuffer pixel (SourceX, SourceY)\r
2115 directly to every pixel of the video display rectangle\r
2116 (DestinationX, DestinationY)\r
2117 (DestinationX + Width, DestinationY + Height).\r
2118 Only one pixel will be used from the BltBuffer. Delta is NOT used.\r
2119 EfiUgaVideoToBltBuffer - Read data from the video display rectangle\r
2120 (SourceX, SourceY) (SourceX + Width, SourceY + Height) and place it in\r
2121 the BltBuffer rectangle (DestinationX, DestinationY )\r
2122 (DestinationX + Width, DestinationY + Height). If DestinationX or\r
2123 DestinationY is not zero then Delta must be set to the length in bytes\r
2124 of a row in the BltBuffer.\r
2125 EfiUgaBltBufferToVideo - Write data from the BltBuffer rectangle\r
2126 (SourceX, SourceY) (SourceX + Width, SourceY + Height) directly to the\r
2127 video display rectangle (DestinationX, DestinationY)\r
2128 (DestinationX + Width, DestinationY + Height). If SourceX or SourceY is\r
2129 not zero then Delta must be set to the length in bytes of a row in the\r
2130 BltBuffer.\r
2131 EfiUgaVideoToVideo - Copy from the video display rectangle\r
2132 (SourceX, SourceY) (SourceX + Width, SourceY + Height) .\r
2133 to the video display rectangle (DestinationX, DestinationY)\r
2134 (DestinationX + Width, DestinationY + Height).\r
2135 The BltBuffer and Delta are not used in this mode.\r
2136\r
2137 @param This Protocol instance pointer.\r
2138 @param BltBuffer Buffer containing data to blit into video buffer.\r
2139 This buffer has a size of\r
2140 Width*Height*sizeof(EFI_UGA_PIXEL)\r
2141 @param BltOperation Operation to perform on BlitBuffer and video\r
2142 memory\r
2143 @param SourceX X coordinate of source for the BltBuffer.\r
2144 @param SourceY Y coordinate of source for the BltBuffer.\r
2145 @param DestinationX X coordinate of destination for the BltBuffer.\r
2146 @param DestinationY Y coordinate of destination for the BltBuffer.\r
2147 @param Width Width of rectangle in BltBuffer in pixels.\r
33019a71 2148 @param Height Hight of rectangle in BltBuffer in pixels. \r
2149 @param Delta OPTIONAL.\r
415df2a3 2150\r
2151 @retval EFI_SUCCESS The Blt operation completed.\r
2152 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
2153 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video\r
2154 buffer.\r
2155\r
2156**/\r
d0c64728 2157EFI_STATUS\r
2158EFIAPI\r
2159ConSpliterUgaDrawBlt (\r
2160 IN EFI_UGA_DRAW_PROTOCOL *This,\r
2161 IN EFI_UGA_PIXEL *BltBuffer, OPTIONAL\r
2162 IN EFI_UGA_BLT_OPERATION BltOperation,\r
2163 IN UINTN SourceX,\r
2164 IN UINTN SourceY,\r
2165 IN UINTN DestinationX,\r
2166 IN UINTN DestinationY,\r
2167 IN UINTN Width,\r
2168 IN UINTN Height,\r
2169 IN UINTN Delta OPTIONAL\r
2170 )\r
2171;\r
2172\r
33019a71 2173/**\r
2174 Write data from the buffer to video display based on UGA Draw setting. \r
2175\r
2176 @param Private Consplitter Text Out pointer.\r
2177 @param GraphicsOutput Graphics Output protocol pointer.\r
2178 @param UgaDraw UGA Draw protocol pointer.\r
2179\r
2180 @retval EFI_UNSUPPORTED No graphics devcie available .\r
2181 @retval EFI_SUCCESS The Blt operation completed.\r
2182 @retval EFI_INVALID_PARAMETER BltOperation is not valid.\r
2183 @retval EFI_DEVICE_ERROR A hardware error occured writting to the video buffer.\r
2184 \r
2185**/\r
d0c64728 2186EFI_STATUS\r
2187DevNullUgaSync (\r
2188 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2189 IN EFI_GRAPHICS_OUTPUT_PROTOCOL *GraphicsOutput,\r
2190 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
2191 )\r
2192;\r
95276127 2193\r
415df2a3 2194/**\r
2195 Write a Unicode string to the output device.\r
2196\r
2197 @param Private Pointer to the console output splitter's private\r
2198 data. It indicates the calling context.\r
2199 @param WString The NULL-terminated Unicode string to be\r
2200 displayed on the output device(s). All output\r
2201 devices must also support the Unicode drawing\r
2202 defined in this file.\r
2203\r
2204 @retval EFI_SUCCESS The string was output to the device.\r
2205 @retval EFI_DEVICE_ERROR The device reported an error while attempting to\r
2206 output the text.\r
2207 @retval EFI_UNSUPPORTED The output device's mode is not currently in a\r
2208 defined text mode.\r
2209 @retval EFI_WARN_UNKNOWN_GLYPH This warning code indicates that some of the\r
2210 characters in the Unicode string could not be\r
2211 rendered and were skipped.\r
2212\r
2213**/\r
95276127 2214EFI_STATUS\r
2215DevNullTextOutOutputString (\r
2216 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2217 IN CHAR16 *WString\r
2218 )\r
2219;\r
2220\r
415df2a3 2221/**\r
2222 Sets the output device(s) to a specified mode.\r
2223\r
2224 @param Private Private data structure pointer.\r
2225 @param ModeNumber The mode number to set.\r
2226\r
2227 @retval EFI_SUCCESS The requested text mode was set.\r
2228 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
2229 the request.\r
2230 @retval EFI_UNSUPPORTED The mode number was not valid.\r
2231 @retval EFI_OUT_OF_RESOURCES Out of resources.\r
2232\r
2233**/\r
95276127 2234EFI_STATUS\r
2235DevNullTextOutSetMode (\r
2236 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2237 IN UINTN ModeNumber\r
2238 )\r
2239;\r
2240\r
415df2a3 2241/**\r
2242 Clears the output device(s) display to the currently selected background\r
2243 color.\r
2244\r
2245 @param Private Protocol instance pointer.\r
2246\r
2247 @retval EFI_SUCCESS The operation completed successfully.\r
2248 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
2249 the request.\r
2250 @retval EFI_UNSUPPORTED The output device is not in a valid text mode.\r
2251\r
2252**/\r
95276127 2253EFI_STATUS\r
2254DevNullTextOutClearScreen (\r
2255 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
2256 )\r
2257;\r
2258\r
415df2a3 2259/**\r
2260 Sets the current coordinates of the cursor position.\r
2261\r
2262 @param Private Protocol instance pointer.\r
2263 @param Column \r
2264 @param Row the position to set the cursor to. Must be\r
2265 greater than or equal to zero and less than the\r
2266 number of columns and rows by QueryMode ().\r
2267\r
2268 @retval EFI_SUCCESS The operation completed successfully.\r
2269 @retval EFI_DEVICE_ERROR The device had an error and could not complete\r
2270 the request.\r
2271 @retval EFI_UNSUPPORTED The output device is not in a valid text mode, or\r
2272 the cursor position is invalid for the current\r
2273 mode.\r
2274\r
2275**/\r
95276127 2276EFI_STATUS\r
2277DevNullTextOutSetCursorPosition (\r
2278 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2279 IN UINTN Column,\r
2280 IN UINTN Row\r
2281 )\r
2282;\r
2283\r
415df2a3 2284/**\r
2285 Implements SIMPLE_TEXT_OUTPUT.EnableCursor().\r
2286 In this driver, the cursor cannot be hidden.\r
2287\r
2288 @param Private Indicates the calling context.\r
2289 @param Visible If TRUE, the cursor is set to be visible, If\r
2290 FALSE, the cursor is set to be invisible.\r
2291\r
2292 @retval EFI_SUCCESS The request is valid.\r
2293\r
2294**/\r
95276127 2295EFI_STATUS\r
2296DevNullTextOutEnableCursor (\r
2297 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
2298 IN BOOLEAN Visible\r
2299 )\r
2300;\r
2301\r
415df2a3 2302/**\r
2303 Take the DevNull TextOut device and update the Simple Text Out on every\r
2304 UGA device.\r
2305\r
2306 @param Private Indicates the calling context.\r
2307\r
2308 @retval EFI_SUCCESS The request is valid.\r
2309 @retval other Return status of TextOut->OutputString ()\r
2310\r
2311**/\r
95276127 2312EFI_STATUS\r
aec072ad 2313DevNullSyncStdOut (\r
95276127 2314 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
2315 )\r
2316;\r
2317\r
2318#endif\r