summaryrefslogtreecommitdiff
path: root/MdePkg/Include/Protocol/FormBrowser.h
blob: 6f587b75ea0a4e80f55781ea09605608d85ec6dd (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
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
/** @file

  The file provides services to call for drivers to leverage the
  EFI configuration driver interface.
  
  Copyright (c) 2006 - 2007, 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.             

**/

#ifndef __EFI_FORM_BROWSER_H__
#define __EFI_FORM_BROWSER_H__


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


typedef struct _EFI_FORM_BROWSER_PROTOCOL   EFI_FORM_BROWSER_PROTOCOL;



/**
   
  @param LeftColumn   Value that designates the text column
                      where the browser window will begin from
                      the left-hand side of the screen
                      RightColumn Value that designates the text
                      column where the browser window will end
                      on the right-hand side of the screen.

  @param TopRow   Value that designates the text row from the
                  top of the screen where the browser window
                  will start.

  @param BottomRow  Value that designates the text row from the
                    bottom of the screen where the browser
                    window will end. 
**/
typedef struct {
  UINTN   LeftColumn;
  UINTN   RightColumn;
  UINTN   TopRow;
  UINTN   BottomRow;
} EFI_SCREEN_DESCRIPTOR;

/**
   
  This function is the primary interface to the internal
  forms-based browser. By calling this routine, one is directing
  the browser to use a variety of passed-in information or
  primarily use the HII database as the source of information.

  @param This   A pointer to the EFI_FORM_BROWSER_PROTOCOL
                instance.

  @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 SingleUse  If FALSE, the browser operates as a standard
                    forms processor and exits only when
                    explicitly requested by the user. If TRUE,
                    the browser will return immediately after
                    processing the first user-generated
                    selection.

  @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. If the input values
                            violate the platform policy then the
                            dimensions will be dynamically
                            adjusted to comply.

  @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 CONST  EFI_FORM_BROWSER_PROTOCOL *This,
  IN CONST  EFI_HII_HANDLE            *Handle,
  IN CONST  UINTN                     HandleCount,
  IN CONST  BOOLEAN                   SingleUse,
  IN CONST  EFI_SCREEN_DESCRIPTOR     *ScreenDimensions, OPTIONAL
  OUT       BOOLEAN                   *ResetRequired OPTIONAL
);


/**
   
  This routine is called by a routine which was called by the
  browser. This routine called this service in the browser to
  retrieve or set certain uncommitted state information.

  @param This   A pointer to the EFI_FORM_BROWSER_PROTOCOL
                instance.

  @param ResultsDataSize  A pointer to the size of the buffer
                          associated with ResultsData. 

  @param ResultsData  A string returned from an IFR browser or
                      equivalent. The results string will have
                      no routing information in them.

  @param RetrieveData   A BOOLEAN field which allows an agent to
                        retrieve (if RetrieveData = TRUE) data
                        from the uncommitted browser state
                        information or set (if RetrieveData =
                        FALSE) data in the uncommitted browser
                        state information.

  @param VariableGuid   An optional field to indicate the target
                        variable GUID name to use.

  @param VariableName   An optional field to indicate the target
                        human-readable variable name.


  @retval EFI_SUCCESS   The results have been distributed or are
                        awaiting distribution.
  
  @retval EFI_OUT_OF_RESOURCES  The ResultsDataSize specified
                                was too small to contain the
                                results data.

**/
typedef
EFI_STATUS
(EFIAPI *EFI_BROWSER_CALLBACK ) (
  IN CONST  EFI_FORM_BROWSER_PROTOCOL *This,
  IN OUT    UINTN                     *ResultsDataSize,
  IN OUT    EFI_STRING                ResultsData,
  IN CONST  BOOLEAN                   RetrieveData,
  IN CONST  EFI_GUID                  *VariableGuid, OPTIONAL
  IN CONST  CHAR16                    *VariableName OPTIONAL
);

/**
   
  This 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. See the
                    SendForm() function description.

  @param BrowserCallback  Routine used to expose internal
                          configuration state of the browser.
                          This is primarily used by callback
                          handler routines which were called by
                          the browser and in-turn need to get
                          additional information from the
                          browser itself. See the
                          BrowserCallback() function
                          description.

**/
struct _EFI_FORM_BROWSER_PROTOCOL {
  EFI_SEND_FORM         SendForm;
  EFI_BROWSER_CALLBACK  BrowserCallback;
} ;


extern EFI_GUID gEfiFormBrowserProtocolGuid;

#endif