Infineon Logo AIROC BTSDK v4.6 - Documentation
 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
Synchronous Connection Oriented (SCO) Channel

SCO Definitions and Functions. More...

Data Structures

struct  wiced_bt_sco_params_t
 Subset for the enhanced setup/accept synchronous connection paramters. More...
 
struct  wiced_bt_voice_path_setup_t
 SCO path config. More...
 

Macros

#define WICED_BT_SCO_CONNECTION_ACCEPT   0x00
 
#define WICED_BT_SCO_CONNECTION_REJECT_RESOURCES   0x0D
 
#define WICED_BT_SCO_CONNECTION_REJECT_SECURITY   0x0E
 
#define WICED_BT_SCO_CONNECTION_REJECT_DEVICE   0x0F
 
#define WICED_INVALID_SCO_INDEX   0xFFFF
 
#define WICED_SCO_LINK_ALL_PKT_MASK   0x003F
 
#define WICED_SCO_LINK_ONLY_MASK   0x0007
 
#define WICED_SCO_PKT_TYPES_MASK_HV3   0x0004
 
#define WICED_SCO_PKT_TYPES_MASK_EV3   0x0008
 
#define WICED_SCO_PKT_TYPES_MASK_EV4   0x0010
 
#define WICED_SCO_PKT_TYPES_MASK_EV5   0x0020
 
#define WICED_SCO_PKT_TYPES_MASK_NO_2_EV3   0x0040
 
#define WICED_SCO_PKT_TYPES_MASK_NO_3_EV3   0x0080
 
#define WICED_SCO_PKT_TYPES_MASK_NO_2_EV5   0x0100
 
#define WICED_SCO_PKT_TYPES_MASK_NO_3_EV5   0x0200
 
#define WICED_BT_SCO_DATA_CB_GET_LENGTH(ltch_len)   ((ltch_len>>8)&0xff)
 SCO data callback length.
 
#define wiced_bt_sco_setup_voice_path   wiced_bt_setup_voice_path
 

Typedefs

typedef void( wiced_bt_sco_data_cb_t )(uint32_t ltch_len, uint8_t *p_data)
 Call back function for pcm data transfer, ltch_len = (length)<<8|(sco_channel)
 

Enumerations

enum  wiced_bt_sco_route_path_t { WICED_BT_SCO_OVER_PCM = 0, WICED_BT_SCO_OVER_APP_CB }
 SCO route path. More...
 

Functions

wiced_bt_dev_status_t wiced_bt_sco_create_as_initiator (wiced_bt_device_address_t bd_addr, uint16_t *p_sco_index, wiced_bt_sco_params_t *p_params)
 Function wiced_bt_sco_create_as_initiator. More...
 
wiced_bt_dev_status_t wiced_bt_sco_create_as_acceptor (uint16_t *p_sco_index)
 Function wiced_bt_sco_create_as_acceptor. More...
 
wiced_bt_dev_status_t wiced_bt_sco_create_as_acceptor_with_specific_ag (wiced_bt_device_address_t ag_addr, uint16_t *p_sco_index)
 Function wiced_bt_sco_create_as_acceptor. More...
 
wiced_bt_dev_status_t wiced_bt_sco_remove (uint16_t sco_index)
 Function wiced_bt_sco_remove. More...
 
void wiced_bt_sco_accept_connection (uint16_t sco_index, uint8_t hci_status, wiced_bt_sco_params_t *p_params)
 Function wiced_bt_sco_accept_connection. More...
 
wiced_bt_dev_status_t wiced_bt_setup_voice_path (wiced_bt_voice_path_setup_t *pData)
 Function wiced_bt_setup_voice_path. More...
 
uint16_t wiced_bt_sco_output_stream (uint16_t sco_index, uint8_t *p_pcmsrc, uint16_t len)
 Function wiced_bt_sco_output_stream. More...
 
void wiced_bt_sco_turn_off_pcm_clock (void)
 Function wiced_bt_sco_turn_off_pcm_clock. More...
 

Detailed Description

SCO Definitions and Functions.

SCO logical transport, is a symmetric, point-to-point transport between the central and a specific peripheral. The SCO logical transport reserves slots and can therefore be considered as a circuit-switched connection between the central and the peripheral. The central may support up to three SCO links to the same peripheral or to different peripherals. A peripheral may support up to three SCO links from the same central, or two SCO links if the links originate from different centrals. SCO packets are never retransmitted.

Enumeration Type Documentation

SCO route path.

Enumerator
WICED_BT_SCO_OVER_PCM 

[DEFAULT] PCM data config for routing over I2S/PCM interface

WICED_BT_SCO_OVER_APP_CB 

PCM data config for routing over APP.

Function Documentation

void wiced_bt_sco_accept_connection ( uint16_t  sco_index,
uint8_t  hci_status,
wiced_bt_sco_params_t p_params 
)

Function wiced_bt_sco_accept_connection.

