xref: /netbsd-src/sys/external/bsd/gnu-efi/dist/inc/efiui.h (revision d1b935f8e85510a16a1b49122bd2ccf5ad7e104c)
1 /*	$NetBSD: efiui.h,v 1.1.1.2 2018/08/16 18:17:47 jmcneill Exp $	*/
2 
3 #ifndef _EFI_UI_H
4 #define _EFI_UI_H
5 
6 /*++
7 
8 Copyright (c) 200  Intel Corporation
9 
10 Module Name:
11 
12     EfiUi.h
13 
14 Abstract:
15     Protocol used to build User Interface (UI) stuff.
16 
17     This protocol is just data. It is a multi dimentional array.
18     For each string there is an array of UI_STRING_ENTRY. Each string
19     is for a different language translation of the same string. The list
20     is terminated by a NULL UiString. There can be any number of
21     UI_STRING_ENTRY arrays. A NULL array terminates the list. A NULL array
22     entry contains all zeros.
23 
24     Thus the shortest possible EFI_UI_PROTOCOL has three UI_STRING_ENTRY.
25     The String, it's NULL terminator, and the NULL terminator for the entire
26     thing.
27 
28 
29 Revision History
30 
31 --*/
32 
33 #define EFI_UI_INTERFACE_PROTOCOL_GUID \
34     { 0x32dd7981, 0x2d27, 0x11d4, {0xbc, 0x8b, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81} }
35 #define EFI_UI_PROTOCOL EFI_UI_INTERFACE_PROTOCOL_GUID
36 
37 
38 typedef enum {
39     UiDeviceString,
40     UiVendorString,
41     UiMaxString
42 } UI_STRING_TYPE;
43 
44 typedef struct {
45     ISO_639_2   *LangCode;
46     CHAR16      *UiString;
47 } UI_STRING_ENTRY;
48 
49 #define EFI_UI_INTERFACE_PROTOCOL_VERSION 0x00010000
50 #define EFI_UI_VERSION                    EFI_UI_INTERFACE_PROTOCOL_VERSION
51 
52 typedef struct _EFI_UI_INTERFACE_PROTOCOL {
53     UINT32          Version;
54     UI_STRING_ENTRY *Entry;
55 } EFI_UI_INTERFACE_PROTOCOL;
56 
57 typedef struct _EFI_UI_INTERFACE_PROTOCOL _UI_INTERFACE;
58 typedef EFI_UI_INTERFACE_PROTOCOL UI_INTERFACE;
59 
60 #endif
61