https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			524 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			524 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  EFI Bluetooth Configuration Protocol as defined in UEFI 2.7.
 | 
						|
  This protocol abstracts user interface configuration for Bluetooth device.
 | 
						|
 | 
						|
  Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
  @par Revision Reference:
 | 
						|
  This Protocol is introduced in UEFI Specification 2.7
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __EFI_BLUETOOTH_CONFIG_PROTOCOL_H__
 | 
						|
#define __EFI_BLUETOOTH_CONFIG_PROTOCOL_H__
 | 
						|
 | 
						|
#include <IndustryStandard/Bluetooth.h>
 | 
						|
 | 
						|
#define EFI_BLUETOOTH_CONFIG_PROTOCOL_GUID \
 | 
						|
  { \
 | 
						|
    0x62960cf3, 0x40ff, 0x4263, { 0xa7, 0x7c, 0xdf, 0xde, 0xbd, 0x19, 0x1b, 0x4b } \
 | 
						|
  }
 | 
						|
 | 
						|
typedef struct _EFI_BLUETOOTH_CONFIG_PROTOCOL EFI_BLUETOOTH_CONFIG_PROTOCOL;
 | 
						|
 | 
						|
typedef UINT32      EFI_BLUETOOTH_CONFIG_REMOTE_DEVICE_STATE_TYPE;
 | 
						|
#define EFI_BLUETOOTH_CONFIG_REMOTE_DEVICE_STATE_CONNECTED    0x1
 | 
						|
#define EFI_BLUETOOTH_CONFIG_REMOTE_DEVICE_STATE_PAIRED       0x2
 | 
						|
 | 
						|
///
 | 
						|
/// EFI_BLUETOOTH_SCAN_CALLBACK_INFORMATION
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  ///
 | 
						|
  /// 48bit Bluetooth device address.
 | 
						|
  ///
 | 
						|
  BLUETOOTH_ADDRESS         BDAddr;
 | 
						|
  ///
 | 
						|
  /// State of the remote deive
 | 
						|
  ///
 | 
						|
  UINT8                     RemoteDeviceState;
 | 
						|
  ///
 | 
						|
  /// Bluetooth ClassOfDevice. See Bluetooth specification for detail.
 | 
						|
  ///
 | 
						|
  BLUETOOTH_CLASS_OF_DEVICE ClassOfDevice;
 | 
						|
  ///
 | 
						|
  /// Remote device name
 | 
						|
  ///
 | 
						|
  UINT8                     RemoteDeviceName[BLUETOOTH_HCI_COMMAND_LOCAL_READABLE_NAME_MAX_SIZE];
 | 
						|
} EFI_BLUETOOTH_SCAN_CALLBACK_INFORMATION;
 | 
						|
 | 
						|
///
 | 
						|
/// EFI_BLUETOOTH_CONFIG_DATA_TYPE
 | 
						|
///
 | 
						|
typedef enum {
 | 
						|
  ///
 | 
						|
  /// Local/Remote Bluetooth device name. Data structure is zero terminated CHAR8[].
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeDeviceName,
 | 
						|
  ///
 | 
						|
  /// Local/Remote Bluetooth device ClassOfDevice. Data structure is BLUETOOTH_CLASS_OF_DEVICE.
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeClassOfDevice,
 | 
						|
  ///
 | 
						|
  /// Remote Bluetooth device state. Data structure is EFI_BLUETOOTH_CONFIG_REMOTE_DEVICE_STATE_TYPE.
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeRemoteDeviceState, /* Relevant for LE*/
 | 
						|
  ///
 | 
						|
  /// Local/Remote Bluetooth device SDP information. Data structure is UINT8[].
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeSdpInfo,
 | 
						|
  ///
 | 
						|
  /// Local Bluetooth device address. Data structure is BLUETOOTH_ADDRESS.
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeBDADDR, /* Relevant for LE*/
 | 
						|
  ///
 | 
						|
  /// Local Bluetooth discoverable state. Data structure is UINT8. (Page scan and/or Inquiry scan)
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeDiscoverable, /* Relevant for LE*/
 | 
						|
  ///
 | 
						|
  /// Local Bluetooth controller stored paired device list. Data structure is BLUETOOTH_ADDRESS[].
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeControllerStoredPairedDeviceList,
 | 
						|
  ///
 | 
						|
  /// Local available device list. Data structure is BLUETOOTH_ADDRESS[].
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeAvailableDeviceList,
 | 
						|
  EfiBluetoothConfigDataTypeRandomAddress, /* Relevant for LE*/
 | 
						|
  EfiBluetoothConfigDataTypeRSSI, /* Relevant for LE*/
 | 
						|
  ///
 | 
						|
  /// Advertisement report. Data structure is UNIT8[].
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeAdvertisementData, /* Relevant for LE*/
 | 
						|
  EfiBluetoothConfigDataTypeIoCapability, /* Relevant for LE*/
 | 
						|
  EfiBluetoothConfigDataTypeOOBDataFlag, /* Relevant for LE*/
 | 
						|
  ///
 | 
						|
  /// KeyType of Authentication Requirements flag of local
 | 
						|
  /// device as UINT8, indicating requested security properties.
 | 
						|
  /// See Bluetooth specification 3.H.3.5.1. BIT0: MITM, BIT1:SC.
 | 
						|
  ///
 | 
						|
  EfiBluetoothConfigDataTypeKeyType, /* Relevant for LE*/
 | 
						|
  EfiBluetoothConfigDataTypeEncKeySize, /* Relevant for LE*/
 | 
						|
  EfiBluetoothConfigDataTypeMax,
 | 
						|
} EFI_BLUETOOTH_CONFIG_DATA_TYPE;
 | 
						|
 | 
						|