Called to handle (e)SCO connection request event (wiced_bt_sco_connect_request_event).

Parameters
[in]sco_index: SCO index
[in]HCIstatus code : WICED_BT_SCO_CONNECTION_ACCEPT 0x00 WICED_BT_SCO_CONNECTION_REJECT_RESOURCES 0x0D WICED_BT_SCO_CONNECTION_REJECT_SECURITY 0x0E WICED_BT_SCO_CONNECTION_REJECT_DEVICE 0x0F
[in]p_params: Pointer to the SCO parameter structure
wiced_bt_dev_status_t wiced_bt_sco_create_as_acceptor ( uint16_t *  p_sco_index)

Function wiced_bt_sco_create_as_acceptor.

Creates a synchronous connection oriented connection as acceptor.

Parameters
[out]p_sco_index: SCO index returned
Returns
WICED_BT_UNKNOWN_ADDR : Create connection failed, ACL connection is not up or address is invalid WICED_BT_BUSY : Create connection failed, a SCO connection is already conncted to the same BD address WICED_BT_WRONG_MODE : Create connection failed, link in park mode or automatic un-park is not supported WICED_BT_NO_RESOURCES : Create connection failed, max SCO limit has been reached WICED_BT_PENDING : Create connection successfully, "p_sco_index" is returned
wiced_bt_dev_status_t wiced_bt_sco_create_as_acceptor_with_specific_ag ( wiced_bt_device_address_t  ag_addr,
uint16_t *  p_sco_index 
)

Function wiced_bt_sco_create_as_acceptor.

Creates a synchronous connection oriented connection as acceptor with specifi Audio Gateway.

Parameters
[in]ag_addr: Target Audio Gateway's address
[out]p_sco_index: SCO index returned
Returns
WICED_BT_UNKNOWN_ADDR : Create connection failed, ACL connection is not up or address is invalid WICED_BT_BUSY : Create connection failed, a SCO connection is already conncted to the same BD address WICED_BT_WRONG_MODE : Create connection failed, link in park mode or automatic un-park is not supported WICED_BT_NO_RESOURCES : Create connection failed, max SCO limit has been reached BTM_CMD_STARTED : Create connection successfully, "p_sco_index" is returned
wiced_bt_dev_status_t wiced_bt_sco_create_as_initiator ( wiced_bt_device_address_t  bd_addr,
uint16_t *  p_sco_index,
wiced_bt_sco_params_t p_params 
)

Function wiced_bt_sco_create_as_initiator.

Creates a synchronous connection oriented connection as initiator.

Parameters
[in]bd_addr: Peer bd_addr
[in]p_params: Pointer to the SCO parameter structure
[out]p_sco_index: SCO index returned
Returns
WICED_BT_UNKNOWN_ADDR : Create connection failed, ACL connection is not up WICED_BT_BUSY : Create connection failed, another SCO is being conncted to the same BD address WICED_BT_WRONG_MODE : Create connection failed, wrong mode WICED_BT_NO_RESOURCES : Create connection failed, max SCO limit has been reached WICED_BT_PENDING : Create connection successfully, "p_sco_index" is returned
uint16_t wiced_bt_sco_output_stream ( uint16_t  sco_index,
uint8_t *  p_pcmsrc,
uint16_t  len 
)

Function wiced_bt_sco_output_stream.

Send pcm data to internal audio pipe.

Parameters
[in]sco_index: SCO index to send the stream
[in]p_pcmsrc: Audio stream source.
[in]len: Length of stream.
Returns
: Return the length of non transmitted stream.
wiced_bt_dev_status_t wiced_bt_sco_remove ( uint16_t  sco_index)

Function wiced_bt_sco_remove.

Removes a specific synchronous connection oriented connection.

Parameters
[in]sco_index: SCO index to remove
Returns
WICED_BT_UNKNOWN_ADDR : Remove connection failed, invalid SCO index WICED_BT_NO_RESOURCES : Remove connection failed, no resource WICED_BT_SUCCESS : Remove connection successfully, device is still listening for incoming connection WICED_BT_PENDING : Remove connection successfully
void wiced_bt_sco_turn_off_pcm_clock ( void  )

Function wiced_bt_sco_turn_off_pcm_clock.

The wiced_voice_path.a was required to include before we link this function. To turn off the PCM/I2S hardware clock This function needs to be called after the application turns off (or mutes audio data in/out of) the codec

Returns
: None
wiced_bt_dev_status_t wiced_bt_setup_voice_path ( wiced_bt_voice_path_setup_t pData)

Function wiced_bt_setup_voice_path.

Configure the SCO routing path.

Parameters
[in]pData: To setup SCO routing path
Returns
WICED_BT_SUCCESS : Config success. WICED_BT_PENDING : Command sent. Waiting for command complete event. WICED_BT_BUSY : Command not sent. Waiting for command complete event for prior command.