Line data Source code
1 1 : /*
2 : * Copyright (c) 2021 Nordic Semiconductor ASA
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /** @file
8 : * @brief Bluetooth Mesh SAR Configuration Client Model APIs.
9 : */
10 : #ifndef BT_MESH_SAR_CFG_CLI_H__
11 : #define BT_MESH_SAR_CFG_CLI_H__
12 :
13 : #include <zephyr/bluetooth/mesh.h>
14 : #include <zephyr/bluetooth/mesh/sar_cfg.h>
15 :
16 : /**
17 : * @brief Bluetooth Mesh
18 : * @defgroup bt_mesh_sar_cfg_cli Bluetooth Mesh SAR Configuration Client Model
19 : * @ingroup bt_mesh
20 : * @{
21 : */
22 :
23 : #ifdef __cplusplus
24 : extern "C" {
25 : #endif
26 :
27 : /** Mesh SAR Configuration Client Model Context */
28 1 : struct bt_mesh_sar_cfg_cli {
29 : /** Access model pointer. */
30 1 : const struct bt_mesh_model *model;
31 :
32 : /* Publication structure instance */
33 0 : struct bt_mesh_model_pub pub;
34 :
35 : /* Synchronous message timeout in milliseconds. */
36 0 : int32_t timeout;
37 :
38 : /* Internal parameters for tracking message responses. */
39 0 : struct bt_mesh_msg_ack_ctx ack_ctx;
40 : };
41 :
42 : /**
43 : *
44 : * @brief SAR Configuration Client model composition data entry.
45 : *
46 : * @param[in] _cli Pointer to a @ref bt_mesh_sar_cfg_cli instance.
47 : */
48 1 : #define BT_MESH_MODEL_SAR_CFG_CLI(_cli) \
49 : BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_SAR_CFG_CLI, \
50 : _bt_mesh_sar_cfg_cli_op, _cli.pub, _cli, \
51 : &_bt_mesh_sar_cfg_cli_cb)
52 :
53 : /** @brief Get the SAR Transmitter state of the target node.
54 : *
55 : * @param net_idx Network index to encrypt with.
56 : * @param addr Target node address.
57 : * @param rsp Status response parameter.
58 : *
59 : * @return 0 on success, or (negative) error code on failure.
60 : */
61 1 : int bt_mesh_sar_cfg_cli_transmitter_get(uint16_t net_idx, uint16_t addr,
62 : struct bt_mesh_sar_tx *rsp);
63 :
64 : /** @brief Set the SAR Transmitter state of the target node.
65 : *
66 : * @param net_idx Network index to encrypt with.
67 : * @param addr Target node address.
68 : * @param set New SAR Transmitter state to set on the target node.
69 : * @param rsp Status response parameter.
70 : *
71 : * @return 0 on success, or (negative) error code on failure.
72 : */
73 1 : int bt_mesh_sar_cfg_cli_transmitter_set(uint16_t net_idx, uint16_t addr,
74 : const struct bt_mesh_sar_tx *set,
75 : struct bt_mesh_sar_tx *rsp);
76 :
77 : /** @brief Get the SAR Receiver state of the target node.
78 : *
79 : * @param net_idx Network index to encrypt with.
80 : * @param addr Target node address.
81 : * @param rsp Status response parameter.
82 : *
83 : * @return 0 on success, or (negative) error code on failure.
84 : */
85 1 : int bt_mesh_sar_cfg_cli_receiver_get(uint16_t net_idx, uint16_t addr,
86 : struct bt_mesh_sar_rx *rsp);
87 :
88 : /** @brief Set the SAR Receiver state of the target node.
89 : *
90 : * @param net_idx Network index to encrypt with.
91 : * @param addr Target node address.
92 : * @param set New SAR Receiver state to set on the target node.
93 : * @param rsp Status response parameter.
94 : *
95 : * @return 0 on success, or (negative) error code on failure.
96 : */
97 1 : int bt_mesh_sar_cfg_cli_receiver_set(uint16_t net_idx, uint16_t addr,
98 : const struct bt_mesh_sar_rx *set,
99 : struct bt_mesh_sar_rx *rsp);
100 :
101 : /** @brief Get the current transmission timeout value.
102 : *
103 : * @return The configured transmission timeout in milliseconds.
104 : */
105 1 : int32_t bt_mesh_sar_cfg_cli_timeout_get(void);
106 :
107 : /** @brief Set the transmission timeout value.
108 : *
109 : * @param timeout The new transmission timeout.
110 : */
111 1 : void bt_mesh_sar_cfg_cli_timeout_set(int32_t timeout);
112 :
113 : /** @cond INTERNAL_HIDDEN */
114 : extern const struct bt_mesh_model_op _bt_mesh_sar_cfg_cli_op[];
115 : extern const struct bt_mesh_model_cb _bt_mesh_sar_cfg_cli_cb;
116 : /** @endcond */
117 :
118 : #ifdef __cplusplus
119 : }
120 : #endif
121 :
122 : #endif /* BT_MESH_SAR_CFG_CLI_H__ */
123 :
124 : /** @} */
|