Zephyr API Documentation 4.5.0-rc1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches

Attribute Protocol (ATT). More...

Macros

#define BT_ATT_ERR_SUCCESS   0x00
 The ATT operation was successful.
#define BT_ATT_ERR_INVALID_HANDLE   0x01
 The attribute handle given was not valid on the server.
#define BT_ATT_ERR_READ_NOT_PERMITTED   0x02
 The attribute cannot be read.
#define BT_ATT_ERR_WRITE_NOT_PERMITTED   0x03
 The attribute cannot be written.
#define BT_ATT_ERR_INVALID_PDU   0x04
 The attribute PDU was invalid.
#define BT_ATT_ERR_AUTHENTICATION   0x05
 The attribute requires authentication before it can be read or written.
#define BT_ATT_ERR_NOT_SUPPORTED   0x06
 The ATT Server does not support the request received from the client.
#define BT_ATT_ERR_INVALID_OFFSET   0x07
 Offset specified was past the end of the attribute.
#define BT_ATT_ERR_AUTHORIZATION   0x08
 The attribute requires authorization before it can be read or written.
#define BT_ATT_ERR_PREPARE_QUEUE_FULL   0x09
 Too many prepare writes have been queued.
#define BT_ATT_ERR_ATTRIBUTE_NOT_FOUND   0x0a
 No attribute found within the given attribute handle range.
#define BT_ATT_ERR_ATTRIBUTE_NOT_LONG   0x0b
 The attribute cannot be read using the ATT_READ_BLOB_REQ PDU.
#define BT_ATT_ERR_ENCRYPTION_KEY_SIZE   0x0c
 The Encryption Key Size used for encrypting this link is too short.
#define BT_ATT_ERR_INVALID_ATTRIBUTE_LEN   0x0d
 The attribute value length is invalid for the operation.
#define BT_ATT_ERR_UNLIKELY   0x0e
 The attribute request that was requested has encountered an error that was unlikely.
#define BT_ATT_ERR_INSUFFICIENT_ENCRYPTION   0x0f
 The attribute requires encryption before it can be read or written.
#define BT_ATT_ERR_UNSUPPORTED_GROUP_TYPE   0x10
 The attribute type is not a supported grouping attribute.
#define BT_ATT_ERR_INSUFFICIENT_RESOURCES   0x11
 Insufficient Resources to complete the request.
#define BT_ATT_ERR_DB_OUT_OF_SYNC   0x12
 The server requests the client to rediscover the database.
#define BT_ATT_ERR_VALUE_NOT_ALLOWED   0x13
 The attribute parameter value was not allowed.
#define BT_ATT_ERR_WRITE_REQ_REJECTED   0xfc
 Write Request Rejected.
#define BT_ATT_ERR_CCC_IMPROPER_CONF   0xfd
 Client Characteristic Configuration Descriptor Improperly Configured.
#define BT_ATT_ERR_PROCEDURE_IN_PROGRESS   0xfe
 Procedure Already in Progress.
#define BT_ATT_ERR_OUT_OF_RANGE   0xff
 Out of Range.
#define BT_ATT_MAX_ATTRIBUTE_LEN   512
#define BT_ATT_FIRST_ATTRIBUTE_HANDLE   0x0001
#define BT_ATT_LAST_ATTRIBUTE_HANDLE   0xffff

Enumerations

enum  bt_att_chan_opt { BT_ATT_CHAN_OPT_NONE = 0x0 , BT_ATT_CHAN_OPT_UNENHANCED_ONLY = (1UL << (0)) , BT_ATT_CHAN_OPT_ENHANCED_ONLY = (1UL << (1)) }
 ATT channel option bit field values. More...

Functions

static const char * bt_att_err_to_str (uint8_t att_err)
 Converts a ATT error to string.
int bt_eatt_connect (struct bt_conn *conn, size_t num_channels)
 Connect Enhanced ATT channels.
size_t bt_eatt_count (struct bt_conn *conn)
 Get number of EATT channels connected.
