_BRB_SCO_OPEN_CHANNEL structure (bthddi.h)

The _BRB_SCO_OPEN_CHANNEL structure describes a SCO channel to open to a remote device, or a response from the profile driver accepting or rejecting an incoming SCO connection request that was initiated by a remote device.

Syntax

struct _BRB_SCO_OPEN_CHANNEL {
  BRB_HEADER                 Hdr;
  BTH_ADDR                   BtAddress;
  ULONG                      TransmitBandwidth;
  ULONG                      ReceiveBandwidth;
  USHORT                     MaxLatency;
  USHORT                     PacketType;
  USHORT                     ContentFormat;
  USHORT                     Reserved;
  SCO_RETRANSMISSION_EFFORT  RetransmissionEffort;
  ULONG                      ChannelFlags;
  ULONG                      CallbackFlags;
  PFNSCO_INDICATION_CALLBACK Callback;
  PVOID                      CallbackContext;
  PVOID                      ReferenceObject;
  SCO_CHANNEL_HANDLE         ChannelHandle;
  UCHAR                      Response;
};

Members

Hdr

A BRB_HEADER structure that contains information about the current BRB.

BtAddress

The Bluetooth address of the remote device to open a SCO channel to.

TransmitBandwidth

The transmission bandwidth, in bytes per second, to be assigned to the SCO channel.

ReceiveBandwidth

The reception bandwidth, in bytes per second, to be assigned to the SCO channel.

MaxLatency

A value that represents, in milliseconds, the upper limit of the sum of the synchronous interval and the size of the (e)SCO window. Possible values are listed in the following table.

Values Description
0x0000 to 0x0003 Reserved for future use.
0x0004 to 0xFFFE The range of possible MaxLatency values for the channel.
0xFFFF The channel doesn't have a preferred MaxLatency setting.

PacketType

A flag or combination of flags that indicate the type of data packets that the SCO connection supports. These SCO packet types are defined by the Bluetooth SIG. See the Bluetooth specification for more information about these flags. Possible values include:

SCO_HV1

SCO_HV2

SCO_HV3

SCO_EV3

SCO_EV4

SCO_EV5

ContentFormat

The audio voice settings for the channel. Use the following definitions to encode this member:

SCO_VS_AIR_CODING_DATA
SCO_VS_AIR_CODING_FORMAT_ALAW
SCO_VS_AIR_CODING_FORMAT_CVSD
SCO_VS_AIR_CODING_FORMAT_MASK
SCO_VS_AIR_CODING_FORMAT_MULAW
SCO_VS_IN_CODING_ALAW
SCO_VS_IN_CODING_LINEAR
SCO_VS_IN_CODING_MASK
SCO_VS_IN_CODING_MULAW
SCO_VS_IN_DATA_FORMAT_1C
SCO_VS_IN_DATA_FORMAT_2C
SCO_VS_IN_DATA_FORMAT_MASK
SCO_VS_IN_DATA_FORMAT_SM
SCO_VS_IN_DATA_FORMAT_US
SCO_VS_IN_SAMPLE_SIZE_8BIT
SCO_VS_IN_SAMPLE_SIZE_16BIT
SCO_VS_IN_SAMPLE_SIZE_MASK
SCO_VS_PCM_BIT_POS_MASK
SCO_VS_SETTING_DEFAULT

Reserved

Reserved for future use. Do not use.

RetransmissionEffort

A SCO_RETRANSMISSION_EFFORT enumeration value that determines the retransmission policies for the channel.

ChannelFlags

Flags that specify the requirements for the channel to be opened. Valid flag values are listed in the following table:

Flag Description
SCO_CF_LINK_AUTHENTICATED The link must be authenticated.
SCO_CF_LINK_ENCRYPTED The link must be encrypted. Setting this flag also sets the SCO_CF_LINK_AUTHENTICATED flag.
SCO_CF_LINK_SUPPRESS_PIN The profile driver indicates its preference that users not be prompted for a PIN.

CallbackFlags

A flag that specifies when the function assigned to the Callback member should be sent to the client. Currently, there is only one valid flag:

Flag Description
SCO_CALLBACK_DISCONNECT The profile driver should be notified when the remote device is disconnected.

Callback

The SCO Callback Function implemented by the profile driver, that the Bluetooth driver stack should call to notify the profile driver about any changes to the SCO connection.

CallbackContext

The context to pass to the callback function specified in the Callback member. The profile driver defines this value.

ReferenceObject

A pointer to an object to pass to ObReferenceObject and ObDereferenceObject for which to maintain a reference count of.

ChannelHandle

A handle to identify the SCO channel, if the open channel request completes successfully.

Response

A flag that indicates whether the local server will accept or reject an incoming SCO connection. This member is used only when building and sending a BRB_SCO_OPEN_CHANNEL_RESPONSE request. Valid flag values are listed in the following table.

Flag Description
SCO_CONNECT_RSP_RESPONSE_SUCCESS The local server accepts the SCO connection request.
SCO_CONNECT_RSP_RESPONSE_NO_RESOURCES The local server rejects the SCO connection request due to a lack of resources.
SCO_CONNECT_RSP_RESPONSE_SECURITY_BLOCK The local server rejects the SCO connection request because the request does not meet security requirements.
SCO_CONNECT_RSP_RESPONSE_BAD_BD_ADDR The local server rejects the SCO connection request because it does not accept connections from the specified Bluetooth device address.

Remarks

To open a SCO channel, profile drivers should build and send a BRB_SCO_OPEN_CHANNEL request.

If the asynchronous connectionless link to the remote device does not exist prior to the request, the Bluetooth driver stack creates one before it creates the SCO channel.

To accept or reject an incoming SCO connection request initiated by a remote device, profile drivers should build and send a BRB_SCO_OPEN_CHANNEL_RESPONSE request.

A profile driver should build and send a BRB_SCO_OPEN_CHANNEL_RESPONSE request when the Bluetooth driver stack calls the profile driver's SCO Callback Function and passes ScoIndicationRemoteConnect in the callback function's Indication parameter.

The profile driver specifies whether the connection should be accepted by storing an appropriate value in the Response member of this structure. In this context, the local system is the server.

Requirements

Requirement Value
Minimum supported client Versions:_Supported in Windows Vista, and later.
Header bthddi.h (include Bthddi.h)

See also

BRB_HEADER

BRB_SCO_OPEN_CHANNEL

BRB_SCO_OPEN_CHANNEL_RESPONSE

ObDereferenceObject

ObReferenceObject

SCO Callback Function

SCO_RETRANSMISSION_EFFORT