REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			523 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			523 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
 |