int bt_att_get_max_notify_size (struct bt_conn *conn, enum bt_att_chan_opt chan_opt)
 Get the maximum notification value size for a connection.
static int bt_att_get_max_indicate_size (struct bt_conn *conn, enum bt_att_chan_opt chan_opt)
 Get the maximum indication value size for a connection.

Detailed Description

Attribute Protocol (ATT).

Since
1.1
Version
1.1.0

Macro Definition Documentation

◆ BT_ATT_ERR_ATTRIBUTE_NOT_FOUND

#define BT_ATT_ERR_ATTRIBUTE_NOT_FOUND   0x0a

#include <zephyr/bluetooth/att.h>

No attribute found within the given attribute handle range.

◆ BT_ATT_ERR_ATTRIBUTE_NOT_LONG

#define BT_ATT_ERR_ATTRIBUTE_NOT_LONG   0x0b

#include <zephyr/bluetooth/att.h>

The attribute cannot be read using the ATT_READ_BLOB_REQ PDU.

◆ BT_ATT_ERR_AUTHENTICATION

#define BT_ATT_ERR_AUTHENTICATION   0x05

#include <zephyr/bluetooth/att.h>

The attribute requires authentication before it can be read or written.

◆ BT_ATT_ERR_AUTHORIZATION

#define BT_ATT_ERR_AUTHORIZATION   0x08

#include <zephyr/bluetooth/att.h>

The attribute requires authorization before it can be read or written.

◆ BT_ATT_ERR_CCC_IMPROPER_CONF

#define BT_ATT_ERR_CCC_IMPROPER_CONF   0xfd

#include <zephyr/bluetooth/att.h>

Client Characteristic Configuration Descriptor Improperly Configured.

◆ BT_ATT_ERR_DB_OUT_OF_SYNC

#define BT_ATT_ERR_DB_OUT_OF_SYNC   0x12

#include <zephyr/bluetooth/att.h>

The server requests the client to rediscover the database.

◆ BT_ATT_ERR_ENCRYPTION_KEY_SIZE

#define BT_ATT_ERR_ENCRYPTION_KEY_SIZE   0x0c

#include <zephyr/bluetooth/att.h>

The Encryption Key Size used for encrypting this link is too short.

◆ BT_ATT_ERR_INSUFFICIENT_ENCRYPTION

#define BT_ATT_ERR_INSUFFICIENT_ENCRYPTION   0x0f

#include <zephyr/bluetooth/att.h>

The attribute requires encryption before it can be read or written.

◆ BT_ATT_ERR_INSUFFICIENT_RESOURCES

#define BT_ATT_ERR_INSUFFICIENT_RESOURCES   0x11

#include <zephyr/bluetooth/att.h>

Insufficient Resources to complete the request.

◆ BT_ATT_ERR_INVALID_ATTRIBUTE_LEN

#define BT_ATT_ERR_INVALID_ATTRIBUTE_LEN   0x0d

#include <zephyr/bluetooth/att.h>

The attribute value length is invalid for the operation.

◆ BT_ATT_ERR_INVALID_HANDLE

#define BT_ATT_ERR_INVALID_HANDLE   0x01

#include <zephyr/bluetooth/att.h>

The attribute handle given was not valid on the server.

◆ BT_ATT_ERR_INVALID_OFFSET

#define BT_ATT_ERR_INVALID_OFFSET   0x07

#include <zephyr/bluetooth/att.h>

Offset specified was past the end of the attribute.

◆ BT_ATT_ERR_INVALID_PDU

#define BT_ATT_ERR_INVALID_PDU   0x04

#include <zephyr/bluetooth/att.h>

The attribute PDU was invalid.

◆ BT_ATT_ERR_NOT_SUPPORTED

#define BT_ATT_ERR_NOT_SUPPORTED   0x06

#include <zephyr/bluetooth/att.h>

The ATT Server does not support the request received from the client.

◆ BT_ATT_ERR_OUT_OF_RANGE

#define BT_ATT_ERR_OUT_OF_RANGE   0xff

