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>
		
			
				
	
	
		
			412 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			412 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  EFI Bluetooth IO Service Binding Protocol as defined in UEFI 2.5.
 | 
						|
  EFI Bluetooth IO Protocol as defined in UEFI 2.5.
 | 
						|
  The EFI Bluetooth IO Service Binding Protocol is used to locate EFI Bluetooth IO Protocol drivers to
 | 
						|
  create and destroy child of the driver to communicate with other Bluetooth device by using Bluetooth IO protocol.
 | 
						|
 | 
						|
  Copyright (c) 2015 - 2017, Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
  @par Revision Reference:
 | 
						|
  This Protocol is introduced in UEFI Specification 2.5
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __EFI_BLUETOOTH_IO_PROTOCOL_H__
 | 
						|
#define __EFI_BLUETOOTH_IO_PROTOCOL_H__
 | 
						|
 | 
						|
#include <IndustryStandard/Bluetooth.h>
 | 
						|
 | 
						|
#define EFI_BLUETOOTH_IO_SERVICE_BINDING_PROTOCOL_GUID \
 | 
						|
  { \
 | 
						|
    0x388278d3, 0x7b85, 0x42f0, { 0xab, 0xa9, 0xfb, 0x4b, 0xfd, 0x69, 0xf5, 0xab } \
 | 
						|
  }
 | 
						|
 | 
						|
#define EFI_BLUETOOTH_IO_PROTOCOL_GUID \
 | 
						|
  { \
 | 
						|
    0x467313de, 0x4e30, 0x43f1, { 0x94, 0x3e, 0x32, 0x3f, 0x89, 0x84, 0x5d, 0xb5 } \
 | 
						|
  }
 | 
						|
 | 
						|
typedef struct _EFI_BLUETOOTH_IO_PROTOCOL EFI_BLUETOOTH_IO_PROTOCOL;
 | 
						|
 | 
						|
///
 | 
						|
/// EFI_BLUETOOTH_DEVICE_INFO
 | 
						|
///
 | 
						|
typedef struct {
 | 
						|
  ///
 | 
						|
  /// The version of the structure
 | 
						|
  ///
 | 
						|
  UINT32                       Version;
 | 
						|
  ///
 | 
						|
  /// 48bit Bluetooth device address.
 | 
						|
  ///
 | 
						|
  BLUETOOTH_ADDRESS            BD_ADDR;
 | 
						|
  ///
 | 
						|
  /// Bluetooth PageScanRepetitionMode. See Bluetooth specification for detail.
 | 
						|
  ///
 | 
						|
  UINT8                        PageScanRepetitionMode;
 | 
						|
  ///
 | 
						|
  /// Bluetooth ClassOfDevice. See Bluetooth specification for detail.
 | 
						|
  ///
 | 
						|
  BLUETOOTH_CLASS_OF_DEVICE    ClassOfDevice;
 | 
						|
  ///
 | 
						|
  /// Bluetooth CloseOffset. See Bluetooth specification for detail.
 | 
						|
  ///
 | 
						|
  UINT16                       ClockOffset;
 | 
						|
  ///
 | 
						|
  /// Bluetooth RSSI. See Bluetooth specification for detail.
 | 
						|
  ///
 | 
						|
  UINT8                        RSSI;
 | 
						|
  ///
 | 
						|
  /// Bluetooth ExtendedInquiryResponse. See Bluetooth specification for detail.
 | 
						|
  ///
 | 
						|
  UINT8                        ExtendedInquiryResponse[240];
 | 
						|
} EFI_BLUETOOTH_DEVICE_INFO;
 | 
						|
 | 
						|