///
 | 
						|
/// EFI_BLUETOOTH_PIN_CALLBACK_TYPE.
 | 
						|
///
 | 
						|
typedef enum {
 | 
						|
  ///
 | 
						|
  /// For SSP - passkey entry. Input buffer is Passkey (4 bytes). No output buffer.
 | 
						|
  /// See Bluetooth HCI command for detail.
 | 
						|
  ///
 | 
						|
  EfiBluetoothCallbackTypeUserPasskeyNotification,
 | 
						|
  ///
 | 
						|
  /// For SSP - just work and numeric comparison. Input buffer is numeric value (4 bytes).
 | 
						|
  /// Output buffer is BOOLEAN (1 byte). See Bluetooth HCI command for detail.
 | 
						|
  ///
 | 
						|
  EfiBluetoothCallbackTypeUserConfirmationRequest,
 | 
						|
  ///
 | 
						|
  /// For SSP - OOB. See Bluetooth HCI command for detail.
 | 
						|
  ///
 | 
						|
  EfiBluetoothCallbackTypeOOBDataRequest,
 | 
						|
  ///
 | 
						|
  /// For legacy paring. No input buffer. Output buffer is PIN code( <= 16 bytes).
 | 
						|
  /// See Bluetooth HCI command for detail.
 | 
						|
  ///
 | 
						|
  EfiBluetoothCallbackTypePinCodeRequest,
 | 
						|
  EfiBluetoothCallbackTypeMax
 | 
						|
} EFI_BLUETOOTH_PIN_CALLBACK_TYPE;
 | 
						|
 | 
						|
///
 | 
						|
/// EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE.
 | 
						|
///
 | 
						|