#include <zephyr/bluetooth/att.h>

Out of Range.

◆ BT_ATT_ERR_PREPARE_QUEUE_FULL

#define BT_ATT_ERR_PREPARE_QUEUE_FULL   0x09

#include <zephyr/bluetooth/att.h>

Too many prepare writes have been queued.

◆ BT_ATT_ERR_PROCEDURE_IN_PROGRESS

#define BT_ATT_ERR_PROCEDURE_IN_PROGRESS   0xfe

#include <zephyr/bluetooth/att.h>

Procedure Already in Progress.

◆ BT_ATT_ERR_READ_NOT_PERMITTED

#define BT_ATT_ERR_READ_NOT_PERMITTED   0x02

#include <zephyr/bluetooth/att.h>

The attribute cannot be read.

◆ BT_ATT_ERR_SUCCESS

#define BT_ATT_ERR_SUCCESS   0x00

#include <zephyr/bluetooth/att.h>

The ATT operation was successful.

◆ BT_ATT_ERR_UNLIKELY

#define BT_ATT_ERR_UNLIKELY   0x0e

#include <zephyr/bluetooth/att.h>

The attribute request that was requested has encountered an error that was unlikely.

The attribute request could therefore not be completed as requested

◆ BT_ATT_ERR_UNSUPPORTED_GROUP_TYPE

#define BT_ATT_ERR_UNSUPPORTED_GROUP_TYPE   0x10

#include <zephyr/bluetooth/att.h>

The attribute type is not a supported grouping attribute.

The attribute type is not a supported grouping attribute as defined by a higher layer specification.

◆ BT_ATT_ERR_VALUE_NOT_ALLOWED

#define BT_ATT_ERR_VALUE_NOT_ALLOWED   0x13

#include <zephyr/bluetooth/att.h>

The attribute parameter value was not allowed.

◆ BT_ATT_ERR_WRITE_NOT_PERMITTED

#define BT_ATT_ERR_WRITE_NOT_PERMITTED   0x03

#include <zephyr/bluetooth/att.h>

The attribute cannot be written.

◆ BT_ATT_ERR_WRITE_REQ_REJECTED

#define BT_ATT_ERR_WRITE_REQ_REJECTED   0xfc

#include <zephyr/bluetooth/att.h>

Write Request Rejected.

◆ BT_ATT_FIRST_ATTRIBUTE_HANDLE

#define BT_ATT_FIRST_ATTRIBUTE_HANDLE   0x0001

◆ BT_ATT_LAST_ATTRIBUTE_HANDLE

#define BT_ATT_LAST_ATTRIBUTE_HANDLE   0xffff

◆ BT_ATT_MAX_ATTRIBUTE_LEN

#define BT_ATT_MAX_ATTRIBUTE_LEN   512

Enumeration Type Documentation

◆ bt_att_chan_opt

#include <zephyr/bluetooth/att.h>

ATT channel option bit field values.

Note
BT_ATT_CHAN_OPT_UNENHANCED_ONLY and BT_ATT_CHAN_OPT_ENHANCED_ONLY are mutually exclusive and both bits may not be set.
Enumerator
BT_ATT_CHAN_OPT_NONE 

Both Enhanced and Unenhanced channels can be used.

BT_ATT_CHAN_OPT_UNENHANCED_ONLY 

Only Unenhanced channels will be used.

BT_ATT_CHAN_OPT_ENHANCED_ONLY 

Only Enhanced channels will be used.

Function Documentation

◆ bt_att_err_to_str()

const char * bt_att_err_to_str ( uint8_t att_err)
inlinestatic

#include <zephyr/bluetooth/att.h>

Converts a ATT error to string.

The error codes are described in the Bluetooth Core specification, Vol 3, Part F, Section 3.4.1.1 and in The Supplement to the Bluetooth Core Specification (CSS), v11, Part B, Section 1.2.

The ATT and GATT documentation found in Vol 4, Part F and Part G describe when the different error codes are used.

See also the defined BT_ATT_ERR_* macros.

