Bluetooth Host Stack Library
All Data Structures Functions Variables Typedefs Enumerations Enumerator Modules Pages

General Description

Commonly used API's for both BE/EDR and LE L2CAP.

Functions

wiced_bool_t wiced_bt_l2cap_register_fixed_channel (uint16_t fixed_cid, wiced_bt_l2cap_fixed_chnl_reg_t *p_freg)
 Register a fixed channel. More...
 
wiced_bool_t wiced_bt_l2cap_deregister_fixed_channel (uint16_t fixed_cid)
 De-register a fixed channel. More...
 
wiced_bool_t wiced_bt_l2cap_connect_fixed_chnl (uint16_t fixed_cid, wiced_bt_device_address_t bd_addr, wiced_bt_ble_address_type_t ble_addr_type)
 Connect an fixed signalling channel to a remote device. More...
 
uint16_t wiced_bt_l2cap_send_fixed_chnl_data (uint16_t fixed_cid, wiced_bt_device_address_t rem_bda, uint8_t *p_data, uint16_t data_len)
 Write data on a fixed signalling channel. More...
 
wiced_bool_t wiced_bt_l2cap_remove_fixed_chnl (uint16_t fixed_cid, wiced_bt_device_address_t rem_bda)
 Remove a fixed channel to a remote device. More...
 
wiced_bool_t wiced_bt_l2cap_set_fixed_channel_timeout (wiced_bt_device_address_t rem_bda, uint16_t fixed_cid, uint16_t idle_timeout)
 Higher layers call this function to set the idle timeout for a fixed channel. More...
 
wiced_bool_t wiced_bt_l2cap_ecrb_register (uint16_t psm, wiced_bt_l2cap_ecrb_cb_ptrs_t *p_ecrb_callbacks)
 Application calls this function to register support for enhanced credit-based channels. More...
 
wiced_bool_t wiced_bt_l2cap_ecrb_deregister (uint16_t psm)
 Application calls this function to deregister support for enhanced credit-based channels. More...
 
int wiced_bt_l2cap_ecrb_connect_req (uint16_t psm, wiced_bt_transport_t transport, wiced_bt_device_address_t bd_addr, wiced_bt_ble_address_type_t bd_addr_type, wiced_bt_ble_conn_mode_t conn_mode, uint16_t our_rx_mtu, uint16_t our_rx_mps, int num_channels, tDRB **p_rx_drb_list, wiced_bt_ecrb_cid_list_t lcid_list)
 Higher layers call this function to create up to 5 credit-based L2CAP connections on the same PSM. More...
 
void wiced_bt_l2cap_ecrb_ConnectRsp (uint16_t result, uint8_t trans_id, int16_t our_rx_mtu, uint16_t our_rx_mps, wiced_bt_ecrb_cid_list_t lcid_list, tDRB **p_rx_drb_list)
 Higher layers call this function to accept incoming Enhanced Credit-based L2CAP channel establishment, for which they had gotten a connect indication callback. More...
 
wiced_bool_t wiced_bt_l2cap_ecrb_reconfigure (uint16_t new_rx_mtu, int16_t new_rx_mps, int num_channels, wiced_bt_ecrb_cid_list_t lcid_list, tDRB **p_rx_drb_list)
 Higher layers call this function to reconfigure the MTU and or MPS of Enhanced Credit-based L2CAP channels. More...
 
wiced_bool_t wiced_bt_l2cap_get_current_config (uint16_t lcid, wiced_bt_l2cap_cfg_information_t **pp_our_cfg, wiced_bt_l2cap_ch_cfg_bits_t *p_our_cfg_bits, wiced_bt_l2cap_cfg_information_t **pp_peer_cfg, wiced_bt_l2cap_ch_cfg_bits_t *p_peer_cfg_bits)
 This function returns configurations of L2CAP channel. More...
 
uint16_t wiced_bt_l2cap_register (uint16_t psm, wiced_bt_l2cap_appl_information_t *p_cb_information)
 Other layers call this function to register for L2CAP services. More...
 
void wiced_bt_l2cap_deregister (uint16_t psm)
 Other layers call this function to deregister for L2CAP services. More...
 
uint16_t wiced_bt_l2cap_allocate_psm (void)
 Other layers call this function to find an unused PSM for L2CAP services. More...
 
wiced_bool_t wiced_bt_l2cap_disconnect_req (uint16_t cid)
 Higher layers call this function to disconnect a channel. More...
 
wiced_bool_t wiced_bt_l2cap_disconnect_rsp (uint16_t cid)
 Higher layers call this function to acknowledge the disconnection of a channel. More...
 
uint8_t wiced_bt_l2cap_data_write (uint16_t cid, uint8_t *p_buf, uint16_t buf_len, uint16_t flags)
 Higher layers call this function to write data with extended. More...
 
