DM BT APIs

[English]

Important

The DM BT API v1.0 is the lastest stable DM BT APIs. All new applications should use DM BT API v1.0.

DM BT API Categories

Most of DM BT APIs can be categoried as:

Interface specific DM BT APIs:
  • BT common interface

  • BT A2DP Sink interface

Application Example

Check projects/lvgl/soundbar folder, which contains the following application:

  • There is a A2DP sink client demo. This demo can be discovered and connected by A2DP source device and receive the audio stream from remote device

API Reference

Header File

Functions

bt_err_t bk_bt_gap_set_event_callback(bt_event_cb_t func)

sets BT event callback function

Parameters

func[in] : callback

Returns

  • BK_ERR_BT_SUCCESS : Succeed

  • BK_ERR_BT_FAIL: others

bt_err_t bk_bt_gap_linkkey_reply(uint8_t is_exist, bk_bt_linkkey_storage_t *key)

send linkkey when peer need authentication

Attention

key->addr must be valued

Parameters
  • is_exist[in] : if linkkey exist. If no exist, peer may trigger pair procedure

  • key[in] : linkkey,

Returns

  • BK_ERR_BT_SUCCESS : Succeed

  • BK_ERR_BT_FAIL: others

bt_err_t bk_bt_gap_set_visibility(bk_bt_conn_mode_t conn_mode, bk_bt_disc_mode_t disc_mode)

sets the Bluetooth connectable, discoverable

Parameters
  • conn_mode[in] : one of the enums of bk_bt_conn_mode_t

  • disc_mode[in] : one of the enums of bk_bt_disc_mode_t

Returns

  • BK_ERR_BT_SUCCESS : Succeed

  • BK_ERR_BT_FAIL: others

bt_err_t bk_bt_gap_set_device_class(uint32_t cod)

set the class of device

See also

enum common_cod_t)

Parameters