typedef enum {
 | 
						|
  ///
 | 
						|
  /// This callback is called when Bluetooth receive Disconnection_Complete event. Input buffer is Event
 | 
						|
  /// Parameters of Disconnection_Complete Event defined in Bluetooth specification.
 | 
						|
  ///
 | 
						|
  EfiBluetoothConnCallbackTypeDisconnected,
 | 
						|
  ///
 | 
						|
  /// This callback is called when Bluetooth receive Connection_Complete event. Input buffer is Event
 | 
						|
  /// Parameters of Connection_Complete Event defined in Bluetooth specification.
 | 
						|
  ///
 | 
						|
  EfiBluetoothConnCallbackTypeConnected,
 | 
						|
  ///
 | 
						|
  /// This callback is called when Bluetooth receive Authentication_Complete event. Input buffer is Event
 | 
						|
  /// Parameters of Authentication_Complete Event defined in Bluetooth specification.
 | 
						|
  ///
 | 
						|
  EfiBluetoothConnCallbackTypeAuthenticated,
 | 
						|
  ///
 | 
						|
  /// This callback is called when Bluetooth receive Encryption_Change event. Input buffer is Event
 | 
						|
  /// Parameters of Encryption_Change Event defined in Bluetooth specification.
 | 
						|
  ///
 | 
						|
  EfiBluetoothConnCallbackTypeEncrypted
 | 
						|
} EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE;
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
  Initialize Bluetooth host controller and local device.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The Bluetooth host controller and local device is initialized successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR      A hardware error occurred trying to initialize the Bluetooth host controller
 | 
						|
                                and local device.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_INIT)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL  *This
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Callback function, it is called if a Bluetooth device is found during scan process.
 | 
						|
 | 
						|
  @param  This            Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  Context         Context passed from scan request.
 | 
						|
  @param  CallbackInfo    Data related to scan result. NULL CallbackInfo means scan complete.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS       The callback function complete successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_SCAN_CALLBACK_FUNCTION) (
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL            *This,
 | 
						|
  IN VOID                                     *Context,
 | 
						|
  IN EFI_BLUETOOTH_SCAN_CALLBACK_INFORMATION  *CallbackInfo
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Scan Bluetooth device.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  ReScan        If TRUE, a new scan request is submitted no matter there is scan result before.
 | 
						|
                        If FALSE and there is scan result, the previous scan result is returned and no scan request
 | 
						|
                        is submitted.
 | 
						|
  @param  ScanType      Bluetooth scan type, Inquiry and/or Page. See Bluetooth specification for detail.
 | 
						|
  @param  Callback      The callback function. This function is called if a Bluetooth device is found during scan
 | 
						|
                        process.
 | 
						|
  @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The Bluetooth scan request is submitted.
 | 
						|
  @retval EFI_DEVICE_ERROR      A hardware error occurred trying to scan the Bluetooth device.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_SCAN)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
 | 
						|
  IN BOOLEAN                                        ReScan,
 | 
						|
  IN UINT8                                          ScanType,
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_SCAN_CALLBACK_FUNCTION    Callback,
 | 
						|
  IN VOID                                           *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Connect a Bluetooth device.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  BD_ADDR       The address of Bluetooth device to be connected.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The Bluetooth device is connected successfully.
 | 
						|
  @retval EFI_ALREADY_STARTED   The Bluetooth device is already connected.
 | 
						|
  @retval EFI_NOT_FOUND         The Bluetooth device is not found.
 | 
						|
  @retval EFI_DEVICE_ERROR      A hardware error occurred trying to connect the Bluetooth device.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_CONNECT)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
 | 
						|
  IN BLUETOOTH_ADDRESS                              *BD_ADDR
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Disconnect a Bluetooth device.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  BD_ADDR       The address of Bluetooth device to be connected.
 | 
						|
  @param  Reason        Bluetooth disconnect reason. See Bluetooth specification for detail.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The Bluetooth device is disconnected successfully.
 | 
						|
  @retval EFI_NOT_STARTED       The Bluetooth device is not connected.
 | 
						|
  @retval EFI_NOT_FOUND         The Bluetooth device is not found.
 | 
						|
  @retval EFI_DEVICE_ERROR      A hardware error occurred trying to disconnect the Bluetooth device.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_DISCONNECT)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
 | 
						|
  IN BLUETOOTH_ADDRESS                              *BD_ADDR,
 | 
						|
  IN UINT8                                          Reason
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Get Bluetooth configuration data.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  DataType      Configuration data type.
 | 
						|
  @param  DataSize      On input, indicates the size, in bytes, of the data buffer specified by Data.
 | 
						|
                        On output, indicates the amount of data actually returned.
 | 
						|
  @param  Data          A pointer to the buffer of data that will be returned.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The Bluetooth configuration data is returned successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:
 | 
						|
                                - DataSize is NULL.
 | 
						|
                                - *DataSize is not 0 and Data is NULL.
 | 
						|
  @retval EFI_UNSUPPORTED       The DataType is unsupported.
 | 
						|
  @retval EFI_NOT_FOUND         The DataType is not found.
 | 
						|
  @retval EFI_BUFFER_TOO_SMALL  The buffer is too small to hold the buffer.
 | 
						|
                                *DataSize has been updated with the size needed to complete the request.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_GET_DATA)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_DATA_TYPE                 DataType,
 | 
						|
  IN OUT UINTN                                      *DataSize,
 | 
						|
  IN OUT VOID                                       *Data
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Set Bluetooth configuration data.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  DataType      Configuration data type.
 | 
						|
  @param  DataSize      Indicates the size, in bytes, of the data buffer specified by Data.
 | 
						|
  @param  Data          A pointer to the buffer of data that will be set.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The Bluetooth configuration data is set successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:
 | 
						|
                                - DataSize is 0.
 | 
						|
                                - Data is NULL.
 | 
						|
  @retval EFI_UNSUPPORTED       The DataType is unsupported.
 | 
						|
  @retval EFI_BUFFER_TOO_SMALL  Cannot set configuration data.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_SET_DATA)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_DATA_TYPE                 DataType,
 | 
						|
  IN UINTN                                          DataSize,
 | 
						|
  IN VOID                                           *Data
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Get remove Bluetooth device configuration data.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  DataType      Configuration data type.
 | 
						|
  @param  BDAddr        Remote Bluetooth device address.
 | 
						|
  @param  DataSize      On input, indicates the size, in bytes, of the data buffer specified by Data.
 | 
						|
                        On output, indicates the amount of data actually returned.
 | 
						|
  @param  Data          A pointer to the buffer of data that will be returned.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The remote Bluetooth device configuration data is returned successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:
 | 
						|
                                - DataSize is NULL.
 | 
						|
                                - *DataSize is not 0 and Data is NULL.
 | 
						|
  @retval EFI_UNSUPPORTED       The DataType is unsupported.
 | 
						|
  @retval EFI_NOT_FOUND         The DataType is not found.
 | 
						|
  @retval EFI_BUFFER_TOO_SMALL  The buffer is too small to hold the buffer.
 | 
						|
                                *DataSize has been updated with the size needed to complete the request.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_GET_REMOTE_DATA)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_DATA_TYPE                 DataType,
 | 
						|
  IN BLUETOOTH_ADDRESS                              *BDAddr,
 | 
						|
  IN OUT UINTN                                      *DataSize,
 | 
						|
  IN OUT VOID                                       *Data
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  The callback function for PIN code.
 | 
						|
 | 
						|
  @param  This                Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  Context             Context passed from registration.
 | 
						|
  @param  CallbackType        Callback type in EFI_BLUETOOTH_PIN_CALLBACK_TYPE.
 | 
						|
  @param  InputBuffer         A pointer to the buffer of data that is input from callback caller.
 | 
						|
  @param  InputBufferSize     Indicates the size, in bytes, of the data buffer specified by InputBuffer.
 | 
						|
  @param  OutputBuffer        A pointer to the buffer of data that will be output from callback callee.
 | 
						|
                              Callee allocates this buffer by using EFI Boot Service AllocatePool().
 | 
						|
  @param  OutputBufferSize    Indicates the size, in bytes, of the data buffer specified by OutputBuffer.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The callback function complete successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_PIN_CALLBACK_FUNCTION)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                        *This,
 | 
						|
  IN VOID                                                 *Context,
 | 
						|
  IN EFI_BLUETOOTH_PIN_CALLBACK_TYPE                      CallbackType,
 | 
						|
  IN VOID                                                 *InputBuffer,
 | 
						|
  IN UINTN                                                InputBufferSize,
 | 
						|
  OUT VOID                                                **OutputBuffer,
 | 
						|
  OUT UINTN                                               *OutputBufferSize
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Register PIN callback function.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  Callback      The callback function. NULL means unregister.
 | 
						|
  @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The PIN callback function is registered successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_PIN_CALLBACK)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                        *This,
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_REGISTER_PIN_CALLBACK_FUNCTION  Callback,
 | 
						|
  IN VOID                                                 *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  The callback function to get link key.
 | 
						|
 | 
						|
  @param  This                Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  Context             Context passed from registration.
 | 
						|
  @param  BDAddr              A pointer to Bluetooth device address.
 | 
						|
  @param  LinkKey             A pointer to the buffer of link key.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The callback function complete successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_GET_LINK_KEY_CALLBACK_FUNCTION)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL        *This,
 | 
						|
  IN VOID                                 *Context,
 | 
						|
  IN BLUETOOTH_ADDRESS                    *BDAddr,
 | 
						|
  OUT UINT8                               LinkKey[BLUETOOTH_HCI_LINK_KEY_SIZE]
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Register get link key callback function.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  Callback      The callback function. NULL means unregister.
 | 
						|
  @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The link key callback function is registered successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_GET_LINK_KEY_CALLBACK)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                                  *This,
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_REGISTER_GET_LINK_KEY_CALLBACK_FUNCTION   Callback,
 | 
						|
  IN VOID                                                           *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  The callback function to set link key.
 | 
						|
 | 
						|
  @param  This                Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  Context             Context passed from registration.
 | 
						|
  @param  BDAddr              A pointer to Bluetooth device address.
 | 
						|
  @param  LinkKey             A pointer to the buffer of link key.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The callback function complete successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_SET_LINK_KEY_CALLBACK_FUNCTION)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL        *This,
 | 
						|
  IN VOID                                 *Context,
 | 
						|
  IN BLUETOOTH_ADDRESS                    *BDAddr,
 | 
						|
  IN UINT8                                LinkKey[BLUETOOTH_HCI_LINK_KEY_SIZE]
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Register set link key callback function.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  Callback      The callback function. NULL means unregister.
 | 
						|
  @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The link key callback function is registered successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_SET_LINK_KEY_CALLBACK)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                                  *This,
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_REGISTER_SET_LINK_KEY_CALLBACK_FUNCTION   Callback,
 | 
						|
  IN VOID                                                           *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  The callback function. It is called after connect completed.
 | 
						|
 | 
						|
  @param  This                Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  Context             Context passed from registration.
 | 
						|
  @param  CallbackType        Callback type in EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE.
 | 
						|
  @param  BDAddr              A pointer to Bluetooth device address.
 | 
						|
  @param  InputBuffer         A pointer to the buffer of data that is input from callback caller.
 | 
						|
  @param  InputBufferSize     Indicates the size, in bytes, of the data buffer specified by InputBuffer.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The callback function complete successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK_FUNCTION)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                  *This,
 | 
						|
  IN VOID                                           *Context,
 | 
						|
  IN EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE   CallbackType,
 | 
						|
  IN BLUETOOTH_ADDRESS                              *BDAddr,
 | 
						|
  IN VOID                                           *InputBuffer,
 | 
						|
  IN UINTN                                          InputBufferSize
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Register link connect complete callback function.
 | 
						|
 | 
						|
  @param  This          Pointer to the EFI_BLUETOOTH_CONFIG_PROTOCOL instance.
 | 
						|
  @param  Callback      The callback function. NULL means unregister.
 | 
						|
  @param  Context       Data passed into Callback function. This is optional parameter and may be NULL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS   The link connect complete callback function is registered successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK)(
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_PROTOCOL                                      *This,
 | 
						|
  IN EFI_BLUETOOTH_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK_FUNCTION   Callback,
 | 
						|
  IN VOID                                                               *Context
 | 
						|
  );
 | 
						|
 | 
						|
