LCOV - code coverage report
Current view: top level - zephyr/bluetooth/mesh - large_comp_data_cli.h Coverage Total Hit
Test: new.info Lines: 93.8 % 16 15
Test Date: 2025-09-05 20:47:19

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2021 Nordic Semiconductor ASA
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : #ifndef BT_MESH_LARGE_COMP_DATA_CLI_H__
       8              : #define BT_MESH_LARGE_COMP_DATA_CLI_H__
       9              : 
      10              : #include <zephyr/bluetooth/mesh.h>
      11              : 
      12              : #ifdef __cplusplus
      13              : extern "C" {
      14              : #endif
      15              : 
      16              : /**
      17              :  * @defgroup bt_mesh_large_comp_data_cli Large Composition Data Client model
      18              :  * @ingroup bt_mesh
      19              :  * @{
      20              :  */
      21              : 
      22              : struct bt_mesh_large_comp_data_cli;
      23              : 
      24              : /** Large Composition Data response. */
      25            1 : struct bt_mesh_large_comp_data_rsp {
      26              :         /** Page number. */
      27            1 :         uint8_t page;
      28              :         /** Offset within the page. */
      29            1 :         uint16_t offset;
      30              :         /** Total size of the page. */
      31            1 :         uint16_t total_size;
      32              :         /** Pointer to allocated buffer for storing received data. */
      33            1 :         struct net_buf_simple *data;
      34              : };
      35              : 
      36              : /** Large Composition Data Status messages callbacks */
      37            1 : struct bt_mesh_large_comp_data_cli_cb {
      38              :         /** @brief Optional callback for Large Composition Data Status message.
      39              :          *
      40              :          *  Handles received Large Composition Data Status messages from a Large Composition Data
      41              :          *  Server.
      42              :          *
      43              :          *  If the content of @c rsp is needed after exiting this callback, a user should
      44              :          *  deep copy it.
      45              :          *
      46              :          *  @param cli         Large Composition Data Client context.
      47              :          *  @param addr        Address of the sender.
      48              :          *  @param rsp         Response received from the server.
      49              :          */
      50            1 :         void (*large_comp_data_status)(struct bt_mesh_large_comp_data_cli *cli, uint16_t addr,
      51              :                                        struct bt_mesh_large_comp_data_rsp *rsp);
      52              : 
      53              :         /** @brief Optional callback for Models Metadata Status message.
      54              :          *
      55              :          *  Handles received Models Metadata Status messages from a Large Composition Data
      56              :          *  Server.
      57              :          *
      58              :          *  If the content of @c rsp is needed after exiting this callback, a user should
      59              :          *  deep copy it.
      60              :          *
      61              :          *  @param cli         Large Composition Data Client context.
      62              :          *  @param addr        Address of the sender.
      63              :          *  @param rsp         Response received from the server.
      64              :          */
      65            1 :         void (*models_metadata_status)(struct bt_mesh_large_comp_data_cli *cli, uint16_t addr,
      66              :                                        struct bt_mesh_large_comp_data_rsp *rsp);
      67              : };
      68              : 
      69              : /** Large Composition Data Client model context */
      70            1 : struct bt_mesh_large_comp_data_cli {
      71              :         /** Model entry pointer. */
      72            1 :         const struct bt_mesh_model *model;
      73              : 
      74              :         /** Internal parameters for tracking message responses. */
      75            1 :         struct bt_mesh_msg_ack_ctx ack_ctx;
      76              : 
      77              :         /** Optional callback for Large Composition Data Status messages. */
      78            1 :         const struct bt_mesh_large_comp_data_cli_cb *cb;
      79              : };
      80              : 
      81              : /**
      82              :  *
      83              :  *  @brief Large Composition Data Client model Composition Data entry.
      84              :  *
      85              :  *  @param cli_data Pointer to a @ref bt_mesh_large_comp_data_cli instance.
      86              :  */
      87            1 : #define BT_MESH_MODEL_LARGE_COMP_DATA_CLI(cli_data)                                                \
      88              :         BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_LARGE_COMP_DATA_CLI,                                     \
      89              :                          _bt_mesh_large_comp_data_cli_op, NULL, cli_data,                          \
      90              :                          &_bt_mesh_large_comp_data_cli_cb)
      91              : 
      92              : /** @brief Send Large Composition Data Get message.
      93              :  *
      94              :  * This API is used to read a portion of a Composition Data Page.
      95              :  *
      96              :  * This API can be used asynchronously by setting @p rsp as NULL. This way, the
      97              :  * method will not wait for a response and will return immediately after sending
      98              :  * the command.
      99              :  *
     100              :  * When @c rsp is set, the user is responsible for providing a buffer for the
     101              :  * Composition Data in @ref bt_mesh_large_comp_data_rsp::data. If a buffer is
     102              :  * not provided, the metadata won't be copied.
     103              :  *
     104              :  *  @param net_idx     Network index to encrypt with.
     105              :  *  @param addr        Target node element address.
     106              :  *  @param page        Composition Data Page to read.
     107              :  *  @param offset      Offset within the Composition Data Page.
     108              :  *  @param rsp         Pointer to a struct storing the received response from
     109              :  *                     the server, or NULL to not wait for a response.
     110              :  *
     111              :  *  @return 0 on success, or (negative) error code on failure.
     112              :  */
     113            1 : int bt_mesh_large_comp_data_get(uint16_t net_idx, uint16_t addr, uint8_t page,
     114              :                                 size_t offset, struct bt_mesh_large_comp_data_rsp *rsp);
     115              : 
     116              : /** @brief Send Models Metadata Get message.
     117              :  *
     118              :  * This API is used to read a portion of a Models Metadata Page.
     119              :  *
     120              :  * This API can be used asynchronously by setting @p rsp as NULL. This way, the
     121              :  * method will not wait for a response and will return immediately after sending
     122              :  * the command.
     123              :  *
     124              :  * When @c rsp is set, a user is responsible for providing a buffer for
     125              :  * metadata in @ref bt_mesh_large_comp_data_rsp::data. If a buffer is not
     126              :  * provided, the metadata won't be copied.
     127              :  *
     128              :  *  @param net_idx     Network index to encrypt with.
     129              :  *  @param addr        Target node element address.
     130              :  *  @param page        Models Metadata Page to read.
     131              :  *  @param offset      Offset within the Models Metadata Page.
     132              :  *  @param rsp         Pointer to a struct storing the received response from
     133              :  *                     the server, or NULL to not wait for a response.
     134              :  *
     135              :  *  @return 0 on success, or (negative) error code on failure.
     136              :  */
     137            1 : int bt_mesh_models_metadata_get(uint16_t net_idx, uint16_t addr, uint8_t page,
     138              :                                 size_t offset, struct bt_mesh_large_comp_data_rsp *rsp);
     139              : 
     140              : /** @cond INTERNAL_HIDDEN */
     141              : extern const struct bt_mesh_model_op _bt_mesh_large_comp_data_cli_op[];
     142              : extern const struct bt_mesh_model_cb _bt_mesh_large_comp_data_cli_cb;
     143              : /** @endcond */
     144              : 
     145              : /**
     146              :  * @}
     147              :  */
     148              : 
     149              : #ifdef __cplusplus
     150              : }
     151              : #endif
     152              : 
     153              : #endif /* BT_MESH_LARGE_COMP_DATA_CLI_H__ */
        

Generated by: LCOV version 2.0-1