Bluetooth: Mesh: Model message macros
Creates macros for determining model message lengths based on opcode, payload length and MIC size. Also adds macro wrapping NET_BUF_SIMPLE_DEFINE to serve the most common use case. Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
This commit is contained in:
parent
a3bc87504c
commit
5aee3ee995
6 changed files with 127 additions and 91 deletions
|
@ -176,6 +176,55 @@ struct bt_mesh_model_op {
|
|||
/** Helper to define an empty model array */
|
||||
#define BT_MESH_MODEL_NONE ((struct bt_mesh_model []){})
|
||||
|
||||
/** Length of a short Mesh MIC. */
|
||||
#define BT_MESH_MIC_SHORT 4
|
||||
/** Length of a long Mesh MIC. */
|
||||
#define BT_MESH_MIC_LONG 8
|
||||
|
||||
/** @def BT_MESH_MODEL_OP_LEN
|
||||
*
|
||||
* @brief Helper to determine the length of an opcode.
|
||||
*
|
||||
* @param _op Opcode.
|
||||
*/
|
||||
#define BT_MESH_MODEL_OP_LEN(_op) ((_op) <= 0xff ? 1 : (_op) <= 0xffff ? 2 : 3)
|
||||
|
||||
/** @def BT_MESH_MODEL_BUF_LEN
|
||||
*
|
||||
* @brief Helper for model message buffer length.
|
||||
*
|
||||
* Returns the length of a Mesh model message buffer, including the opcode
|
||||
* length and a short MIC.
|
||||
*
|
||||
* @param _op Opcode of the message.
|
||||
* @param _payload_len Length of the model payload.
|
||||
*/
|
||||
#define BT_MESH_MODEL_BUF_LEN(_op, _payload_len) \
|
||||
(BT_MESH_MODEL_OP_LEN(_op) + (_payload_len) + BT_MESH_MIC_SHORT)
|
||||
|
||||
/** @def BT_MESH_MODEL_BUF_LEN_LONG_MIC
|
||||
*
|
||||
* @brief Helper for model message buffer length.
|
||||
*
|
||||
* Returns the length of a Mesh model message buffer, including the opcode
|
||||
* length and a long MIC.
|
||||
*
|
||||
* @param _op Opcode of the message.
|
||||
* @param _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)
|
||||
|
||||
/** @def BT_MESH_MODEL_BUF_DEFINE
|
||||
*
|
||||
* @brief Define a Mesh model message buffer using @ref NET_BUF_SIMPLE_DEFINE.
|
||||
*
|
||||
* @param _buf Buffer name.
|
||||
* @param _op Opcode of the message.
|
||||
* @param _payload_len Length of the model message payload.
|
||||
*/
|
||||
#define BT_MESH_MODEL_BUF_DEFINE(_buf, _op, _payload_len) \
|
||||
NET_BUF_SIMPLE_DEFINE(_buf, BT_MESH_MODEL_BUF_LEN(_op, (_payload_len)))
|
||||
|
||||
/** @def BT_MESH_MODEL_CB
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue