]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/Console/ConSplitter/Dxe/ConSplitter.h
Updated MSA by putting Specification element at the end of the header section
[mirror_edk2.git] / EdkModulePkg / Universal / Console / ConSplitter / Dxe / ConSplitter.h
CommitLineData
878ddf1f 1/*++\r
2\r
3Copyright (c) 2006, Intel Corporation \r
4All rights reserved. This program and the accompanying materials \r
5are licensed and made available under the terms and conditions of the BSD License \r
6which accompanies this distribution. The full text of the license may be found at \r
7http://opensource.org/licenses/bsd-license.php \r
8 \r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
11\r
12Module Name:\r
13\r
14 ConSplitter.h\r
15\r
16Abstract:\r
17\r
18 Private data structures for the Console Splitter driver\r
19\r
20--*/\r
21\r
22#ifndef SPLITER_H_\r
23#define SPLITER_H_\r
24\r
25//\r
26// Private Data Structures\r
27//\r
28#define CONSOLE_SPLITTER_CONSOLES_ALLOC_UNIT 32\r
29#define CONSOLE_SPLITTER_MODES_ALLOC_UNIT 32\r
30#define MAX_STD_IN_PASSWORD 80\r
31\r
32typedef struct {\r
33 UINTN Columns;\r
34 UINTN Rows;\r
35} TEXT_OUT_SPLITTER_QUERY_DATA;\r
36\r
37//\r
38// Private data for the EFI_SIMPLE_INPUT_PROTOCOL splitter\r
39//\r
40#define TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'i', 'S', 'p')\r
41\r
42typedef struct {\r
43 UINT64 Signature;\r
44 EFI_HANDLE VirtualHandle;\r
45\r
46 EFI_SIMPLE_TEXT_IN_PROTOCOL TextIn;\r
47 UINTN CurrentNumberOfConsoles;\r
48 EFI_SIMPLE_TEXT_IN_PROTOCOL **TextInList;\r
49 UINTN TextInListCount;\r
50\r
51 EFI_SIMPLE_POINTER_PROTOCOL SimplePointer;\r
52 EFI_SIMPLE_POINTER_MODE SimplePointerMode;\r
53 UINTN CurrentNumberOfPointers;\r
54 EFI_SIMPLE_POINTER_PROTOCOL **PointerList;\r
55 UINTN PointerListCount;\r
56\r
57 BOOLEAN PasswordEnabled;\r
58 CHAR16 Password[MAX_STD_IN_PASSWORD];\r
59 UINTN PwdIndex;\r
60 CHAR16 PwdAttempt[MAX_STD_IN_PASSWORD];\r
61 EFI_EVENT LockEvent;\r
62\r
63 BOOLEAN KeyEventSignalState;\r
64 BOOLEAN InputEventSignalState;\r
65} TEXT_IN_SPLITTER_PRIVATE_DATA;\r
66\r
67#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
68 CR (a, \\r
69 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
70 TextIn, \\r
71 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
72 )\r
73\r
74#define TEXT_IN_SPLITTER_PRIVATE_DATA_FROM_SIMPLE_POINTER_THIS(a) \\r
75 CR (a, \\r
76 TEXT_IN_SPLITTER_PRIVATE_DATA, \\r
77 SimplePointer, \\r
78 TEXT_IN_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
79 )\r
80\r
81//\r
82// Private data for the EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL splitter\r
83//\r
84#define TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('T', 'o', 'S', 'p')\r
85\r
86typedef struct {\r
87 EFI_UGA_DRAW_PROTOCOL *UgaDraw;\r
88 EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut;\r
89 BOOLEAN TextOutEnabled;\r
90} TEXT_OUT_AND_UGA_DATA;\r
91\r
92typedef struct {\r
93 UINT64 Signature;\r
94 EFI_HANDLE VirtualHandle;\r
95 EFI_SIMPLE_TEXT_OUT_PROTOCOL TextOut;\r
96 EFI_SIMPLE_TEXT_OUTPUT_MODE TextOutMode;\r
97 EFI_UGA_DRAW_PROTOCOL UgaDraw;\r
98 UINT32 UgaHorizontalResolution;\r
99 UINT32 UgaVerticalResolution;\r
100 UINT32 UgaColorDepth;\r
101 UINT32 UgaRefreshRate;\r
102 EFI_UGA_PIXEL *UgaBlt;\r
103\r
104 EFI_CONSOLE_CONTROL_PROTOCOL ConsoleControl;\r
105\r
106 UINTN CurrentNumberOfConsoles;\r
107 TEXT_OUT_AND_UGA_DATA *TextOutList;\r
108 UINTN TextOutListCount;\r
109 TEXT_OUT_SPLITTER_QUERY_DATA *TextOutQueryData;\r
110 UINTN TextOutQueryDataCount;\r
111 INT32 *TextOutModeMap;\r
112\r
113 EFI_CONSOLE_CONTROL_SCREEN_MODE UgaMode;\r
114\r
115 UINTN DevNullColumns;\r
116 UINTN DevNullRows;\r
117 CHAR16 *DevNullScreen;\r
118 INT32 *DevNullAttributes;\r
119\r
120} TEXT_OUT_SPLITTER_PRIVATE_DATA;\r
121\r
122#define TEXT_OUT_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
123 CR (a, \\r
124 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
125 TextOut, \\r
126 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
127 )\r
128\r
129#define UGA_DRAW_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
130 CR (a, \\r
131 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
132 UgaDraw, \\r
133 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
134 )\r
135\r
136#define CONSOLE_CONTROL_SPLITTER_PRIVATE_DATA_FROM_THIS(a) \\r
137 CR (a, \\r
138 TEXT_OUT_SPLITTER_PRIVATE_DATA, \\r
139 ConsoleControl, \\r
140 TEXT_OUT_SPLITTER_PRIVATE_DATA_SIGNATURE \\r
141 )\r
142\r
143//\r
144// Function Prototypes\r
145//\r
146EFI_STATUS\r
147EFIAPI\r
148ConSplitterDriverEntry (\r
149 IN EFI_HANDLE ImageHandle,\r
150 IN EFI_SYSTEM_TABLE *SystemTable\r
151 )\r
152;\r
153\r
154\r
155EFI_STATUS\r
156ConSplitterTextInConstructor (\r
157 TEXT_IN_SPLITTER_PRIVATE_DATA *Private\r
158 )\r
159;\r
160\r
161\r
162EFI_STATUS\r
163ConSplitterTextOutConstructor (\r
164 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
165 )\r
166;\r
167\r
168//\r
169// Driver Binding Functions\r
170//\r
171\r
172EFI_STATUS\r
173EFIAPI\r
174ConSplitterConInDriverBindingSupported (\r
175 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
176 IN EFI_HANDLE ControllerHandle,\r
177 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
178 )\r
179;\r
180\r
181\r
182EFI_STATUS\r
183EFIAPI\r
184ConSplitterSimplePointerDriverBindingSupported (\r
185 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
186 IN EFI_HANDLE ControllerHandle,\r
187 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
188 )\r
189;\r
190\r
191\r
192EFI_STATUS\r
193EFIAPI\r
194ConSplitterConOutDriverBindingSupported (\r
195 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
196 IN EFI_HANDLE ControllerHandle,\r
197 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
198 )\r
199;\r
200\r
201\r
202EFI_STATUS\r
203EFIAPI\r
204ConSplitterStdErrDriverBindingSupported (\r
205 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
206 IN EFI_HANDLE ControllerHandle,\r
207 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
208 )\r
209;\r
210\r
211\r
212EFI_STATUS\r
213EFIAPI\r
214ConSplitterConInDriverBindingStart (\r
215 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
216 IN EFI_HANDLE ControllerHandle,\r
217 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
218 )\r
219;\r
220\r
221\r
222EFI_STATUS\r
223EFIAPI\r
224ConSplitterSimplePointerDriverBindingStart (\r
225 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
226 IN EFI_HANDLE ControllerHandle,\r
227 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
228 )\r
229;\r
230\r
231\r
232EFI_STATUS\r
233EFIAPI\r
234ConSplitterConOutDriverBindingStart (\r
235 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
236 IN EFI_HANDLE ControllerHandle,\r
237 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
238 )\r
239;\r
240\r
241\r
242EFI_STATUS\r
243EFIAPI\r
244ConSplitterStdErrDriverBindingStart (\r
245 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
246 IN EFI_HANDLE ControllerHandle,\r
247 IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath\r
248 )\r
249;\r
250\r
251\r
252EFI_STATUS\r
253EFIAPI\r
254ConSplitterConInDriverBindingStop (\r
255 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
256 IN EFI_HANDLE ControllerHandle,\r
257 IN UINTN NumberOfChildren,\r
258 IN EFI_HANDLE *ChildHandleBuffer\r
259 )\r
260;\r
261\r
262\r
263EFI_STATUS\r
264EFIAPI\r
265ConSplitterSimplePointerDriverBindingStop (\r
266 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
267 IN EFI_HANDLE ControllerHandle,\r
268 IN UINTN NumberOfChildren,\r
269 IN EFI_HANDLE *ChildHandleBuffer\r
270 )\r
271;\r
272\r
273\r
274EFI_STATUS\r
275EFIAPI\r
276ConSplitterConOutDriverBindingStop (\r
277 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
278 IN EFI_HANDLE ControllerHandle,\r
279 IN UINTN NumberOfChildren,\r
280 IN EFI_HANDLE *ChildHandleBuffer\r
281 )\r
282;\r
283\r
284\r
285EFI_STATUS\r
286EFIAPI\r
287ConSplitterStdErrDriverBindingStop (\r
288 IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
289 IN EFI_HANDLE ControllerHandle,\r
290 IN UINTN NumberOfChildren,\r
291 IN EFI_HANDLE *ChildHandleBuffer\r
292 )\r
293;\r
294\r
295//\r
296// TextIn Constructor/Destructor functions\r
297//\r
298EFI_STATUS\r
299ConSplitterTextInAddDevice (\r
300 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
301 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *TextIn\r
302 )\r
303;\r
304\r
305EFI_STATUS\r
306ConSplitterTextInDeleteDevice (\r
307 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
308 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *TextIn\r
309 )\r
310;\r
311\r
312//\r
313// SimplePointer Constuctor/Destructor functions\r
314//\r
315EFI_STATUS\r
316ConSplitterSimplePointerAddDevice (\r
317 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
318 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
319 )\r
320;\r
321\r
322EFI_STATUS\r
323ConSplitterSimplePointerDeleteDevice (\r
324 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
325 IN EFI_SIMPLE_POINTER_PROTOCOL *SimplePointer\r
326 )\r
327;\r
328\r
329//\r
330// TextOut Constuctor/Destructor functions\r
331//\r
332EFI_STATUS\r
333ConSplitterTextOutAddDevice (\r
334 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
335 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut,\r
336 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
337 )\r
338;\r
339\r
340EFI_STATUS\r
341ConSplitterTextOutDeleteDevice (\r
342 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
343 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut\r
344 )\r
345;\r
346\r
347//\r
348// TextIn I/O Functions\r
349//\r
350EFI_STATUS\r
351EFIAPI\r
352ConSplitterTextInReset (\r
353 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *This,\r
354 IN BOOLEAN ExtendedVerification\r
355 )\r
356;\r
357\r
358EFI_STATUS\r
359EFIAPI\r
360ConSplitterTextInReadKeyStroke (\r
361 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *This,\r
362 OUT EFI_INPUT_KEY *Key\r
363 )\r
364;\r
365\r
366VOID\r
367EFIAPI\r
368ConSplitterTextInWaitForKey (\r
369 IN EFI_EVENT Event,\r
370 IN VOID *Context\r
371 )\r
372;\r
373\r
374BOOLEAN\r
375ConSpliterConssoleControlStdInLocked (\r
376 VOID\r
377 )\r
378;\r
379\r
380VOID\r
381EFIAPI\r
382ConSpliterConsoleControlLockStdInEvent (\r
383 IN EFI_EVENT Event,\r
384 IN VOID *Context\r
385 )\r
386;\r
387\r
388EFI_STATUS\r
389EFIAPI\r
390ConSpliterConsoleControlLockStdIn (\r
391 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
392 IN CHAR16 *Password\r
393 )\r
394;\r
395\r
396EFI_STATUS\r
397EFIAPI\r
398ConSplitterTextInPrivateReadKeyStroke (\r
399 IN TEXT_IN_SPLITTER_PRIVATE_DATA *Private,\r
400 OUT EFI_INPUT_KEY *Key\r
401 )\r
402;\r
403\r
404EFI_STATUS\r
405EFIAPI\r
406ConSplitterSimplePointerReset (\r
407 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
408 IN BOOLEAN ExtendedVerification\r
409 )\r
410;\r
411\r
412EFI_STATUS\r
413EFIAPI\r
414ConSplitterSimplePointerGetState (\r
415 IN EFI_SIMPLE_POINTER_PROTOCOL *This,\r
416 IN OUT EFI_SIMPLE_POINTER_STATE *State\r
417 )\r
418;\r
419\r
420VOID\r
421EFIAPI\r
422ConSplitterSimplePointerWaitForInput (\r
423 IN EFI_EVENT Event,\r
424 IN VOID *Context\r
425 )\r
426;\r
427\r
428//\r
429// TextOut I/O Functions\r
430//\r
431VOID\r
432ConSplitterSynchronizeModeData (\r
433 TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
434 )\r
435;\r
436\r
437EFI_STATUS\r
438EFIAPI\r
439ConSplitterTextOutReset (\r
440 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
441 IN BOOLEAN ExtendedVerification\r
442 )\r
443;\r
444\r
445EFI_STATUS\r
446EFIAPI\r
447ConSplitterTextOutOutputString (\r
448 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
449 IN CHAR16 *WString\r
450 )\r
451;\r
452\r
453EFI_STATUS\r
454EFIAPI\r
455ConSplitterTextOutTestString (\r
456 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
457 IN CHAR16 *WString\r
458 )\r
459;\r
460\r
461EFI_STATUS\r
462EFIAPI\r
463ConSplitterTextOutQueryMode (\r
464 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
465 IN UINTN ModeNumber,\r
466 OUT UINTN *Columns,\r
467 OUT UINTN *Rows\r
468 )\r
469;\r
470\r
471EFI_STATUS\r
472EFIAPI\r
473ConSplitterTextOutSetMode (\r
474 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
475 IN UINTN ModeNumber\r
476 )\r
477;\r
478\r
479EFI_STATUS\r
480EFIAPI\r
481ConSplitterTextOutSetAttribute (\r
482 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
483 IN UINTN Attribute\r
484 )\r
485;\r
486\r
487EFI_STATUS\r
488EFIAPI\r
489ConSplitterTextOutClearScreen (\r
490 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This\r
491 )\r
492;\r
493\r
494EFI_STATUS\r
495EFIAPI\r
496ConSplitterTextOutSetCursorPosition (\r
497 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
498 IN UINTN Column,\r
499 IN UINTN Row\r
500 )\r
501;\r
502\r
503EFI_STATUS\r
504EFIAPI\r
505ConSplitterTextOutEnableCursor (\r
506 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
507 IN BOOLEAN Visible\r
508 )\r
509;\r
510\r
511EFI_STATUS\r
512ConSplitterGrowBuffer (\r
513 IN UINTN SizeOfCount,\r
514 IN UINTN *Count,\r
515 IN OUT VOID **Buffer\r
516 )\r
517;\r
518\r
519EFI_STATUS\r
520EFIAPI\r
521ConSpliterConsoleControlGetMode (\r
522 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
523 OUT EFI_CONSOLE_CONTROL_SCREEN_MODE *Mode,\r
524 OUT BOOLEAN *UgaExists,\r
525 OUT BOOLEAN *StdInLocked\r
526 )\r
527;\r
528\r
529EFI_STATUS\r
530EFIAPI\r
531ConSpliterConsoleControlSetMode (\r
532 IN EFI_CONSOLE_CONTROL_PROTOCOL *This,\r
533 IN EFI_CONSOLE_CONTROL_SCREEN_MODE Mode\r
534 )\r
535;\r
536\r
537EFI_STATUS\r
538EFIAPI\r
539ConSpliterUgaDrawGetMode (\r
540 IN EFI_UGA_DRAW_PROTOCOL *This,\r
541 OUT UINT32 *HorizontalResolution,\r
542 OUT UINT32 *VerticalResolution,\r
543 OUT UINT32 *ColorDepth,\r
544 OUT UINT32 *RefreshRate\r
545 )\r
546;\r
547\r
548EFI_STATUS\r
549EFIAPI\r
550ConSpliterUgaDrawSetMode (\r
551 IN EFI_UGA_DRAW_PROTOCOL *This,\r
552 IN UINT32 HorizontalResolution,\r
553 IN UINT32 VerticalResolution,\r
554 IN UINT32 ColorDepth,\r
555 IN UINT32 RefreshRate\r
556 )\r
557;\r
558\r
559EFI_STATUS\r
560EFIAPI\r
561ConSpliterUgaDrawBlt (\r
562 IN EFI_UGA_DRAW_PROTOCOL *This,\r
563 IN EFI_UGA_PIXEL *BltBuffer, OPTIONAL\r
564 IN EFI_UGA_BLT_OPERATION BltOperation,\r
565 IN UINTN SourceX,\r
566 IN UINTN SourceY,\r
567 IN UINTN DestinationX,\r
568 IN UINTN DestinationY,\r
569 IN UINTN Width,\r
570 IN UINTN Height,\r
571 IN UINTN Delta OPTIONAL\r
572 )\r
573;\r
574\r
575EFI_STATUS\r
576DevNullUgaSync (\r
577 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
578 IN EFI_UGA_DRAW_PROTOCOL *UgaDraw\r
579 )\r
580;\r
581\r
582EFI_STATUS\r
583DevNullTextOutOutputString (\r
584 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
585 IN CHAR16 *WString\r
586 )\r
587;\r
588\r
589EFI_STATUS\r
590DevNullTextOutSetMode (\r
591 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
592 IN UINTN ModeNumber\r
593 )\r
594;\r
595\r
596EFI_STATUS\r
597DevNullTextOutClearScreen (\r
598 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
599 )\r
600;\r
601\r
602EFI_STATUS\r
603DevNullTextOutSetCursorPosition (\r
604 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
605 IN UINTN Column,\r
606 IN UINTN Row\r
607 )\r
608;\r
609\r
610EFI_STATUS\r
611DevNullTextOutEnableCursor (\r
612 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private,\r
613 IN BOOLEAN Visible\r
614 )\r
615;\r
616\r
617EFI_STATUS\r
618DevNullSyncUgaStdOut (\r
619 IN TEXT_OUT_SPLITTER_PRIVATE_DATA *Private\r
620 )\r
621;\r
622\r
623#endif\r