LCOV - code coverage report
Current view: top level - zephyr/bluetooth/mesh - large_comp_data_cli.h Hit Total Coverage
Test: new.info Lines: 15 16 93.8 %
Date: 2024-12-21 18:13:37

          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 1.14