Zephyr API Documentation 4.0.0
A Scalable Open Source RTOS
 4.0.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
access.h File Reference

Access layer APIs. More...

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, _)
 
#define BT_MESH_ADDR_UNASSIGNED_ELT_(IDX, _)
 
#define BT_MESH_UUID_UNASSIGNED_ELT_(IDX, _)
 
#define BT_MESH_MODEL_KEYS_UNUSED(_keys)
 
#define BT_MESH_MODEL_GROUPS_UNASSIGNED(_grps)
 
#define BT_MESH_MODEL_UUIDS_UNASSIGNED()
 
#define BT_MESH_MODEL_RUNTIME_INIT(_user_data)
 
#define BT_MESH_ADDR_IS_UNICAST(addr)
 Check if a Bluetooth Mesh address is a unicast address.
 
#define BT_MESH_ADDR_IS_GROUP(addr)
 Check if a Bluetooth Mesh address is a group address.
 
#define BT_MESH_ADDR_IS_FIXED_GROUP(addr)
 Check if a Bluetooth Mesh address is a fixed group address.
 
#define BT_MESH_ADDR_IS_VIRTUAL(addr)
 Check if a Bluetooth Mesh address is a virtual address.
 
#define BT_MESH_ADDR_IS_RFU(addr)
 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)
 
#define BT_MESH_MODEL_OP_2(b0, b1)
 
#define BT_MESH_MODEL_OP_3(b0, cid)
 
#define BT_MESH_LEN_EXACT(len)
 Macro for encoding exact message length for fixed-length messages.
 
#define BT_MESH_LEN_MIN(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)
 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)
 Composition data vendor model entry with callback functions and metadata.
 
#define BT_MESH_MODEL(_id, _op, _pub, _user_data)
 Composition data SIG model entry.
 
#define BT_MESH_MODEL_VND(_company, _id, _op, _pub, _user_data)
 Composition data vendor model entry.
 
#define BT_MESH_TRANSMIT(count, int_ms)
 Encode transmission count & interval steps.
 
#define BT_MESH_TRANSMIT_COUNT(transmit)
 Decode transmit count from a transmit value.
 
#define BT_MESH_TRANSMIT_INT(transmit)
 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)
 Decode Publish Retransmit count from a given value.
 
#define BT_MESH_PUB_TRANSMIT_INT(transmit)
 Decode Publish Retransmit interval from a given value.
 
#define BT_MESH_PUB_MSG_TOTAL(pub)
 Get total number of messages within one publication interval including initial publication.
 
#define BT_MESH_PUB_MSG_NUM(pub)
 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_elembt_mesh_model_elem (const struct bt_mesh_model *mod)
 Get the element that a model belongs to.
 
const struct bt_mesh_modelbt_mesh_model_find (const struct bt_mesh_elem *elem, uint16_t id)
 Find a SIG model.
 
const struct bt_mesh_modelbt_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.
 

Detailed Description

Access layer APIs.

Macro Definition Documentation

◆ BT_MESH_ADDR_UNASSIGNED_ELT_

#define BT_MESH_ADDR_UNASSIGNED_ELT_ ( IDX,
_ )
Value:
#define BT_MESH_ADDR_UNASSIGNED
unassigned
Definition access.h:51

◆ BT_MESH_KEY_UNUSED_ELT_

#define BT_MESH_KEY_UNUSED_ELT_ ( IDX,
_ )
Value:
#define BT_MESH_KEY_UNUSED
Key unused.
Definition access.h:67

◆ BT_MESH_MODEL_GROUPS_UNASSIGNED

#define BT_MESH_MODEL_GROUPS_UNASSIGNED ( _grps)
Value:
#define BT_MESH_ADDR_UNASSIGNED_ELT_(IDX, _)
Definition access.h:19
#define LISTIFY(LEN, F, sep,...)
Generates a sequence of code with configurable separator.
Definition util_macro.h:458

◆ BT_MESH_MODEL_KEYS_UNUSED

#define BT_MESH_MODEL_KEYS_UNUSED ( _keys)
Value:
#define BT_MESH_KEY_UNUSED_ELT_(IDX, _)
Definition access.h:18

◆ BT_MESH_MODEL_RUNTIME_INIT

#define BT_MESH_MODEL_RUNTIME_INIT ( _user_data)
Value:
.rt = &(struct bt_mesh_model_rt_ctx){ .user_data = (_user_data) },

◆ BT_MESH_MODEL_UUIDS_UNASSIGNED

#define BT_MESH_MODEL_UUIDS_UNASSIGNED ( )

◆ BT_MESH_UUID_UNASSIGNED_ELT_

#define BT_MESH_UUID_UNASSIGNED_ELT_ ( IDX,
_ )
Value:
NULL