Subversion Repositories HelenOS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #ifndef _EFI_CON_H
  2. #define _EFI_CON_H
  3.  
  4. /*++
  5.  
  6. Copyright (c) 1998  Intel Corporation
  7.  
  8. Module Name:
  9.  
  10.     eficon.h
  11.  
  12. Abstract:
  13.  
  14.     EFI console protocols
  15.  
  16.  
  17.  
  18. Revision History
  19.  
  20. --*/
  21.  
  22. //
  23. // Text output protocol
  24. //
  25.  
  26. #define SIMPLE_TEXT_OUTPUT_PROTOCOL \
  27.     { 0x387477c2, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
  28.  
  29. INTERFACE_DECL(_SIMPLE_TEXT_OUTPUT_INTERFACE);
  30.  
  31. typedef
  32. EFI_STATUS
  33. (EFIAPI *EFI_TEXT_RESET) (
  34.     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
  35.     IN BOOLEAN                      ExtendedVerification
  36.     );
  37.  
  38. typedef
  39. EFI_STATUS
  40. (EFIAPI *EFI_TEXT_OUTPUT_STRING) (
  41.     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
  42.     IN CHAR16                       *String
  43.     );
  44.  
  45. typedef
  46. EFI_STATUS
  47. (EFIAPI *EFI_TEXT_TEST_STRING) (
  48.     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
  49.     IN CHAR16                       *String
  50.     );
  51.  
  52. typedef
  53. EFI_STATUS
  54. (EFIAPI *EFI_TEXT_QUERY_MODE) (
  55.     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
  56.     IN UINTN                        ModeNumber,
  57.     OUT UINTN                       *Columns,
  58.     OUT UINTN                       *Rows
  59.     );
  60.  
  61. typedef
  62. EFI_STATUS
  63. (EFIAPI *EFI_TEXT_SET_MODE) (
  64.     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
  65.     IN UINTN                        ModeNumber
  66.     );
  67.  
  68. typedef
  69. EFI_STATUS
  70. (EFIAPI *EFI_TEXT_SET_ATTRIBUTE) (
  71.     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
  72.     IN UINTN                        Attribute
  73.     );
  74.  
  75. #define EFI_BLACK   0x00
  76. #define EFI_BLUE    0x01
  77. #define EFI_GREEN   0x02
  78. #define EFI_CYAN            (EFI_BLUE | EFI_GREEN)
  79. #define EFI_RED     0x04
  80. #define EFI_MAGENTA         (EFI_BLUE | EFI_RED)
  81. #define EFI_BROWN           (EFI_GREEN | EFI_RED)
  82. #define EFI_LIGHTGRAY       (EFI_BLUE | EFI_GREEN | EFI_RED)
  83. #define EFI_BRIGHT  0x08
  84. #define EFI_DARKGRAY        (EFI_BRIGHT)
  85. #define EFI_LIGHTBLUE       (EFI_BLUE | EFI_BRIGHT)
  86. #define EFI_LIGHTGREEN      (EFI_GREEN | EFI_BRIGHT)
  87. #define EFI_LIGHTCYAN       (EFI_CYAN | EFI_BRIGHT)
  88. #define EFI_LIGHTRED        (EFI_RED | EFI_BRIGHT)
  89. #define EFI_LIGHTMAGENTA    (EFI_MAGENTA | EFI_BRIGHT)
  90. #define EFI_YELLOW          (EFI_BROWN | EFI_BRIGHT)
  91. #define EFI_WHITE           (EFI_BLUE | EFI_GREEN | EFI_RED | EFI_BRIGHT)
  92.  
  93. #define EFI_TEXT_ATTR(f,b)  ((f) | ((b) << 4))
  94.  
  95. #define EFI_BACKGROUND_BLACK        0x00
  96. #define EFI_BACKGROUND_BLUE         0x10
  97. #define EFI_BACKGROUND_GREEN        0x20
  98. #define EFI_BACKGROUND_CYAN         (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN)
  99. #define EFI_BACKGROUND_RED          0x40
  100. #define EFI_BACKGROUND_MAGENTA      (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_RED)
  101. #define EFI_BACKGROUND_BROWN        (EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
  102. #define EFI_BACKGROUND_LIGHTGRAY    (EFI_BACKGROUND_BLUE | EFI_BACKGROUND_GREEN | EFI_BACKGROUND_RED)
  103.  
  104.  
  105. typedef
  106. EFI_STATUS
  107. (EFIAPI *EFI_TEXT_CLEAR_SCREEN) (
  108.     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This
  109.     );
  110.  
  111. typedef
  112. EFI_STATUS
  113. (EFIAPI *EFI_TEXT_SET_CURSOR_POSITION) (
  114.     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
  115.     IN UINTN                        Column,
  116.     IN UINTN                        Row
  117.     );
  118.  
  119. typedef
  120. EFI_STATUS
  121. (EFIAPI *EFI_TEXT_ENABLE_CURSOR) (
  122.     IN struct _SIMPLE_TEXT_OUTPUT_INTERFACE     *This,
  123.     IN BOOLEAN                      Enable
  124.     );
  125.  
  126. typedef struct {
  127.     INT32                           MaxMode;
  128.     // current settings
  129.     INT32                           Mode;
  130.     INT32                           Attribute;
  131.     INT32                           CursorColumn;
  132.     INT32                           CursorRow;
  133.     BOOLEAN                         CursorVisible;
  134. } SIMPLE_TEXT_OUTPUT_MODE;
  135.  
  136. typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
  137.     EFI_TEXT_RESET                  Reset;
  138.  
  139.     EFI_TEXT_OUTPUT_STRING          OutputString;
  140.     EFI_TEXT_TEST_STRING            TestString;
  141.  
  142.     EFI_TEXT_QUERY_MODE             QueryMode;
  143.     EFI_TEXT_SET_MODE               SetMode;
  144.     EFI_TEXT_SET_ATTRIBUTE          SetAttribute;
  145.  
  146.     EFI_TEXT_CLEAR_SCREEN           ClearScreen;
  147.     EFI_TEXT_SET_CURSOR_POSITION    SetCursorPosition;
  148.     EFI_TEXT_ENABLE_CURSOR          EnableCursor;
  149.  
  150.     // Current mode
  151.     SIMPLE_TEXT_OUTPUT_MODE         *Mode;
  152. } SIMPLE_TEXT_OUTPUT_INTERFACE;
  153.  
  154. //
  155. // Define's for required EFI Unicode Box Draw character
  156. //
  157.  
  158. #define BOXDRAW_HORIZONTAL                  0x2500
  159. #define BOXDRAW_VERTICAL                    0x2502
  160. #define BOXDRAW_DOWN_RIGHT                  0x250c
  161. #define BOXDRAW_DOWN_LEFT                   0x2510
  162. #define BOXDRAW_UP_RIGHT                    0x2514
  163. #define BOXDRAW_UP_LEFT                     0x2518
  164. #define BOXDRAW_VERTICAL_RIGHT              0x251c
  165. #define BOXDRAW_VERTICAL_LEFT               0x2524
  166. #define BOXDRAW_DOWN_HORIZONTAL             0x252c
  167. #define BOXDRAW_UP_HORIZONTAL               0x2534
  168. #define BOXDRAW_VERTICAL_HORIZONTAL         0x253c
  169.  
  170. #define BOXDRAW_DOUBLE_HORIZONTAL           0x2550
  171. #define BOXDRAW_DOUBLE_VERTICAL             0x2551
  172. #define BOXDRAW_DOWN_RIGHT_DOUBLE           0x2552
  173. #define BOXDRAW_DOWN_DOUBLE_RIGHT           0x2553
  174. #define BOXDRAW_DOUBLE_DOWN_RIGHT           0x2554
  175.  
  176. #define BOXDRAW_DOWN_LEFT_DOUBLE            0x2555
  177. #define BOXDRAW_DOWN_DOUBLE_LEFT            0x2556
  178. #define BOXDRAW_DOUBLE_DOWN_LEFT            0x2557
  179.  
  180. #define BOXDRAW_UP_RIGHT_DOUBLE             0x2558
  181. #define BOXDRAW_UP_DOUBLE_RIGHT             0x2559
  182. #define BOXDRAW_DOUBLE_UP_RIGHT             0x255a
  183.  
  184. #define BOXDRAW_UP_LEFT_DOUBLE              0x255b
  185. #define BOXDRAW_UP_DOUBLE_LEFT              0x255c
  186. #define BOXDRAW_DOUBLE_UP_LEFT              0x255d
  187.  
  188. #define BOXDRAW_VERTICAL_RIGHT_DOUBLE       0x255e
  189. #define BOXDRAW_VERTICAL_DOUBLE_RIGHT       0x255f
  190. #define BOXDRAW_DOUBLE_VERTICAL_RIGHT       0x2560
  191.  
  192. #define BOXDRAW_VERTICAL_LEFT_DOUBLE        0x2561
  193. #define BOXDRAW_VERTICAL_DOUBLE_LEFT        0x2562
  194. #define BOXDRAW_DOUBLE_VERTICAL_LEFT        0x2563
  195.  
  196. #define BOXDRAW_DOWN_HORIZONTAL_DOUBLE      0x2564
  197. #define BOXDRAW_DOWN_DOUBLE_HORIZONTAL      0x2565
  198. #define BOXDRAW_DOUBLE_DOWN_HORIZONTAL      0x2566
  199.  
  200. #define BOXDRAW_UP_HORIZONTAL_DOUBLE        0x2567
  201. #define BOXDRAW_UP_DOUBLE_HORIZONTAL        0x2568
  202. #define BOXDRAW_DOUBLE_UP_HORIZONTAL        0x2569
  203.  
  204. #define BOXDRAW_VERTICAL_HORIZONTAL_DOUBLE  0x256a
  205. #define BOXDRAW_VERTICAL_DOUBLE_HORIZONTAL  0x256b
  206. #define BOXDRAW_DOUBLE_VERTICAL_HORIZONTAL  0x256c
  207.  
  208. //
  209. // EFI Required Block Elements Code Chart
  210. //
  211.  
  212. #define BLOCKELEMENT_FULL_BLOCK             0x2588
  213. #define BLOCKELEMENT_LIGHT_SHADE            0x2591
  214. //
  215. // EFI Required Geometric Shapes Code Chart
  216. //
  217.  
  218. #define GEOMETRICSHAPE_UP_TRIANGLE           0x25b2
  219. #define GEOMETRICSHAPE_RIGHT_TRIANGLE        0x25ba
  220. #define GEOMETRICSHAPE_DOWN_TRIANGLE         0x25bc
  221. #define GEOMETRICSHAPE_LEFT_TRIANGLE         0x25c4
  222.  
  223. //
  224. // EFI Required Arrow shapes
  225. //
  226.  
  227. #define ARROW_UP                            0x2191
  228. #define ARROW_DOWN                          0x2193
  229.  
  230. //
  231. // Text input protocol
  232. //
  233.  
  234. #define SIMPLE_TEXT_INPUT_PROTOCOL  \
  235.     { 0x387477c1, 0x69c7, 0x11d2, {0x8e, 0x39, 0x0, 0xa0, 0xc9, 0x69, 0x72, 0x3b} }
  236.  
  237. INTERFACE_DECL(_SIMPLE_INPUT_INTERFACE);
  238.  
  239. typedef struct {
  240.     UINT16                              ScanCode;
  241.     CHAR16                              UnicodeChar;
  242. } EFI_INPUT_KEY;
  243.  
  244. //
  245. // Baseline unicode control chars
  246. //
  247.  
  248. #define CHAR_NULL                       0x0000
  249. #define CHAR_BACKSPACE                  0x0008
  250. #define CHAR_TAB                        0x0009
  251. #define CHAR_LINEFEED                   0x000A
  252. #define CHAR_CARRIAGE_RETURN            0x000D
  253.  
  254. //
  255. // Scan codes for base line keys
  256. //
  257.  
  258. #define SCAN_NULL                       0x0000
  259. #define SCAN_UP                         0x0001
  260. #define SCAN_DOWN                       0x0002
  261. #define SCAN_RIGHT                      0x0003
  262. #define SCAN_LEFT                       0x0004
  263. #define SCAN_HOME                       0x0005
  264. #define SCAN_END                        0x0006
  265. #define SCAN_INSERT                     0x0007
  266. #define SCAN_DELETE                     0x0008
  267. #define SCAN_PAGE_UP                    0x0009
  268. #define SCAN_PAGE_DOWN                  0x000A
  269. #define SCAN_F1                         0x000B
  270. #define SCAN_F2                         0x000C
  271. #define SCAN_F3                         0x000D
  272. #define SCAN_F4                         0x000E
  273. #define SCAN_F5                         0x000F
  274. #define SCAN_F6                         0x0010
  275. #define SCAN_F7                         0x0011
  276. #define SCAN_F8                         0x0012
  277. #define SCAN_F9                         0x0013
  278. #define SCAN_F10                        0x0014
  279. #define SCAN_ESC                        0x0017
  280.  
  281. typedef
  282. EFI_STATUS
  283. (EFIAPI *EFI_INPUT_RESET) (
  284.     IN struct _SIMPLE_INPUT_INTERFACE   *This,
  285.     IN BOOLEAN                          ExtendedVerification
  286.     );
  287.  
  288. typedef
  289. EFI_STATUS
  290. (EFIAPI *EFI_INPUT_READ_KEY) (
  291.     IN struct _SIMPLE_INPUT_INTERFACE   *This,
  292.     OUT EFI_INPUT_KEY                   *Key
  293.     );
  294.  
  295. typedef struct _SIMPLE_INPUT_INTERFACE {
  296.     EFI_INPUT_RESET                     Reset;
  297.     EFI_INPUT_READ_KEY                  ReadKeyStroke;
  298.     EFI_EVENT                           WaitForKey;
  299. } SIMPLE_INPUT_INTERFACE;
  300.  
  301. #endif
  302.  
  303.