Zephyr API Documentation 4.0.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches

Data buffers . More...

Data Structures

struct  bt_buf_data
 This is a base type for bt_buf user data. More...
 

Macros

#define BT_BUF_RESERVE   1
 
#define BT_BUF_SIZE(size)
 Helper to include reserved HCI data in buffer calculations.
 
#define BT_BUF_ACL_SIZE(size)
 Helper to calculate needed buffer size for HCI ACL packets.
 
#define BT_BUF_EVT_SIZE(size)
 Helper to calculate needed buffer size for HCI Event packets.
 
#define BT_BUF_CMD_SIZE(size)
 Helper to calculate needed buffer size for HCI Command packets.
 
#define BT_BUF_ISO_SIZE(size)
 Helper to calculate needed buffer size for HCI ISO packets.
 
#define BT_BUF_ACL_RX_SIZE   BT_BUF_ACL_SIZE(CONFIG_BT_BUF_ACL_RX_SIZE)
 Data size needed for HCI ACL RX buffers.
 
#define BT_BUF_EVT_RX_SIZE   BT_BUF_EVT_SIZE(CONFIG_BT_BUF_EVT_RX_SIZE)
 Data size needed for HCI Event RX buffers.
 
#define BT_BUF_ISO_RX_SIZE   0
 
#define BT_BUF_ISO_RX_COUNT   0
 
#define BT_BUF_ACL_RX_COUNT_MAX   65535
 
#define BT_BUF_ACL_RX_COUNT   0
 
#define BT_BUF_RX_SIZE
 Data size needed for HCI ACL, HCI ISO or Event RX buffers.
 
#define BT_BUF_RX_COUNT
 Buffer count needed for HCI ACL, HCI ISO or Event RX buffers.
 
#define BT_BUF_CMD_TX_SIZE   BT_BUF_CMD_SIZE(CONFIG_BT_BUF_CMD_TX_SIZE)
 Data size needed for HCI Command buffers.
 

Typedefs

typedef void(* bt_buf_rx_freed_cb_t) (enum bt_buf_type type_mask)
 A callback to notify about freed buffer in the incoming data pool.
 

Enumerations

enum  bt_buf_type {
  BT_BUF_CMD = BIT(0) , BT_BUF_EVT = BIT(1) , BT_BUF_ACL_OUT = BIT(2) , BT_BUF_ACL_IN = BIT(3) ,
  BT_BUF_ISO_OUT = BIT(4) , BT_BUF_ISO_IN = BIT(5) , BT_BUF_H4 = BIT(6)
}
 Possible types of buffers passed around the Bluetooth stack in a form of bitmask. More...
 

Functions

struct net_bufbt_buf_get_rx (enum bt_buf_type type, k_timeout_t timeout)
 Allocate a buffer for incoming data.
 
void bt_buf_rx_freed_cb_set (bt_buf_rx_freed_cb_t cb)
 Set the callback to notify about freed buffer in the incoming data pool.
 
struct net_bufbt_buf_get_tx (enum bt_buf_type type, k_timeout_t timeout, const void *data, size_t size)
 Allocate a buffer for outgoing data.
 
struct net_bufbt_buf_get_evt (uint8_t evt, bool discardable, k_timeout_t timeout)
 Allocate a buffer for an HCI Event.
 
static void bt_buf_set_type (struct net_buf *buf, enum bt_buf_type type)
 Set the buffer type.
 
static enum bt_buf_type bt_buf_get_type (struct net_buf *buf)
 Get the buffer type.
 

Detailed Description

Data buffers .

Macro Definition Documentation

◆ BT_BUF_ACL_RX_COUNT

#define BT_BUF_ACL_RX_COUNT   0

◆ BT_BUF_ACL_RX_COUNT_MAX

#define BT_BUF_ACL_RX_COUNT_MAX   65535

◆ BT_BUF_ACL_RX_SIZE

#define BT_BUF_ACL_RX_SIZE   BT_BUF_ACL_SIZE(CONFIG_BT_BUF_ACL_RX_SIZE)

