Zephyr Project API 3.7.0
A Scalable Open Source RTOS
|
Message. More...
Data Structures | |
struct | bt_mesh_msg_ctx |
Message sending context. More... | |
struct | bt_mesh_msg_ack_ctx |
Acknowledged message context for tracking the status of model messages pending a response. More... | |
Macros | |
#define | BT_MESH_MIC_SHORT 4 |
Length of a short Mesh MIC. | |
#define | BT_MESH_MIC_LONG 8 |
Length of a long Mesh MIC. | |
#define | BT_MESH_MODEL_OP_LEN(_op) ((_op) <= 0xff ? 1 : (_op) <= 0xffff ? 2 : 3) |
Helper to determine the length of an opcode. | |
#define | BT_MESH_MODEL_BUF_LEN(_op, _payload_len) (BT_MESH_MODEL_OP_LEN(_op) + (_payload_len) + BT_MESH_MIC_SHORT) |
Helper for model message buffer length. | |
#define | BT_MESH_MODEL_BUF_LEN_LONG_MIC(_op, _payload_len) (BT_MESH_MODEL_OP_LEN(_op) + (_payload_len) + BT_MESH_MIC_LONG) |
Helper for model message buffer length. | |
#define | BT_MESH_MODEL_BUF_DEFINE(_buf, _op, _payload_len) NET_BUF_SIMPLE_DEFINE(_buf, BT_MESH_MODEL_BUF_LEN(_op, (_payload_len))) |
Define a Mesh model message buffer using NET_BUF_SIMPLE_DEFINE. | |
#define | BT_MESH_MSG_CTX_INIT(net_key_idx, app_key_idx, dst, ttl) |
Helper for bt_mesh_msg_ctx structure initialization. | |
#define | BT_MESH_MSG_CTX_INIT_APP(app_key_idx, dst) BT_MESH_MSG_CTX_INIT(0, app_key_idx, dst, BT_MESH_TTL_DEFAULT) |
Helper for bt_mesh_msg_ctx structure initialization secured with Application Key. | |
#define | BT_MESH_MSG_CTX_INIT_DEV(net_key_idx, dst) BT_MESH_MSG_CTX_INIT(net_key_idx, BT_MESH_KEY_DEV_REMOTE, dst, BT_MESH_TTL_DEFAULT) |
Helper for bt_mesh_msg_ctx structure initialization secured with Device Key of a remote device. | |
#define | BT_MESH_MSG_CTX_INIT_PUB(pub) |
Helper for bt_mesh_msg_ctx structure initialization using Model Publication context. | |
Functions | |
void | bt_mesh_model_msg_init (struct net_buf_simple *msg, uint32_t opcode) |
Initialize a model message. | |
static void | bt_mesh_msg_ack_ctx_init (struct bt_mesh_msg_ack_ctx *ack) |
Initialize an acknowledged message context. | |
static void | bt_mesh_msg_ack_ctx_reset (struct bt_mesh_msg_ack_ctx *ack) |
Reset the synchronization semaphore in an acknowledged message context. | |
void | bt_mesh_msg_ack_ctx_clear (struct bt_mesh_msg_ack_ctx *ack) |
Clear parameters of an acknowledged message context. | |
int | bt_mesh_msg_ack_ctx_prepare (struct bt_mesh_msg_ack_ctx *ack, uint32_t op, uint16_t dst, void *user_data) |
Prepare an acknowledged message context for the incoming message to wait. | |
static bool | bt_mesh_msg_ack_ctx_busy (struct bt_mesh_msg_ack_ctx *ack) |
Check if the acknowledged message context is initialized with an opcode. | |
int | bt_mesh_msg_ack_ctx_wait (struct bt_mesh_msg_ack_ctx *ack, k_timeout_t timeout) |
Wait for a message acknowledge. | |
static void | bt_mesh_msg_ack_ctx_rx (struct bt_mesh_msg_ack_ctx *ack) |
Mark a message as acknowledged. | |
bool | bt_mesh_msg_ack_ctx_match (const struct bt_mesh_msg_ack_ctx *ack, uint32_t op, uint16_t addr, void **user_data) |
Check if an opcode and address of a message matches the expected one. | |
Message.
#define BT_MESH_MIC_LONG 8 |
#include <include/zephyr/bluetooth/mesh/msg.h>
Length of a long Mesh MIC.
#define BT_MESH_MIC_SHORT 4 |
#include <include/zephyr/bluetooth/mesh/msg.h>
Length of a short Mesh MIC.
#define BT_MESH_MODEL_BUF_DEFINE | ( | _buf, | |
_op, | |||
_payload_len | |||
) | NET_BUF_SIMPLE_DEFINE(_buf, BT_MESH_MODEL_BUF_LEN(_op, (_payload_len))) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Define a Mesh model message buffer using NET_BUF_SIMPLE_DEFINE.
_buf | Buffer name. |
_op | Opcode of the message. |
_payload_len | Length of the model message payload. |
#define BT_MESH_MODEL_BUF_LEN | ( | _op, | |
_payload_len | |||
) | (BT_MESH_MODEL_OP_LEN(_op) + (_payload_len) + BT_MESH_MIC_SHORT) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Helper for model message buffer length.
Returns the length of a Mesh model message buffer, including the opcode length and a short MIC.
_op | Opcode of the message. |
_payload_len | Length of the model payload. |
#define BT_MESH_MODEL_BUF_LEN_LONG_MIC | ( | _op, | |
_payload_len | |||
) | (BT_MESH_MODEL_OP_LEN(_op) + (_payload_len) + BT_MESH_MIC_LONG) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Helper for model message buffer length.
Returns the length of a Mesh model message buffer, including the opcode length and a long MIC.
_op | Opcode of the message. |
_payload_len | Length of the model payload. |
#define BT_MESH_MODEL_OP_LEN | ( | _op | ) | ((_op) <= 0xff ? 1 : (_op) <= 0xffff ? 2 : 3) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Helper to determine the length of an opcode.
_op | Opcode. |
#define BT_MESH_MSG_CTX_INIT | ( | net_key_idx, | |
app_key_idx, | |||
dst, | |||
ttl | |||
) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Helper for bt_mesh_msg_ctx structure initialization.
dst
is a Virtual Address, Label UUID shall be initialized separately.net_key_idx | NetKey Index of the subnet to send the message on. Only used if app_key_idx points to devkey. |
app_key_idx | AppKey Index to encrypt the message with. |
dst | Remote addr. |
ttl | Time To Live. |
#define BT_MESH_MSG_CTX_INIT_APP | ( | app_key_idx, | |
dst | |||
) | BT_MESH_MSG_CTX_INIT(0, app_key_idx, dst, BT_MESH_TTL_DEFAULT) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Helper for bt_mesh_msg_ctx structure initialization secured with Application Key.
app_key_idx | AppKey Index to encrypt the message with. |
dst | Remote addr. |
#define BT_MESH_MSG_CTX_INIT_DEV | ( | net_key_idx, | |
dst | |||
) | BT_MESH_MSG_CTX_INIT(net_key_idx, BT_MESH_KEY_DEV_REMOTE, dst, BT_MESH_TTL_DEFAULT) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Helper for bt_mesh_msg_ctx structure initialization secured with Device Key of a remote device.
net_key_idx | NetKey Index of the subnet to send the message on. |
dst | Remote addr. |
#define BT_MESH_MSG_CTX_INIT_PUB | ( | pub | ) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Helper for bt_mesh_msg_ctx structure initialization using Model Publication context.
pub | Pointer to a model publication context. |
void bt_mesh_model_msg_init | ( | struct net_buf_simple * | msg, |
uint32_t | opcode | ||
) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Initialize a model message.
Clears the message buffer contents, and encodes the given opcode. The message buffer will be ready for filling in payload data.
msg | Message buffer. |
opcode | Opcode to encode. |
|
inlinestatic |
#include <include/zephyr/bluetooth/mesh/msg.h>
Check if the acknowledged message context is initialized with an opcode.
ack | Acknowledged message context. |
void bt_mesh_msg_ack_ctx_clear | ( | struct bt_mesh_msg_ack_ctx * | ack | ) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Clear parameters of an acknowledged message context.
This function clears the opcode, remote address and user data set by bt_mesh_msg_ack_ctx_prepare.
ack | Acknowledged message context to be cleared. |
|
inlinestatic |
#include <include/zephyr/bluetooth/mesh/msg.h>
Initialize an acknowledged message context.
Initializes semaphore used for synchronization between bt_mesh_msg_ack_ctx_wait and bt_mesh_msg_ack_ctx_rx calls. Call this function before using bt_mesh_msg_ack_ctx.
ack | Acknowledged message context to initialize. |
bool bt_mesh_msg_ack_ctx_match | ( | const struct bt_mesh_msg_ack_ctx * | ack, |
uint32_t | op, | ||
uint16_t | addr, | ||
void ** | user_data | ||
) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Check if an opcode and address of a message matches the expected one.
ack | Acknowledged message context to be checked. |
op | OpCode of the incoming message. |
addr | Source address of the incoming message. |
user_data | If not NULL, returns a user data stored in the acknowledged message context by bt_mesh_msg_ack_ctx_prepare. |
int bt_mesh_msg_ack_ctx_prepare | ( | struct bt_mesh_msg_ack_ctx * | ack, |
uint32_t | op, | ||
uint16_t | dst, | ||
void * | user_data | ||
) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Prepare an acknowledged message context for the incoming message to wait.
This function sets the opcode, remote address of the incoming message and stores the user data. Use this function before calling bt_mesh_msg_ack_ctx_wait.
ack | Acknowledged message context to prepare. |
op | The message OpCode. |
dst | Destination address of the message. |
user_data | User data for the acknowledged message context. |
|
inlinestatic |
#include <include/zephyr/bluetooth/mesh/msg.h>
Reset the synchronization semaphore in an acknowledged message context.
This function aborts call to bt_mesh_msg_ack_ctx_wait.
ack | Acknowledged message context to be reset. |
|
inlinestatic |
#include <include/zephyr/bluetooth/mesh/msg.h>
Mark a message as acknowledged.
This function unblocks call to bt_mesh_msg_ack_ctx_wait.
ack | Context of a message to be acknowledged. |
int bt_mesh_msg_ack_ctx_wait | ( | struct bt_mesh_msg_ack_ctx * | ack, |
k_timeout_t | timeout | ||
) |
#include <include/zephyr/bluetooth/mesh/msg.h>
Wait for a message acknowledge.
This function blocks execution until bt_mesh_msg_ack_ctx_rx is called or by timeout.
ack | Acknowledged message context of the message to wait for. |
timeout | Wait timeout. |