cod, :[in] Class of Device for the device(

Returns

  • BK_ERR_BT_SUCCESS: succeed

  • others: fail

bt_err_t bk_bt_gap_set_local_name(uint8_t *name, uint8_t len)

set the local name

Parameters
  • name, :[in] pointer of name

  • len, :[in] the length of name

Returns

  • BK_ERR_BT_SUCCESS: succeed

  • others: fail

bt_err_t bk_bt_a2dp_sink_init(uint8_t aac_supported)

Initialize the bluetooth A2DP sink module.

Parameters

aac_supported, :[in] 1 means aac is supported, 0 means aac is not supported.

Returns

  • BK_ERR_BT_SUCCESS: the initialization request is successfully

  • others: fail

bt_err_t bk_bt_a2dp_register_callback(bk_bt_a2dp_cb_t callback)

Register application callback function to A2DP module. used by both A2DP source and sink.

Parameters

callback, :[in] A2DP event callback function

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

bt_err_t bk_bt_a2dp_sink_register_data_callback(bk_bt_sink_data_cb_t callback)

Register A2DP sink data output function;.

Parameters

callback, :[in] A2DP sink data callback function

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

bt_err_t bk_bt_a2dp_sink_connect(uint8_t *remote_bda)

Connect to remote bluetooth A2DP source device. This API must be called after bk_bt_a2dp_sink_init().

Parameters

remote_bda, :[in] remote bluetooth device address

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

bt_err_t bk_bt_a2dp_sink_disconnect(uint8_t *remote_bda)

Disconnect from the remote A2DP source device. This API must be called after bk_bt_a2dp_sink_init().

Parameters

remote_bda, :[in] remote bluetooth device address

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

bt_err_t bk_bt_avrcp_ct_init(void)

Initialize the bluetooth AVRCP controller module.

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

bt_err_t bk_bt_avrcp_tg_init(void)

Initialize the bluetooth AVRCP target module.

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

bt_err_t bk_bt_avrcp_ct_register_callback(bk_avrcp_ct_cb_t callback)

Register application callbacks to AVRCP module.

Parameters

callback, :[in] AVRCP controller callback function

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

bt_err_t bk_bt_avrcp_ct_send_get_rn_capabilities_cmd(uint8_t *remote_bda)

Send GetCapabilities PDU to AVRCP target to retrieve remote device’s supported notification event_ids. This function should be called after BK_AVRCP_CT_CONNECTION_STATE_EVT is received and AVRCP connection is established.

Parameters

remote_bda, :[in] remote bluetooth device address

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

bt_err_t bk_bt_ct_send_register_notification_cmd(uint8_t *remote_bda, uint8_t event_id, uint32_t event_parameter)

Send register notification command to AVRCP target. This function should be called after BK_AVRCP_CT_CONNECTION_STATE_EVT is received and AVRCP connection is established.

Parameters
  • remote_bda, :[in] remote bluetooth device address

  • event_id[in] : id of events, e.g. BK_AVRCP_RN_PLAY_STATUS_CHANGE, BK_AVRCP_RN_TRACK_CHANGE, etc.

  • event_parameter[in] : playback interval for BK_AVRCP_RN_PLAY_POS_CHANGED; For other events , value of this parameter is ignored.

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

bt_err_t bk_bt_avrcp_ct_send_passthrough_cmd(uint8_t *remote_bda, uint8_t key_code, uint8_t key_state)

Send passthrough command to AVRCP target. This function should be called after BK_AVRCP_CT_CONNECTION_STATE_EVT is received and AVRCP connection is established.

Parameters
  • remote_bda, :[in] remote bluetooth device address.

  • key_code[in] : passthrough command code, e.g. BK_AVRCP_PT_CMD_PLAY, BK_AVRCP_PT_CMD_STOP, etc.

  • key_state[in] : passthrough command key state, BK_AVRCP_PT_CMD_STATE_PRESSED or BK_AVRCP_PT_CMD_STATE_RELEASED

Returns

  • BK_ERR_BT_SUCCESS: success

  • others: fail

API Typedefs

Header File

Unions

union bk_a2dp_cb_param_t
#include <dm_bt_types.h>

A2DP state callback parameters.

Public Members

struct bk_a2dp_cb_param_t::a2dp_conn_state_param conn_state

A2DP connection status

struct bk_a2dp_cb_param_t::a2dp_audio_state_param audio_state

audio stream playing state

struct bk_a2dp_cb_param_t::a2dp_audio_cfg_param audio_cfg

media codec configuration information

struct a2dp_audio_cfg_param
#include <dm_bt_types.h>

BK_A2DP_AUDIO_CFG_EVT.

Public Members

uint8_t remote_bda[6]

remote bluetooth device address

bk_a2dp_mcc_t mcc

A2DP media codec capability information

struct a2dp_audio_state_param
#include <dm_bt_types.h>

BK_A2DP_AUDIO_STATE_EVT.

Public Members

bk_a2dp_audio_state_t state

one of the values from bk_a2dp_audio_state_t

uint8_t remote_bda[6]

remote bluetooth device address

struct a2dp_conn_state_param
#include <dm_bt_types.h>

BK_A2DP_CONNECTION_STATE_EVT.

Public Members

bk_a2dp_connection_state_t state

one of values from bk_a2dp_connection_state_t

uint8_t remote_bda[6]

remote bluetooth device address

bk_a2dp_disc_rsn_t disc_rsn

reason of disconnection for “DISCONNECTED”

union bk_avrcp_rn_param_t
#include <dm_bt_types.h>

AVRCP notification parameters.

Public Members

uint8_t volume

response data for BK_AVRCP_RN_VOLUME_CHANGE, ranges 0..127

bk_avrcp_playback_stat_t playback

response data for BK_AVRCP_RN_PLAY_STATUS_CHANGE

uint8_t elm_id[8]

response data for BK_AVRCP_RN_TRACK_CHANGE

uint32_t play_pos

response data for BK_AVRCP_RN_PLAY_POS_CHANGED, in millisecond

bk_avrcp_batt_stat_t batt

response data for BK_AVRCP_RN_BATTERY_STATUS_CHANGE

union bk_avrcp_ct_cb_param_t
#include <dm_bt_types.h>

AVRCP controller callback parameters.

Public Members

struct bk_avrcp_ct_cb_param_t::avrcp_ct_conn_state_param conn_state

AVRCP connection status

struct bk_avrcp_ct_cb_param_t::avrcp_ct_change_notify_param change_ntf

notifications

struct bk_avrcp_ct_cb_param_t::avrcp_ct_get_rn_caps_rsp_param get_rn_caps_rsp

get supported event capabilities response from AVRCP target

struct avrcp_ct_change_notify_param
#include <dm_bt_types.h>

BK_AVRCP_CT_CHANGE_NOTIFY_EVT.

Public Members

uint8_t event_id

id of AVRCP event notification

bk_avrcp_rn_param_t event_parameter

event notification parameter

struct avrcp_ct_conn_state_param
#include <dm_bt_types.h>

BK_AVRCP_CT_CONNECTION_STATE_EVT.

Public Members

uint8_t connected

whether AVRCP connection is set up

uint8_t remote_bda[6]

remote bluetooth device address

struct avrcp_ct_get_rn_caps_rsp_param
#include <dm_bt_types.h>

BK_AVRCP_CT_GET_RN_CAPABILITIES_RSP_EVT.

Public Members

uint8_t cap_count

number of items provided in event or company_id according to cap_id used

bk_avrcp_rn_evt_cap_mask_t evt_set

supported event_ids represented in bit-mask

Structures

struct bk_a2dp_mcc_t

A2DP media codec capabilities union.

Public Members

uint8_t type

A2DP media codec type

struct bk_a2dp_mcc_t::[anonymous]::[anonymous] sbc_codec

SBC codec capabilities.

struct bk_a2dp_mcc_t::[anonymous]::[anonymous] aac_codec

MPEG-2, 4 AAC codec capabilities.

union bk_a2dp_mcc_t::[anonymous] cie

A2DP codec information element

struct bk_bt_linkkey_storage_t

bt link key storage

Public Members

uint16_t size

this struct size

uint8_t addr[6]

bt addr

bt link key

struct bk_avrcp_rn_evt_cap_mask_t

AVRCP target notification event capability bit mask.

Public Members

uint16_t bits

bit mask representation of supported event_ids

Type Definitions

typedef void (*bk_bt_a2dp_cb_t)(bk_a2dp_cb_event_t event, bk_a2dp_cb_param_t *param)

A2DP profile callback function type.

Param event

: Event type

Param param

: Pointer to callback parameter

typedef void (*bk_bt_sink_data_cb_t)(const uint8_t *buf, uint16_t len)

A2DP sink data callback function.

Param buf

[in] : pointer to the data received from A2DP source device

Param len

[in] : size(in bytes) in buf

typedef void (*bk_avrcp_ct_cb_t)(bk_avrcp_ct_cb_event_t event, bk_avrcp_ct_cb_param_t *param)

AVRCP controller callback function type.

Param event

: Event type

Param param

: Pointer to callback parameter union

typedef uint32_t (*bt_event_cb_t)(bt_event_enum_t event, void *param)

for async dm_bt api event.

bt event report.

Param event, :

event id. see bt_event_enum_t

  • param: param

Enumerations

enum bk_bt_conn_mode_t

Discoverability and Connectability mode.

Values:

enumerator BK_BT_NON_CONNECTABLE

Non-connectable

enumerator BK_BT_CONNECTABLE

Connectable

enum bk_bt_disc_mode_t

Values:

enumerator BK_BT_NON_DISCOVERABLE

Non-discoverable

enumerator BK_BT_DISCOVERABLE

Discoverable

enum common_cod_t

Values:

enumerator COD_PHONE
enumerator COD_SOUNDBAR
enumerator COD_HEADSET
enum bk_a2dp_cb_event_t

A2DP callback events.

Values:

enumerator BK_A2DP_CONNECTION_STATE_EVT

connection state changed event

enumerator BK_A2DP_AUDIO_STATE_EVT

audio stream transmission state changed event

enumerator BK_A2DP_AUDIO_CFG_EVT

audio codec is configured, only used for A2DP SINK

enum bk_a2dp_connection_state_t

Bluetooth A2DP connection states.

Values:

enumerator BK_A2DP_CONNECTION_STATE_DISCONNECTED

connection released

enumerator BK_A2DP_CONNECTION_STATE_CONNECTING

connecting remote device

enumerator BK_A2DP_CONNECTION_STATE_CONNECTED

connection established

enumerator BK_A2DP_CONNECTION_STATE_DISCONNECTING

disconnecting remote device

enum bk_a2dp_disc_rsn_t

Bluetooth A2DP disconnection reason.

Values:

enumerator BK_A2DP_DISC_RSN_NORMAL

Finished disconnection that is initiated by local or remote device

enumerator BK_A2DP_DISC_RSN_ABNORMAL

Abnormal disconnection caused by signal loss

enum bk_a2dp_audio_state_t

Bluetooth A2DP datapath states.

Values:

enumerator BK_A2DP_AUDIO_STATE_SUSPEND

audio stream datapath suspend

enumerator BK_A2DP_AUDIO_STATE_STARTED

audio stream datapath started

enum bt_event_enum_t

Values:

enumerator BK_DM_BT_EVENT_STACK_OK

bt stack init ok, param NULL

enumerator BK_DM_BT_EVENT_INQUIRY_RESULT

inquiry result, not used now

enumerator BK_DM_BT_EVENT_DISCONNECT

disconnect completed, not used now

enumerator BK_DM_BT_EVENT_CONNECTION_COMPLETE

connection completed, not used now

enumerator BK_DM_BT_EVENT_LINKKEY_NOTIFY

recv cb when pair success and get link key, param bk_bt_linkkey_storage_t

enumerator BK_DM_BT_EVENT_LINKKEY_REQ

recv cb when peer need user to input link key, param bd_addr_t

enum bk_avrcp_rn_event_ids_t

AVRCP event notification ids.

Values:

enumerator BK_AVRCP_RN_PLAY_STATUS_CHANGE

track status change, eg. from playing to paused

enumerator BK_AVRCP_RN_TRACK_CHANGE

new track is loaded

enumerator BK_AVRCP_RN_TRACK_REACHED_END

current track reached end

enumerator BK_AVRCP_RN_TRACK_REACHED_START

current track reached start position

enumerator BK_AVRCP_RN_PLAY_POS_CHANGED

track playing position changed

enumerator BK_AVRCP_RN_BATTERY_STATUS_CHANGE

battery status changed

enumerator BK_AVRCP_RN_SYSTEM_STATUS_CHANGE

system status changed

enumerator BK_AVRCP_RN_APP_SETTING_CHANGE

application settings changed

enumerator BK_AVRCP_RN_NOW_PLAYING_CHANGE

now playing content changed

enumerator BK_AVRCP_RN_AVAILABLE_PLAYERS_CHANGE

available players changed

enumerator BK_AVRCP_RN_ADDRESSED_PLAYER_CHANGE

the addressed player changed

enumerator BK_AVRCP_RN_UIDS_CHANGE

UIDs changed

enumerator BK_AVRCP_RN_VOLUME_CHANGE

volume changed locally on TG

enumerator BK_AVRCP_RN_MAX_EVT
enum bk_avrcp_ct_cb_event_t

AVRCP Controller callback events.

Values:

enumerator BK_AVRCP_CT_CONNECTION_STATE_EVT

connection state changed event

enumerator BK_AVRCP_CT_PASSTHROUGH_RSP_EVT

passthrough response event

enumerator BK_AVRCP_CT_METADATA_RSP_EVT

metadata response event

enumerator BK_AVRCP_CT_PLAY_STATUS_RSP_EVT

play status response event

enumerator BK_AVRCP_CT_CHANGE_NOTIFY_EVT

notification event

enumerator BK_AVRCP_CT_REMOTE_FEATURES_EVT

feature of remote device indication event

enumerator BK_AVRCP_CT_GET_RN_CAPABILITIES_RSP_EVT

supported notification events capability of peer device

enumerator BK_AVRCP_CT_SET_ABSOLUTE_VOLUME_RSP_EVT

set absolute volume response event

enum bk_avrcp_batt_stat_t

AVRCP battery status.

Values:

enumerator BK_AVRCP_BATT_NORMAL

normal state

enumerator BK_AVRCP_BATT_WARNING

unable to operate soon

enumerator BK_AVRCP_BATT_CRITICAL

cannot operate any more

enumerator BK_AVRCP_BATT_EXTERNAL

plugged to external power supply

enumerator BK_AVRCP_BATT_FULL_CHARGE

when completely charged from external power supply

enum bk_avrcp_playback_stat_t

AVRCP current status of playback.

Values:

enumerator BK_AVRCP_PLAYBACK_STOPPED

stopped

enumerator BK_AVRCP_PLAYBACK_PLAYING

playing

enumerator BK_AVRCP_PLAYBACK_PAUSED

paused

enumerator BK_AVRCP_PLAYBACK_FWD_SEEK

forward seek

enumerator BK_AVRCP_PLAYBACK_REV_SEEK

reverse seek

enumerator BK_AVRCP_PLAYBACK_ERROR

error

enum bk_avrcp_pt_cmd_t

AVRCP passthrough command code.

Values:

enumerator BK_AVRCP_PT_CMD_SELECT

select

enumerator BK_AVRCP_PT_CMD_UP

up

enumerator BK_AVRCP_PT_CMD_DOWN

down

enumerator BK_AVRCP_PT_CMD_LEFT

left

enumerator BK_AVRCP_PT_CMD_RIGHT

right

enumerator BK_AVRCP_PT_CMD_RIGHT_UP

right-up

enumerator BK_AVRCP_PT_CMD_RIGHT_DOWN

right-down

enumerator BK_AVRCP_PT_CMD_LEFT_UP

left-up

enumerator BK_AVRCP_PT_CMD_LEFT_DOWN

left-down

enumerator BK_AVRCP_PT_CMD_ROOT_MENU

root menu

enumerator BK_AVRCP_PT_CMD_SETUP_MENU

setup menu

enumerator BK_AVRCP_PT_CMD_CONT_MENU

contents menu

enumerator BK_AVRCP_PT_CMD_FAV_MENU

favorite menu

enumerator BK_AVRCP_PT_CMD_EXIT

exit

enumerator BK_AVRCP_PT_CMD_0

0

enumerator BK_AVRCP_PT_CMD_1

1

enumerator BK_AVRCP_PT_CMD_2

2

enumerator BK_AVRCP_PT_CMD_3

3

enumerator BK_AVRCP_PT_CMD_4

4

enumerator BK_AVRCP_PT_CMD_5

5

enumerator BK_AVRCP_PT_CMD_6

6

enumerator BK_AVRCP_PT_CMD_7

7

enumerator BK_AVRCP_PT_CMD_8

8

enumerator BK_AVRCP_PT_CMD_9

9

enumerator BK_AVRCP_PT_CMD_DOT

dot

enumerator BK_AVRCP_PT_CMD_ENTER

enter

enumerator BK_AVRCP_PT_CMD_CLEAR

clear

enumerator BK_AVRCP_PT_CMD_CHAN_UP

channel up

enumerator BK_AVRCP_PT_CMD_CHAN_DOWN

channel down

enumerator BK_AVRCP_PT_CMD_PREV_CHAN

previous channel

enumerator BK_AVRCP_PT_CMD_SOUND_SEL

sound select

enumerator BK_AVRCP_PT_CMD_INPUT_SEL

input select

enumerator BK_AVRCP_PT_CMD_DISP_INFO

display information

enumerator BK_AVRCP_PT_CMD_HELP

help

enumerator BK_AVRCP_PT_CMD_PAGE_UP

page up

enumerator BK_AVRCP_PT_CMD_PAGE_DOWN

page down

enumerator BK_AVRCP_PT_CMD_POWER

power

enumerator BK_AVRCP_PT_CMD_VOL_UP

volume up

enumerator BK_AVRCP_PT_CMD_VOL_DOWN

volume down

enumerator BK_AVRCP_PT_CMD_MUTE

mute

enumerator BK_AVRCP_PT_CMD_PLAY

play

enumerator BK_AVRCP_PT_CMD_STOP

stop

enumerator BK_AVRCP_PT_CMD_PAUSE

pause

enumerator BK_AVRCP_PT_CMD_RECORD

record

enumerator BK_AVRCP_PT_CMD_REWIND

rewind

enumerator BK_AVRCP_PT_CMD_FAST_FORWARD

fast forward

enumerator BK_AVRCP_PT_CMD_EJECT

eject

enumerator BK_AVRCP_PT_CMD_FORWARD

forward

enumerator BK_AVRCP_PT_CMD_BACKWARD

backward

enumerator BK_AVRCP_PT_CMD_ANGLE

angle

enumerator BK_AVRCP_PT_CMD_SUBPICT

subpicture

enumerator BK_AVRCP_PT_CMD_F1

F1

enumerator BK_AVRCP_PT_CMD_F2

F2

enumerator BK_AVRCP_PT_CMD_F3

F3

enumerator BK_AVRCP_PT_CMD_F4

F4

enumerator BK_AVRCP_PT_CMD_F5

F5

enumerator BK_AVRCP_PT_CMD_VENDOR

vendor unique

enum bk_avrcp_pt_cmd_state_t

AVRCP passthrough command state.

Values:

enumerator BK_AVRCP_PT_CMD_STATE_PRESSED

key pressed

enumerator BK_AVRCP_PT_CMD_STATE_RELEASED

key released