/**
 | 
						|
  Get Bluetooth device information.
 | 
						|
 | 
						|
  @param[in]   This               Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[out]  DeviceInfoSize     A pointer to the size, in bytes, of the DeviceInfo buffer.
 | 
						|
  @param[out]  DeviceInfo         A pointer to a callee allocated buffer that returns Bluetooth device information.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The Bluetooth device information is returned successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR        A hardware error occurred trying to retrieve the Bluetooth device information.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_GET_DEVICE_INFO)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL    *This,
 | 
						|
  OUT UINTN                       *DeviceInfoSize,
 | 
						|
  OUT VOID                        **DeviceInfo
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Get Bluetooth SDP information.
 | 
						|
 | 
						|
  @param[in]  This                Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[out] SdpInfoSize         A pointer to the size, in bytes, of the SdpInfo buffer.
 | 
						|
  @param[out] SdpInfo             A pointer to a callee allocated buffer that returns Bluetooth SDP information.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The Bluetooth device information is returned successfully.
 | 
						|
  @retval EFI_DEVICE_ERROR        A hardware error occurred trying to retrieve the Bluetooth SDP information.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_GET_SDP_INFO)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL    *This,
 | 
						|
  OUT UINTN                       *SdpInfoSize,
 | 
						|
  OUT VOID                        **SdpInfo
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Send L2CAP message (including L2CAP header).
 | 
						|
 | 
						|
  @param[in]      This            Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[in, out] BufferSize      On input, indicates the size, in bytes, of the data buffer specified by Buffer.
 | 
						|
                                  On output, indicates the amount of data actually transferred.
 | 
						|
  @param[in]      Buffer          A pointer to the buffer of data that will be transmitted to Bluetooth L2CAP layer.
 | 
						|
  @param[in]      Timeout         Indicating the transfer should be completed within this time frame. The units are in
 | 
						|
                                  milliseconds. If Timeout is 0, then the caller must wait for the function to be completed
 | 
						|
                                  until EFI_SUCCESS or EFI_DEVICE_ERROR is returned.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The L2CAP message is sent successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER   One or more of the following conditions is TRUE:
 | 
						|
                                  - BufferSize is NULL.
 | 
						|
                                  - *BufferSize is 0.
 | 
						|
                                  - Buffer is NULL.
 | 
						|
  @retval EFI_TIMEOUT             Sending L2CAP message fail due to timeout.
 | 
						|
  @retval EFI_DEVICE_ERROR        Sending L2CAP message fail due to host controller or device error.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_L2CAP_RAW_SEND)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL      *This,
 | 
						|
  IN OUT UINTN                      *BufferSize,
 | 
						|
  IN VOID                           *Buffer,
 | 
						|
  IN UINTN                          Timeout
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Receive L2CAP message (including L2CAP header).
 | 
						|
 | 
						|
  @param[in]  This                Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[in]  BufferSize          On input, indicates the size, in bytes, of the data buffer specified by Buffer.
 | 
						|
                                  On output, indicates the amount of data actually transferred.
 | 
						|
  @param[out] Buffer              A pointer to the buffer of data that will be received from Bluetooth L2CAP layer.
 | 
						|
  @param[in]  Timeout             Indicating the transfer should be completed within this time frame. The units are in
 | 
						|
                                  milliseconds. If Timeout is 0, then the caller must wait for the function to be completed
 | 
						|
                                  until EFI_SUCCESS or EFI_DEVICE_ERROR is returned.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The L2CAP message is received successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER   One or more of the following conditions is TRUE:
 | 
						|
                                  - BufferSize is NULL.
 | 
						|
                                  - *BufferSize is 0.
 | 
						|
                                  - Buffer is NULL.
 | 
						|
  @retval EFI_TIMEOUT             Receiving L2CAP message fail due to timeout.
 | 
						|
  @retval EFI_DEVICE_ERROR        Receiving L2CAP message fail due to host controller or device error.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_L2CAP_RAW_RECEIVE)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL  *This,
 | 
						|
  IN OUT UINTN                  *BufferSize,
 | 
						|
  OUT VOID                      *Buffer,
 | 
						|
  IN UINTN                      Timeout
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Callback function, it is called when asynchronous transfer is completed.
 | 
						|
 | 
						|
  @param[in]  ChannelID         Bluetooth L2CAP message channel ID.
 | 
						|
  @param[in]  Data              Data received via asynchronous transfer.
 | 
						|
  @param[in]  DataLength        The length of Data in bytes, received via asynchronous transfer.
 | 
						|
  @param[in]  Context           Context passed from asynchronous transfer request.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           The callback function complete successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_ASYNC_FUNC_CALLBACK)(
 | 
						|
  IN UINT16                     ChannelID,
 | 
						|
  IN VOID                       *Data,
 | 
						|
  IN UINTN                      DataLength,
 | 
						|
  IN VOID                       *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Receive L2CAP message (including L2CAP header) in non-blocking way.
 | 
						|
 | 
						|
  @param[in]  This                Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[in]  IsNewTransfer       If TRUE, a new transfer will be submitted. If FALSE, the request is deleted.
 | 
						|
  @param[in]  PollingInterval     Indicates the periodic rate, in milliseconds, that the transfer is to be executed.
 | 
						|
  @param[in]  DataLength          Specifies the length, in bytes, of the data to be received.
 | 
						|
  @param[in]  Callback            The callback function. This function is called if the asynchronous transfer is
 | 
						|
                                  completed.
 | 
						|
  @param[in]  Context             Data passed into Callback function. This is optional parameter and may be NULL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The L2CAP asynchronous receive request is submitted successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER   One or more of the following conditions is TRUE:
 | 
						|
                                  - DataLength is 0.
 | 
						|
                                  - If IsNewTransfer is TRUE, and an asynchronous receive request already exists.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_L2CAP_RAW_ASYNC_RECEIVE)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL              *This,
 | 
						|
  IN BOOLEAN                                IsNewTransfer,
 | 
						|
  IN UINTN                                  PollingInterval,
 | 
						|
  IN UINTN                                  DataLength,
 | 
						|
  IN EFI_BLUETOOTH_IO_ASYNC_FUNC_CALLBACK   Callback,
 | 
						|
  IN VOID                                   *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Send L2CAP message (excluding L2CAP header) to a specific channel.
 | 
						|
 | 
						|
  @param[in]      This            Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[in]      Handle          A handle created by EFI_BLUETOOTH_IO_PROTOCOL.L2CapConnect indicates which channel to send.
 | 
						|
  @param[in, out] BufferSize      On input, indicates the size, in bytes, of the data buffer specified by Buffer.
 | 
						|
                                  On output, indicates the amount of data actually transferred.
 | 
						|
  @param[in]      Buffer          A pointer to the buffer of data that will be transmitted to Bluetooth L2CAP layer.
 | 
						|
  @param[in]      Timeout         Indicating the transfer should be completed within this time frame. The units are in
 | 
						|
                                  milliseconds. If Timeout is 0, then the caller must wait for the function to be completed
 | 
						|
                                  until EFI_SUCCESS or EFI_DEVICE_ERROR is returned.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The L2CAP message is sent successfully.
 | 
						|
  @retval EFI_NOT_FOUND           Handle is invalid or not found.
 | 
						|
  @retval EFI_INVALID_PARAMETER   One or more of the following conditions is TRUE:
 | 
						|
                                  - BufferSize is NULL.
 | 
						|
                                  - *BufferSize is 0.
 | 
						|
                                  - Buffer is NULL.
 | 
						|
  @retval EFI_TIMEOUT             Sending L2CAP message fail due to timeout.
 | 
						|
  @retval EFI_DEVICE_ERROR        Sending L2CAP message fail due to host controller or device error.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_L2CAP_SEND)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL      *This,
 | 
						|
  IN EFI_HANDLE                     Handle,
 | 
						|
  IN OUT UINTN                      *BufferSize,
 | 
						|
  IN VOID                           *Buffer,
 | 
						|
  IN UINTN                          Timeout
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Receive L2CAP message (excluding L2CAP header) from a specific channel.
 | 
						|
 | 
						|
  @param[in]  This                Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[in]  Handle              A handle created by EFI_BLUETOOTH_IO_PROTOCOL.L2CapConnect indicates which channel to receive.
 | 
						|
  @param[out] BufferSize          Indicates the size, in bytes, of the data buffer specified by Buffer.
 | 
						|
  @param[out] Buffer              A pointer to the buffer of data that will be received from Bluetooth L2CAP layer.
 | 
						|
  @param[in]  Timeout             Indicating the transfer should be completed within this time frame. The units are in
 | 
						|
                                  milliseconds. If Timeout is 0, then the caller must wait for the function to be completed
 | 
						|
                                  until EFI_SUCCESS or EFI_DEVICE_ERROR is returned.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The L2CAP message is received successfully.
 | 
						|
  @retval EFI_NOT_FOUND           Handle is invalid or not found.
 | 
						|
  @retval EFI_INVALID_PARAMETER   One or more of the following conditions is TRUE:
 | 
						|
                                  - BufferSize is NULL.
 | 
						|
                                  - *BufferSize is 0.
 | 
						|
                                  - Buffer is NULL.
 | 
						|
  @retval EFI_TIMEOUT             Receiving L2CAP message fail due to timeout.
 | 
						|
  @retval EFI_DEVICE_ERROR        Receiving L2CAP message fail due to host controller or device error.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_L2CAP_RECEIVE)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL    *This,
 | 
						|
  IN EFI_HANDLE                   Handle,
 | 
						|
  OUT UINTN                       *BufferSize,
 | 
						|
  OUT VOID                        **Buffer,
 | 
						|
  IN UINTN                        Timeout
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Callback function, it is called when asynchronous transfer is completed.
 | 
						|
 | 
						|
  @param[in]  Data                Data received via asynchronous transfer.
 | 
						|
  @param[in]  DataLength          The length of Data in bytes, received via asynchronous transfer.
 | 
						|
  @param[in]  Context             Context passed from asynchronous transfer request.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS       The callback function complete successfully.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_CHANNEL_SERVICE_CALLBACK)(
 | 
						|
  IN VOID                         *Data,
 | 
						|
  IN UINTN                        DataLength,
 | 
						|
  IN VOID                         *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Receive L2CAP message (excluding L2CAP header) in non-blocking way from a specific channel.
 | 
						|
 | 
						|
  @param[in]  This                Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[in]  Handel              A handle created by EFI_BLUETOOTH_IO_PROTOCOL.L2CapConnect indicates which channel
 | 
						|
                                  to receive.
 | 
						|
  @param[in]  Callback            The callback function. This function is called if the asynchronous transfer is
 | 
						|
                                  completed.
 | 
						|
  @param[in]  Context             Data passed into Callback function. This is optional parameter and may be NULL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The L2CAP asynchronous receive request is submitted successfully.
 | 
						|
  @retval EFI_NOT_FOUND           Handle is invalid or not found.
 | 
						|
  @retval EFI_INVALID_PARAMETER   One or more of the following conditions is TRUE:
 | 
						|
                                  - DataLength is 0.
 | 
						|
                                  - If an asynchronous receive request already exists on same Handle.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_L2CAP_ASYNC_RECEIVE)(
 | 
						|
  IN  EFI_BLUETOOTH_IO_PROTOCOL                   *This,
 | 
						|
  IN  EFI_HANDLE                                  Handle,
 | 
						|
  IN  EFI_BLUETOOTH_IO_CHANNEL_SERVICE_CALLBACK   Callback,
 | 
						|
  IN  VOID *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Do L2CAP connection.
 | 
						|
 | 
						|
  @param[in]  This                Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[out] Handel              A handle to indicate this L2CAP connection.
 | 
						|
  @param[in]  Psm                 Bluetooth PSM. See Bluetooth specification for detail.
 | 
						|
  @param[in]  Mtu                 Bluetooth MTU. See Bluetooth specification for detail.
 | 
						|
  @param[in]  Callback            The callback function. This function is called whenever there is message received
 | 
						|
                                  in this channel.
 | 
						|
  @param[in]  Context             Data passed into Callback function. This is optional parameter and may be NULL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The Bluetooth L2CAP layer connection is created successfully.
 | 
						|
  @retval EFI_INVALID_PARAMETER   One or more of the following conditions is TRUE:
 | 
						|
                                  - Handle is NULL.
 | 
						|
  @retval EFI_DEVICE_ERROR        A hardware error occurred trying to do Bluetooth L2CAP connection.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_L2CAP_CONNECT)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL                    *This,
 | 
						|
  OUT EFI_HANDLE                                  *Handle,
 | 
						|
  IN UINT16                                       Psm,
 | 
						|
  IN UINT16                                       Mtu,
 | 
						|
  IN EFI_BLUETOOTH_IO_CHANNEL_SERVICE_CALLBACK    Callback,
 | 
						|
  IN VOID                                         *Context
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Do L2CAP disconnection.
 | 
						|
 | 
						|
  @param[in]  This                Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[in]  Handel              A handle to indicate this L2CAP connection.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The Bluetooth L2CAP layer is disconnected successfully.
 | 
						|
  @retval EFI_NOT_FOUND           Handle is invalid or not found.
 | 
						|
  @retval EFI_DEVICE_ERROR        A hardware error occurred trying to do Bluetooth L2CAP disconnection.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_L2CAP_DISCONNECT)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL                    *This,
 | 
						|
  IN EFI_HANDLE                                   Handle
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Register L2CAP callback function for special channel.
 | 
						|
 | 
						|
  @param[in]  This                Pointer to the EFI_BLUETOOTH_IO_PROTOCOL instance.
 | 
						|
  @param[out] Handel              A handle to indicate this L2CAP connection.
 | 
						|
  @param[in]  Psm                 Bluetooth PSM. See Bluetooth specification for detail.
 | 
						|
  @param[in]  Mtu                 Bluetooth MTU. See Bluetooth specification for detail.
 | 
						|
  @param[in]  Callback            The callback function. This function is called whenever there is message received
 | 
						|
                                  in this channel. NULL means unregister.
 | 
						|
  @param[in]  Context             Data passed into Callback function. This is optional parameter and may be NULL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS             The Bluetooth L2CAP callback function is registered successfully.
 | 
						|
  @retval EFI_ALREADY_STARTED     The callback function already exists when register.
 | 
						|
  @retval EFI_NOT_FOUND           The callback function does not exist when unregister.
 | 
						|
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_BLUETOOTH_IO_L2CAP_REGISTER_SERVICE)(
 | 
						|
  IN EFI_BLUETOOTH_IO_PROTOCOL                    *This,
 | 
						|
  OUT EFI_HANDLE                                  *Handle,
 | 
						|
  IN UINT16                                       Psm,
 | 
						|
  IN UINT16                                       Mtu,
 | 
						|
  IN EFI_BLUETOOTH_IO_CHANNEL_SERVICE_CALLBACK    Callback,
 | 
						|
  IN VOID                                         *Context
 | 
						|
  );
 | 
						|
 | 
						|
///
 | 
						|
/// This protocol provides service for Bluetooth L2CAP (Logical Link Control and Adaptation Protocol)
 | 
						|
/// and SDP (Service Discovery Protocol).
 | 
						|
///
 | 
						|
struct _EFI_BLUETOOTH_IO_PROTOCOL {
 | 
						|
  EFI_BLUETOOTH_IO_GET_DEVICE_INFO            GetDeviceInfo;
 | 
						|
  EFI_BLUETOOTH_IO_GET_SDP_INFO               GetSdpInfo;
 | 
						|
  EFI_BLUETOOTH_IO_L2CAP_RAW_SEND             L2CapRawSend;
 | 
						|
  EFI_BLUETOOTH_IO_L2CAP_RAW_RECEIVE          L2CapRawReceive;
 | 
						|
  EFI_BLUETOOTH_IO_L2CAP_RAW_ASYNC_RECEIVE    L2CapRawAsyncReceive;
 | 
						|
  EFI_BLUETOOTH_IO_L2CAP_SEND                 L2CapSend;
 | 
						|
  EFI_BLUETOOTH_IO_L2CAP_RECEIVE              L2CapReceive;
 | 
						|
  EFI_BLUETOOTH_IO_L2CAP_ASYNC_RECEIVE        L2CapAsyncReceive;
 | 
						|
  EFI_BLUETOOTH_IO_L2CAP_CONNECT              L2CapConnect;
 | 
						|
  EFI_BLUETOOTH_IO_L2CAP_DISCONNECT           L2CapDisconnect;
 | 
						|
  EFI_BLUETOOTH_IO_L2CAP_REGISTER_SERVICE     L2CapRegisterService;
 | 
						|
};
 | 
						|
 | 
						|
extern EFI_GUID  gEfiBluetoothIoServiceBindingProtocolGuid;
 | 
						|
extern EFI_GUID  gEfiBluetoothIoProtocolGuid;
 | 
						|
 | 
						|
#endif
 |