summaryrefslogtreecommitdiff
path: root/MdePkg/Include/Protocol/FormBrowser.h
blob: c0ee94ad6501f8cdc283d09cfc1f3346a6c5fa26 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
/** @file
  The EFI_FORM_BROWSER_PROTOCOL is the interface to the EFI 
  Configuration Driver.  This will allow the caller to direct the 
  configuration driver to use either the HII database or use the passed 
  in packet of data.  This will also allow the caller to post messages 
  into the configuration drivers internal mailbox.

  Copyright (c) 2006, Intel Corporation                                                         
  All rights reserved. This program and the accompanying materials                          
  are licensed and made available under the terms and conditions of the BSD License         
  which accompanies this distribution.  The full text of the license may be found at        
  http://opensource.org/licenses/bsd-license.php                                            

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             

  Module Name:  FormBrowser.h

  @par Revision Reference:
  This protocol is defined in HII spec 0.92.

**/

#ifndef __FORM_BROWSER_H__
#define __FORM_BROWSER_H__


#define EFI_FORM_BROWSER_PROTOCOL_GUID \
  { \
    0xe5a1333e, 0xe1b4, 0x4d55, {0xce, 0xeb, 0x35, 0xc3, 0xef, 0x13, 0x34, 0x43 } \
  }

typedef struct _EFI_FORM_BROWSER_PROTOCOL EFI_FORM_BROWSER_PROTOCOL;

typedef struct {
  UINT32  Length;
  UINT16  Type;
  UINT8   Data[1];
} EFI_HII_PACKET;

typedef struct {
  EFI_HII_IFR_PACK    *IfrData;
  EFI_HII_STRING_PACK *StringData;
} EFI_IFR_PACKET;

typedef struct {
  UINTN LeftColumn;
  UINTN RightColumn;
  UINTN TopRow;
  UINTN BottomRow;
} EFI_SCREEN_DESCRIPTOR;

/**
  Provides direction to the configuration driver whether to use the HII 
  database or a passed-in set of data. This function also establishes a 
  pointer to the calling driver¡¯s callback interface. 

  @param  This A pointer to the EFI_FORM_BROWSER_PROTOCOL instance.
  
  @param  UseDatabase Determines whether the HII database is to be 
  used to gather information. If the value is FALSE, the configuration 
  driver will get the information provided in the passed-in Packet parameters.
  
  @param  Handle A pointer to an array of HII handles to display. This value 
  should correspond to the value of the HII form package that is required to 
  be displayed.
  
  @param  HandleCount The number of handles in the array specified by Handle.
  
  @param  Packet A pointer to a set of data containing pointers to IFR 
  and/or string data. 
  
  @param  CallbackHandle The handle to the driver¡¯s callback interface. 
  This parameter is used only when the UseDatabase parameter is FALSE 
  and an application wants to register a callback with the browser
  
  @param  NvMapOverride This buffer is used only when there is no NV variable 
  to define the current settings and the caller needs to provide to the browser 
  the current settings for the "fake" NV variable.
  
  @param  ScreenDimensions Allows the browser to be called so that it occupies 
  a portion of the physical screen instead of dynamically determining the 
  screen dimensions. 
  
  @param  ResetRequired This BOOLEAN value will tell the caller if a reset 
  is required based on the data that might have been changed. The ResetRequired 
  parameter is primarily applicable for configuration applications, and is an 
  optional parameter. 

  @retval EFI_SUCCESS The function completed successfully
  
  @retval EFI_NOT_FOUND The variable was not found.
  
  @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result. 
  DataSize has been updated with the size needed to complete the request.
  
  @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.
  
  @retval EFI_DEVICE_ERROR The variable could not be saved due to a hardware failure. 

**/
typedef
EFI_STATUS
(EFIAPI *EFI_SEND_FORM) (
  IN  EFI_FORM_BROWSER_PROTOCOL       *This,
  IN  BOOLEAN                         UseDatabase,
  IN  EFI_HII_HANDLE                  *Handle,
  IN  UINTN                           HandleCount,
  IN  EFI_IFR_PACKET                  *Packet, OPTIONAL
  IN  EFI_HANDLE                      CallbackHandle, OPTIONAL
  IN  UINT8                           *NvMapOverride, OPTIONAL
  IN EFI_SCREEN_DESCRIPTOR            *ScreenDimensions, OPTIONAL
  OUT BOOLEAN                         *ResetRequired OPTIONAL
  );

/**
  Routine used to abstract a generic dialog interface and return the selected 
  key or string.

  @param  NumberOfLines The number of lines for the dialog box.
  
  @param  HotKey Defines whether a single character is parsed (TRUE) 
  and returned in KeyValue or if a string is returned in StringBuffer. 
  
  @param  MaximumStringSize The maximum size in bytes of a typed-in string. 
  Because each character is a CHAR16, the minimum string returned is two bytes.
  
  @param  StringBuffer The passed-in pointer to the buffer that will hold 
  the typed in string if HotKey is FALSE.
  
  @param  KeyValue The EFI_INPUT_KEY value returned if HotKey is TRUE.
  
  @param  String The pointer to the first string in the list of strings 
  that comprise the dialog box.
  
  @param  ... A series of NumberOfLines text strings that will be used 
  to construct the dialog box. 

  @retval EFI_SUCCESS The dialog was displayed and user interaction was received.
  
  @retval EFI_DEVICE_ERROR The user typed in an ESC character to exit the routine.
  
  @retval EFI_INVALID_PARAMETER One of the parameters was invalid

**/
typedef
EFI_STATUS
(EFIAPI *EFI_CREATE_POP_UP) (
  IN  UINTN                           NumberOfLines,
  IN  BOOLEAN                         HotKey,
  IN  UINTN                           MaximumStringSize,
  OUT CHAR16                          *StringBuffer,
  OUT EFI_INPUT_KEY                   *KeyValue,
  IN  CHAR16                          *String,
  ...
  );

/**
  @par Protocol Description:
  The EFI_FORM_BROWSER_PROTOCOL is the interface to call for drivers to 
  leverage the EFI configuration driver interface. 

  @param SendForm
  Provides direction to the configuration driver whether to use the HII 
  database or to use a passed-in set of data. This functions also establishes 
  a pointer to the calling driver¡¯s callback interface. 

  @param CreatePopUp
  Routine used to abstract a generic dialog interface and return the 
  selected key or string.

**/
struct _EFI_FORM_BROWSER_PROTOCOL {
  EFI_SEND_FORM     SendForm;
  EFI_CREATE_POP_UP CreatePopUp;
};

extern EFI_GUID gEfiFormBrowserProtocolGuid;

#endif