Zephyr API Documentation  3.6.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   CONFIG_BT_HCI_RESERVE
 
#define BT_BUF_SIZE(size)   (BT_BUF_RESERVE + (size))
 Helper to include reserved HCI data in buffer calculations.
 
#define BT_BUF_ACL_SIZE(size)   BT_BUF_SIZE(BT_HCI_ACL_HDR_SIZE + (size))
 Helper to calculate needed buffer size for HCI ACL packets.
 
#define BT_BUF_EVT_SIZE(size)   BT_BUF_SIZE(BT_HCI_EVT_HDR_SIZE + (size))
 Helper to calculate needed buffer size for HCI Event packets.
 
#define BT_BUF_CMD_SIZE(size)   BT_BUF_SIZE(BT_HCI_CMD_HDR_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_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.
 

Enumerations

enum  bt_buf_type {
  BT_BUF_CMD , BT_BUF_EVT , BT_BUF_ACL_OUT , BT_BUF_ACL_IN ,
  BT_BUF_ISO_OUT , BT_BUF_ISO_IN , BT_BUF_H4
}
 Possible types of buffers passed around the Bluetooth stack. More...
 

Functions

struct net_bufbt_buf_get_rx (enum bt_buf_type type, k_timeout_t timeout)
 Allocate a buffer for incoming data.
 
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_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)    BT_BUF_SIZE(BT_HCI_ACL_HDR_SIZE + (size))

#include <zephyr/bluetooth/buf.h>

Helper to calculate needed buffer size for HCI ACL packets.

◆ BT_BUF_CMD_SIZE

#define BT_BUF_CMD_SIZE (   size)    BT_BUF_SIZE(BT_HCI_CMD_HDR_SIZE + (size))

#include <zephyr/bluetooth/buf.h>

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)    BT_BUF_SIZE(BT_HCI_EVT_HDR_SIZE + (size))

#include <zephyr/bluetooth/buf.h>

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_BUF_SIZE(size)
Helper to include reserved HCI data in buffer calculations.
Definition: buf.h:61
#define BT_HCI_ISO_TS_DATA_HDR_SIZE
Definition: hci_types.h:110
#define BT_HCI_ISO_HDR_SIZE
Definition: hci_types.h:117

Helper to calculate needed buffer size for HCI ISO packets.

◆ BT_BUF_RESERVE

#define BT_BUF_RESERVE   CONFIG_BT_HCI_RESERVE

◆ BT_BUF_RX_COUNT

#define BT_BUF_RX_COUNT

#include <zephyr/bluetooth/buf.h>

Value:
(MAX(MAX(CONFIG_BT_BUF_EVT_RX_COUNT, \
CONFIG_BT_BUF_ACL_RX_COUNT), \
#define BT_BUF_ISO_RX_COUNT
Definition: buf.h:88
#define MAX(a, b)
Obtain the maximum of two values.
Definition: util.h:364

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:78
#define BT_BUF_EVT_RX_SIZE
Data size needed for HCI Event RX buffers.
Definition: buf.h:81
#define BT_BUF_ISO_RX_SIZE
Definition: buf.h:87

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

◆ BT_BUF_SIZE

#define BT_BUF_SIZE (   size)    (BT_BUF_RESERVE + (size))

#include <zephyr/bluetooth/buf.h>

Helper to include reserved HCI data in buffer calculations.

Enumeration Type Documentation

◆ bt_buf_type

#include <zephyr/bluetooth/buf.h>

Possible types of buffers passed around the Bluetooth stack.

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 before bt_recv_prio() or bt_recv().

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 before bt_recv_prio().

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 before bt_send().

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_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