#include <zephyr/bluetooth/buf.h>

Data size needed for HCI ACL RX buffers.

◆ BT_BUF_ACL_SIZE

#define BT_BUF_ACL_SIZE ( size)

#include <zephyr/bluetooth/buf.h>

Value:
#define BT_BUF_SIZE(size)
Helper to include reserved HCI data in buffer calculations.
Definition buf.h:58
#define BT_HCI_ACL_HDR_SIZE
Definition hci_types.h:87

Helper to calculate needed buffer size for HCI ACL packets.

◆ BT_BUF_CMD_SIZE

#define BT_BUF_CMD_SIZE ( size)

#include <zephyr/bluetooth/buf.h>

Value:
#define BT_HCI_CMD_HDR_SIZE
Definition hci_types.h:136

Helper to calculate needed buffer size for HCI Command packets.

◆ BT_BUF_CMD_TX_SIZE

#define BT_BUF_CMD_TX_SIZE   BT_BUF_CMD_SIZE(CONFIG_BT_BUF_CMD_TX_SIZE)

#include <zephyr/bluetooth/buf.h>

Data size needed for HCI Command buffers.

◆ BT_BUF_EVT_RX_SIZE

#define BT_BUF_EVT_RX_SIZE   BT_BUF_EVT_SIZE(CONFIG_BT_BUF_EVT_RX_SIZE)

#include <zephyr/bluetooth/buf.h>

Data size needed for HCI Event RX buffers.

◆ BT_BUF_EVT_SIZE

#define BT_BUF_EVT_SIZE ( size)

#include <zephyr/bluetooth/buf.h>

Value:
#define BT_HCI_EVT_HDR_SIZE
Definition hci_types.h:64

Helper to calculate needed buffer size for HCI Event packets.

◆ BT_BUF_ISO_RX_COUNT

#define BT_BUF_ISO_RX_COUNT   0

◆ BT_BUF_ISO_RX_SIZE

#define BT_BUF_ISO_RX_SIZE   0

◆ BT_BUF_ISO_SIZE

#define BT_BUF_ISO_SIZE ( size)

#include <zephyr/bluetooth/buf.h>

Value:
(size))
#define BT_HCI_ISO_SDU_TS_HDR_SIZE
Definition hci_types.h:122
#define BT_HCI_ISO_HDR_SIZE
Definition hci_types.h:129

Helper to calculate needed buffer size for HCI ISO packets.

◆ BT_BUF_RESERVE

#define BT_BUF_RESERVE   1

◆ BT_BUF_RX_COUNT

#define BT_BUF_RX_COUNT

#include <zephyr/bluetooth/buf.h>

