Home | History | Annotate | Download | only in Protocol
      1 /** @file
      2   EFI Bluetooth Configuration Protocol as defined in UEFI 2.5.
      3   This protocol abstracts user interface configuration for Bluetooth device.
      4 
      5   Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
      6   This program and the accompanying materials are licensed and made available under
      7   the terms and conditions of the BSD License that accompanies this distribution.
      8   The full text of the license may be found at
      9   http://opensource.org/licenses/bsd-license.php.
     10 
     11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14   @par Revision Reference:
     15   This Protocol is introduced in UEFI Specification 2.5
     16 
     17 **/
     18 
     19 #ifndef __EFI_BLUETOOTH_CONFIG_PROTOCOL_H__
     20 #define __EFI_BLUETOOTH_CONFIG_PROTOCOL_H__
     21 
     22 #include <IndustryStandard/Bluetooth.h>
     23 
     24 #define EFI_BLUETOOTH_CONFIG_PROTOCOL_GUID \
     25   { \
     26     0x62960cf3, 0x40ff, 0x4263, { 0xa7, 0x7c, 0xdf, 0xde, 0xbd, 0x19, 0x1b, 0x4b } \
     27   }
     28 
     29 typedef struct _EFI_BLUETOOTH_CONFIG_PROTOCOL EFI_BLUETOOTH_CONFIG_PROTOCOL;
     30 
     31 typedef UINT32      EFI_BLUETOOTH_CONFIG_REMOTE_DEVICE_STATE_TYPE;
     32 #define EFI_BLUETOOTH_CONFIG_REMOTE_DEVICE_STATE_CONNECTED    0x1
     33 #define EFI_BLUETOOTH_CONFIG_REMOTE_DEVICE_STATE_PAIRED       0x2
     34 
     35 ///
     36 /// EFI_BLUETOOTH_SCAN_CALLBACK_INFORMATION
     37 ///
     38 typedef struct {
     39   ///
     40   /// 48bit Bluetooth device address.
     41   ///
     42   BLUETOOTH_ADDRESS         BDAddr;
     43   ///
     44   /// State of the remote deive
     45   ///
     46   UINT8                     RemoteDeviceState;
     47   ///
     48   /// Bluetooth ClassOfDevice. See Bluetooth specification for detail.
     49   ///
     50   BLUETOOTH_CLASS_OF_DEVICE ClassOfDevice;
     51   ///
     52   /// Remote device name
     53   ///
     54   UINT8                     RemoteDeviceName[BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE];
     55 } EFI_BLUETOOTH_SCAN_CALLBACK_INFORMATION;
     56 
     57 ///
     58 /// EFI_BLUETOOTH_CONFIG_DATA_TYPE
     59 ///
     60 typedef enum {
     61   ///
     62   /// Local/Remote Bluetooth device name. Data structure is zero terminated CHAR8[].
     63   ///
     64   EfiBluetoothConfigDataTypeDeviceName,
     65   ///
     66   /// Local/Remote Bluetooth device ClassOfDevice. Data structure is BLUETOOTH_CLASS_OF_DEVICE.
     67   ///
     68   EfiBluetoothConfigDataTypeClassOfDevice,
     69   ///
     70   /// Remote Bluetooth device state. Data structure is EFI_BLUETOOTH_CONFIG_REMOTE_DEVICE_STATE_TYPE.
     71   ///
     72   EfiBluetoothConfigDataTypeRemoteDeviceState,
     73   ///
     74   /// Local/Remote Bluetooth device SDP information. Data structure is UINT8[].
     75   ///
     76   EfiBluetoothConfigDataTypeSdpInfo,
     77   ///
     78   /// Local Bluetooth device address. Data structure is BLUETOOTH_ADDRESS.
     79   ///
     80   EfiBluetoothConfigDataTypeBDADDR,
     81   ///
     82   /// Local Bluetooth discoverable state. Data structure is UINT8. (Page scan and/or Inquiry scan)
     83   ///
     84   EfiBluetoothConfigDataTypeDiscoverable,
     85   ///
     86   /// Local Bluetooth controller stored paired device list. Data structure is BLUETOOTH_ADDRESS[].
     87   ///
     88   EfiBluetoothConfigDataTypeControllerStoredPairedDeviceList,
     89   ///
     90   /// Local available device list. Data structure is BLUETOOTH_ADDRESS[].
     91   ///
     92   EfiBluetoothConfigDataTypeAvailableDeviceList,
     93   EfiBluetoothConfigDataTypeMax,
     94 } EFI_BLUETOOTH_CONFIG_DATA_TYPE;
     95 
     96 ///
     97 /// EFI_BLUETOOTH_PIN_CALLBACK_TYPE.
     98 ///
     99 typedef enum {
    100   ///
    101   /// For SSP - passkey entry. Input buffer is Passkey (4 bytes). No output buffer.
    102   /// See Bluetooth HCI command for detail.
    103   ///
    104   EfiBluetoothCallbackTypeUserPasskeyNotification,
    105   ///
    106   /// For SSP - just work and numeric comparison. Input buffer is numeric value (4 bytes).
    107   /// Output buffer is BOOLEAN (1 byte). See Bluetooth HCI command for detail.
    108   ///
    109   EfiBluetoothCallbackTypeUserConfirmationRequest,
    110   ///
    111   /// For SSP - OOB. See Bluetooth HCI command for detail.
    112   ///
    113   EfiBluetoothCallbackTypeOOBDataRequest,
    114   ///
    115   /// For legacy paring. No input buffer. Output buffer is PIN code( <= 16 bytes).
    116   /// See Bluetooth HCI command for detail.
    117   ///
    118   EfiBluetoothCallbackTypePinCodeRequest,
    119   EfiBluetoothCallbackTypeMax
    120 } EFI_BLUETOOTH_PIN_CALLBACK_TYPE;
    121 
    122 ///
    123 /// EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE.
    124 ///
    125 typedef enum {
    126   ///
    127   /// This callback is called when Bluetooth receive Disconnection_Complete event. Input buffer is Event
    128   /// Parameters of Disconnection_Complete Event defined in Bluetooth specification.
    129   ///
    130   EfiBluetoothConnCallbackTypeDisconnected,
    131   ///
    132   /// This callback is called when Bluetooth receive Connection_Complete event. Input buffer is Event
    133   /// Parameters of Connection_Complete Event defined in Bluetooth specification.
    134   ///
    135   EfiBluetoothConnCallbackTypeConnected,
    136   ///
    137   /// This callback is called when Bluetooth receive Authentication_Complete event. Input buffer is Event
    138   /// Parameters of Authentication_Complete Event defined in Bluetooth specification.
    139   ///
    140   EfiBluetoothConnCallbackTypeAuthenticated,
    141   ///
    142   /// This callback is called when Bluetooth receive Encryption_Change event. Input buffer is Event
    143   /// Parameters of Encryption_Change Event defined in Bluetooth specification.
    144   ///
    145   EfiBluetoothConnCallbackTypeEncrypted
    146 } EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE;
    147 
    148 
    149 /**
    150   Initialize Bluetooth host controller and local device.
    151 
    152   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    153 
    154   @retval EFI_SUCCESS           The Bluetooth host controller and local device is initialized successfully.
    155   @retval EFI_DEVICE_ERROR      A hardware error occurred trying to initialize the Bluetooth host controller
    156                                 and local device.
    157 
    158 **/
    159 typedef
    160 EFI_STATUS
    161 (EFIAPI *EFI_BLUETOOTH_CONFIG_INIT)(
    162   IN EFI_BLUETOOTH_CONFIG_PROTOCOL  *This
    163   );
    164 
    165 /**
    166   Callback function, it is called if a Bluetooth device is found during scan process.
    167 
    168   @param  This            Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    169   @param  Context         Context passed from scan request.
    170   @param  CallbackInfo    Data related to scan result. NULL CallbackInfo means scan complete.
    171 
    172   @retval EFI_SUCCESS       The callback function complete successfully.
    173 
    174 **/
    175 typedef
    176 EFI_STATUS
    177 (EFIAPI *EFI_BLUETOOTH_CONFIG_SCAN_CALLBACK_FUNCTION) (
    178   IN EFI_BLUETOOTH_CONFIG_PROTOCOL            *This,
    179   IN VOID                                     *Context,
    180   IN EFI_BLUETOOTH_SCAN_CALLBACK_INFORMATION  *CallbackInfo
    181   );
    182 
    183 /**
    184   Scan Bluetooth device.
    185 
    186   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    187   @param  ReScan        If TRUE, a new scan request is submitted no matter there is scan result before.
    188                         If FALSE and there is scan result, the previous scan result is returned and no scan request
    189                         is submitted.
    190   @param  ScanType      Bluetooth scan type, Inquiry and/or Page. See Bluetooth specification for detail.
    191   @param  Callback      The callback function. This function is called if a Bluetooth device is found during scan
    192                         process.
    193   @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
    194 
    195   @retval EFI_SUCCESS           The Bluetooth scan request is submitted.
    196   @retval EFI_DEVICE_ERROR      A hardware error occurred trying to scan the Bluetooth device.
    197 
    198 **/
    199 typedef
    200 EFI_STATUS
    201 (EFIAPI *EFI_BLUETOOTH_CONFIG_SCAN)(
    202   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
    203   IN BOOLEAN                                        ReScan,
    204   IN UINT8                                          ScanType,
    205   IN EFI_BLUETOOTH_CONFIG_SCAN_CALLBACK_FUNCTION    Callback,
    206   IN VOID                                           *Context
    207   );
    208 
    209 /**
    210   Connect a Bluetooth device.
    211 
    212   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    213   @param  BD_ADDR       The address of Bluetooth device to be connected.
    214 
    215   @retval EFI_SUCCESS           The Bluetooth device is connected successfully.
    216   @retval EFI_ALREADY_STARTED   The Bluetooth device is already connected.
    217   @retval EFI_NOT_FOUND         The Bluetooth device is not found.
    218   @retval EFI_DEVICE_ERROR      A hardware error occurred trying to connect the Bluetooth device.
    219 
    220 **/
    221 typedef
    222 EFI_STATUS
    223 (EFIAPI *EFI_BLUETOOTH_CONFIG_CONNECT)(
    224   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
    225   IN BLUETOOTH_ADDRESS                              *BD_ADDR
    226   );
    227 
    228 /**
    229   Disconnect a Bluetooth device.
    230 
    231   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    232   @param  BD_ADDR       The address of Bluetooth device to be connected.
    233   @param  Reason        Bluetooth disconnect reason. See Bluetooth specification for detail.
    234 
    235   @retval EFI_SUCCESS           The Bluetooth device is disconnected successfully.
    236   @retval EFI_NOT_STARTED       The Bluetooth device is not connected.
    237   @retval EFI_NOT_FOUND         The Bluetooth device is not found.
    238   @retval EFI_DEVICE_ERROR      A hardware error occurred trying to disconnect the Bluetooth device.
    239 
    240 **/
    241 typedef
    242 EFI_STATUS
    243 (EFIAPI *EFI_BLUETOOTH_CONFIG_DISCONNECT)(
    244   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
    245   IN BLUETOOTH_ADDRESS                              *BD_ADDR,
    246   IN UINT8                                          Reason
    247   );
    248 
    249 /**
    250   Get Bluetooth configuration data.
    251 
    252   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    253   @param  DataType      Configuration data type.
    254   @param  DataSize      On input, indicates the size, in bytes, of the data buffer specified by Data.
    255                         On output, indicates the amount of data actually returned.
    256   @param  Data          A pointer to the buffer of data that will be returned.
    257 
    258   @retval EFI_SUCCESS           The Bluetooth configuration data is returned successfully.
    259   @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:
    260                                 - DataSize is NULL.
    261                                 - *DataSize is 0.
    262                                 - Data is NULL.
    263   @retval EFI_UNSUPPORTED       The DataType is unsupported.
    264   @retval EFI_NOT_FOUND         The DataType is not found.
    265   @retval EFI_BUFFER_TOO_SMALL  The buffer is too small to hold the buffer.
    266 
    267 **/
    268 typedef
    269 EFI_STATUS
    270 (EFIAPI *EFI_BLUETOOTH_CONFIG_GET_DATA)(
    271   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
    272   IN EFI_BLUETOOTH_CONFIG_DATA_TYPE                 DataType,
    273   IN OUT UINTN                                      *DataSize,
    274   IN OUT VOID                                       *Data
    275   );
    276 
    277 /**
    278   Set Bluetooth configuration data.
    279 
    280   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    281   @param  DataType      Configuration data type.
    282   @param  DataSize      Indicates the size, in bytes, of the data buffer specified by Data.
    283   @param  Data          A pointer to the buffer of data that will be set.
    284 
    285   @retval EFI_SUCCESS           The Bluetooth configuration data is set successfully.
    286   @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:
    287                                 - DataSize is 0.
    288                                 - Data is NULL.
    289   @retval EFI_UNSUPPORTED       The DataType is unsupported.
    290   @retval EFI_BUFFER_TOO_SMALL  Cannot set configuration data.
    291 
    292 **/
    293 typedef
    294 EFI_STATUS
    295 (EFIAPI *EFI_BLUETOOTH_CONFIG_SET_DATA)(
    296   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
    297   IN EFI_BLUETOOTH_CONFIG_DATA_TYPE                 DataType,
    298   IN UINTN                                          DataSize,
    299   IN VOID                                           *Data
    300   );
    301 
    302 /**
    303   Get remove Bluetooth device configuration data.
    304 
    305   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    306   @param  DataType      Configuration data type.
    307   @param  BDAddr        Remote Bluetooth device address.
    308   @param  DataSize      On input, indicates the size, in bytes, of the data buffer specified by Data.
    309                         On output, indicates the amount of data actually returned.
    310   @param  Data          A pointer to the buffer of data that will be returned.
    311 
    312   @retval EFI_SUCCESS           The remote Bluetooth device configuration data is returned successfully.
    313   @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:
    314                                 - DataSize is NULL.
    315                                 - *DataSize is 0.
    316                                 - Data is NULL.
    317   @retval EFI_UNSUPPORTED       The DataType is unsupported.
    318   @retval EFI_NOT_FOUND         The DataType is not found.
    319   @retval EFI_BUFFER_TOO_SMALL  The buffer is too small to hold the buffer.
    320 
    321 **/
    322 typedef
    323 EFI_STATUS
    324 (EFIAPI *EFI_BLUETOOTH_CONFIG_GET_REMOTE_DATA)(
    325   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
    326   IN EFI_BLUETOOTH_CONFIG_DATA_TYPE                 DataType,
    327   IN BLUETOOTH_ADDRESS                              BDAddr,
    328   IN OUT UINTN                                      *DataSize,
    329   IN OUT VOID                                       *Data
    330   );
    331 
    332 /**
    333   The callback function for PIN code.
    334 
    335   @param  This                Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    336   @param  Context             Context passed from registration.
    337   @param  CallbackType        Callback type in EFI_BLUETOOTH_PIN_CALLBACK_TYPE.
    338   @param  InputBuffer         A pointer to the buffer of data that is input from callback caller.
    339   @param  InputBufferSize     Indicates the size, in bytes, of the data buffer specified by InputBuffer.
    340   @param  OutputBuffer        A pointer to the buffer of data that will be output from callback callee.
    341                               Callee allocates this buffer by using EFI Boot Service AllocatePool().
    342   @param  OutputBufferSize    Indicates the size, in bytes, of the data buffer specified by OutputBuffer.
    343 
    344   @retval EFI_SUCCESS   The callback function complete successfully.
    345 
    346 **/
    347 typedef
    348 EFI_STATUS
    349 (EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_PIN_CALLBACK_FUNCTION)(
    350   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                        *This,
    351   IN VOID                                                 *Context,
    352   IN EFI_BLUETOOTH_PIN_CALLBACK_TYPE                      CallbackType,
    353   IN VOID                                                 *InputBuffer,
    354   IN UINTN                                                InputBufferSize,
    355   OUT VOID                                                **OutputBuffer,
    356   OUT UINTN                                               *OutputBufferSize
    357   );
    358 
    359 /**
    360   Register PIN callback function.
    361 
    362   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    363   @param  Callback      The callback function. NULL means unregister.
    364   @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
    365 
    366   @retval EFI_SUCCESS   The PIN callback function is registered successfully.
    367 
    368 **/
    369 typedef
    370 EFI_STATUS
    371 (EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_PIN_CALLBACK)(
    372   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                        *This,
    373   IN EFI_BLUETOOTH_CONFIG_REGISTER_PIN_CALLBACK_FUNCTION  Callback,
    374   IN VOID                                                 *Context
    375   );
    376 
    377 /**
    378   The callback function to get link key.
    379 
    380   @param  This                Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    381   @param  Context             Context passed from registration.
    382   @param  BDAddr              A pointer to Bluetooth device address.
    383   @param  LinkKey             A pointer to the buffer of link key.
    384 
    385   @retval EFI_SUCCESS   The callback function complete successfully.
    386 
    387 **/
    388 typedef
    389 EFI_STATUS
    390 (EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_GET_LINK_KEY_CALLBACK_FUNCTION)(
    391   IN EFI_BLUETOOTH_CONFIG_PROTOCOL        *This,
    392   IN VOID                                 *Context,
    393   IN BLUETOOTH_ADDRESS                    *BDAddr,
    394   OUT UINT8                               LinkKey[BLUETOOTH_HCI_LINK_KEY_SIZE]
    395   );
    396 
    397 /**
    398   Register get link key callback function.
    399 
    400   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    401   @param  Callback      The callback function. NULL means unregister.
    402   @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
    403 
    404   @retval EFI_SUCCESS   The link key callback function is registered successfully.
    405 
    406 **/
    407 typedef
    408 EFI_STATUS
    409 (EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_GET_LINK_KEY_CALLBACK)(
    410   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                                  *This,
    411   IN EFI_BLUETOOTH_CONFIG_REGISTER_GET_LINK_KEY_CALLBACK_FUNCTION   Callback,
    412   IN VOID                                                           *Context
    413   );
    414 
    415 /**
    416   The callback function to set link key.
    417 
    418   @param  This                Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    419   @param  Context             Context passed from registration.
    420   @param  BDAddr              A pointer to Bluetooth device address.
    421   @param  LinkKey             A pointer to the buffer of link key.
    422 
    423   @retval EFI_SUCCESS   The callback function complete successfully.
    424 
    425 **/
    426 typedef
    427 EFI_STATUS
    428 (EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_SET_LINK_KEY_CALLBACK_FUNCTION)(
    429   IN EFI_BLUETOOTH_CONFIG_PROTOCOL        *This,
    430   IN VOID                                 *Context,
    431   IN BLUETOOTH_ADDRESS                    *BDAddr,
    432   IN UINT8                                LinkKey[BLUETOOTH_HCI_LINK_KEY_SIZE]
    433   );
    434 
    435 /**
    436   Register set link key callback function.
    437 
    438   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    439   @param  Callback      The callback function. NULL means unregister.
    440   @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
    441 
    442   @retval EFI_SUCCESS   The link key callback function is registered successfully.
    443 
    444 **/
    445 typedef
    446 EFI_STATUS
    447 (EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_SET_LINK_KEY_CALLBACK)(
    448   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                                  *This,
    449   IN EFI_BLUETOOTH_CONFIG_REGISTER_SET_LINK_KEY_CALLBACK_FUNCTION   Callback,
    450   IN VOID                                                           *Context
    451   );
    452 
    453 /**
    454   The callback function. It is called after connect completed.
    455 
    456   @param  This                Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    457   @param  Context             Context passed from registration.
    458   @param  CallbackType        Callback type in EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE.
    459   @param  BDAddr              A pointer to Bluetooth device address.
    460   @param  InputBuffer         A pointer to the buffer of data that is input from callback caller.
    461   @param  InputBufferSize     Indicates the size, in bytes, of the data buffer specified by InputBuffer.
    462 
    463   @retval EFI_SUCCESS   The callback function complete successfully.
    464 
    465 **/
    466 typedef
    467 EFI_STATUS
    468 (EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK_FUNCTION)(
    469   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
    470   IN VOID                                           *Context,
    471   IN EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE   CallbackType,
    472   IN BLUETOOTH_ADDRESS                              *BDAddr,
    473   IN VOID                                           *InputBuffer,
    474   IN UINTN                                          InputBufferSize
    475   );
    476 
    477 /**
    478   Register link connect complete callback function.
    479 
    480   @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
    481   @param  Callback      The callback function. NULL means unregister.
    482   @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
    483 
    484   @retval EFI_SUCCESS   The link connect complete callback function is registered successfully.
    485 
    486 **/
    487 typedef
    488 EFI_STATUS
    489 (EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK)(
    490   IN EFI_BLUETOOTH_CONFIG_PROTOCOL                                      *This,
    491   IN EFI_BLUETOOTH_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK_FUNCTION   Callback,
    492   IN VOID                                                               *Context
    493   );
    494 
    495 ///
    496 /// This protocol abstracts user interface configuration for Bluetooth device.
    497 ///
    498 struct _EFI_BLUETOOTH_CONFIG_PROTOCOL {
    499   EFI_BLUETOOTH_CONFIG_INIT                               Init;
    500   EFI_BLUETOOTH_CONFIG_SCAN                               Scan;
    501   EFI_BLUETOOTH_CONFIG_CONNECT                            Connect;
    502   EFI_BLUETOOTH_CONFIG_DISCONNECT                         Disconnect;
    503   EFI_BLUETOOTH_CONFIG_GET_DATA                           GetData;
    504   EFI_BLUETOOTH_CONFIG_SET_DATA                           SetData;
    505   EFI_BLUETOOTH_CONFIG_GET_REMOTE_DATA                    GetRemoteData;
    506   EFI_BLUETOOTH_CONFIG_REGISTER_PIN_CALLBACK              RegisterPinCallback;
    507   EFI_BLUETOOTH_CONFIG_REGISTER_GET_LINK_KEY_CALLBACK     RegisterGetLinkKeyCallback;
    508   EFI_BLUETOOTH_CONFIG_REGISTER_SET_LINK_KEY_CALLBACK     RegisterSetLinkKeyCallback;
    509   EFI_BLUETOOTH_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK RegisterLinkConnectCompleteCallback;
    510 };
    511 
    512 extern EFI_GUID gEfiBluetoothConfigProtocolGuid;
    513 
    514 #endif
    515