1 /* 2 * Copyright (c) 2022 Nordic Semiconductor ASA 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef BT_MESH_OD_PRIV_PROXY_CLI_H__ 8 #define BT_MESH_OD_PRIV_PROXY_CLI_H__ 9 10 #include <zephyr/bluetooth/mesh.h> 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 /** 17 * @defgroup bt_mesh_od_priv_proxy_cli Bluetooth Mesh On-Demand Private GATT Proxy Client 18 * @ingroup bt_mesh 19 * @{ 20 */ 21 22 /** On-Demand Private Proxy Client Model Context */ 23 struct bt_mesh_od_priv_proxy_cli { 24 /** Solicitation PDU RPL model entry pointer. */ 25 const struct bt_mesh_model *model; 26 27 /* Internal parameters for tracking message responses. */ 28 struct bt_mesh_msg_ack_ctx ack_ctx; 29 30 /** @brief Optional callback for On-Demand Private Proxy Status messages. 31 * 32 * Handles received On-Demand Private Proxy Status messages from a On-Demand Private Proxy 33 * server.The @c state param represents state of On-Demand Private Proxy server. 34 * 35 * @param cli On-Demand Private Proxy client that received the status message. 36 * @param addr Address of the sender. 37 * @param state State value. 38 */ 39 void (*od_status)(struct bt_mesh_od_priv_proxy_cli *cli, uint16_t addr, uint8_t state); 40 }; 41 42 /** 43 * @brief On-Demand Private Proxy Client model composition data entry. 44 */ 45 #define BT_MESH_MODEL_OD_PRIV_PROXY_CLI(cli_data) \ 46 BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_ON_DEMAND_PROXY_CLI, \ 47 _bt_mesh_od_priv_proxy_cli_op, NULL, cli_data, \ 48 &_bt_mesh_od_priv_proxy_cli_cb) 49 50 /** @brief Get the target's On-Demand Private GATT Proxy state. 51 * 52 * This method can be used asynchronously by setting @p val_rsp as NULL. 53 * This way the method will not wait for response and will 54 * return immediately after sending the command. 55 * 56 * To process the response arguments of an async method, register 57 * the @c od_status callback in @c bt_mesh_od_priv_proxy_cli struct. 58 * 59 * @param net_idx Network index to encrypt with. 60 * @param addr Target node address. 61 * @param val_rsp Response buffer for On-Demand Private GATT Proxy value. 62 * 63 * @return 0 on success, or (negative) error code otherwise. 64 */ 65 int bt_mesh_od_priv_proxy_cli_get(uint16_t net_idx, uint16_t addr, uint8_t *val_rsp); 66 67 /** @brief Set the target's On-Demand Private GATT Proxy state. 68 * 69 * This method can be used asynchronously by setting @p val_rsp as NULL. 70 * This way the method will not wait for response and will 71 * return immediately after sending the command. 72 * 73 * To process the response arguments of an async method, register 74 * the @c od_status callback in @c bt_mesh_od_priv_proxy_cli struct. 75 * 76 * @param net_idx Network index to encrypt with. 77 * @param addr Target node address. 78 * @param val On-Demand Private GATT Proxy state to be set 79 * @param val_rsp Response buffer for On-Demand Private GATT Proxy value. 80 * 81 * @return 0 on success, or (negative) error code otherwise. 82 */ 83 int bt_mesh_od_priv_proxy_cli_set(uint16_t net_idx, uint16_t addr, uint8_t val, uint8_t *val_rsp); 84 85 /** @brief Set the transmission timeout value. 86 * 87 * @param timeout The new transmission timeout in milliseconds. 88 */ 89 void bt_mesh_od_priv_proxy_cli_timeout_set(int32_t timeout); 90 91 /** @cond INTERNAL_HIDDEN */ 92 extern const struct bt_mesh_model_op _bt_mesh_od_priv_proxy_cli_op[]; 93 extern const struct bt_mesh_model_cb _bt_mesh_od_priv_proxy_cli_cb; 94 /** @endcond */ 95 96 /** @} */ 97 98 #ifdef __cplusplus 99 } 100 #endif 101 102 #endif /* BT_MESH_OD_PRIV_PROXY_CLI_H__ */ 103