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