Zephyr API Documentation 4.2.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
access.h
Go to the documentation of this file.
1
4
5/*
6 * Copyright (c) 2017 Intel Corporation
7 *
8 * SPDX-License-Identifier: Apache-2.0
9 */
10#ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_ACCESS_H_
11#define ZEPHYR_INCLUDE_BLUETOOTH_MESH_ACCESS_H_
12
13#include <zephyr/sys/util.h>
17
21
22/* Internal macros used to initialize array members */
23#define BT_MESH_KEY_UNUSED_ELT_(IDX, _) BT_MESH_KEY_UNUSED
24#define BT_MESH_ADDR_UNASSIGNED_ELT_(IDX, _) BT_MESH_ADDR_UNASSIGNED
25#define BT_MESH_UUID_UNASSIGNED_ELT_(IDX, _) NULL
26#define BT_MESH_MODEL_KEYS_UNUSED(_keys) \
27 { LISTIFY(_keys, BT_MESH_KEY_UNUSED_ELT_, (,)) }
28#define BT_MESH_MODEL_GROUPS_UNASSIGNED(_grps) \
29 { LISTIFY(_grps, BT_MESH_ADDR_UNASSIGNED_ELT_, (,)) }
30#if CONFIG_BT_MESH_LABEL_COUNT > 0
31#define BT_MESH_MODEL_UUIDS_UNASSIGNED() \
32 .uuids = (const uint8_t *[]){ LISTIFY(CONFIG_BT_MESH_LABEL_COUNT, \
33 BT_MESH_UUID_UNASSIGNED_ELT_, (,)) },
34#else
35#define BT_MESH_MODEL_UUIDS_UNASSIGNED()
36#endif
37
39
40#define BT_MESH_MODEL_RUNTIME_INIT(_user_data) \
41 .rt = &(struct bt_mesh_model_rt_ctx){ .user_data = (_user_data) },
42
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
58#define BT_MESH_ADDR_UNASSIGNED 0x0000
59#define BT_MESH_ADDR_ALL_NODES 0xffff
60#define BT_MESH_ADDR_RELAYS 0xfffe
61#define BT_MESH_ADDR_FRIENDS 0xfffd
62#define BT_MESH_ADDR_PROXIES 0xfffc
63#define BT_MESH_ADDR_DFW_NODES 0xfffb
64#define BT_MESH_ADDR_IP_NODES 0xfffa
65#define BT_MESH_ADDR_IP_BR_ROUTERS 0xfff9
69
74#define BT_MESH_KEY_UNUSED 0xffff
75#define BT_MESH_KEY_ANY 0xffff
76#define BT_MESH_KEY_DEV 0xfffe
77#define BT_MESH_KEY_DEV_LOCAL BT_MESH_KEY_DEV
78#define BT_MESH_KEY_DEV_REMOTE 0xfffd
79#define BT_MESH_KEY_DEV_ANY 0xfffc
83
87#define BT_MESH_ADDR_IS_UNICAST(addr) ((addr) && (addr) < 0x8000)
91#define BT_MESH_ADDR_IS_GROUP(addr) ((addr) >= 0xc000 && (addr) < 0xff00)
95#define BT_MESH_ADDR_IS_FIXED_GROUP(addr) ((addr) >= 0xff00 && (addr) < 0xffff)
99#define BT_MESH_ADDR_IS_VIRTUAL(addr) ((addr) >= 0x8000 && (addr) < 0xc000)
103#define BT_MESH_ADDR_IS_RFU(addr) ((addr) >= 0xff00 && (addr) <= 0xfff8)
104
108#define BT_MESH_IS_DEV_KEY(key) (key == BT_MESH_KEY_DEV_LOCAL || \
109 key == BT_MESH_KEY_DEV_REMOTE)
110
112#define BT_MESH_APP_SEG_SDU_MAX 12
113
115#define BT_MESH_APP_UNSEG_SDU_MAX 15
116
118#if defined(CONFIG_BT_MESH_RX_SEG_MAX)
119#define BT_MESH_RX_SEG_MAX CONFIG_BT_MESH_RX_SEG_MAX
120#else
121#define BT_MESH_RX_SEG_MAX 0
122#endif
123
125#if defined(CONFIG_BT_MESH_TX_SEG_MAX)
126#define BT_MESH_TX_SEG_MAX CONFIG_BT_MESH_TX_SEG_MAX
127#else
128#define BT_MESH_TX_SEG_MAX 0
129#endif
130
132#define BT_MESH_TX_SDU_MAX MAX((BT_MESH_TX_SEG_MAX * \
133 BT_MESH_APP_SEG_SDU_MAX), \
134 BT_MESH_APP_UNSEG_SDU_MAX)
135
137#define BT_MESH_RX_SDU_MAX MAX((BT_MESH_RX_SEG_MAX * \
138 BT_MESH_APP_SEG_SDU_MAX), \
139 BT_MESH_APP_UNSEG_SDU_MAX)
140
150#define BT_MESH_ELEM(_loc, _mods, _vnd_mods) \
151{ \
152 .rt = &(struct bt_mesh_elem_rt_ctx) { 0 }, \
153 .loc = (_loc), \
154 .model_count = ARRAY_SIZE(_mods), \
155 .vnd_model_count = ARRAY_SIZE(_vnd_mods), \
156 .models = (_mods), \
157 .vnd_models = (_vnd_mods), \
158}
159
167
174
176 const struct bt_mesh_model * const models;
178 const struct bt_mesh_model * const vnd_models;
179};
180
185
193
203 int (*const func)(const struct bt_mesh_model *model,
204 struct bt_mesh_msg_ctx *ctx,
205 struct net_buf_simple *buf);
206};
207
209#define BT_MESH_MODEL_OP_1(b0) (b0)
211#define BT_MESH_MODEL_OP_2(b0, b1) (((b0) << 8) | (b1))
213#define BT_MESH_MODEL_OP_3(b0, cid) ((((b0) << 16) | 0xc00000) | (cid))
214
216#define BT_MESH_LEN_EXACT(len) (-len)
218#define BT_MESH_LEN_MIN(len) (len)
219
221#define BT_MESH_MODEL_OP_END { 0, 0, NULL }
222
223#if !defined(__cplusplus) || defined(__DOXYGEN__)
230#define BT_MESH_MODEL_NO_OPS ((struct bt_mesh_model_op []) \
231 { BT_MESH_MODEL_OP_END })
232
239#define BT_MESH_MODEL_NONE ((const struct bt_mesh_model []){})
240
258#define BT_MESH_MODEL_CNT_CB(_id, _op, _pub, _user_data, _keys, _grps, _cb) \
259{ \
260 .id = (_id), \
261 BT_MESH_MODEL_RUNTIME_INIT(_user_data) \
262 .pub = _pub, \
263 .keys = (uint16_t []) BT_MESH_MODEL_KEYS_UNUSED(_keys), \
264 .keys_cnt = _keys, \
265 .groups = (uint16_t []) BT_MESH_MODEL_GROUPS_UNASSIGNED(_grps), \
266 .groups_cnt = _grps, \
267 BT_MESH_MODEL_UUIDS_UNASSIGNED() \
268 .op = _op, \
269 .cb = _cb, \
270}
271
290#define BT_MESH_MODEL_CNT_VND_CB(_company, _id, _op, _pub, _user_data, _keys, _grps, _cb) \
291{ \
292 .vnd.company = (_company), \
293 .vnd.id = (_id), \
294 BT_MESH_MODEL_RUNTIME_INIT(_user_data) \
295 .op = _op, \
296 .pub = _pub, \
297 .keys = (uint16_t []) BT_MESH_MODEL_KEYS_UNUSED(_keys), \
298 .keys_cnt = _keys, \
299 .groups = (uint16_t []) BT_MESH_MODEL_GROUPS_UNASSIGNED(_grps), \
300 .groups_cnt = _grps, \
301 BT_MESH_MODEL_UUIDS_UNASSIGNED() \
302 .cb = _cb, \
303}
304
317#define BT_MESH_MODEL_CB(_id, _op, _pub, _user_data, _cb) \
318 BT_MESH_MODEL_CNT_CB(_id, _op, _pub, _user_data, \
319 CONFIG_BT_MESH_MODEL_KEY_COUNT, \
320 CONFIG_BT_MESH_MODEL_GROUP_COUNT, _cb)
321
322
338#if defined(CONFIG_BT_MESH_LARGE_COMP_DATA_SRV)
339#define BT_MESH_MODEL_METADATA_CB(_id, _op, _pub, _user_data, _cb, _metadata) \
340{ \
341 .id = (_id), \
342 BT_MESH_MODEL_RUNTIME_INIT(_user_data) \
343 .pub = _pub, \
344 .keys = (uint16_t []) BT_MESH_MODEL_KEYS_UNUSED(CONFIG_BT_MESH_MODEL_KEY_COUNT), \
345 .keys_cnt = CONFIG_BT_MESH_MODEL_KEY_COUNT, \
346 .groups = (uint16_t []) BT_MESH_MODEL_GROUPS_UNASSIGNED(CONFIG_BT_MESH_MODEL_GROUP_COUNT), \
347 .groups_cnt = CONFIG_BT_MESH_MODEL_GROUP_COUNT, \
348 BT_MESH_MODEL_UUIDS_UNASSIGNED() \
349 .op = _op, \
350 .cb = _cb, \
351 .metadata = _metadata, \
352}
353#else
354#define BT_MESH_MODEL_METADATA_CB(_id, _op, _pub, _user_data, _cb, _metadata) \
355 BT_MESH_MODEL_CB(_id, _op, _pub, _user_data, _cb)
356#endif
357
372#define BT_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _user_data, _cb) \
373 BT_MESH_MODEL_CNT_VND_CB(_company, _id, _op, _pub, _user_data, \
374 CONFIG_BT_MESH_MODEL_KEY_COUNT, \
375 CONFIG_BT_MESH_MODEL_GROUP_COUNT, _cb)
376
393#if defined(CONFIG_BT_MESH_LARGE_COMP_DATA_SRV)
394#define BT_MESH_MODEL_VND_METADATA_CB(_company, _id, _op, _pub, _user_data, _cb, _metadata) \
395{ \
396 .vnd.company = (_company), \
397 .vnd.id = (_id), \
398 BT_MESH_MODEL_RUNTIME_INIT(_user_data) \
399 .op = _op, \
400 .pub = _pub, \
401 .keys = (uint16_t []) BT_MESH_MODEL_KEYS_UNUSED(CONFIG_BT_MESH_MODEL_KEY_COUNT), \
402 .keys_cnt = CONFIG_BT_MESH_MODEL_KEY_COUNT, \
403 .groups = (uint16_t []) BT_MESH_MODEL_GROUPS_UNASSIGNED(CONFIG_BT_MESH_MODEL_GROUP_COUNT), \
404 .groups_cnt = CONFIG_BT_MESH_MODEL_GROUP_COUNT, \
405 BT_MESH_MODEL_UUIDS_UNASSIGNED() \
406 .cb = _cb, \
407 .metadata = _metadata, \
408}
409#else
410#define BT_MESH_MODEL_VND_METADATA_CB(_company, _id, _op, _pub, _user_data, _cb, _metadata) \
411 BT_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _user_data, _cb)
412#endif
424#define BT_MESH_MODEL(_id, _op, _pub, _user_data) \
425 BT_MESH_MODEL_CB(_id, _op, _pub, _user_data, NULL)
426
439#define BT_MESH_MODEL_VND(_company, _id, _op, _pub, _user_data) \
440 BT_MESH_MODEL_VND_CB(_company, _id, _op, _pub, _user_data, NULL)
441#endif /* !defined(__cplusplus) || defined(__DOXYGEN__) */
442
453#define BT_MESH_TRANSMIT(count, int_ms) ((uint8_t)((count) | (((int_ms / 10) - 1) << 3)))
454
462#define BT_MESH_TRANSMIT_COUNT(transmit) (((transmit) & (uint8_t)BIT_MASK(3)))
463
471#define BT_MESH_TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 10)
472
483#define BT_MESH_PUB_TRANSMIT(count, int_ms) BT_MESH_TRANSMIT(count, \
484 (int_ms) / 5)
485
493#define BT_MESH_PUB_TRANSMIT_COUNT(transmit) BT_MESH_TRANSMIT_COUNT(transmit)
494
502#define BT_MESH_PUB_TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 50)
503
512#define BT_MESH_PUB_MSG_TOTAL(pub) (BT_MESH_PUB_TRANSMIT_COUNT((pub)->retransmit) + 1)
513
523#define BT_MESH_PUB_MSG_NUM(pub) (BT_MESH_PUB_TRANSMIT_COUNT((pub)->retransmit) + 1 - (pub)->count)
524
584
592#define BT_MESH_MODEL_PUB_DEFINE(_name, _update, _msg_len) \
593 NET_BUF_SIMPLE_DEFINE_STATIC(bt_mesh_pub_msg_##_name, _msg_len); \
594 static struct bt_mesh_model_pub _name = { \
595 .msg = &bt_mesh_pub_msg_##_name, \
596 .update = _update, \
597 }
598
607
610
612 const void * const data;
613};
614
623#define BT_MESH_MODELS_METADATA_ENTRY(_len, _id, _data) \
624 { \
625 .len = (_len), .id = _id, .data = _data, \
626 }
627
629#define BT_MESH_MODELS_METADATA_NONE NULL
630
632#define BT_MESH_MODELS_METADATA_END { 0, 0, NULL }
633
649 int (*const settings_set)(const struct bt_mesh_model *model,
650 const char *name, size_t len_rd,
651 settings_read_cb read_cb, void *cb_arg);
652
665 int (*const start)(const struct bt_mesh_model *model);
666
679 int (*const init)(const struct bt_mesh_model *model);
680
691 void (*const reset)(const struct bt_mesh_model *model);
692
701 void (*const pending_store)(const struct bt_mesh_model *model);
702};
703
711
714 union {
719 };
720
721 /* Model runtime information */
723 uint8_t elem_idx; /* Belongs to Nth element */
724 uint8_t mod_idx; /* Is the Nth model in the element */
725 uint16_t flags; /* Model flags for internal bookkeeping */
726
727#ifdef CONFIG_BT_MESH_MODEL_EXTENSIONS
728 /* Pointer to the next model in a model extension list. */
729 const struct bt_mesh_model *next;
730#endif
733 } * const rt;
734
736 struct bt_mesh_model_pub * const pub;
737
739 uint16_t * const keys;
741
745
746#if (CONFIG_BT_MESH_LABEL_COUNT > 0) || defined(__DOXYGEN__)
748 const uint8_t ** const uuids;
749#endif
750
752 const struct bt_mesh_model_op * const op;
753
755 const struct bt_mesh_model_cb * const cb;
756
757#if defined(CONFIG_BT_MESH_LARGE_COMP_DATA_SRV) || defined(__DOXYGEN__)
758 /* Pointer to the array of model metadata entries. */
760#endif
761};
762
771 void (*start)(uint16_t duration, int err, void *cb_data);
777 void (*end)(int err, void *cb_data);
778};
779
780
782#define BT_MESH_TTL_DEFAULT 0xff
783
785#define BT_MESH_TTL_MAX 0x7f
786
797int bt_mesh_model_send(const struct bt_mesh_model *model,
798 struct bt_mesh_msg_ctx *ctx,
799 struct net_buf_simple *msg,
800 const struct bt_mesh_send_cb *cb,
801 void *cb_data);
802
816int bt_mesh_model_publish(const struct bt_mesh_model *model);
817
826static inline bool bt_mesh_model_pub_is_retransmission(const struct bt_mesh_model *model)
827{
828 return model->pub->count != BT_MESH_PUB_TRANSMIT_COUNT(model->pub->retransmit);
829}
830
837const struct bt_mesh_elem *bt_mesh_model_elem(const struct bt_mesh_model *mod);
838
847const struct bt_mesh_model *bt_mesh_model_find(const struct bt_mesh_elem *elem,
848 uint16_t id);
849
859const struct bt_mesh_model *bt_mesh_model_find_vnd(const struct bt_mesh_elem *elem,
860 uint16_t company, uint16_t id);
861
868static inline bool bt_mesh_model_in_primary(const struct bt_mesh_model *mod)
869{
870 return (mod->rt->elem_idx == 0);
871}
872
884int bt_mesh_model_data_store(const struct bt_mesh_model *mod, bool vnd,
885 const char *name, const void *data,
886 size_t data_len);
887
900
924int bt_mesh_model_extend(const struct bt_mesh_model *extending_mod,
925 const struct bt_mesh_model *base_mod);
926
946
947int bt_mesh_model_correspond(const struct bt_mesh_model *corresponding_mod,
948 const struct bt_mesh_model *base_mod);
949
956bool bt_mesh_model_is_extended(const struct bt_mesh_model *model);
957
966
975
985
1008
1015};
1016
1029int bt_mesh_comp2_register(const struct bt_mesh_comp2 *comp2);
1030
1031#ifdef __cplusplus
1032}
1033#endif
1034
1038
1039#endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_ACCESS_H_ */
Bluetooth Assigned Numbers, codes and identifiers.
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.
int bt_mesh_model_publish(const struct bt_mesh_model *model)
Send a model publication message.
bool bt_mesh_model_is_extended(const struct bt_mesh_model *model)
Check if model is extended by another model.
#define BT_MESH_PUB_TRANSMIT_COUNT(transmit)
Decode Publish Retransmit count from a given value.
Definition access.h:493
static bool bt_mesh_model_pub_is_retransmission(const struct bt_mesh_model *model)
Check if a message is being retransmitted.
Definition access.h:826
int bt_mesh_models_metadata_change_prepare(void)
Indicate that the metadata will change on next bootup.
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_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_comp2_register(const struct bt_mesh_comp2 *comp2)
Register composition data page 2 of the device.
int bt_mesh_comp_change_prepare(void)
Indicate that the composition data will change on next bootup.
const struct bt_mesh_elem * bt_mesh_model_elem(const struct bt_mesh_model *mod)
Get the element that a model belongs to.
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.
Definition access.h:868
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.
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.
const struct bt_mesh_model * bt_mesh_model_find(const struct bt_mesh_elem *elem, uint16_t id)
Find a SIG model.
int bt_mesh_model_extend(const struct bt_mesh_model *extending_mod, const struct bt_mesh_model *base_mod)
Let a model extend another.
ssize_t(* settings_read_cb)(void *cb_arg, void *data, size_t len)
Function used to read the data from the settings storage in h_set handler implementations.
Definition settings.h:64
__SIZE_TYPE__ ssize_t
Definition types.h:28
Message APIs.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Composition data page 2 record.
Definition access.h:987
uint16_t id
Mesh profile ID.
Definition access.h:989
struct bt_mesh_comp2_record::@315261044123040067132243322322175125334172045074 version
Mesh Profile Version.
uint8_t y
Minor version.
Definition access.h:995
uint8_t x
Major version.
Definition access.h:993
const uint8_t * elem_offset
Element offset list.
Definition access.h:1002
uint16_t data_len
Length of additional data.
Definition access.h:1004
uint8_t z
Z version.
Definition access.h:997
const void * data
Additional data.
Definition access.h:1006
uint8_t elem_offset_cnt
Element offset count.
Definition access.h:1000
Node Composition data page 2.
Definition access.h:1010
size_t record_cnt
The number of Mesh Profile records on a device.
Definition access.h:1012
const struct bt_mesh_comp2_record * record
List of records.
Definition access.h:1014
Node Composition.
Definition access.h:977
uint16_t pid
Product ID.
Definition access.h:979
uint16_t cid
Company ID.
Definition access.h:978
uint16_t vid
Version ID.
Definition access.h:980
const struct bt_mesh_elem * elem
List of elements.
Definition access.h:983
size_t elem_count
The number of elements in this device.
Definition access.h:982
Mesh Element runtime information.
Definition access.h:163
uint16_t addr
Unicast Address.
Definition access.h:165
Abstraction that describes a Mesh Element.
Definition access.h:161
struct bt_mesh_elem::bt_mesh_elem_rt_ctx rt
const struct bt_mesh_model *const models
The list of SIG models in this element.
Definition access.h:176
const uint16_t loc
Location Descriptor (GATT Bluetooth Namespace Descriptors)
Definition access.h:169
const uint8_t model_count
The number of SIG models in this element.
Definition access.h:171
const struct bt_mesh_model *const vnd_models
The list of vendor models in this element.
Definition access.h:178
const uint8_t vnd_model_count
The number of vendor models in this element.
Definition access.h:173
Vendor model ID.
Definition access.h:705
uint16_t company
Vendor's company ID.
Definition access.h:707
uint16_t id
Model ID.
Definition access.h:709
const struct bt_mesh_model * next
Definition access.h:729
void * user_data
Model-specific user data.
Definition access.h:732
uint8_t mod_idx
Definition access.h:724
uint16_t flags
Definition access.h:725
uint8_t elem_idx
Definition access.h:723
Model callback functions.
Definition access.h:635
int(*const init)(const struct bt_mesh_model *model)
Model init callback.
Definition access.h:679
int(*const settings_set)(const struct bt_mesh_model *model, const char *name, size_t len_rd, settings_read_cb read_cb, void *cb_arg)
Set value handler of user data tied to the model.
Definition access.h:649
void(*const reset)(const struct bt_mesh_model *model)
Model reset callback.
Definition access.h:691
int(*const start)(const struct bt_mesh_model *model)
Callback called when the mesh is started.
Definition access.h:665
void(*const pending_store)(const struct bt_mesh_model *model)
Callback used to store pending model's user data.
Definition access.h:701
Model opcode handler.
Definition access.h:182
const uint32_t opcode
OpCode encoded using the BT_MESH_MODEL_OP_* macros.
Definition access.h:184
const ssize_t len
Message length.
Definition access.h:192
int(*const func)(const struct bt_mesh_model *model, struct bt_mesh_msg_ctx *ctx, struct net_buf_simple *buf)
Handler function for this opcode.
Definition access.h:203
Model publication context.
Definition access.h:530
int(* update)(const struct bt_mesh_model *mod)
Callback for updating the publication buffer.
Definition access.h:579
uint16_t key
Publish AppKey Index.
Definition access.h:536
uint16_t retr_update
Call update callback on every retransmission.
Definition access.h:540
uint8_t delayable
Use random delay for publishing.
Definition access.h:548
uint16_t cred
Friendship Credentials Flag.
Definition access.h:537
uint8_t retransmit
Retransmit Count & Interval Steps.
Definition access.h:543
uint16_t addr
Publish Address.
Definition access.h:534
uint8_t count
Transmissions left.
Definition access.h:546
uint8_t period_div
Divisor for the Period.
Definition access.h:545
struct net_buf_simple * msg
Publication buffer, containing the publication message.
Definition access.h:559
uint8_t ttl
Publish Time to Live.
Definition access.h:542
const struct bt_mesh_model * mod
The model the context belongs to.
Definition access.h:532
uint32_t period_start
Start of the current period.
Definition access.h:550
uint16_t send_rel
Force reliable sending (segment acks)
Definition access.h:538
uint16_t fast_period
Use FastPeriodDivisor.
Definition access.h:539
const uint8_t * uuid
Label UUID if Publish Address is Virtual Address.
Definition access.h:535
uint8_t period
Publish Period.
Definition access.h:544
struct k_work_delayable timer
Publish Period Timer.
Definition access.h:582
Abstraction that describes a Mesh Model instance.
Definition access.h:713
const uint8_t **const uuids
List of Label UUIDs the model is subscribed to.
Definition access.h:748
const struct bt_mesh_mod_id_vnd vnd
Vendor model ID.
Definition access.h:718
struct bt_mesh_model::bt_mesh_model_rt_ctx rt
uint16_t *const groups
Subscription List (group or virtual addresses)
Definition access.h:743
const struct bt_mesh_model_op *const op
Opcode handler list.
Definition access.h:752
uint16_t *const keys
AppKey List.
Definition access.h:739
const struct bt_mesh_model_cb *const cb
Model callback structure.
Definition access.h:755
const uint16_t keys_cnt
Definition access.h:740
const uint16_t id
SIG model ID.
Definition access.h:716
const uint16_t groups_cnt
Definition access.h:744
struct bt_mesh_model_pub *const pub
Model Publication.
Definition access.h:736
const struct bt_mesh_models_metadata_entry *const metadata
Definition access.h:759
Models Metadata Entry struct.
Definition access.h:604
const uint16_t len
Length of the metadata.
Definition access.h:606
const void *const data
Pointer to raw data.
Definition access.h:612
const uint16_t id
ID of the metadata.
Definition access.h:609
Message sending context.
Definition msg.h:76
Callback structure for monitoring model message sending.
Definition access.h:764
void(* start)(uint16_t duration, int err, void *cb_data)
Handler called at the start of the transmission.
Definition access.h:771
void(* end)(int err, void *cb_data)
Handler called at the end of the transmission.
Definition access.h:777
A structure used to submit work after a delay.
Definition kernel.h:4321
Simple network buffer representation.
Definition net_buf.h:89
Misc utilities.