Value:
(MAX(MAX(CONFIG_BT_BUF_EVT_RX_COUNT, \
#define BT_BUF_ACL_RX_COUNT
Definition buf.h:106
#define BT_BUF_ISO_RX_COUNT
Definition buf.h:85
#define MAX(a, b)
Obtain the maximum of two values.
Definition util.h:386

Buffer count needed for HCI ACL, HCI ISO or Event RX buffers.

◆ BT_BUF_RX_SIZE

#define BT_BUF_RX_SIZE

#include <zephyr/bluetooth/buf.h>

Value:
#define BT_BUF_ACL_RX_SIZE
Data size needed for HCI ACL RX buffers.
Definition buf.h:75
#define BT_BUF_EVT_RX_SIZE
Data size needed for HCI Event RX buffers.
Definition buf.h:78
#define BT_BUF_ISO_RX_SIZE
Definition buf.h:84

Data size needed for HCI ACL, HCI ISO or Event RX buffers.

◆ BT_BUF_SIZE

#define BT_BUF_SIZE ( size)

#include <zephyr/bluetooth/buf.h>

Value:
(BT_BUF_RESERVE + (size))
#define BT_BUF_RESERVE
Definition buf.h:55

Helper to include reserved HCI data in buffer calculations.

Typedef Documentation

◆ bt_buf_rx_freed_cb_t

typedef void(* bt_buf_rx_freed_cb_t) (enum bt_buf_type type_mask)

#include <zephyr/bluetooth/buf.h>

A callback to notify about freed buffer in the incoming data pool.

This callback is called when a buffer of a given type is freed and can be requested through the bt_buf_get_rx function. However, this callback is called from the context of the buffer freeing operation and must not attempt to allocate a new buffer from the same pool.

Warning
When this callback is called, the scheduler is locked and the callee must not perform any action that makes the current thread unready. This callback must only be used for very short non-blocking operation (e.g. submitting a work item).
Parameters
type_maskA bit mask of buffer types that have been freed.

Enumeration Type Documentation

◆ bt_buf_type

#include <zephyr/bluetooth/buf.h>

Possible types of buffers passed around the Bluetooth stack in a form of bitmask.

Enumerator
BT_BUF_CMD 

HCI command.

BT_BUF_EVT 

HCI event.

BT_BUF_ACL_OUT 

Outgoing ACL data.

BT_BUF_ACL_IN 

Incoming ACL data.

BT_BUF_ISO_OUT 

Outgoing ISO data.

BT_BUF_ISO_IN 

Incoming ISO data.

BT_BUF_H4 

H:4 data.

Function Documentation

◆ bt_buf_get_evt()

struct net_buf * bt_buf_get_evt ( uint8_t evt,
bool discardable,
k_timeout_t timeout )

#include <zephyr/bluetooth/buf.h>

Allocate a buffer for an HCI Event.

This will set the buffer type so bt_buf_set_type() does not need to be explicitly called.

Parameters
evtHCI event code
discardableWhether the driver considers the event discardable.
timeoutNon-negative waiting period to obtain a buffer or one of the special values K_NO_WAIT and K_FOREVER.
Returns
A new buffer.

◆ bt_buf_get_rx()

struct net_buf * bt_buf_get_rx ( enum bt_buf_type type,
k_timeout_t timeout )

#include <zephyr/bluetooth/buf.h>

Allocate a buffer for incoming data.

This will set the buffer type so bt_buf_set_type() does not need to be explicitly called.

Parameters
typeType of buffer. Only BT_BUF_EVT, BT_BUF_ACL_IN and BT_BUF_ISO_IN are allowed.
timeoutNon-negative waiting period to obtain a buffer or one of the special values K_NO_WAIT and K_FOREVER.
Returns
A new buffer.

◆ bt_buf_get_tx()

struct net_buf * bt_buf_get_tx ( enum bt_buf_type type,
k_timeout_t timeout,
const void * data,
size_t size )

#include <zephyr/bluetooth/buf.h>

Allocate a buffer for outgoing data.

This will set the buffer type so bt_buf_set_type() does not need to be explicitly called.

Parameters
typeType of buffer. Only BT_BUF_CMD, BT_BUF_ACL_OUT or BT_BUF_H4, when operating on H:4 mode, are allowed.
timeoutNon-negative waiting period to obtain a buffer or one of the special values K_NO_WAIT and K_FOREVER.
dataInitial data to append to buffer.
sizeInitial data size.
Returns
A new buffer.

◆ bt_buf_get_type()

static enum bt_buf_type bt_buf_get_type ( struct net_buf * buf)
inlinestatic

#include <zephyr/bluetooth/buf.h>

Get the buffer type.

Parameters
bufBluetooth buffer
Returns
The BT_* type to of the buffer

◆ bt_buf_rx_freed_cb_set()

void bt_buf_rx_freed_cb_set ( bt_buf_rx_freed_cb_t cb)

#include <zephyr/bluetooth/buf.h>

Set the callback to notify about freed buffer in the incoming data pool.

Parameters
cbCallback to notify about freed buffer in the incoming data pool. If NULL, the callback is disabled.

◆ bt_buf_set_type()

static void bt_buf_set_type ( struct net_buf * buf,
enum bt_buf_type type )
inlinestatic

#include <zephyr/bluetooth/buf.h>

Set the buffer type.

Parameters
bufBluetooth buffer
typeThe BT_* type to set the buffer to