]> git.proxmox.com Git - mirror_edk2.git/blame - EdkModulePkg/Universal/Console/Terminal/Dxe/Terminal.h
Fix some cleanall issues
[mirror_edk2.git] / EdkModulePkg / Universal / Console / Terminal / Dxe / Terminal.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 terminal.h\r
15\r
16Abstract:\r
17\r
18 \r
19Revision History\r
20\r
21--*/\r
22\r
23#ifndef _TERMINAL_H\r
24#define _TERMINAL_H\r
25\r
26#define RAW_FIFO_MAX_NUMBER 256\r
27#define FIFO_MAX_NUMBER 128\r
28\r
29typedef struct {\r
30 UINT8 Head;\r
31 UINT8 Tail;\r
32 UINT8 Data[RAW_FIFO_MAX_NUMBER + 1];\r
33} RAW_DATA_FIFO;\r
34\r
35typedef struct {\r
36 UINT8 Head;\r
37 UINT8 Tail;\r
38 UINT16 Data[FIFO_MAX_NUMBER + 1];\r
39} UNICODE_FIFO;\r
40\r
41typedef struct {\r
42 UINT8 Head;\r
43 UINT8 Tail;\r
44 EFI_INPUT_KEY Data[FIFO_MAX_NUMBER + 1];\r
45} EFI_KEY_FIFO;\r
46\r
47#define TERMINAL_DEV_SIGNATURE EFI_SIGNATURE_32 ('t', 'm', 'n', 'l')\r
48\r
49typedef struct {\r
50 UINTN Signature;\r
51 EFI_HANDLE Handle;\r
52 UINT8 TerminalType;\r
53 EFI_SERIAL_IO_PROTOCOL *SerialIo;\r
54 EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
55 VENDOR_DEVICE_PATH Node;\r
56 EFI_SIMPLE_TEXT_IN_PROTOCOL SimpleInput;\r
57 EFI_SIMPLE_TEXT_OUT_PROTOCOL SimpleTextOutput;\r
58 EFI_SIMPLE_TEXT_OUTPUT_MODE SimpleTextOutputMode;\r
59 UINTN SerialInTimeOut;\r
60 RAW_DATA_FIFO RawFiFo;\r
61 UNICODE_FIFO UnicodeFiFo;\r
62 EFI_KEY_FIFO EfiKeyFiFo;\r
63 EFI_UNICODE_STRING_TABLE *ControllerNameTable;\r
64 EFI_EVENT TwoSecondTimeOut;\r
65 UINT32 InputState;\r
66 UINT32 ResetState;\r
67\r
68 //\r
69 // Esc could not be output to the screen by user,\r
70 // but the terminal driver need to output it to\r
71 // the terminal emulation software to send control sequence.\r
72 // This boolean is used by the terminal driver only\r
73 // to indicate whether the Esc could be sent or not.\r
74 //\r
75 BOOLEAN OutputEscChar;\r
76} TERMINAL_DEV;\r
77\r
78#define INPUT_STATE_DEFAULT 0x00\r
79#define INPUT_STATE_ESC 0x01\r
80#define INPUT_STATE_CSI 0x02\r
81#define INPUT_STATE_LEFTOPENBRACKET 0x04\r
82#define INPUT_STATE_O 0x08\r
83#define INPUT_STATE_2 0x10\r
84\r
85#define RESET_STATE_DEFAULT 0x00\r
86#define RESET_STATE_ESC_R 0x01\r
87#define RESET_STATE_ESC_R_ESC_r 0x02\r
88\r
89#define TERMINAL_CON_IN_DEV_FROM_THIS(a) CR (a, TERMINAL_DEV, SimpleInput, TERMINAL_DEV_SIGNATURE)\r
90#define TERMINAL_CON_OUT_DEV_FROM_THIS(a) CR (a, TERMINAL_DEV, SimpleTextOutput, TERMINAL_DEV_SIGNATURE)\r
91\r
92typedef union {\r
93 UINT8 Utf8_1;\r
94 UINT8 Utf8_2[2];\r
95 UINT8 Utf8_3[3];\r
96} UTF8_CHAR;\r
97\r
98#define PcAnsiType 0\r
99#define VT100Type 1\r
100#define VT100PlusType 2\r
101#define VTUTF8Type 3\r
102\r
103#define LEFTOPENBRACKET 0x5b // '['\r
104#define ACAP 0x41\r
105#define BCAP 0x42\r
106#define CCAP 0x43\r
107#define DCAP 0x44\r
108\r
109#define MODE0_COLUMN_COUNT 80\r
110#define MODE0_ROW_COUNT 25\r
111\r
112#define BACKSPACE 8\r
113#define ESC 27\r
114#define CSI 0x9B\r
115#define DEL 127\r
116#define BRIGHT_CONTROL_OFFSET 2\r
117#define FOREGROUND_CONTROL_OFFSET 6\r
118#define BACKGROUND_CONTROL_OFFSET 11\r
119#define ROW_OFFSET 2\r
120#define COLUMN_OFFSET 5\r
121\r
122typedef struct {\r
123 UINT16 Unicode;\r
124 CHAR8 PcAnsi;\r
125 CHAR8 Ascii;\r
126} UNICODE_TO_CHAR;\r
127\r
128#define VarConsoleInpDev L"ConInDev"\r
129#define VarConsoleOutDev L"ConOutDev"\r
130#define VarErrorOutDev L"ErrOutDev"\r
131\r
132//\r
133// Global Variables\r
134//\r
135extern EFI_DRIVER_BINDING_PROTOCOL gTerminalDriverBinding;\r
136extern EFI_COMPONENT_NAME_PROTOCOL gTerminalComponentName;\r
137\r
138//\r
139// Prototypes\r
140//\r
141EFI_STATUS\r
142EFIAPI\r
143InitializeTerminal (\r
144 IN EFI_HANDLE ImageHandle,\r
145 IN EFI_SYSTEM_TABLE *SystemTable\r
146 )\r
147;\r
148\r
149EFI_STATUS\r
150EFIAPI\r
151TerminalConInReset (\r
152 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *This,\r
153 IN BOOLEAN ExtendedVerification\r
154 )\r
155;\r
156\r
157EFI_STATUS\r
158EFIAPI\r
159TerminalConInReadKeyStroke (\r
160 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *This,\r
161 OUT EFI_INPUT_KEY *Key\r
162 )\r
163;\r
164\r
165VOID\r
166EFIAPI\r
167TerminalConInWaitForKey (\r
168 IN EFI_EVENT Event,\r
169 IN VOID *Context\r
170 )\r
171;\r
172\r
173EFI_STATUS\r
174EFIAPI\r
175TerminalConOutReset (\r
176 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
177 IN BOOLEAN ExtendedVerification\r
178 )\r
179;\r
180\r
181EFI_STATUS\r
182EFIAPI\r
183TerminalConOutOutputString (\r
184 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
185 IN CHAR16 *WString\r
186 )\r
187;\r
188\r
189EFI_STATUS\r
190EFIAPI\r
191TerminalConOutTestString (\r
192 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
193 IN CHAR16 *WString\r
194 )\r
195;\r
196\r
197EFI_STATUS\r
198EFIAPI\r
199TerminalConOutQueryMode (\r
200 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
201 IN UINTN ModeNumber,\r
202 OUT UINTN *Columns,\r
203 OUT UINTN *Rows\r
204 )\r
205;\r
206\r
207EFI_STATUS\r
208EFIAPI\r
209TerminalConOutSetMode (\r
210 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
211 IN UINTN ModeNumber\r
212 )\r
213;\r
214\r
215EFI_STATUS\r
216EFIAPI\r
217TerminalConOutSetAttribute (\r
218 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
219 IN UINTN Attribute\r
220 )\r
221;\r
222\r
223EFI_STATUS\r
224EFIAPI\r
225TerminalConOutClearScreen (\r
226 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This\r
227 )\r
228;\r
229\r
230EFI_STATUS\r
231EFIAPI\r
232TerminalConOutSetCursorPosition (\r
233 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
234 IN UINTN Column,\r
235 IN UINTN Row\r
236 )\r
237;\r
238\r
239EFI_STATUS\r
240EFIAPI\r
241TerminalConOutEnableCursor (\r
242 IN EFI_SIMPLE_TEXT_OUT_PROTOCOL *This,\r
243 IN BOOLEAN Visible\r
244 )\r
245;\r
246\r
247//\r
248// internal functions\r
249//\r
250EFI_STATUS\r
251TerminalConInCheckForKey (\r
252 IN EFI_SIMPLE_TEXT_IN_PROTOCOL *This\r
253 )\r
254;\r
255\r
256VOID\r
257TerminalUpdateConsoleDevVariable (\r
258 IN CHAR16 *VariableName,\r
259 IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath\r
260 )\r
261;\r
262\r
263VOID\r
264TerminalRemoveConsoleDevVariable (\r
265 IN CHAR16 *VariableName,\r
266 IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath\r
267 )\r
268;\r
269\r
270VOID *\r
271TerminalGetVariableAndSize (\r
272 IN CHAR16 *Name,\r
273 IN EFI_GUID *VendorGuid,\r
274 OUT UINTN *VariableSize\r
275 )\r
276;\r
277\r
278EFI_STATUS\r
279SetTerminalDevicePath (\r
280 IN UINT8 TerminalType,\r
281 IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,\r
282 OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath\r
283 )\r
284;\r
285\r
286VOID\r
287InitializeRawFiFo (\r
288 IN TERMINAL_DEV *TerminalDevice\r
289 )\r
290;\r
291\r
292VOID\r
293InitializeUnicodeFiFo (\r
294 IN TERMINAL_DEV *TerminalDevice\r
295 )\r
296;\r
297\r
298VOID\r
299InitializeEfiKeyFiFo (\r
300 IN TERMINAL_DEV *TerminalDevice\r
301 )\r
302;\r
303\r
304EFI_STATUS\r
305GetOneKeyFromSerial (\r
306 EFI_SERIAL_IO_PROTOCOL *SerialIo,\r
307 UINT8 *Input\r
308 )\r
309;\r
310\r
311BOOLEAN\r
312RawFiFoInsertOneKey (\r
313 TERMINAL_DEV *TerminalDevice,\r
314 UINT8 Input\r
315 )\r
316;\r
317\r
318BOOLEAN\r
319RawFiFoRemoveOneKey (\r
320 TERMINAL_DEV *TerminalDevice,\r
321 UINT8 *Output\r
322 )\r
323;\r
324\r
325BOOLEAN\r
326IsRawFiFoEmpty (\r
327 TERMINAL_DEV *TerminalDevice\r
328 )\r
329;\r
330\r
331BOOLEAN\r
332IsRawFiFoFull (\r
333 TERMINAL_DEV *TerminalDevice\r
334 )\r
335;\r
336\r
337BOOLEAN\r
338EfiKeyFiFoInsertOneKey (\r
339 TERMINAL_DEV *TerminalDevice,\r
340 EFI_INPUT_KEY Key\r
341 )\r
342;\r
343\r
344BOOLEAN\r
345EfiKeyFiFoRemoveOneKey (\r
346 TERMINAL_DEV *TerminalDevice,\r
347 EFI_INPUT_KEY *Output\r
348 )\r
349;\r
350\r
351BOOLEAN\r
352IsEfiKeyFiFoEmpty (\r
353 TERMINAL_DEV *TerminalDevice\r
354 )\r
355;\r
356\r
357BOOLEAN\r
358IsEfiKeyFiFoFull (\r
359 TERMINAL_DEV *TerminalDevice\r
360 )\r
361;\r
362\r
363BOOLEAN\r
364UnicodeFiFoInsertOneKey (\r
365 TERMINAL_DEV *TerminalDevice,\r
366 UINT16 Input\r
367 )\r
368;\r
369\r
370BOOLEAN\r
371UnicodeFiFoRemoveOneKey (\r
372 TERMINAL_DEV *TerminalDevice,\r
373 UINT16 *Output\r
374 )\r
375;\r
376\r
377BOOLEAN\r
378IsUnicodeFiFoEmpty (\r
379 TERMINAL_DEV *TerminalDevice\r
380 )\r
381;\r
382\r
383BOOLEAN\r
384IsUnicodeFiFoFull (\r
385 TERMINAL_DEV *TerminalDevice\r
386 )\r
387;\r
388\r
389UINT8\r
390UnicodeFiFoGetKeyCount (\r
391 TERMINAL_DEV *TerminalDevice\r
392 )\r
393;\r
394\r
395VOID\r
396TranslateRawDataToEfiKey (\r
397 IN TERMINAL_DEV *TerminalDevice\r
398 )\r
399;\r
400\r
401//\r
402// internal functions for PC ANSI\r
403//\r
404VOID\r
405AnsiRawDataToUnicode (\r
406 IN TERMINAL_DEV *PcAnsiDevice\r
407 )\r
408;\r
409\r
410VOID\r
411UnicodeToEfiKey (\r
412 IN TERMINAL_DEV *PcAnsiDevice\r
413 )\r
414;\r
415\r
416EFI_STATUS\r
417AnsiTestString (\r
418 IN TERMINAL_DEV *TerminalDevice,\r
419 IN CHAR16 *WString\r
420 )\r
421;\r
422\r
423//\r
424// internal functions for VT100\r
425//\r
426EFI_STATUS\r
427VT100TestString (\r
428 IN TERMINAL_DEV *VT100Device,\r
429 IN CHAR16 *WString\r
430 )\r
431;\r
432\r
433//\r
434// internal functions for VT100Plus\r
435//\r
436EFI_STATUS\r
437VT100PlusTestString (\r
438 IN TERMINAL_DEV *TerminalDevice,\r
439 IN CHAR16 *WString\r
440 )\r
441;\r
442\r
443//\r
444// internal functions for VTUTF8\r
445//\r
446VOID\r
447VTUTF8RawDataToUnicode (\r
448 IN TERMINAL_DEV *VtUtf8Device\r
449 )\r
450;\r
451\r
452EFI_STATUS\r
453VTUTF8TestString (\r
454 IN TERMINAL_DEV *TerminalDevice,\r
455 IN CHAR16 *WString\r
456 )\r
457;\r
458\r
459VOID\r
460UnicodeToUtf8 (\r
461 IN CHAR16 Unicode,\r
462 OUT UTF8_CHAR *Utf8Char,\r
463 OUT UINT8 *ValidBytes\r
464 )\r
465;\r
466\r
467VOID\r
468GetOneValidUtf8Char (\r
469 IN TERMINAL_DEV *Utf8Device,\r
470 OUT UTF8_CHAR *Utf8Char,\r
471 OUT UINT8 *ValidBytes\r
472 )\r
473;\r
474\r
475VOID\r
476Utf8ToUnicode (\r
477 IN UTF8_CHAR Utf8Char,\r
478 IN UINT8 ValidBytes,\r
479 OUT CHAR16 *UnicodeChar\r
480 )\r
481;\r
482\r
483//\r
484// functions for boxdraw unicode\r
485//\r
486BOOLEAN\r
487TerminalIsValidTextGraphics (\r
488 IN CHAR16 Graphic,\r
489 OUT CHAR8 *PcAnsi, OPTIONAL\r
490 OUT CHAR8 *Ascii OPTIONAL\r
491 )\r
492;\r
493\r
494BOOLEAN\r
495TerminalIsValidAscii (\r
496 IN CHAR16 Ascii\r
497 )\r
498;\r
499\r
500BOOLEAN\r
501TerminalIsValidEfiCntlChar (\r
502 IN CHAR16 CharC\r
503 )\r
504;\r
505\r
506#endif\r