6f409e19a489673530cb8fa25b03fb74a9b1aa37
[people/mcb30/edk2.git] / edk2 / MdeModulePkg / Universal / Console / ConSplitterDxe / ConSplitter.h
1 /** @file\r
2   Private data structures for the Console Splitter driver\r
3 \r
4 Copyright (c) 2006 - 2008 Intel Corporation. <BR>\r
5 All rights reserved. This program and the accompanying materials\r
6 are licensed and made available under the terms and conditions of the BSD License\r
7 which accompanies this distribution.  The full text of the license may be found at\r
8 http://opensource.org/licenses/bsd-license.php\r
9 \r
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
11 WITHOUT 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
18 #include <PiDxe.h>\r
19 #include <Guid/PrimaryStandardErrorDevice.h>\r
20 #include <Guid/PrimaryConsoleOutDevice.h>\r
21 #include <Protocol/GraphicsOutput.h>\r
22 #include <Guid/PrimaryConsoleInDevice.h>\r
23 #include <Guid/GenericPlatformVariable.h>\r
24 #include <Protocol/SimplePointer.h>\r
25 #include <Protocol/AbsolutePointer.h>\r
26 #include <Protocol/SimpleTextOut.h>\r
27 #include <Guid/ConsoleInDevice.h>\r
28 #include <Protocol/SimpleTextIn.h>\r
29 #include <Protocol/SimpleTextInEx.h>\r
30 #include <Protocol/ConsoleControl.h>\r
31 #include <Guid/StandardErrorDevice.h>\r
32 #include <Guid/ConsoleOutDevice.h>\r
33 #include <Protocol/UgaDraw.h>\r
34 #include <Library/PcdLib.h>\r
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
42 #include <Library/UefiRuntimeServicesTableLib.h>\r
43 \r
44 \r
45 //\r
46 // Driver Binding Externs\r
47 //\r
48 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterConInDriverBinding;\r
49 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConInComponentName;\r
50 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConInComponentName2;\r
51 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterSimplePointerDriverBinding;\r
52 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterSimplePointerComponentName;\r
53 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterSimplePointerComponentName2;\r
54 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterAbsolutePointerDriverBinding;\r
55 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterAbsolutePointerComponentName;\r
56 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterAbsolutePointerComponentName2;\r
57 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterConOutDriverBinding;\r
58 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterConOutComponentName;\r
59 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterConOutComponentName2;\r
60 extern EFI_DRIVER_BINDING_PROTOCOL  gConSplitterStdErrDriverBinding;\r
61 extern EFI_COMPONENT_NAME_PROTOCOL  gConSplitterStdErrComponentName;\r
62 extern EFI_COMPONENT_NAME2_PROTOCOL gConSplitterStdErrComponentName2;\r
63 \r
64 extern EFI_GUID                     gSimpleTextInExNotifyGuid;\r
65 \r
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
69 #define UNICODE_WIDE_CHAR     0xFFF1\r
70 \r
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
79 #define VARCONOUTMODE L"ConOutMode"\r
80 \r
81 typedef struct {\r
82   UINTN   Column;\r
83   UINTN   Row;\r
84 } CONSOLE_OUT_MODE;\r
85 \r
86 typedef 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
96 #define TEXT_IN_EX_SPLITTER_NOTIFY_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'n')\r
97 \r
98 typedef 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
106 \r
107 typedef struct {\r
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
120   LIST_ENTRY                         NotifyList;\r
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
134   BOOLEAN                            AbsoluteInputEventSignalState;\r
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
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
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
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
178 typedef 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
185 typedef struct {\r
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
200   EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *GraphicsOutputModeBuffer;\r
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
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
254 EFI_STATUS\r
255 EFIAPI\r
256 ConSplitterDriverEntry (\r
257   IN EFI_HANDLE                       ImageHandle,\r
258   IN EFI_SYSTEM_TABLE                 *SystemTable\r
259   )\r
260 ;\r
261 \r
262 /**\r
263   Construct the ConSplitter.\r
264 \r
265   @param  ConInPrivate             A pointer to the TEXT_IN_SPLITTER_PRIVATE_DATA\r
266                                    structure.\r
267 \r
268   @retval EFI_OUT_OF_RESOURCES     Out of resources.\r
269 \r
270 **/\r
271 EFI_STATUS\r
272 ConSplitterTextInConstructor (\r
273   TEXT_IN_SPLITTER_PRIVATE_DATA       *Private\r
274   )\r
275 ;\r
276 \r
277 EFI_STATUS\r
278 ConSplitterTextOutConstructor (\r
279   TEXT_OUT_SPLITTER_PRIVATE_DATA      *Private\r
280   )\r
281 ;\r
282 \r
283 //\r
284 // Driver Binding Functions\r
285 //\r
286 \r
287 /**\r
288   Console In Supported Check\r
289 \r
290   @param  This                     Pointer to protocol.\r
291   @param  ControllerHandle         Controller handle.\r
292   @param  RemainingDevicePath      Remaining device path.\r
293 \r
294   @return EFI_STATUS\r
295 \r
296 **/\r
297 EFI_STATUS\r
298 EFIAPI\r
299 ConSplitterConInDriverBindingSupported (\r
300   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
301   IN  EFI_HANDLE                      ControllerHandle,\r
302   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
303   )\r
304 ;\r
305 \r
306 /**\r
307   Standard Error Supported Check\r
308 \r
309   @param  This                     Pointer to protocol.\r
310   @param  ControllerHandle         Controller handle.\r
311   @param  RemainingDevicePath      Remaining device path.\r
312 \r
313   @return EFI_STATUS\r
314 \r
315 **/\r
316 EFI_STATUS\r
317 EFIAPI\r
318 ConSplitterSimplePointerDriverBindingSupported (\r
319   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
320   IN  EFI_HANDLE                      ControllerHandle,\r
321   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
322   )\r
323 ;\r
324 \r
325 /**\r
326   Console Out Supported Check\r
327 \r
328   @param  This                     Pointer to protocol.\r
329   @param  ControllerHandle         Controller handle.\r
330   @param  RemainingDevicePath      Remaining device path.\r
331 \r
332   @return EFI_STATUS\r
333 \r
334 **/\r
335 EFI_STATUS\r
336 EFIAPI\r
337 ConSplitterConOutDriverBindingSupported (\r
338   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
339   IN  EFI_HANDLE                      ControllerHandle,\r
340   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
341   )\r
342 ;\r
343 \r
344 /**\r
345   Standard Error Supported Check\r
346 \r
347   @param  This                     Pointer to protocol.\r
348   @param  ControllerHandle         Controller handle.\r
349   @param  RemainingDevicePath      Remaining device path.\r
350 \r
351   @return EFI_STATUS\r
352 \r
353 **/\r
354 EFI_STATUS\r
355 EFIAPI\r
356 ConSplitterStdErrDriverBindingSupported (\r
357   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
358   IN  EFI_HANDLE                      ControllerHandle,\r
359   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
360   )\r
361 ;\r
362 \r
363 EFI_STATUS\r
364 EFIAPI\r
365 ConSplitterConInDriverBindingStart (\r
366   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
367   IN  EFI_HANDLE                      ControllerHandle,\r
368   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
369   )\r
370 ;\r
371 \r
372 EFI_STATUS\r
373 EFIAPI\r
374 ConSplitterSimplePointerDriverBindingStart (\r
375   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
376   IN  EFI_HANDLE                      ControllerHandle,\r
377   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
378   )\r
379 ;\r
380 \r
381 EFI_STATUS\r
382 EFIAPI\r
383 ConSplitterConOutDriverBindingStart (\r
384   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
385   IN  EFI_HANDLE                      ControllerHandle,\r
386   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
387   )\r
388 ;\r
389 \r
390 EFI_STATUS\r
391 EFIAPI\r
392 ConSplitterStdErrDriverBindingStart (\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
399 EFI_STATUS\r
400 EFIAPI\r
401 ConSplitterConInDriverBindingStop (\r
402   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
403   IN  EFI_HANDLE                      ControllerHandle,\r
404   IN  UINTN                           NumberOfChildren,\r
405   IN  EFI_HANDLE                      *ChildHandleBuffer\r
406   )\r
407 ;\r
408 \r
409 EFI_STATUS\r
410 EFIAPI\r
411 ConSplitterSimplePointerDriverBindingStop (\r
412   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
413   IN  EFI_HANDLE                      ControllerHandle,\r
414   IN  UINTN                           NumberOfChildren,\r
415   IN  EFI_HANDLE                      *ChildHandleBuffer\r
416   )\r
417 ;\r
418 \r
419 EFI_STATUS\r
420 EFIAPI\r
421 ConSplitterConOutDriverBindingStop (\r
422   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
423   IN  EFI_HANDLE                      ControllerHandle,\r
424   IN  UINTN                           NumberOfChildren,\r
425   IN  EFI_HANDLE                      *ChildHandleBuffer\r
426   )\r
427 ;\r
428 \r
429 EFI_STATUS\r
430 EFIAPI\r
431 ConSplitterStdErrDriverBindingStop (\r
432   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
433   IN  EFI_HANDLE                      ControllerHandle,\r
434   IN  UINTN                           NumberOfChildren,\r
435   IN  EFI_HANDLE                      *ChildHandleBuffer\r
436   )\r
437 ;\r
438 \r
439 //\r
440 // Driver binding functions\r
441 //\r
442 \r
443 EFI_STATUS\r
444 EFIAPI\r
445 ConSplitterAbsolutePointerDriverBindingSupported (\r
446   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
447   IN  EFI_HANDLE                      ControllerHandle,\r
448   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
449   )\r
450 ;\r
451 \r
452 EFI_STATUS\r
453 EFIAPI\r
454 ConSplitterAbsolutePointerDriverBindingStart (\r
455   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
456   IN  EFI_HANDLE                      ControllerHandle,\r
457   IN  EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
458   )\r
459 ;\r
460 \r
461 EFI_STATUS\r
462 EFIAPI\r
463 ConSplitterAbsolutePointerDriverBindingStop (\r
464   IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
465   IN  EFI_HANDLE                      ControllerHandle,\r
466   IN  UINTN                           NumberOfChildren,\r
467   IN  EFI_HANDLE                      *ChildHandleBuffer\r
468   )\r
469 ;\r
470 \r
471 EFI_STATUS\r
472 ConSplitterAbsolutePointerAddDevice (\r
473   IN  TEXT_IN_SPLITTER_PRIVATE_DATA     *Private,\r
474   IN  EFI_ABSOLUTE_POINTER_PROTOCOL     *AbsolutePointer\r
475   )\r
476 ;\r
477 \r
478 EFI_STATUS\r
479 ConSplitterAbsolutePointerDeleteDevice (\r
480   IN  TEXT_IN_SPLITTER_PRIVATE_DATA     *Private,\r
481   IN  EFI_ABSOLUTE_POINTER_PROTOCOL     *AbsolutePointer\r
482   )\r
483 ;\r
484 \r
485 //\r
486 // Absolute Pointer protocol interfaces\r
487 //\r
488 \r
489 \r
490 /**\r
491   Resets the pointer device hardware.\r
492 \r
493   @param  This                     Protocol instance pointer.\r
494   @param  ExtendedVerification     Driver may perform diagnostics on reset.\r
495 \r
496   @retval EFI_SUCCESS              The device was reset.\r
497   @retval EFI_DEVICE_ERROR         The device is not functioning correctly and\r
498                                    could not be reset.\r
499 \r
500 **/\r
501 EFI_STATUS\r
502 EFIAPI\r
503 ConSplitterAbsolutePointerReset (\r
504   IN EFI_ABSOLUTE_POINTER_PROTOCOL   *This,\r
505   IN BOOLEAN                         ExtendedVerification\r
506   )\r
507 ;\r
508 \r
509 \r
510 /**\r
511   Retrieves the current state of a pointer device.\r
512 \r
513   @param  This                     Protocol instance pointer.\r
514   @param  State                    A pointer to the state information on the\r
515                                    pointer device.\r
516 \r
517   @retval EFI_SUCCESS              The state of the pointer device was returned in\r
518                                    State..\r
519   @retval EFI_NOT_READY            The state of the pointer device has not changed\r
520                                    since the last call to GetState().\r
521   @retval EFI_DEVICE_ERROR         A device error occurred while attempting to\r
522                                    retrieve the pointer device's current state.\r
523 \r
524 **/\r
525 EFI_STATUS\r
526 EFIAPI\r
527 ConSplitterAbsolutePointerGetState (\r
528   IN EFI_ABSOLUTE_POINTER_PROTOCOL   *This,\r
529   IN OUT EFI_ABSOLUTE_POINTER_STATE  *State\r
530   )\r
531 ;\r
532 \r
533 VOID\r
534 EFIAPI\r
535 ConSplitterAbsolutePointerWaitForInput (\r
536   IN  EFI_EVENT                       Event,\r
537   IN  VOID                            *Context\r
538   )\r
539 ;\r
540 \r
541 /**\r
542   Retrieves a Unicode string that is the user readable name of the driver.\r
543 \r
544   This function retrieves the user readable name of a driver in the form of a\r
545   Unicode string. If the driver specified by This has a user readable name in\r
546   the language specified by Language, then a pointer to the driver name is\r
547   returned in DriverName, and EFI_SUCCESS is returned. If the driver specified\r
548   by This does not support the language specified by Language,\r
549   then EFI_UNSUPPORTED is returned.\r
550 \r
551   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
552                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
553 \r
554   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
555                                 array indicating the language. This is the\r
556                                 language of the driver name that the caller is\r
557                                 requesting, and it must match one of the\r
558                                 languages specified in SupportedLanguages. The\r
559                                 number of languages supported by a driver is up\r
560                                 to the driver writer. Language is specified\r
561                                 in RFC 3066 or ISO 639-2 language code format.\r
562 \r
563   @param  DriverName[out]       A pointer to the Unicode string to return.\r
564                                 This Unicode string is the name of the\r
565                                 driver specified by This in the language\r
566                                 specified by Language.\r
567 \r
568   @retval EFI_SUCCESS           The Unicode string for the Driver specified by\r
569                                 This and the language specified by Language was\r
570                                 returned in DriverName.\r
571 \r
572   @retval EFI_INVALID_PARAMETER Language is NULL.\r
573 \r
574   @retval EFI_INVALID_PARAMETER DriverName is NULL.\r
575 \r
576   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
577                                 the language specified by Language.\r
578 \r
579 **/\r
580 EFI_STATUS\r
581 EFIAPI\r
582 ConSplitterComponentNameGetDriverName (\r
583   IN  EFI_COMPONENT_NAME_PROTOCOL  *This,\r
584   IN  CHAR8                        *Language,\r
585   OUT CHAR16                       **DriverName\r
586   );\r
587 \r
588 \r
589 /**\r
590   Retrieves a Unicode string that is the user readable name of the controller\r
591   that is being managed by a driver.\r
592 \r
593   This function retrieves the user readable name of the controller specified by\r
594   ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
595   driver specified by This has a user readable name in the language specified by\r
596   Language, then a pointer to the controller name is returned in ControllerName,\r
597   and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
598   managing the controller specified by ControllerHandle and ChildHandle,\r
599   then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
600   support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
601 \r
602   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
603                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
604 \r
605   @param  ControllerHandle[in]  The handle of a controller that the driver\r
606                                 specified by This is managing.  This handle\r
607                                 specifies the controller whose name is to be\r
608                                 returned.\r
609 \r
610   @param  ChildHandle[in]       The handle of the child controller to retrieve\r
611                                 the name of.  This is an optional parameter that\r
612                                 may be NULL.  It will be NULL for device\r
613                                 drivers.  It will also be NULL for a bus drivers\r
614                                 that wish to retrieve the name of the bus\r
615                                 controller.  It will not be NULL for a bus\r
616                                 driver that wishes to retrieve the name of a\r
617                                 child controller.\r
618 \r
619   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
620                                 array indicating the language.  This is the\r
621                                 language of the driver name that the caller is\r
622                                 requesting, and it must match one of the\r
623                                 languages specified in SupportedLanguages. The\r
624                                 number of languages supported by a driver is up\r
625                                 to the driver writer. Language is specified in\r
626                                 RFC 3066 or ISO 639-2 language code format.\r
627 \r
628   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
629                                 This Unicode string is the name of the\r
630                                 controller specified by ControllerHandle and\r
631                                 ChildHandle in the language specified by\r
632                                 Language from the point of view of the driver\r
633                                 specified by This.\r
634 \r
635   @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
636                                 the language specified by Language for the\r
637                                 driver specified by This was returned in\r
638                                 DriverName.\r
639 \r
640   @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
641 \r
642   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
643                                 EFI_HANDLE.\r
644 \r
645   @retval EFI_INVALID_PARAMETER Language is NULL.\r
646 \r
647   @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
648 \r
649   @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
650                                 managing the controller specified by\r
651                                 ControllerHandle and ChildHandle.\r
652 \r
653   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
654                                 the language specified by Language.\r
655 \r
656 **/\r
657 EFI_STATUS\r
658 EFIAPI\r
659 ConSplitterConInComponentNameGetControllerName (\r
660   IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
661   IN  EFI_HANDLE                                      ControllerHandle,\r
662   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
663   IN  CHAR8                                           *Language,\r
664   OUT CHAR16                                          **ControllerName\r
665   );\r
666 \r
667 \r
668 /**\r
669   Retrieves a Unicode string that is the user readable name of the controller\r
670   that is being managed by a driver.\r
671 \r
672   This function retrieves the user readable name of the controller specified by\r
673   ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
674   driver specified by This has a user readable name in the language specified by\r
675   Language, then a pointer to the controller name is returned in ControllerName,\r
676   and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
677   managing the controller specified by ControllerHandle and ChildHandle,\r
678   then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
679   support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
680 \r
681   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
682                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
683 \r
684   @param  ControllerHandle[in]  The handle of a controller that the driver\r
685                                 specified by This is managing.  This handle\r
686                                 specifies the controller whose name is to be\r
687                                 returned.\r
688 \r
689   @param  ChildHandle[in]       The handle of the child controller to retrieve\r
690                                 the name of.  This is an optional parameter that\r
691                                 may be NULL.  It will be NULL for device\r
692                                 drivers.  It will also be NULL for a bus drivers\r
693                                 that wish to retrieve the name of the bus\r
694                                 controller.  It will not be NULL for a bus\r
695                                 driver that wishes to retrieve the name of a\r
696                                 child controller.\r
697 \r
698   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
699                                 array indicating the language.  This is the\r
700                                 language of the driver name that the caller is\r
701                                 requesting, and it must match one of the\r
702                                 languages specified in SupportedLanguages. The\r
703                                 number of languages supported by a driver is up\r
704                                 to the driver writer. Language is specified in\r
705                                 RFC 3066 or ISO 639-2 language code format.\r
706 \r
707   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
708                                 This Unicode string is the name of the\r
709                                 controller specified by ControllerHandle and\r
710                                 ChildHandle in the language specified by\r
711                                 Language from the point of view of the driver\r
712                                 specified by This.\r
713 \r
714   @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
715                                 the language specified by Language for the\r
716                                 driver specified by This was returned in\r
717                                 DriverName.\r
718 \r
719   @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
720 \r
721   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
722                                 EFI_HANDLE.\r
723 \r
724   @retval EFI_INVALID_PARAMETER Language is NULL.\r
725 \r
726   @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
727 \r
728   @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
729                                 managing the controller specified by\r
730                                 ControllerHandle and ChildHandle.\r
731 \r
732   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
733                                 the language specified by Language.\r
734 \r
735 **/\r
736 EFI_STATUS\r
737 EFIAPI\r
738 ConSplitterSimplePointerComponentNameGetControllerName (\r
739   IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
740   IN  EFI_HANDLE                                      ControllerHandle,\r
741   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
742   IN  CHAR8                                           *Language,\r
743   OUT CHAR16                                          **ControllerName\r
744   );\r
745 \r
746 EFI_STATUS\r
747 EFIAPI\r
748 ConSplitterAbsolutePointerComponentNameGetControllerName (\r
749   IN  EFI_COMPONENT_NAME_PROTOCOL                    *This,\r
750   IN  EFI_HANDLE                                      ControllerHandle,\r
751   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
752   IN  CHAR8                                           *Language,\r
753   OUT CHAR16                                          **ControllerName\r
754   )\r
755 ;\r
756 \r
757 /**\r
758   Retrieves a Unicode string that is the user readable name of the controller\r
759   that is being managed by a driver.\r
760 \r
761   This function retrieves the user readable name of the controller specified by\r
762   ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
763   driver specified by This has a user readable name in the language specified by\r
764   Language, then a pointer to the controller name is returned in ControllerName,\r
765   and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
766   managing the controller specified by ControllerHandle and ChildHandle,\r
767   then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
768   support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
769 \r
770   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
771                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
772 \r
773   @param  ControllerHandle[in]  The handle of a controller that the driver\r
774                                 specified by This is managing.  This handle\r
775                                 specifies the controller whose name is to be\r
776                                 returned.\r
777 \r
778   @param  ChildHandle[in]       The handle of the child controller to retrieve\r
779                                 the name of.  This is an optional parameter that\r
780                                 may be NULL.  It will be NULL for device\r
781                                 drivers.  It will also be NULL for a bus drivers\r
782                                 that wish to retrieve the name of the bus\r
783                                 controller.  It will not be NULL for a bus\r
784                                 driver that wishes to retrieve the name of a\r
785                                 child controller.\r
786 \r
787   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
788                                 array indicating the language.  This is the\r
789                                 language of the driver name that the caller is\r
790                                 requesting, and it must match one of the\r
791                                 languages specified in SupportedLanguages. The\r
792                                 number of languages supported by a driver is up\r
793                                 to the driver writer. Language is specified in\r
794                                 RFC 3066 or ISO 639-2 language code format.\r
795 \r
796   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
797                                 This Unicode string is the name of the\r
798                                 controller specified by ControllerHandle and\r
799                                 ChildHandle in the language specified by\r
800                                 Language from the point of view of the driver\r
801                                 specified by This.\r
802 \r
803   @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
804                                 the language specified by Language for the\r
805                                 driver specified by This was returned in\r
806                                 DriverName.\r
807 \r
808   @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
809 \r
810   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
811                                 EFI_HANDLE.\r
812 \r
813   @retval EFI_INVALID_PARAMETER Language is NULL.\r
814 \r
815   @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
816 \r
817   @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
818                                 managing the controller specified by\r
819                                 ControllerHandle and ChildHandle.\r
820 \r
821   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
822                                 the language specified by Language.\r
823 \r
824 **/\r
825 EFI_STATUS\r
826 EFIAPI\r
827 ConSplitterConOutComponentNameGetControllerName (\r
828   IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
829   IN  EFI_HANDLE                                      ControllerHandle,\r
830   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
831   IN  CHAR8                                           *Language,\r
832   OUT CHAR16                                          **ControllerName\r
833   );\r
834 \r
835 \r
836 /**\r
837   Retrieves a Unicode string that is the user readable name of the controller\r
838   that is being managed by a driver.\r
839 \r
840   This function retrieves the user readable name of the controller specified by\r
841   ControllerHandle and ChildHandle in the form of a Unicode string. If the\r
842   driver specified by This has a user readable name in the language specified by\r
843   Language, then a pointer to the controller name is returned in ControllerName,\r
844   and EFI_SUCCESS is returned.  If the driver specified by This is not currently\r
845   managing the controller specified by ControllerHandle and ChildHandle,\r
846   then EFI_UNSUPPORTED is returned.  If the driver specified by This does not\r
847   support the language specified by Language, then EFI_UNSUPPORTED is returned.\r
848 \r
849   @param  This[in]              A pointer to the EFI_COMPONENT_NAME2_PROTOCOL or\r
850                                 EFI_COMPONENT_NAME_PROTOCOL instance.\r
851 \r
852   @param  ControllerHandle[in]  The handle of a controller that the driver\r
853                                 specified by This is managing.  This handle\r
854                                 specifies the controller whose name is to be\r
855                                 returned.\r
856 \r
857   @param  ChildHandle[in]       The handle of the child controller to retrieve\r
858                                 the name of.  This is an optional parameter that\r
859                                 may be NULL.  It will be NULL for device\r
860                                 drivers.  It will also be NULL for a bus drivers\r
861                                 that wish to retrieve the name of the bus\r
862                                 controller.  It will not be NULL for a bus\r
863                                 driver that wishes to retrieve the name of a\r
864                                 child controller.\r
865 \r
866   @param  Language[in]          A pointer to a Null-terminated ASCII string\r
867                                 array indicating the language.  This is the\r
868                                 language of the driver name that the caller is\r
869                                 requesting, and it must match one of the\r
870                                 languages specified in SupportedLanguages. The\r
871                                 number of languages supported by a driver is up\r
872                                 to the driver writer. Language is specified in\r
873                                 RFC 3066 or ISO 639-2 language code format.\r
874 \r
875   @param  ControllerName[out]   A pointer to the Unicode string to return.\r
876                                 This Unicode string is the name of the\r
877                                 controller specified by ControllerHandle and\r
878                                 ChildHandle in the language specified by\r
879                                 Language from the point of view of the driver\r
880                                 specified by This.\r
881 \r
882   @retval EFI_SUCCESS           The Unicode string for the user readable name in\r
883                                 the language specified by Language for the\r
884                                 driver specified by This was returned in\r
885                                 DriverName.\r
886 \r
887   @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid EFI_HANDLE.\r
888 \r
889   @retval EFI_INVALID_PARAMETER ChildHandle is not NULL and it is not a valid\r
890                                 EFI_HANDLE.\r
891 \r
892   @retval EFI_INVALID_PARAMETER Language is NULL.\r
893 \r
894   @retval EFI_INVALID_PARAMETER ControllerName is NULL.\r
895 \r
896   @retval EFI_UNSUPPORTED       The driver specified by This is not currently\r
897                                 managing the controller specified by\r
898                                 ControllerHandle and ChildHandle.\r
899 \r
900   @retval EFI_UNSUPPORTED       The driver specified by This does not support\r
901                                 the language specified by Language.\r
902 \r
903 **/\r
904 EFI_STATUS\r
905 EFIAPI\r
906 ConSplitterStdErrComponentNameGetControllerName (\r
907   IN  EFI_COMPONENT_NAME_PROTOCOL                     *This,\r
908   IN  EFI_HANDLE                                      ControllerHandle,\r
909   IN  EFI_HANDLE                                      ChildHandle        OPTIONAL,\r
910   IN  CHAR8                                           *Language,\r
911   OUT CHAR16                                          **ControllerName\r
912   );\r
913 \r
914 \r
915 //\r
916 // TextIn Constructor/Destructor functions\r
917 //\r
918 EFI_STATUS\r
919 ConSplitterTextInAddDevice (\r
920   IN  TEXT_IN_SPLITTER_PRIVATE_DATA      *Private,\r
921   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *TextIn\r
922   )\r
923 ;\r
924 \r
925 EFI_STATUS\r
926 ConSplitterTextInDeleteDevice (\r
927   IN  TEXT_IN_SPLITTER_PRIVATE_DATA      *Private,\r
928   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *TextIn\r
929   )\r
930 ;\r
931 \r
932 //\r
933 // SimplePointer Constuctor/Destructor functions\r
934 //\r
935 EFI_STATUS\r
936 ConSplitterSimplePointerAddDevice (\r
937   IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
938   IN  EFI_SIMPLE_POINTER_PROTOCOL     *SimplePointer\r
939   )\r
940 ;\r
941 \r
942 EFI_STATUS\r
943 ConSplitterSimplePointerDeleteDevice (\r
944   IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
945   IN  EFI_SIMPLE_POINTER_PROTOCOL     *SimplePointer\r
946   )\r
947 ;\r
948 \r
949 //\r
950 // TextOut Constuctor/Destructor functions\r
951 //\r
952 EFI_STATUS\r
953 ConSplitterTextOutAddDevice (\r
954   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA     *Private,\r
955   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *TextOut,\r
956   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL       *GraphicsOutput,\r
957   IN  EFI_UGA_DRAW_PROTOCOL              *UgaDraw\r
958   )\r
959 ;\r
960 \r
961 EFI_STATUS\r
962 ConSplitterTextOutDeleteDevice (\r
963   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA     *Private,\r
964   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *TextOut\r
965   )\r
966 ;\r
967 \r
968 //\r
969 // TextIn I/O Functions\r
970 //\r
971 EFI_STATUS\r
972 EFIAPI\r
973 ConSplitterTextInReset (\r
974   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *This,\r
975   IN  BOOLEAN                            ExtendedVerification\r
976   )\r
977 ;\r
978 \r
979 EFI_STATUS\r
980 EFIAPI\r
981 ConSplitterTextInReadKeyStroke (\r
982   IN  EFI_SIMPLE_TEXT_INPUT_PROTOCOL     *This,\r
983   OUT EFI_INPUT_KEY                      *Key\r
984   )\r
985 ;\r
986 EFI_STATUS\r
987 ConSplitterTextInExAddDevice (\r
988   IN  TEXT_IN_SPLITTER_PRIVATE_DATA         *Private,\r
989   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL     *TextInEx\r
990   )\r
991 ;\r
992 \r
993 EFI_STATUS\r
994 ConSplitterTextInExDeleteDevice (\r
995   IN  TEXT_IN_SPLITTER_PRIVATE_DATA         *Private,\r
996   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL     *TextInEx\r
997   )\r
998 ;\r
999 \r
1000 //\r
1001 // Simple Text Input Ex protocol function prototypes\r
1002 //\r
1003 \r
1004 \r
1005 /**\r
1006   Reset the input device and optionaly run diagnostics\r
1007 \r
1008   @param  This                     Protocol instance pointer.\r
1009   @param  ExtendedVerification     Driver may perform diagnostics on reset.\r
1010 \r
1011   @retval EFI_SUCCESS              The device was reset.\r
1012   @retval EFI_DEVICE_ERROR         The device is not functioning properly and could\r
1013                                    not be reset.\r
1014 \r
1015 **/\r
1016 EFI_STATUS\r
1017 EFIAPI\r
1018 ConSplitterTextInResetEx (\r
1019   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
1020   IN BOOLEAN                            ExtendedVerification\r
1021   )\r
1022 ;\r
1023 \r
1024 \r
1025 /**\r
1026   Reads the next keystroke from the input device. The WaitForKey Event can\r
1027   be used to test for existance of a keystroke via WaitForEvent () call.\r
1028 \r
1029   @param  This                     Protocol instance pointer.\r
1030   @param  KeyData                  A pointer to a buffer that is filled in with the\r
1031                                    keystroke state data for the key that was\r
1032                                    pressed.\r
1033 \r
1034   @retval EFI_SUCCESS              The keystroke information was returned.\r
1035   @retval EFI_NOT_READY            There was no keystroke data availiable.\r
1036   @retval EFI_DEVICE_ERROR         The keystroke information was not returned due\r
1037                                    to hardware errors.\r
1038   @retval EFI_INVALID_PARAMETER    KeyData is NULL.\r
1039 \r
1040 **/\r
1041 EFI_STATUS\r
1042 EFIAPI\r
1043 ConSplitterTextInReadKeyStrokeEx (\r
1044   IN  EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,\r
1045   OUT EFI_KEY_DATA                      *KeyData\r
1046   )\r
1047 ;\r
1048 \r
1049 \r
1050 /**\r
1051   Set certain state for the input device.\r
1052 \r
1053   @param  This                     Protocol instance pointer.\r
1054   @param  KeyToggleState           A pointer to the EFI_KEY_TOGGLE_STATE to set the\r
1055                                    state for the input device.\r
1056 \r
1057   @retval EFI_SUCCESS              The device state was set successfully.\r
1058   @retval EFI_DEVICE_ERROR         The device is not functioning correctly and\r
1059                                    could not have the setting adjusted.\r
1060   @retval EFI_UNSUPPORTED          The device does not have the ability to set its\r
1061                                    state.\r
1062   @retval EFI_INVALID_PARAMETER    KeyToggleState is NULL.\r
1063 \r
1064 **/\r
1065 EFI_STATUS\r
1066 EFIAPI\r
1067 ConSplitterTextInSetState (\r
1068   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
1069   IN EFI_KEY_TOGGLE_STATE               *KeyToggleState\r
1070   )\r
1071 ;\r
1072 \r
1073 \r
1074 /**\r
1075   Register a notification function for a particular keystroke for the input device.\r
1076 \r
1077   @param  This                     Protocol instance pointer.\r
1078   @param  KeyData                  A pointer to a buffer that is filled in with the\r
1079                                    keystroke information data for the key that was\r
1080                                    pressed.\r
1081   @param  KeyNotificationFunction  Points to the function to be called when the key\r
1082                                    sequence is typed specified by KeyData.\r
1083   @param  NotifyHandle             Points to the unique handle assigned to the\r
1084                                    registered notification.\r
1085 \r
1086   @retval EFI_SUCCESS              The notification function was registered\r
1087                                    successfully.\r
1088   @retval EFI_OUT_OF_RESOURCES     Unable to allocate resources for necesssary data\r
1089                                    structures.\r
1090   @retval EFI_INVALID_PARAMETER    KeyData or NotifyHandle is NULL.\r
1091 \r
1092 **/\r
1093 EFI_STATUS\r
1094 EFIAPI\r
1095 ConSplitterTextInRegisterKeyNotify (\r
1096   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
1097   IN EFI_KEY_DATA                       *KeyData,\r
1098   IN EFI_KEY_NOTIFY_FUNCTION            KeyNotificationFunction,\r
1099   OUT EFI_HANDLE                        *NotifyHandle\r
1100   )\r
1101 ;\r
1102 \r
1103 \r
1104 /**\r
1105   Remove a registered notification function from a particular keystroke.\r
1106 \r
1107   @param  This                     Protocol instance pointer.\r
1108   @param  NotificationHandle       The handle of the notification function being\r
1109                                    unregistered.\r
1110 \r
1111   @retval EFI_SUCCESS              The notification function was unregistered\r
1112                                    successfully.\r
1113   @retval EFI_INVALID_PARAMETER    The NotificationHandle is invalid.\r
1114   @retval EFI_NOT_FOUND            Can not find the matching entry in database.\r
1115 \r
1116 **/\r
1117 EFI_STATUS\r
1118 EFIAPI\r
1119 ConSplitterTextInUnregisterKeyNotify (\r
1120   IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL  *This,\r
1121   IN EFI_HANDLE                         NotificationHandle\r
1122   )\r
1123 ;\r
1124 VOID\r
1125 EFIAPI\r
1126 ConSplitterTextInWaitForKey (\r
1127   IN  EFI_EVENT                       Event,\r
1128   IN  VOID                            *Context\r
1129   )\r
1130 ;\r
1131 \r
1132 BOOLEAN\r
1133 ConSpliterConssoleControlStdInLocked (\r
1134   VOID\r
1135   )\r
1136 ;\r
1137 \r
1138 VOID\r
1139 EFIAPI\r
1140 ConSpliterConsoleControlLockStdInEvent (\r
1141   IN  EFI_EVENT                       Event,\r
1142   IN  VOID                            *Context\r
1143   )\r
1144 ;\r
1145 \r
1146 EFI_STATUS\r
1147 EFIAPI\r
1148 ConSpliterConsoleControlLockStdIn (\r
1149   IN  EFI_CONSOLE_CONTROL_PROTOCOL    *This,\r
1150   IN  CHAR16                          *Password\r
1151   )\r
1152 ;\r
1153 \r
1154 EFI_STATUS\r
1155 EFIAPI\r
1156 ConSplitterTextInPrivateReadKeyStroke (\r
1157   IN  TEXT_IN_SPLITTER_PRIVATE_DATA   *Private,\r
1158   OUT EFI_INPUT_KEY                   *Key\r
1159   )\r
1160 ;\r
1161 \r
1162 EFI_STATUS\r
1163 EFIAPI\r
1164 ConSplitterSimplePointerReset (\r
1165   IN  EFI_SIMPLE_POINTER_PROTOCOL     *This,\r
1166   IN  BOOLEAN                         ExtendedVerification\r
1167   )\r
1168 ;\r
1169 \r
1170 EFI_STATUS\r
1171 EFIAPI\r
1172 ConSplitterSimplePointerGetState (\r
1173   IN  EFI_SIMPLE_POINTER_PROTOCOL     *This,\r
1174   IN OUT EFI_SIMPLE_POINTER_STATE     *State\r
1175   )\r
1176 ;\r
1177 \r
1178 /**\r
1179   This event agregates all the events of the ConIn devices in the spliter.\r
1180   If the ConIn is password locked then return.\r
1181   If any events of physical ConIn devices are signaled, signal the ConIn\r
1182   spliter event. This will cause the calling code to call\r
1183   ConSplitterTextInReadKeyStroke ().\r
1184 \r
1185   @param  Event                    The Event assoicated with callback.\r
1186   @param  Context                  Context registered when Event was created.\r
1187 \r
1188   @return None\r
1189 \r
1190 **/\r
1191 VOID\r
1192 EFIAPI\r
1193 ConSplitterSimplePointerWaitForInput (\r
1194   IN  EFI_EVENT                       Event,\r
1195   IN  VOID                            *Context\r
1196   )\r
1197 ;\r
1198 \r
1199 //\r
1200 // TextOut I/O Functions\r
1201 //\r
1202 VOID\r
1203 ConSplitterSynchronizeModeData (\r
1204   TEXT_OUT_SPLITTER_PRIVATE_DATA      *Private\r
1205   )\r
1206 ;\r
1207 \r
1208 EFI_STATUS\r
1209 EFIAPI\r
1210 ConSplitterTextOutReset (\r
1211   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1212   IN  BOOLEAN                            ExtendedVerification\r
1213   )\r
1214 ;\r
1215 \r
1216 EFI_STATUS\r
1217 EFIAPI\r
1218 ConSplitterTextOutOutputString (\r
1219   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1220   IN  CHAR16                             *WString\r
1221   )\r
1222 ;\r
1223 \r
1224 EFI_STATUS\r
1225 EFIAPI\r
1226 ConSplitterTextOutTestString (\r
1227   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1228   IN  CHAR16                             *WString\r
1229   )\r
1230 ;\r
1231 \r
1232 EFI_STATUS\r
1233 EFIAPI\r
1234 ConSplitterTextOutQueryMode (\r
1235   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1236   IN  UINTN                              ModeNumber,\r
1237   OUT UINTN                              *Columns,\r
1238   OUT UINTN                              *Rows\r
1239   )\r
1240 ;\r
1241 \r
1242 EFI_STATUS\r
1243 EFIAPI\r
1244 ConSplitterTextOutSetMode (\r
1245   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1246   IN  UINTN                              ModeNumber\r
1247   )\r
1248 ;\r
1249 \r
1250 EFI_STATUS\r
1251 EFIAPI\r
1252 ConSplitterTextOutSetAttribute (\r
1253   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1254   IN  UINTN                              Attribute\r
1255   )\r
1256 ;\r
1257 \r
1258 EFI_STATUS\r
1259 EFIAPI\r
1260 ConSplitterTextOutClearScreen (\r
1261   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This\r
1262   )\r
1263 ;\r
1264 \r
1265 EFI_STATUS\r
1266 EFIAPI\r
1267 ConSplitterTextOutSetCursorPosition (\r
1268   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1269   IN  UINTN                              Column,\r
1270   IN  UINTN                              Row\r
1271   )\r
1272 ;\r
1273 \r
1274 EFI_STATUS\r
1275 EFIAPI\r
1276 ConSplitterTextOutEnableCursor (\r
1277   IN  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL    *This,\r
1278   IN  BOOLEAN                            Visible\r
1279   )\r
1280 ;\r
1281 \r
1282 EFI_STATUS\r
1283 ConSplitterGrowBuffer (\r
1284   IN  UINTN                           SizeOfCount,\r
1285   IN  UINTN                           *Count,\r
1286   IN OUT  VOID                        **Buffer\r
1287   )\r
1288 ;\r
1289 \r
1290 EFI_STATUS\r
1291 EFIAPI\r
1292 ConSpliterConsoleControlGetMode (\r
1293   IN  EFI_CONSOLE_CONTROL_PROTOCOL    *This,\r
1294   OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,\r
1295   OUT BOOLEAN                         *GopExists,\r
1296   OUT BOOLEAN                         *StdInLocked\r
1297   )\r
1298 ;\r
1299 \r
1300 EFI_STATUS\r
1301 EFIAPI\r
1302 ConSpliterConsoleControlSetMode (\r
1303   IN  EFI_CONSOLE_CONTROL_PROTOCOL    *This,\r
1304   IN  EFI_CONSOLE_CONTROL_SCREEN_MODE Mode\r
1305   )\r
1306 ;\r
1307 \r
1308 EFI_STATUS\r
1309 EFIAPI\r
1310 ConSpliterGraphicsOutputQueryMode (\r
1311   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL        *This,\r
1312   IN  UINT32                            ModeNumber,\r
1313   OUT UINTN                              *SizeOfInfo,\r
1314   OUT EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  **Info\r
1315   )\r
1316 ;\r
1317 \r
1318 EFI_STATUS\r
1319 EFIAPI\r
1320 ConSpliterGraphicsOutputSetMode (\r
1321   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL * This,\r
1322   IN  UINT32                       ModeNumber\r
1323   )\r
1324 ;\r
1325 \r
1326 EFI_STATUS\r
1327 EFIAPI\r
1328 ConSpliterGraphicsOutputBlt (\r
1329   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL                  *This,\r
1330   IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL                 *BltBuffer, OPTIONAL\r
1331   IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION             BltOperation,\r
1332   IN  UINTN                                         SourceX,\r
1333   IN  UINTN                                         SourceY,\r
1334   IN  UINTN                                         DestinationX,\r
1335   IN  UINTN                                         DestinationY,\r
1336   IN  UINTN                                         Width,\r
1337   IN  UINTN                                         Height,\r
1338   IN  UINTN                                         Delta         OPTIONAL\r
1339   )\r
1340 ;\r
1341 \r
1342 EFI_STATUS\r
1343 DevNullGopSync (\r
1344   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1345   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput,\r
1346   IN  EFI_UGA_DRAW_PROTOCOL           *UgaDraw\r
1347   )\r
1348 ;\r
1349 \r
1350 EFI_STATUS\r
1351 EFIAPI\r
1352 ConSpliterUgaDrawGetMode (\r
1353   IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
1354   OUT UINT32                          *HorizontalResolution,\r
1355   OUT UINT32                          *VerticalResolution,\r
1356   OUT UINT32                          *ColorDepth,\r
1357   OUT UINT32                          *RefreshRate\r
1358   )\r
1359 ;\r
1360 \r
1361 EFI_STATUS\r
1362 EFIAPI\r
1363 ConSpliterUgaDrawSetMode (\r
1364   IN  EFI_UGA_DRAW_PROTOCOL           *This,\r
1365   IN UINT32                           HorizontalResolution,\r
1366   IN UINT32                           VerticalResolution,\r
1367   IN UINT32                           ColorDepth,\r
1368   IN UINT32                           RefreshRate\r
1369   )\r
1370 ;\r
1371 \r
1372 EFI_STATUS\r
1373 EFIAPI\r
1374 ConSpliterUgaDrawBlt (\r
1375   IN  EFI_UGA_DRAW_PROTOCOL                         *This,\r
1376   IN  EFI_UGA_PIXEL                                 *BltBuffer, OPTIONAL\r
1377   IN  EFI_UGA_BLT_OPERATION                         BltOperation,\r
1378   IN  UINTN                                         SourceX,\r
1379   IN  UINTN                                         SourceY,\r
1380   IN  UINTN                                         DestinationX,\r
1381   IN  UINTN                                         DestinationY,\r
1382   IN  UINTN                                         Width,\r
1383   IN  UINTN                                         Height,\r
1384   IN  UINTN                                         Delta         OPTIONAL\r
1385   )\r
1386 ;\r
1387 \r
1388 EFI_STATUS\r
1389 DevNullUgaSync (\r
1390   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1391   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL    *GraphicsOutput,\r
1392   IN  EFI_UGA_DRAW_PROTOCOL           *UgaDraw\r
1393   )\r
1394 ;\r
1395 \r
1396 EFI_STATUS\r
1397 DevNullTextOutOutputString (\r
1398   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1399   IN  CHAR16                          *WString\r
1400   )\r
1401 ;\r
1402 \r
1403 EFI_STATUS\r
1404 DevNullTextOutSetMode (\r
1405   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1406   IN  UINTN                           ModeNumber\r
1407   )\r
1408 ;\r
1409 \r
1410 EFI_STATUS\r
1411 DevNullTextOutClearScreen (\r
1412   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private\r
1413   )\r
1414 ;\r
1415 \r
1416 EFI_STATUS\r
1417 DevNullTextOutSetCursorPosition (\r
1418   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1419   IN  UINTN                           Column,\r
1420   IN  UINTN                           Row\r
1421   )\r
1422 ;\r
1423 \r
1424 EFI_STATUS\r
1425 DevNullTextOutEnableCursor (\r
1426   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private,\r
1427   IN  BOOLEAN                         Visible\r
1428   )\r
1429 ;\r
1430 \r
1431 EFI_STATUS\r
1432 DevNullSyncStdOut (\r
1433   IN  TEXT_OUT_SPLITTER_PRIVATE_DATA  *Private\r
1434   )\r
1435 ;\r
1436 \r
1437 #endif\r