This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

Serial Port Emulation (RFCOMM)

API Reference

group bt_rfcomm

RFCOMM.

Typedefs

typedef enum bt_rfcomm_role bt_rfcomm_role_t

Role of RFCOMM session and dlc.

Used only by internal APIs

Enums

enum [anonymous]

Values:

enumerator BT_RFCOMM_CHAN_HFP_HF = 1
enumerator BT_RFCOMM_CHAN_HFP_AG
enumerator BT_RFCOMM_CHAN_HSP_AG
enumerator BT_RFCOMM_CHAN_HSP_HS
enumerator BT_RFCOMM_CHAN_SPP
enum bt_rfcomm_role

Role of RFCOMM session and dlc.

Used only by internal APIs

Values:

enumerator BT_RFCOMM_ROLE_ACCEPTOR
enumerator BT_RFCOMM_ROLE_INITIATOR

Functions

int bt_rfcomm_server_register(struct bt_rfcomm_server *server)

Register RFCOMM server.

Register RFCOMM server for a channel, each new connection is authorized using the accept() callback which in case of success shall allocate the dlc structure to be used by the new connection.

Parameters:
  • server – Server structure.

Returns:

0 in case of success or negative value in case of error.

int bt_rfcomm_dlc_connect(struct bt_conn *conn, struct bt_rfcomm_dlc *dlc, uint8_t channel)

Connect RFCOMM channel.

Connect RFCOMM dlc by channel, once the connection is completed dlc connected() callback will be called. If the connection is rejected disconnected() callback is called instead.

Parameters:
  • conn – Connection object.

  • dlc – Dlc object.

  • channel – Server channel to connect to.

Returns:

0 in case of success or negative value in case of error.

int bt_rfcomm_dlc_send(struct bt_rfcomm_dlc *dlc, struct net_buf *buf)

Send data to RFCOMM.

Send data from buffer to the dlc. Length should be less than or equal to mtu.

Parameters:
  • dlc – Dlc object.

  • buf – Data buffer.

Returns:

Bytes sent in case of success or negative value in case of error.

int bt_rfcomm_dlc_disconnect(struct bt_rfcomm_dlc *dlc)

Disconnect RFCOMM dlc.

Disconnect RFCOMM dlc, if the connection is pending it will be canceled and as a result the dlc disconnected() callback is called.

Parameters:
  • dlc – Dlc object.

Returns:

0 in case of success or negative value in case of error.

struct net_buf *bt_rfcomm_create_pdu(struct net_buf_pool *pool)

Allocate the buffer from pool after reserving head room for RFCOMM, L2CAP and ACL headers.

Parameters:
  • pool – Which pool to take the buffer from.

Returns:

New buffer.

struct bt_rfcomm_dlc_ops
#include <rfcomm.h>

RFCOMM DLC operations structure.

Public Members

void (*connected)(struct bt_rfcomm_dlc *dlc)

DLC connected callback.

If this callback is provided it will be called whenever the connection completes.

Param dlc:

The dlc that has been connected

void (*disconnected)(struct bt_rfcomm_dlc *dlc)

DLC disconnected callback.

If this callback is provided it will be called whenever the dlc is disconnected, including when a connection gets rejected or cancelled (both incoming and outgoing)

Param dlc:

The dlc that has been Disconnected

void (*recv)(struct bt_rfcomm_dlc *dlc, struct net_buf *buf)

DLC recv callback.

Param dlc:

The dlc receiving data.

Param buf:

Buffer containing incoming data.

void (*sent)(struct bt_rfcomm_dlc *dlc, struct net_buf *buf, int err)

DLC sent callback.

Param dlc:

The dlc which has sent data.

Param buf:

Buffer containing data has been sent.

Param err:

Sent result.

struct bt_rfcomm_dlc
#include <rfcomm.h>

RFCOMM DLC structure.

struct bt_rfcomm_server
#include <rfcomm.h>

Public Members

uint8_t channel

Server Channel.

int (*accept)(struct bt_conn *conn, struct bt_rfcomm_dlc **dlc)

Server accept callback.

This callback is called whenever a new incoming connection requires authorization.

Param conn:

The connection that is requesting authorization

Param dlc:

Pointer to received the allocated dlc

Return:

0 in case of success or negative value in case of error.