wiced_bool_t wiced_bt_l2cap_set_idle_timeout (uint16_t cid, uint16_t timeout, wiced_bool_t is_global)
 Higher layers call this function to set the idle timeout for a connection, or for all future connections. More...
 
wiced_bool_t wiced_bt_l2cap_set_idle_timeout_by_bd_addr (wiced_bt_device_address_t bd_addr, uint16_t timeout, wiced_bt_transport_t transport)
 Higher layers call this function to set the idle timeout for a connection. More...
 
wiced_bool_t wiced_bt_l2cap_get_bdaddrby_handle (uint16_t handle, wiced_bt_device_address_t bd_addr)
 Get BD address for the given HCI handle. More...
 

Function Documentation

◆ wiced_bt_l2cap_register_fixed_channel()

wiced_bool_t wiced_bt_l2cap_register_fixed_channel ( uint16_t  fixed_cid,
wiced_bt_l2cap_fixed_chnl_reg_t p_freg 
)

Register a fixed channel.

Parameters
[in]fixed_cid: Fixed Channel #
[in]p_freg: Channel Callbacks and config
Returns
TRUE if registered OK

◆ wiced_bt_l2cap_deregister_fixed_channel()

wiced_bool_t wiced_bt_l2cap_deregister_fixed_channel ( uint16_t  fixed_cid)

De-register a fixed channel.

Parameters
[in]fixed_cid: Fixed Channel #
Returns
TRUE if registered OK

◆ wiced_bt_l2cap_connect_fixed_chnl()

wiced_bool_t wiced_bt_l2cap_connect_fixed_chnl ( uint16_t  fixed_cid,
wiced_bt_device_address_t  bd_addr,
wiced_bt_ble_address_type_t  ble_addr_type 
)

Connect an fixed signalling channel to a remote device.

Parameters
[in]fixed_cid: Fixed CID
[in]bd_addr: BD Address of remote
[in]ble_addr_type: Address type
Returns
TRUE if connection started

◆ wiced_bt_l2cap_send_fixed_chnl_data()

uint16_t wiced_bt_l2cap_send_fixed_chnl_data ( uint16_t  fixed_cid,
wiced_bt_device_address_t  rem_bda,
uint8_t *  p_data,
uint16_t  data_len 
)

Write data on a fixed signalling channel.

Parameters
[in]fixed_cid: Fixed CID
[in]rem_bda: BD Address of remote
[in]p_data: Pointer to data to send
[in]data_len: Length of data to send
Returns
L2CAP_DATAWRITE_SUCCESS, if data accepted L2CAP_DATAWRITE_FAILED, if error

◆ wiced_bt_l2cap_remove_fixed_chnl()

wiced_bool_t wiced_bt_l2cap_remove_fixed_chnl ( uint16_t  fixed_cid,
wiced_bt_device_address_t  rem_bda 
)

Remove a fixed channel to a remote device.

