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