Zephyr Project API 3.7.0
A Scalable Open Source RTOS
|
Access layer APIs. More...
#include <zephyr/sys/util.h>
#include <zephyr/settings/settings.h>
#include <zephyr/bluetooth/mesh/msg.h>
Go to the source code of this file.
Data Structures | |
struct | bt_mesh_elem |
Abstraction that describes a Mesh Element. More... | |
struct | bt_mesh_elem::bt_mesh_elem_rt_ctx |
Mesh Element runtime information. More... | |
struct | bt_mesh_model_op |
Model opcode handler. More... | |
struct | bt_mesh_model_pub |
Model publication context. More... | |
struct | bt_mesh_models_metadata_entry |
Models Metadata Entry struct. More... | |
struct | bt_mesh_model_cb |
Model callback functions. More... | |
struct | bt_mesh_mod_id_vnd |
Vendor model ID. More... | |
struct | bt_mesh_model |
Abstraction that describes a Mesh Model instance. More... | |
struct | bt_mesh_model::bt_mesh_model_rt_ctx |
struct | bt_mesh_send_cb |
Callback structure for monitoring model message sending. More... | |
struct | bt_mesh_comp |
Node Composition. More... | |
struct | bt_mesh_comp2_record |
Composition data page 2 record. More... | |
struct | bt_mesh_comp2 |
Node Composition data page 2. More... | |
Macros | |
#define | BT_MESH_KEY_UNUSED_ELT_(IDX, _) BT_MESH_KEY_UNUSED |
#define | BT_MESH_ADDR_UNASSIGNED_ELT_(IDX, _) BT_MESH_ADDR_UNASSIGNED |
#define | BT_MESH_UUID_UNASSIGNED_ELT_(IDX, _) NULL |
#define | BT_MESH_MODEL_KEYS_UNUSED(_keys) { LISTIFY(_keys, BT_MESH_KEY_UNUSED_ELT_, (,)) } |
#define | BT_MESH_MODEL_GROUPS_UNASSIGNED(_grps) { LISTIFY(_grps, BT_MESH_ADDR_UNASSIGNED_ELT_, (,)) } |
#define | BT_MESH_MODEL_UUIDS_UNASSIGNED() |
#define | BT_MESH_MODEL_RUNTIME_INIT(_user_data) .rt = &(struct bt_mesh_model_rt_ctx){ .user_data = (_user_data) }, |
#define | BT_MESH_ADDR_IS_UNICAST(addr) ((addr) && (addr) < 0x8000) |
Check if a Bluetooth Mesh address is a unicast address. | |
#define | BT_MESH_ADDR_IS_GROUP(addr) ((addr) >= 0xc000 && (addr) < 0xff00) |
Check if a Bluetooth Mesh address is a group address. | |
#define | BT_MESH_ADDR_IS_FIXED_GROUP(addr) ((addr) >= 0xff00 && (addr) < 0xffff) |
Check if a Bluetooth Mesh address is a fixed group address. | |
#define | BT_MESH_ADDR_IS_VIRTUAL(addr) ((addr) >= 0x8000 && (addr) < 0xc000) |
Check if a Bluetooth Mesh address is a virtual address. | |
#define | BT_MESH_ADDR_IS_RFU(addr) ((addr) >= 0xff00 && (addr) <= 0xfff8) |
Check if a Bluetooth Mesh address is an RFU address. | |
#define | BT_MESH_IS_DEV_KEY(key) |
Check if a Bluetooth Mesh key is a device key. | |
#define | BT_MESH_APP_SEG_SDU_MAX 12 |
Maximum size of an access message segment (in octets). | |
#define | BT_MESH_APP_UNSEG_SDU_MAX 15 |
Maximum payload size of an unsegmented access message (in octets). | |
#define | BT_MESH_RX_SEG_MAX 0 |
Maximum number of segments supported for incoming messages. | |
#define | BT_MESH_TX_SEG_MAX 0 |
Maximum number of segments supported for outgoing messages. | |
#define | BT_MESH_TX_SDU_MAX |
Maximum possible payload size of an outgoing access message (in octets). | |
#define | BT_MESH_RX_SDU_MAX |
Maximum possible payload size of an incoming access message (in octets). | |
#define | BT_MESH_ELEM(_loc, _mods, _vnd_mods) |
Helper to define a mesh element within an array. | |
#define | BT_MESH_MODEL_OP_1(b0) (b0) |
#define | BT_MESH_MODEL_OP_2(b0, b1) (((b0) << 8) | (b1)) |
#define | BT_MESH_MODEL_OP_3(b0, cid) ((((b0) << 16) | 0xc00000) | (cid)) |
#define | BT_MESH_LEN_EXACT(len) (-len) |
Macro for encoding exact message length for fixed-length messages. | |
#define | BT_MESH_LEN_MIN(len) (len) |
Macro for encoding minimum message length for variable-length messages. | |
#define | BT_MESH_MODEL_OP_END { 0, 0, NULL } |
End of the opcode list. | |
#define | BT_MESH_MODEL_NO_OPS |
Helper to define an empty opcode list. | |
#define | BT_MESH_MODEL_NONE ((const struct bt_mesh_model []){}) |
Helper to define an empty model array. | |
#define | BT_MESH_MODEL_CNT_CB(_id, _op, _pub, _user_data, _keys, _grps, _cb) |
Composition data SIG model entry with callback functions with specific number of keys & groups. | |
#define | BT_MESH_MODEL_CNT_VND_CB(_company, _id, _op, _pub, _user_data, _keys, _grps, _cb) |
Composition data vendor model entry with callback functions with specific number of keys & groups. | |
#define | BT_MESH_MODEL_CB(_id, _op, _pub, _user_data, _cb) |
Composition data SIG model entry with callback functions. | |
#define | BT_MESH_MODEL_METADATA_CB(_id, _op, _pub, _user_data, _cb, _metadata) BT_MESH_MODEL_CB(_id, _op, _pub, _user_data, _cb) |
Composition data SIG model entry with callback functions and metadata. | |
#define | BT_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _user_data, _cb) |
Composition data vendor model entry with callback functions. | |
#define | BT_MESH_MODEL_VND_METADATA_CB(_company, _id, _op, _pub, _user_data, _cb, _metadata) BT_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _user_data, _cb) |
Composition data vendor model entry with callback functions and metadata. | |
#define | BT_MESH_MODEL(_id, _op, _pub, _user_data) BT_MESH_MODEL_CB(_id, _op, _pub, _user_data, NULL) |
Composition data SIG model entry. | |
#define | BT_MESH_MODEL_VND(_company, _id, _op, _pub, _user_data) BT_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _user_data, NULL) |
Composition data vendor model entry. | |
#define | BT_MESH_TRANSMIT(count, int_ms) ((count) | (((int_ms / 10) - 1) << 3)) |
Encode transmission count & interval steps. | |
#define | BT_MESH_TRANSMIT_COUNT(transmit) (((transmit) & (uint8_t)BIT_MASK(3))) |
Decode transmit count from a transmit value. | |
#define | BT_MESH_TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 10) |
Decode transmit interval from a transmit value. | |
#define | BT_MESH_PUB_TRANSMIT(count, int_ms) |
Encode Publish Retransmit count & interval steps. | |
#define | BT_MESH_PUB_TRANSMIT_COUNT(transmit) BT_MESH_TRANSMIT_COUNT(transmit) |
Decode Publish Retransmit count from a given value. | |
#define | BT_MESH_PUB_TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 50) |
Decode Publish Retransmit interval from a given value. | |
#define | BT_MESH_PUB_MSG_TOTAL(pub) (BT_MESH_PUB_TRANSMIT_COUNT((pub)->retransmit) + 1) |
Get total number of messages within one publication interval including initial publication. | |
#define | BT_MESH_PUB_MSG_NUM(pub) (BT_MESH_PUB_TRANSMIT_COUNT((pub)->retransmit) + 1 - (pub)->count) |
Get message number within one publication interval. | |
#define | BT_MESH_MODEL_PUB_DEFINE(_name, _update, _msg_len) |
Define a model publication context. | |
#define | BT_MESH_MODELS_METADATA_ENTRY(_len, _id, _data) |
Initialize a Models Metadata entry structure in a list. | |
#define | BT_MESH_MODELS_METADATA_NONE NULL |
Helper to define an empty Models metadata array. | |
#define | BT_MESH_MODELS_METADATA_END { 0, 0, NULL } |
End of the Models Metadata list. | |
#define | BT_MESH_TTL_DEFAULT 0xff |
Special TTL value to request using configured default TTL. | |
#define | BT_MESH_TTL_MAX 0x7f |
Maximum allowed TTL value. | |
Group addresses | |
#define | BT_MESH_ADDR_UNASSIGNED 0x0000 |
unassigned | |
#define | BT_MESH_ADDR_ALL_NODES 0xffff |
all-nodes | |
#define | BT_MESH_ADDR_RELAYS 0xfffe |
all-relays | |
#define | BT_MESH_ADDR_FRIENDS 0xfffd |
all-friends | |
#define | BT_MESH_ADDR_PROXIES 0xfffc |
all-proxies | |
#define | BT_MESH_ADDR_DFW_NODES 0xfffb |
all-directed-forwarding-nodes | |
#define | BT_MESH_ADDR_IP_NODES 0xfffa |
all-ipt-nodes | |
#define | BT_MESH_ADDR_IP_BR_ROUTERS 0xfff9 |
all-ipt-border-routers | |
Predefined key indexes | |
#define | BT_MESH_KEY_UNUSED 0xffff |
Key unused. | |
#define | BT_MESH_KEY_ANY 0xffff |
Any key index. | |
#define | BT_MESH_KEY_DEV 0xfffe |
Device key. | |
#define | BT_MESH_KEY_DEV_LOCAL BT_MESH_KEY_DEV |
Local device key. | |
#define | BT_MESH_KEY_DEV_REMOTE 0xfffd |
Remote device key. | |
#define | BT_MESH_KEY_DEV_ANY 0xfffc |
Any device key. | |
Foundation Models | |
#define | BT_MESH_MODEL_ID_CFG_SRV 0x0000 |
Configuration Server. | |
#define | BT_MESH_MODEL_ID_CFG_CLI 0x0001 |
Configuration Client. | |
#define | BT_MESH_MODEL_ID_HEALTH_SRV 0x0002 |
Health Server. | |
#define | BT_MESH_MODEL_ID_HEALTH_CLI 0x0003 |
Health Client. | |
#define | BT_MESH_MODEL_ID_REMOTE_PROV_SRV 0x0004 |
Remote Provisioning Server. | |
#define | BT_MESH_MODEL_ID_REMOTE_PROV_CLI 0x0005 |
Remote Provisioning Client. | |
#define | BT_MESH_MODEL_ID_PRIV_BEACON_SRV 0x000a |
Private Beacon Server. | |
#define | BT_MESH_MODEL_ID_PRIV_BEACON_CLI 0x000b |
Private Beacon Client. | |
#define | BT_MESH_MODEL_ID_SAR_CFG_SRV 0x000e |
SAR Configuration Server. | |
#define | BT_MESH_MODEL_ID_SAR_CFG_CLI 0x000f |
SAR Configuration Client. | |
#define | BT_MESH_MODEL_ID_OP_AGG_SRV 0x0010 |
Opcodes Aggregator Server. | |
#define | BT_MESH_MODEL_ID_OP_AGG_CLI 0x0011 |
Opcodes Aggregator Client. | |
#define | BT_MESH_MODEL_ID_LARGE_COMP_DATA_SRV 0x0012 |
Large Composition Data Server. | |
#define | BT_MESH_MODEL_ID_LARGE_COMP_DATA_CLI 0x0013 |
Large Composition Data Client. | |
#define | BT_MESH_MODEL_ID_SOL_PDU_RPL_SRV 0x0014 |
Solicitation PDU RPL Configuration Client. | |
#define | BT_MESH_MODEL_ID_SOL_PDU_RPL_CLI 0x0015 |
Solicitation PDU RPL Configuration Server. | |
#define | BT_MESH_MODEL_ID_ON_DEMAND_PROXY_SRV 0x000c |
Private Proxy Server. | |
#define | BT_MESH_MODEL_ID_ON_DEMAND_PROXY_CLI 0x000d |
Private Proxy Client. | |
Models from the Mesh Model Specification | |
#define | BT_MESH_MODEL_ID_GEN_ONOFF_SRV 0x1000 |
Generic OnOff Server. | |
#define | BT_MESH_MODEL_ID_GEN_ONOFF_CLI 0x1001 |
Generic OnOff Client. | |
#define | BT_MESH_MODEL_ID_GEN_LEVEL_SRV 0x1002 |
Generic Level Server. | |
#define | BT_MESH_MODEL_ID_GEN_LEVEL_CLI 0x1003 |
Generic Level Client. | |
#define | BT_MESH_MODEL_ID_GEN_DEF_TRANS_TIME_SRV 0x1004 |
Generic Default Transition Time Server. | |
#define | BT_MESH_MODEL_ID_GEN_DEF_TRANS_TIME_CLI 0x1005 |
Generic Default Transition Time Client. | |
#define | BT_MESH_MODEL_ID_GEN_POWER_ONOFF_SRV 0x1006 |
Generic Power OnOff Server. | |
#define | BT_MESH_MODEL_ID_GEN_POWER_ONOFF_SETUP_SRV 0x1007 |
Generic Power OnOff Setup Server. | |
#define | BT_MESH_MODEL_ID_GEN_POWER_ONOFF_CLI 0x1008 |
Generic Power OnOff Client. | |
#define | BT_MESH_MODEL_ID_GEN_POWER_LEVEL_SRV 0x1009 |
Generic Power Level Server. | |
#define | BT_MESH_MODEL_ID_GEN_POWER_LEVEL_SETUP_SRV 0x100a |
Generic Power Level Setup Server. | |
#define | BT_MESH_MODEL_ID_GEN_POWER_LEVEL_CLI 0x100b |
Generic Power Level Client. | |
#define | BT_MESH_MODEL_ID_GEN_BATTERY_SRV 0x100c |
Generic Battery Server. | |
#define | BT_MESH_MODEL_ID_GEN_BATTERY_CLI 0x100d |
Generic Battery Client. | |
#define | BT_MESH_MODEL_ID_GEN_LOCATION_SRV 0x100e |
Generic Location Server. | |
#define | BT_MESH_MODEL_ID_GEN_LOCATION_SETUPSRV 0x100f |
Generic Location Setup Server. | |
#define | BT_MESH_MODEL_ID_GEN_LOCATION_CLI 0x1010 |
Generic Location Client. | |
#define | BT_MESH_MODEL_ID_GEN_ADMIN_PROP_SRV 0x1011 |
Generic Admin Property Server. | |
#define | BT_MESH_MODEL_ID_GEN_MANUFACTURER_PROP_SRV 0x1012 |
Generic Manufacturer Property Server. | |
#define | BT_MESH_MODEL_ID_GEN_USER_PROP_SRV 0x1013 |
Generic User Property Server. | |
#define | BT_MESH_MODEL_ID_GEN_CLIENT_PROP_SRV 0x1014 |
Generic Client Property Server. | |
#define | BT_MESH_MODEL_ID_GEN_PROP_CLI 0x1015 |
Generic Property Client. | |
#define | BT_MESH_MODEL_ID_SENSOR_SRV 0x1100 |
Sensor Server. | |
#define | BT_MESH_MODEL_ID_SENSOR_SETUP_SRV 0x1101 |
Sensor Setup Server. | |
#define | BT_MESH_MODEL_ID_SENSOR_CLI 0x1102 |
Sensor Client. | |
#define | BT_MESH_MODEL_ID_TIME_SRV 0x1200 |
Time Server. | |
#define | BT_MESH_MODEL_ID_TIME_SETUP_SRV 0x1201 |
Time Setup Server. | |
#define | BT_MESH_MODEL_ID_TIME_CLI 0x1202 |
Time Client. | |
#define | BT_MESH_MODEL_ID_SCENE_SRV 0x1203 |
Scene Server. | |
#define | BT_MESH_MODEL_ID_SCENE_SETUP_SRV 0x1204 |
Scene Setup Server. | |
#define | BT_MESH_MODEL_ID_SCENE_CLI 0x1205 |
Scene Client. | |
#define | BT_MESH_MODEL_ID_SCHEDULER_SRV 0x1206 |
Scheduler Server. | |
#define | BT_MESH_MODEL_ID_SCHEDULER_SETUP_SRV 0x1207 |
Scheduler Setup Server. | |
#define | BT_MESH_MODEL_ID_SCHEDULER_CLI 0x1208 |
Scheduler Client. | |
#define | BT_MESH_MODEL_ID_LIGHT_LIGHTNESS_SRV 0x1300 |
Light Lightness Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_LIGHTNESS_SETUP_SRV 0x1301 |
Light Lightness Setup Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_LIGHTNESS_CLI 0x1302 |
Light Lightness Client. | |
#define | BT_MESH_MODEL_ID_LIGHT_CTL_SRV 0x1303 |
Light CTL Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_CTL_SETUP_SRV 0x1304 |
Light CTL Setup Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_CTL_CLI 0x1305 |
Light CTL Client. | |
#define | BT_MESH_MODEL_ID_LIGHT_CTL_TEMP_SRV 0x1306 |
Light CTL Temperature Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_HSL_SRV 0x1307 |
Light HSL Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_HSL_SETUP_SRV 0x1308 |
Light HSL Setup Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_HSL_CLI 0x1309 |
Light HSL Client. | |
#define | BT_MESH_MODEL_ID_LIGHT_HSL_HUE_SRV 0x130a |
Light HSL Hue Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_HSL_SAT_SRV 0x130b |
Light HSL Saturation Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_XYL_SRV 0x130c |
Light xyL Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_XYL_SETUP_SRV 0x130d |
Light xyL Setup Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_XYL_CLI 0x130e |
Light xyL Client. | |
#define | BT_MESH_MODEL_ID_LIGHT_LC_SRV 0x130f |
Light LC Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_LC_SETUPSRV 0x1310 |
Light LC Setup Server. | |
#define | BT_MESH_MODEL_ID_LIGHT_LC_CLI 0x1311 |
Light LC Client. | |
Models from the Mesh Binary Large Object Transfer Model Specification | |
#define | BT_MESH_MODEL_ID_BLOB_SRV 0x1400 |
BLOB Transfer Server. | |
#define | BT_MESH_MODEL_ID_BLOB_CLI 0x1401 |
BLOB Transfer Client. | |
Models from the Mesh Device Firmware Update Model Specification | |
#define | BT_MESH_MODEL_ID_DFU_SRV 0x1402 |
Firmware Update Server. | |
#define | BT_MESH_MODEL_ID_DFU_CLI 0x1403 |
Firmware Update Client. | |
#define | BT_MESH_MODEL_ID_DFD_SRV 0x1404 |
Firmware Distribution Server. | |
#define | BT_MESH_MODEL_ID_DFD_CLI 0x1405 |
Firmware Distribution Client. | |
Functions | |
int | bt_mesh_model_send (const struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct net_buf_simple *msg, const struct bt_mesh_send_cb *cb, void *cb_data) |
Send an Access Layer message. | |
int | bt_mesh_model_publish (const struct bt_mesh_model *model) |
Send a model publication message. | |
static bool | bt_mesh_model_pub_is_retransmission (const struct bt_mesh_model *model) |
Check if a message is being retransmitted. | |
const struct bt_mesh_elem * | bt_mesh_model_elem (const struct bt_mesh_model *mod) |
Get the element that a model belongs to. | |
const struct bt_mesh_model * | bt_mesh_model_find (const struct bt_mesh_elem *elem, uint16_t id) |
Find a SIG model. | |
const struct bt_mesh_model * | bt_mesh_model_find_vnd (const struct bt_mesh_elem *elem, uint16_t company, uint16_t id) |
Find a vendor model. | |
static bool | bt_mesh_model_in_primary (const struct bt_mesh_model *mod) |
Get whether the model is in the primary element of the device. | |
int | bt_mesh_model_data_store (const struct bt_mesh_model *mod, bool vnd, const char *name, const void *data, size_t data_len) |
Immediately store the model's user data in persistent storage. | |
void | bt_mesh_model_data_store_schedule (const struct bt_mesh_model *mod) |
Schedule the model's user data store in persistent storage. | |
int | bt_mesh_model_extend (const struct bt_mesh_model *extending_mod, const struct bt_mesh_model *base_mod) |
Let a model extend another. | |
int | bt_mesh_model_correspond (const struct bt_mesh_model *corresponding_mod, const struct bt_mesh_model *base_mod) |
Let a model correspond to another. | |
bool | bt_mesh_model_is_extended (const struct bt_mesh_model *model) |
Check if model is extended by another model. | |
int | bt_mesh_comp_change_prepare (void) |
Indicate that the composition data will change on next bootup. | |
int | bt_mesh_models_metadata_change_prepare (void) |
Indicate that the metadata will change on next bootup. | |
int | bt_mesh_comp2_register (const struct bt_mesh_comp2 *comp2) |
Register composition data page 2 of the device. | |
Access layer APIs.
#define BT_MESH_ADDR_UNASSIGNED_ELT_ | ( | IDX, | |
_ | |||
) | BT_MESH_ADDR_UNASSIGNED |
#define BT_MESH_KEY_UNUSED_ELT_ | ( | IDX, | |
_ | |||
) | BT_MESH_KEY_UNUSED |
#define BT_MESH_MODEL_GROUPS_UNASSIGNED | ( | _grps | ) | { LISTIFY(_grps, BT_MESH_ADDR_UNASSIGNED_ELT_, (,)) } |
#define BT_MESH_MODEL_KEYS_UNUSED | ( | _keys | ) | { LISTIFY(_keys, BT_MESH_KEY_UNUSED_ELT_, (,)) } |
#define BT_MESH_MODEL_RUNTIME_INIT | ( | _user_data | ) | .rt = &(struct bt_mesh_model_rt_ctx){ .user_data = (_user_data) }, |
#define BT_MESH_MODEL_UUIDS_UNASSIGNED | ( | ) |
#define BT_MESH_UUID_UNASSIGNED_ELT_ | ( | IDX, | |
_ | |||
) | NULL |