Parameters
[in]fixed_cid: Fixed CID
[in]rem_bda: BD Address of remote Idle timeout to use (or 0xFFFF if don't care)
Returns
TRUE if channel removed

◆ wiced_bt_l2cap_set_fixed_channel_timeout()

wiced_bool_t wiced_bt_l2cap_set_fixed_channel_timeout ( wiced_bt_device_address_t  rem_bda,
uint16_t  fixed_cid,
uint16_t  idle_timeout 
)

Higher layers call this function to set the idle timeout for a fixed channel.

The "idle timeout" is the amount of time that a connection can remain up with no L2CAP channels on it. A timeout of zero means that the connection will be torn down immediately when the last channel is removed. A timeout of 0xFFFF means no timeout. Values are in seconds. A bd_addr is the remote BD address. If bd_addr = BT_BD_ANY, then the idle timeouts for all active l2cap links will be changed.

Parameters
[in]rem_bda: Remote BD address
[in]fixed_cid: Fixed CID
[in]idle_timeout: Idle timeout
Returns
TRUE if command succeeded, FALSE if failed

◆ wiced_bt_l2cap_ecrb_register()

wiced_bool_t wiced_bt_l2cap_ecrb_register ( uint16_t  psm,
wiced_bt_l2cap_ecrb_cb_ptrs_t p_ecrb_callbacks 
)

Application calls this function to register support for enhanced credit-based channels.

The PSM must have been previously registered for BR and/or LE.

Parameters
[in]psm: PSM value
[in]p_ecrb_callbacks: callbacks for the credit based channel connections
Returns
WICED_TRUE if all ok

◆ wiced_bt_l2cap_ecrb_deregister()

wiced_bool_t wiced_bt_l2cap_ecrb_deregister ( uint16_t  psm)

Application calls this function to deregister support for enhanced credit-based channels.

The PSM must have been previously registered.

Parameters
[in]psmPSM value
Returns
WICED_TRUE if all OK.

◆ wiced_bt_l2cap_ecrb_connect_req()

int wiced_bt_l2cap_ecrb_connect_req ( uint16_t  psm,
wiced_bt_transport_t  transport,
wiced_bt_device_address_t  bd_addr,
wiced_bt_ble_address_type_t  bd_addr_type,
wiced_bt_ble_conn_mode_t  conn_mode,
uint16_t  our_rx_mtu,
uint16_t  our_rx_mps,
int  num_channels,
tDRB **  p_rx_drb_list,
wiced_bt_ecrb_cid_list_t  lcid_list 
)

Higher layers call this function to create up to 5 credit-based L2CAP connections on the same PSM.

Note
The connection is not established at this time, but connection establishment gets started. The callback function will be invoked when connection establishes or fails.
Parameters
[in]psmPSM Value
[in]transportBluetooth transport for the connection
[in]bd_addr: Bluetooth device address to connect
[in]bd_addr_typeBLE_ADDR_PUBLIC or BLE_ADDR_RANDOM
[in]conn_mode: LE connection mode
[in]our_rx_mtuOur RX MTU to be used for the channels
[in]our_rx_mpsOur RX MPS to be used for the channels
Note
our_rx_mps must be less then wiced_bt_cfg_ble_t::ble_max_rx_pdu_size or wiced_bt_cfg_br_t::br_max_rx_pdu_size for LE and BR/EDR transports respectively
Parameters
[in]num_channels: Number of channels to be created
[in]p_rx_drb_listlist of the allocated tDRB 's, one for each num_channels
Note
: the size of DRB allocated must be >= our_rx_mtu
Parameters
[out]lcid_listlist of cids (channel ids) which will be started
Returns
number of channels which will be started

◆ wiced_bt_l2cap_ecrb_ConnectRsp()

void wiced_bt_l2cap_ecrb_ConnectRsp ( uint16_t  result,
uint8_t  trans_id,
int16_t  our_rx_mtu,
uint16_t  our_rx_mps,
wiced_bt_ecrb_cid_list_t  lcid_list,
tDRB **  p_rx_drb_list 
)

Higher layers call this function to accept incoming Enhanced Credit-based L2CAP channel establishment, for which they had gotten a connect indication callback.

Parameters
[in]result: Result of the connection set by the application. L2CAP result codes (L2CAP_CONN_RESULT)
[in]trans_id: trans_id received in the wiced_bt_l2cap_ecrb_connect_ind
[in]our_rx_mtuOur RX MTU to be used for the channels
[in]our_rx_mpsOur RX MPS to be used for the channels
Note
our_rx_mps must be less then wiced_bt_cfg_ble_t::ble_max_rx_pdu_size or wiced_bt_cfg_br_t::br_max_rx_pdu_size for LE and BR/EDR transports respectively
Parameters
[out]lcid_listlist of cids (channel ids) which will be started as received in wiced_bt_l2cap_ecrb_connect_ind
Note
The CID list in lcid_list must match the CID list returned in the callback. The DRB pointer list must contain a valid DRB pointer for each non-zero CID in the list that the application accepts.
Parameters
[in]p_rx_drb_list: list of the allocated tDRB 's, one for each num_channels
Note
: the size of DRB allocated must be >= our_rx_mtu
Returns
void

◆ wiced_bt_l2cap_ecrb_reconfigure()

wiced_bool_t wiced_bt_l2cap_ecrb_reconfigure ( uint16_t  new_rx_mtu,
int16_t  new_rx_mps,
int  num_channels,
wiced_bt_ecrb_cid_list_t  lcid_list,
tDRB **  p_rx_drb_list 
)

Higher layers call this function to reconfigure the MTU and or MPS of Enhanced Credit-based L2CAP channels.

Parameters
[in]new_rx_mtuOur new RX MTU to be used for the channels
Note
If new_rx_mtu is zero, no change to MTU is requested. Otherwise new_rx_mtu must be larger than the old MTU for all channels.
Parameters
[in]new_rx_mpsOur new RX MPS to be used for the channels
Note
If new_rx_mts is zero, no change to MPS is requested. Otherwise new_rx_mps must be larger than the old MPS for all channels.
new_rx_mps must be less then wiced_bt_cfg_ble_t::ble_max_rx_pdu_size or wiced_bt_cfg_br_t::br_max_rx_pdu_size for LE and BR/EDR transports respectively
Parameters
[in]num_channels: Number of channels to be created
[in]lcid_list: list of channels to be reconfigured
[in]p_rx_drb_list: list of the allocated tDRB 's, one for each num_channels
Note
: the size of DRB allocated must be >= new_rx_mtu
Returns
WICED_TRUE if reconfigure sent OK

◆ wiced_bt_l2cap_get_current_config()

wiced_bool_t wiced_bt_l2cap_get_current_config ( uint16_t  lcid,
wiced_bt_l2cap_cfg_information_t **  pp_our_cfg,
wiced_bt_l2cap_ch_cfg_bits_t p_our_cfg_bits,
wiced_bt_l2cap_cfg_information_t **  pp_peer_cfg,
wiced_bt_l2cap_ch_cfg_bits_t p_peer_cfg_bits 
)

This function returns configurations of L2CAP channel.

Parameters
[in]lcid: Local CID
[in]pp_our_cfg: pointer of our saved configuration options
[in]p_our_cfg_bits: valid config in bitmap
[in]pp_peer_cfg: pointer of peer's saved configuration options
[in]p_peer_cfg_bits: valid config in bitmap
Returns
TRUE if successful

◆ wiced_bt_l2cap_register()

uint16_t wiced_bt_l2cap_register ( uint16_t  psm,
wiced_bt_l2cap_appl_information_t p_cb_information 
)

Other layers call this function to register for L2CAP services.

Parameters
[in]psm: PSM value
[in]p_cb_information: L2CAP cb info
Returns
PSM to use or zero if error. Typically, the PSM returned is the same as was passed in, but for an outgoing-only connection to a dynamic PSM, a "virtual" PSM is returned and should be used in the calls to wiced_bt_l2cap_connect_req().

◆ wiced_bt_l2cap_deregister()

void wiced_bt_l2cap_deregister ( uint16_t  psm)

Other layers call this function to deregister for L2CAP services.

Parameters
[in]psm: PSM value
Returns
void

◆ wiced_bt_l2cap_allocate_psm()

uint16_t wiced_bt_l2cap_allocate_psm ( void  )

Other layers call this function to find an unused PSM for L2CAP services.

Returns
PSM to use.

◆ wiced_bt_l2cap_disconnect_req()

wiced_bool_t wiced_bt_l2cap_disconnect_req ( uint16_t  cid)

Higher layers call this function to disconnect a channel.

Parameters
[in]cid: CID value
Returns
TRUE if disconnect sent, else FALSE

◆ wiced_bt_l2cap_disconnect_rsp()

wiced_bool_t wiced_bt_l2cap_disconnect_rsp ( uint16_t  cid)

Higher layers call this function to acknowledge the disconnection of a channel.

Parameters
[in]cid: CID value
Returns
void

◆ wiced_bt_l2cap_data_write()

uint8_t wiced_bt_l2cap_data_write ( uint16_t  cid,
uint8_t *  p_buf,
uint16_t  buf_len,
uint16_t  flags 
)

Higher layers call this function to write data with extended.

Parameters
[in]cid: CID value
[in]p_buf: Input buffer
[in]buf_len: p_buf buffer size
[in]flags: refer L2CAP data write flags
Returns
refer L2CAP data write result

◆ wiced_bt_l2cap_set_idle_timeout()

wiced_bool_t wiced_bt_l2cap_set_idle_timeout ( uint16_t  cid,
uint16_t  timeout,
wiced_bool_t  is_global 
)

Higher layers call this function to set the idle timeout for a connection, or for all future connections.

The "idle timeout" is the amount of time that a connection can remain up with no L2CAP channels on it. A timeout of zero means that the connection will be torn down immediately when the last channel is removed. A timeout of 0xFFFF means no timeout. Values are in seconds.

Parameters
[in]cid: CID value
[in]timeout: Timeout value
[in]is_global: TRUE, if global
Returns
TRUE if command succeeded, FALSE if failed

◆ wiced_bt_l2cap_set_idle_timeout_by_bd_addr()

wiced_bool_t wiced_bt_l2cap_set_idle_timeout_by_bd_addr ( wiced_bt_device_address_t  bd_addr,
uint16_t  timeout,
wiced_bt_transport_t  transport 
)

Higher layers call this function to set the idle timeout for a connection.

The "idle timeout" is the amount of time that a connection can remain up with no L2CAP channels on it. A timeout of zero means that the connection will be torn down immediately when the last channel is removed. A timeout of 0xFFFF means no timeout. Values are in seconds. A bd_addr is the remote BD address. If bd_addr = BT_BD_ANY, then the idle timeouts for all active l2cap links will be changed.

Parameters
[in]bd_addr: BD Address
[in]timeout: Timeout value
[in]transport: Transport (BR-EDR or LE)
Returns
TRUE if command succeeded, FALSE if failed
Note
This timeout applies to all logical channels active on the ACL link.

◆ wiced_bt_l2cap_get_bdaddrby_handle()

wiced_bool_t wiced_bt_l2cap_get_bdaddrby_handle ( uint16_t  handle,
wiced_bt_device_address_t  bd_addr 
)

Get BD address for the given HCI handle.

Parameters
[in]handle: HCI handle
[in]bd_addr: Peer Bd Address
Returns
: TRUE if found lcb for the given handle, FALSE otherwise