|
Zephyr Project API 4.0.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_BRG_CFG_SRV 0x0008 |
| Bridge Configuration Sever. | |
| #define | BT_MESH_MODEL_ID_BRG_CFG_CLI 0x0009 |
| Bridge Configuration 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 |