///
 | 
						|
/// This protocol abstracts user interface configuration for Bluetooth device.
 | 
						|
///
 | 
						|
struct _EFI_BLUETOOTH_CONFIG_PROTOCOL {
 | 
						|
  EFI_BLUETOOTH_CONFIG_INIT                               Init;
 | 
						|
  EFI_BLUETOOTH_CONFIG_SCAN                               Scan;
 | 
						|
  EFI_BLUETOOTH_CONFIG_CONNECT                            Connect;
 | 
						|
  EFI_BLUETOOTH_CONFIG_DISCONNECT                         Disconnect;
 | 
						|
  EFI_BLUETOOTH_CONFIG_GET_DATA                           GetData;
 | 
						|
  EFI_BLUETOOTH_CONFIG_SET_DATA                           SetData;
 | 
						|
  EFI_BLUETOOTH_CONFIG_GET_REMOTE_DATA                    GetRemoteData;
 | 
						|
  EFI_BLUETOOTH_CONFIG_REGISTER_PIN_CALLBACK              RegisterPinCallback;
 | 
						|
  EFI_BLUETOOTH_CONFIG_REGISTER_GET_LINK_KEY_CALLBACK     RegisterGetLinkKeyCallback;
 | 
						|
  EFI_BLUETOOTH_CONFIG_REGISTER_SET_LINK_KEY_CALLBACK     RegisterSetLinkKeyCallback;
 | 
						|
  EFI_BLUETOOTH_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK RegisterLinkConnectCompleteCallback;
 | 
						|
};
 | 
						|
 | 
						|
extern EFI_GUID gEfiBluetoothConfigProtocolGuid;
 | 
						|
 | 
						|
#endif
 |