| /** @file |
| EFI Bluetooth LE Config Protocol as defined in UEFI 2.7. |
| This protocol abstracts user interface configuration for BluetoothLe device. |
| |
| Copyright (c) 2017 - 2019, 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_LE_CONFIG_H__ |
| #define __EFI_BLUETOOTH_LE_CONFIG_H__ |
| |
| #include <Protocol/BluetoothConfig.h> |
| #include <Protocol/BluetoothAttribute.h> |
| |
| #define EFI_BLUETOOTH_LE_CONFIG_PROTOCOL_GUID \ |
| { \ |
| 0x8f76da58, 0x1f99, 0x4275, { 0xa4, 0xec, 0x47, 0x56, 0x51, 0x5b, 0x1c, 0xe8 } \ |
| } |
| |
| typedef struct _EFI_BLUETOOTH_LE_CONFIG_PROTOCOL EFI_BLUETOOTH_LE_CONFIG_PROTOCOL; |
| |
| /** |
| Initialize BluetoothLE host controller and local device. |
| |
| The Init() function initializes BluetoothLE host controller and local device. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| |
| @retval EFI_SUCCESS The BluetoothLE host controller and local device is initialized successfully. |
| @retval EFI_DEVICE_ERROR A hardware error occurred trying to initialize the BluetoothLE host controller |
| and local device. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_CONFIG_INIT)( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This |
| ); |
| |
| typedef struct { |
| /// |
| /// The version of the structure. A value of zero represents the EFI_BLUETOOTH_LE_CONFIG_SCAN_PARAMETER |
| /// structure as defined here. Future version of this specification may extend this data structure in a |
| /// backward compatible way and increase the value of Version. |
| /// |
| UINT32 Version; |
| /// |
| /// Passive scanning or active scanning. See Bluetooth specification. |
| /// |
| UINT8 ScanType; |
| /// |
| /// Recommended scan interval to be used while performing scan. |
| /// |
| UINT16 ScanInterval; |
| /// |
| /// Recommended scan window to be used while performing a scan. |
| /// |
| UINT16 ScanWindow; |
| /// |
| /// Recommended scanning filter policy to be used while performing a scan. |
| /// |
| UINT8 ScanningFilterPolicy; |
| /// |
| /// This is one byte flag to serve as a filter to remove unneeded scan |
| /// result. For example, set BIT0 means scan in LE Limited Discoverable |
| /// Mode. Set BIT1 means scan in LE General Discoverable Mode. |
| /// |
| UINT8 AdvertisementFlagFilter; |
| } EFI_BLUETOOTH_LE_CONFIG_SCAN_PARAMETER; |
| |
| typedef struct{ |
| BLUETOOTH_LE_ADDRESS BDAddr; |
| BLUETOOTH_LE_ADDRESS DirectAddress; |
| UINT8 RemoteDeviceState; |
| INT8 RSSI; |
| UINTN AdvertisementDataSize; |
| VOID *AdvertisementData; |
| } EFI_BLUETOOTH_LE_SCAN_CALLBACK_INFORMATION; |
| |
| /** |
| Callback function, it is called if a BluetoothLE device is found during scan process. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] Context Context passed from scan request. |
| @param[in] 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_LE_CONFIG_SCAN_CALLBACK_FUNCTION) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN VOID *Context, |
| IN EFI_BLUETOOTH_LE_SCAN_CALLBACK_INFORMATION *CallbackInfo |
| ); |
| |
| /** |
| Scan BluetoothLE device. |
| |
| The Scan() function scans BluetoothLE device. When this function is returned, it just means scan |
| request is submitted. It does not mean scan process is started or finished. Whenever there is a |
| BluetoothLE device is found, the Callback function will be called. Callback function might be |
| called before this function returns or after this function returns |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] 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[in] Timeout Duration in milliseconds for which to scan. |
| @param[in] ScanParameter If it is not NULL, the ScanParameter is used to perform a scan by the BluetoothLE bus driver. |
| If it is NULL, the default parameter is used. |
| @param[in] Callback The callback function. This function is called if a BluetoothLE device is found during |
| scan process. |
| @param[in] 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 BluetoothLE device. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_CONFIG_SCAN)( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN BOOLEAN ReScan, |
| IN UINT32 Timeout, |
| IN EFI_BLUETOOTH_LE_CONFIG_SCAN_PARAMETER *ScanParameter, OPTIONAL |
| IN EFI_BLUETOOTH_LE_CONFIG_SCAN_CALLBACK_FUNCTION Callback, |
| IN VOID *Context |
| ); |
| |
| typedef struct { |
| /// |
| /// The version of the structure. A value of zero represents the |
| /// EFI_BLUETOOTH_LE_CONFIG_CONNECT_PARAMETER |
| /// structure as defined here. Future version of this specification may |
| /// extend this data structure in a backward compatible way and |
| /// increase the value of Version. |
| /// |
| UINT32 Version; |
| /// |
| /// Recommended scan interval to be used while performing scan before connect. |
| /// |
| UINT16 ScanInterval; |
| /// |
| /// Recommended scan window to be used while performing a connection |
| /// |
| UINT16 ScanWindow; |
| /// |
| /// Minimum allowed connection interval. Shall be less than or equal to ConnIntervalMax. |
| /// |
| UINT16 ConnIntervalMin; |
| /// |
| /// Maximum allowed connection interval. Shall be greater than or equal to ConnIntervalMin. |
| /// |
| UINT16 ConnIntervalMax; |
| /// |
| /// Slave latency for the connection in number of connection events. |
| /// |
| UINT16 ConnLatency; |
| /// |
| /// Link supervision timeout for the connection. |
| /// |
| UINT16 SupervisionTimeout; |
| } EFI_BLUETOOTH_LE_CONFIG_CONNECT_PARAMETER; |
| |
| /** |
| Connect a BluetoothLE device. |
| |
| The Connect() function connects a Bluetooth device. When this function is returned successfully, |
| a new EFI_BLUETOOTH_IO_PROTOCOL is created. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] AutoReconnect If TRUE, the BluetoothLE host controller needs to do an auto |
| reconnect. If FALSE, the BluetoothLE host controller does not do |
| an auto reconnect. |
| @param[in] DoBonding If TRUE, the BluetoothLE host controller needs to do a bonding. |
| If FALSE, the BluetoothLE host controller does not do a bonding. |
| @param[in] ConnectParameter If it is not NULL, the ConnectParameter is used to perform a |
| scan by the BluetoothLE bus driver. If it is NULL, the default |
| parameter is used. |
| @param[in] BD_ADDR The address of the BluetoothLE device to be connected. |
| |
| @retval EFI_SUCCESS The BluetoothLE device is connected successfully. |
| @retval EFI_ALREADY_STARTED The BluetoothLE device is already connected. |
| @retval EFI_NOT_FOUND The BluetoothLE device is not found. |
| @retval EFI_DEVICE_ERROR A hardware error occurred trying to connect the BluetoothLE device. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_CONFIG_CONNECT)( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN BOOLEAN AutoReconnect, |
| IN BOOLEAN DoBonding, |
| IN EFI_BLUETOOTH_LE_CONFIG_CONNECT_PARAMETER *ConnectParameter, OPTIONAL |
| IN BLUETOOTH_LE_ADDRESS *BD_ADDR |
| ); |
| |
| /** |
| Disconnect a BluetoothLE device. |
| |
| The Disconnect() function disconnects a BluetoothLE device. When this function is returned |
| successfully, the EFI_BLUETOOTH_ATTRIBUTE_PROTOCOL associated with this device is |
| destroyed and all services associated are stopped. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] BD_ADDR The address of BluetoothLE device to be connected. |
| @param[in] Reason Bluetooth disconnect reason. See Bluetooth specification for detail. |
| |
| @retval EFI_SUCCESS The BluetoothLE device is disconnected successfully. |
| @retval EFI_NOT_STARTED The BluetoothLE device is not connected. |
| @retval EFI_NOT_FOUND The BluetoothLE device is not found. |
| @retval EFI_DEVICE_ERROR A hardware error occurred trying to disconnect the BluetoothLE device. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_CONFIG_DISCONNECT)( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN BLUETOOTH_LE_ADDRESS *BD_ADDR, |
| IN UINT8 Reason |
| ); |
| |
| /** |
| Get BluetoothLE configuration data. |
| |
| The GetData() function returns BluetoothLE configuration data. For remote BluetoothLE device |
| configuration data, please use GetRemoteData() function with valid BD_ADDR. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] DataType Configuration data type. |
| @param[in, out] 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[in, out] Data A pointer to the buffer of data that will be returned. |
| |
| @retval EFI_SUCCESS The BluetoothLE configuration data is returned successfully. |
| @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: |
| - DataSize is NULL. |
| - *DataSize is 0. |
| - 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. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_CONFIG_GET_DATA) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN EFI_BLUETOOTH_CONFIG_DATA_TYPE DataType, |
| IN OUT UINTN *DataSize, |
| IN OUT VOID *Data OPTIONAL |
| ); |
| |
| /** |
| Set BluetoothLE configuration data. |
| |
| The SetData() function sets local BluetoothLE device configuration data. Not all DataType can be |
| set. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] DataType Configuration data type. |
| @param[in] DataSize Indicates the size, in bytes, of the data buffer specified by Data. |
| @param[in] Data A pointer to the buffer of data that will be set. |
| |
| @retval EFI_SUCCESS The BluetoothLE 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_WRITE_PROTECTED Cannot set configuration data. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_CONFIG_SET_DATA) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN EFI_BLUETOOTH_CONFIG_DATA_TYPE DataType, |
| IN UINTN DataSize, |
| IN VOID *Data |
| ); |
| |
| /** |
| Get remove BluetoothLE device configuration data. |
| |
| The GetRemoteData() function returns remote BluetoothLE device configuration data. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] DataType Configuration data type. |
| @param[in] BDAddr Remote BluetoothLE device address. |
| @param[in, out] 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[in, out] Data A pointer to the buffer of data that will be returned. |
| |
| @retval EFI_SUCCESS The remote BluetoothLE device configuration data is returned successfully. |
| @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: |
| - DataSize is NULL. |
| - *DataSize is 0. |
| - 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. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_CONFIG_GET_REMOTE_DATA) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN EFI_BLUETOOTH_CONFIG_DATA_TYPE DataType, |
| IN BLUETOOTH_LE_ADDRESS *BDAddr, |
| IN OUT UINTN *DataSize, |
| IN OUT VOID *Data |
| ); |
| |
| typedef enum { |
| /// |
| /// It indicates an authorization request. No data is associated with the callback |
| /// input. In the output data, the application should return the authorization value. |
| /// The data structure is BOOLEAN. TRUE means YES. FALSE means NO. |
| /// |
| EfiBluetoothSmpAuthorizationRequestEvent, |
| /// |
| /// It indicates that a passkey has been generated locally by the driver, and the same |
| /// passkey should be entered at the remote device. The callback input data is the |
| /// passkey of type UINT32, to be displayed by the application. No output data |
| /// should be returned. |
| /// |
| EfiBluetoothSmpPasskeyReadyEvent, |
| /// |
| /// It indicates that the driver is requesting for the passkey has been generated at |
| /// the remote device. No data is associated with the callback input. The output data |
| /// is the passkey of type UINT32, to be entered by the user. |
| /// |
| EfiBluetoothSmpPasskeyRequestEvent, |
| /// |
| /// It indicates that the driver is requesting for the passkey that has been pre-shared |
| /// out-of-band with the remote device. No data is associated with the callback |
| /// input. The output data is the stored OOB data of type UINT8[16]. |
| /// |
| EfiBluetoothSmpOOBDataRequestEvent, |
| /// |
| /// In indicates that a number have been generated locally by the bus driver, and |
| /// also at the remote device, and the bus driver wants to know if the two numbers |
| /// match. The callback input data is the number of type UINT32. The output data |
| /// is confirmation value of type BOOLEAN. TRUE means comparison pass. FALSE |
| /// means comparison fail. |
| /// |
| EfiBluetoothSmpNumericComparisonEvent, |
| } EFI_BLUETOOTH_LE_SMP_EVENT_DATA_TYPE; |
| |
| /** |
| The callback function for SMP. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] Context Data passed into callback function. This is optional parameter |
| and may be NULL. |
| @param[in] BDAddr Remote BluetoothLE device address. |
| @param[in] EventDataType Event data type in EFI_BLUETOOTH_LE_SMP_EVENT_DATA_TYPE. |
| @param[in] DataSize Indicates the size, in bytes, of the data buffer specified by Data. |
| @param[in] Data A pointer to the buffer of data. |
| |
| @retval EFI_SUCCESS The callback function complete successfully. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_SMP_CALLBACK) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN VOID *Context, |
| IN BLUETOOTH_LE_ADDRESS *BDAddr, |
| IN EFI_BLUETOOTH_LE_SMP_EVENT_DATA_TYPE EventDataType, |
| IN UINTN DataSize, |
| IN VOID *Data |
| ); |
| |
| /** |
| Register Security Manager Protocol callback function for user authentication/authorization. |
| |
| The RegisterSmpAuthCallback() function register Security Manager Protocol callback |
| function for user authentication/authorization. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] Callback Callback function for user authentication/authorization. |
| @param[in] Context Data passed into Callback function. This is optional parameter and may be NULL. |
| |
| @retval EFI_SUCCESS The SMP callback function is registered successfully. |
| @retval EFI_ALREADY_STARTED A callback function is already registered on the same attribute |
| opcode and attribute handle, when the Callback is not NULL. |
| @retval EFI_NOT_STARTED A callback function is not registered on the same attribute opcode |
| and attribute handle, when the Callback is NULL. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_REGISTER_SMP_AUTH_CALLBACK) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN EFI_BLUETOOTH_LE_SMP_CALLBACK Callback, |
| IN VOID *Context |
| ); |
| |
| /** |
| Send user authentication/authorization to remote device. |
| |
| The SendSmpAuthData() function sends user authentication/authorization to remote device. It |
| should be used to send these information after the caller gets the request data from the callback |
| function by RegisterSmpAuthCallback(). |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] BDAddr Remote BluetoothLE device address. |
| @param[in] EventDataType Event data type in EFI_BLUETOOTH_LE_SMP_EVENT_DATA_TYPE. |
| @param[in] DataSize The size of Data in bytes, of the data buffer specified by Data. |
| @param[in] Data A pointer to the buffer of data that will be sent. The data format |
| depends on the type of SMP event data being responded to. |
| |
| @retval EFI_SUCCESS The SMP authorization data is sent successfully. |
| @retval EFI_NOT_READY SMP is not in the correct state to receive the auth data. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_SEND_SMP_AUTH_DATA) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN BLUETOOTH_LE_ADDRESS *BDAddr, |
| IN EFI_BLUETOOTH_LE_SMP_EVENT_DATA_TYPE EventDataType, |
| IN UINTN DataSize, |
| IN VOID *Data |
| ); |
| |
| typedef enum { |
| // For local device only |
| EfiBluetoothSmpLocalIR, /* If Key hierarchy is supported */ |
| EfiBluetoothSmpLocalER, /* If Key hierarchy is supported */ |
| EfiBluetoothSmpLocalDHK, /* If Key hierarchy is supported. OPTIONAL */ |
| // For peer specific |
| EfiBluetoothSmpKeysDistributed = 0x1000, |
| EfiBluetoothSmpKeySize, |
| EfiBluetoothSmpKeyType, |
| EfiBluetoothSmpPeerLTK, |
| EfiBluetoothSmpPeerIRK, |
| EfiBluetoothSmpPeerCSRK, |
| EfiBluetoothSmpPeerRand, |
| EfiBluetoothSmpPeerEDIV, |
| EfiBluetoothSmpPeerSignCounter, |
| EfiBluetoothSmpLocalLTK, /* If Key hierarchy not supported */ |
| EfiBluetoothSmpLocalIRK, /* If Key hierarchy not supported */ |
| EfiBluetoothSmpLocalCSRK, /* If Key hierarchy not supported */ |
| EfiBluetoothSmpLocalSignCounter, |
| EfiBluetoothSmpLocalDIV, |
| EfiBluetoothSmpPeerAddressList, |
| EfiBluetoothSmpMax, |
| } EFI_BLUETOOTH_LE_SMP_DATA_TYPE; |
| |
| /** |
| The callback function to get SMP data. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] Context Data passed into callback function. This is optional parameter |
| and may be NULL. |
| @param[in] BDAddr Remote BluetoothLE device address. For Local device setting, it |
| should be NULL. |
| @param[in] DataType Data type in EFI_BLUETOOTH_LE_SMP_DATA_TYPE. |
| @param[in, out] 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[out] Data A pointer to the buffer of data that will be returned. |
| |
| @retval EFI_SUCCESS The callback function complete successfully. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI * EFI_BLUETOOTH_LE_CONFIG_SMP_GET_DATA_CALLBACK) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN VOID *Context, |
| IN BLUETOOTH_LE_ADDRESS *BDAddr, |
| IN EFI_BLUETOOTH_LE_SMP_DATA_TYPE DataType, |
| IN OUT UINTN *DataSize, |
| OUT VOID *Data |
| ); |
| |
| /** |
| Register a callback function to get SMP related data. |
| |
| The RegisterSmpGetDataCallback() function registers a callback function to get SMP related data. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] Callback Callback function for SMP get data. |
| @param[in] Context Data passed into Callback function. This is optional parameter and may be NULL. |
| |
| @retval EFI_SUCCESS The SMP get data callback function is registered successfully. |
| @retval EFI_ALREADY_STARTED A callback function is already registered on the same attribute |
| opcode and attribute handle, when the Callback is not NULL. |
| @retval EFI_NOT_STARTED A callback function is not registered on the same attribute opcode |
| and attribute handle, when the Callback is NULL |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI * EFI_BLUETOOTH_LE_CONFIG_REGISTER_SMP_GET_DATA_CALLBACK) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN EFI_BLUETOOTH_LE_CONFIG_SMP_GET_DATA_CALLBACK Callback, |
| IN VOID *Context |
| ); |
| |
| /** |
| The callback function to set SMP data. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] Context Data passed into callback function. This is optional parameter |
| and may be NULL. |
| @param[in] BDAddr Remote BluetoothLE device address. |
| @param[in] DataType Data type in EFI_BLUETOOTH_LE_SMP_DATA_TYPE. |
| @param[in] DataSize Indicates the size, in bytes, of the data buffer specified by Data. |
| @param[in] Data A pointer to the buffer of data. |
| |
| @retval EFI_SUCCESS The callback function complete successfully. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI * EFI_BLUETOOTH_LE_CONFIG_SMP_SET_DATA_CALLBACK) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN VOID *Context, |
| IN BLUETOOTH_LE_ADDRESS *BDAddr, |
| IN EFI_BLUETOOTH_LE_SMP_DATA_TYPE Type, |
| IN UINTN DataSize, |
| IN VOID *Data |
| ); |
| |
| /** |
| Register a callback function to set SMP related data. |
| |
| The RegisterSmpSetDataCallback() function registers a callback function to set SMP related data. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] Callback Callback function for SMP set data. |
| @param[in] Context Data passed into Callback function. This is optional parameter and may be NULL. |
| |
| @retval EFI_SUCCESS The SMP set data callback function is registered successfully. |
| @retval EFI_ALREADY_STARTED A callback function is already registered on the same attribute |
| opcode and attribute handle, when the Callback is not NULL. |
| @retval EFI_NOT_STARTED A callback function is not registered on the same attribute opcode |
| and attribute handle, when the Callback is NULL |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI * EFI_BLUETOOTH_LE_CONFIG_REGISTER_SMP_SET_DATA_CALLBACK) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN EFI_BLUETOOTH_LE_CONFIG_SMP_SET_DATA_CALLBACK Callback, |
| IN VOID *Context |
| ); |
| |
| /** |
| The callback function to hook connect complete event. |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] Context Data passed into callback function. This is optional parameter |
| and may be NULL. |
| @param[in] CallbackType The value defined in EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE. |
| @param[in] BDAddr Remote BluetoothLE device address. |
| @param[in] InputBuffer A pointer to the buffer of data that is input from callback caller. |
| @param[in] 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_LE_CONFIG_CONNECT_COMPLETE_CALLBACK) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN VOID *Context, |
| IN EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE CallbackType, |
| IN BLUETOOTH_LE_ADDRESS *BDAddr, |
| IN VOID *InputBuffer, |
| IN UINTN InputBufferSize |
| ); |
| |
| /** |
| Register link connect complete callback function. |
| |
| The RegisterLinkConnectCompleteCallback() function registers Bluetooth link connect |
| complete callback function. The Bluetooth Configuration driver may call |
| RegisterLinkConnectCompleteCallback() to register a callback function. During pairing, |
| Bluetooth bus driver must trigger this callback function to report device state, if it is registered. |
| Then Bluetooth Configuration driver will get information on device connection, according to |
| CallbackType defined by EFI_BLUETOOTH_CONNECT_COMPLETE_CALLBACK_TYPE |
| |
| @param[in] This Pointer to the EFI_BLUETOOTH_LE_CONFIG_PROTOCOL instance. |
| @param[in] Callback The callback function. NULL means unregister. |
| @param[in] 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. |
| @retval EFI_ALREADY_STARTED A callback function is already registered on the same attribute |
| opcode and attribute handle, when the Callback is not NULL. |
| @retval EFI_NOT_STARTED A callback function is not registered on the same attribute opcode |
| and attribute handle, when the Callback is NULL |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_BLUETOOTH_LE_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK) ( |
| IN EFI_BLUETOOTH_LE_CONFIG_PROTOCOL *This, |
| IN EFI_BLUETOOTH_LE_CONFIG_CONNECT_COMPLETE_CALLBACK Callback, |
| IN VOID *Context |
| ); |
| |
| /// |
| /// This protocol abstracts user interface configuration for BluetoothLe device. |
| /// |
| struct _EFI_BLUETOOTH_LE_CONFIG_PROTOCOL { |
| EFI_BLUETOOTH_LE_CONFIG_INIT Init; |
| EFI_BLUETOOTH_LE_CONFIG_SCAN Scan; |
| EFI_BLUETOOTH_LE_CONFIG_CONNECT Connect; |
| EFI_BLUETOOTH_LE_CONFIG_DISCONNECT Disconnect; |
| EFI_BLUETOOTH_LE_CONFIG_GET_DATA GetData; |
| EFI_BLUETOOTH_LE_CONFIG_SET_DATA SetData; |
| EFI_BLUETOOTH_LE_CONFIG_GET_REMOTE_DATA GetRemoteData; |
| EFI_BLUETOOTH_LE_REGISTER_SMP_AUTH_CALLBACK RegisterSmpAuthCallback; |
| EFI_BLUETOOTH_LE_SEND_SMP_AUTH_DATA SendSmpAuthData; |
| EFI_BLUETOOTH_LE_CONFIG_REGISTER_SMP_GET_DATA_CALLBACK RegisterSmpGetDataCallback; |
| EFI_BLUETOOTH_LE_CONFIG_REGISTER_SMP_SET_DATA_CALLBACK RegisterSmpSetDataCallback; |
| EFI_BLUETOOTH_LE_CONFIG_REGISTER_CONNECT_COMPLETE_CALLBACK RegisterLinkConnectCompleteCallback; |
| }; |
| |
| extern EFI_GUID gEfiBluetoothLeConfigProtocolGuid; |
| |
| #endif |
| |