Returns
The string representation of the ATT error code. If CONFIG_BT_ATT_ERR_TO_STR is not enabled, this just returns the empty string

◆ bt_att_get_max_indicate_size()

int bt_att_get_max_indicate_size ( struct bt_conn * conn,
enum bt_att_chan_opt chan_opt )
inlinestatic

#include <zephyr/bluetooth/att.h>

Get the maximum indication value size for a connection.

The value of an ATT_HANDLE_VALUE_IND PDU is limited to ATT_MTU - 3, where the 3 octets are the opcode and the attribute handle, as defined by the Bluetooth Core Specification, Version 6.1, Vol 3, Part F, Section 3.4.7.2. This is the same limit as for notifications.

Values larger than this either have to be truncated by the sender, or read by the client with a read request.

Note
The ATT_MTU may change during the lifetime of a connection, so the result of this function shall not be cached.
Parameters
connThe LE ACL connection to get the maximum indication value size for.
chan_optBearer to get the maximum indication value size for. Shall be either BT_ATT_CHAN_OPT_NONE, BT_ATT_CHAN_OPT_UNENHANCED_ONLY or BT_ATT_CHAN_OPT_ENHANCED_ONLY (only if CONFIG_BT_EATT is enabled) BT_ATT_CHAN_OPT_NONE will get the value for any bearer.
Returns
The maximum indication value size in octets on success.
Return values
-EINVALconn is NULL, not an ACL connection, or chan_opt is invalid.
-ENOTCONNconn is not connected.

◆ bt_att_get_max_notify_size()

int bt_att_get_max_notify_size ( struct bt_conn * conn,
enum bt_att_chan_opt chan_opt )

#include <zephyr/bluetooth/att.h>

Get the maximum notification value size for a connection.

The value of an ATT_HANDLE_VALUE_NTF PDU is limited to ATT_MTU - 3, where the 3 octets are the opcode and the attribute handle, as defined by the Bluetooth Core Specification, Version 6.1, Vol 3, Part F, Section 3.4.7.1.

Values larger than this either have to be truncated by the sender, or read by the client with a read request.

Note
The ATT_MTU may change during the lifetime of a connection, so the result of this function shall not be cached.
Parameters
connThe LE ACL connection to get the maximum notification value size for.
chan_optBearer to get the maximum notification value size for. Shall be either BT_ATT_CHAN_OPT_NONE, BT_ATT_CHAN_OPT_UNENHANCED_ONLY or BT_ATT_CHAN_OPT_ENHANCED_ONLY (only if CONFIG_BT_EATT is enabled) BT_ATT_CHAN_OPT_NONE will get the value for any bearer.
Returns
The maximum notification value size in octets on success.
Return values
-EINVALconn is NULL, not an ACL connection, or chan_opt is invalid.
-ENOTCONNconn is not connected.

◆ bt_eatt_connect()

int bt_eatt_connect ( struct bt_conn * conn,
size_t num_channels )

#include <zephyr/bluetooth/att.h>

Connect Enhanced ATT channels.

Sends a series of Credit Based Connection Requests to connect num_channels Enhanced ATT channels. The peer may have limited resources and fewer channels may be created.

Attention
Available only when the following Kconfig option is enabled: CONFIG_BT_EATT.
Parameters
connThe connection to send the request on
num_channelsThe number of Enhanced ATT bearers to request. Must be in the range 1 - CONFIG_BT_EATT_MAX, inclusive.
Returns
0 in case of success or negative value in case of error.
Return values
-EINVALif num_channels is not in the allowed range or conn is NULL.
-ENOMEMif less than num_channels are allocated.
0in case of success

◆ bt_eatt_count()

size_t bt_eatt_count ( struct bt_conn * conn)

#include <zephyr/bluetooth/att.h>

Get number of EATT channels connected.

Attention
Available only when the following Kconfig option is enabled: CONFIG_BT_EATT.
Parameters
connThe connection to get the number of EATT channels for.
Returns
The number of EATT channels connected. Returns 0 if conn is NULL or not connected.