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