| /* |
| * Copyright (c) 2020 Nordic Semiconductor ASA |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_BLUETOOTH_MESH_PRIV_BEACON_CLI_H__ |
| #define ZEPHYR_INCLUDE_BLUETOOTH_MESH_PRIV_BEACON_CLI_H__ |
| |
| #include <zephyr/bluetooth/mesh.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * @defgroup bt_mesh_priv_beacon_cli Bluetooth Mesh Private Beacon Client |
| * @ingroup bt_mesh |
| * @{ |
| */ |
| |
| /** |
| * |
| * @brief Private Beacon Client model composition data entry. |
| * |
| * @param cli_data Pointer to a @ref bt_mesh_priv_beacon_cli instance. |
| */ |
| #define BT_MESH_MODEL_PRIV_BEACON_CLI(cli_data) \ |
| BT_MESH_MODEL_CB(BT_MESH_MODEL_ID_PRIV_BEACON_CLI, \ |
| bt_mesh_priv_beacon_cli_op, NULL, cli_data, \ |
| &bt_mesh_priv_beacon_cli_cb) |
| |
| struct bt_mesh_priv_beacon_cli; |
| |
| /** Private Beacon */ |
| struct bt_mesh_priv_beacon { |
| /** Private beacon is enabled */ |
| uint8_t enabled; |
| /** Random refresh interval (in 10 second steps), or 0 to keep current |
| * value. |
| */ |
| uint8_t rand_interval; |
| }; |
| |
| /** Private Node Identity */ |
| struct bt_mesh_priv_node_id { |
| /** Index of the NetKey. */ |
| uint16_t net_idx; |
| /** Private Node Identity state */ |
| uint8_t state; |
| /** Response status code. */ |
| uint8_t status; |
| }; |
| |
| /** Private Beacon Client Status messages callbacks */ |
| struct bt_mesh_priv_beacon_cli_cb { |
| /** @brief Optional callback for Private Beacon Status message. |
| * |
| * Handles received Private Beacon Status messages from a Private Beacon server. |
| * |
| * @param cli Private Beacon client context. |
| * @param addr Address of the sender. |
| * @param priv_beacon Mesh Private Beacon state received from the server. |
| */ |
| void (*priv_beacon_status)(struct bt_mesh_priv_beacon_cli *cli, uint16_t addr, |
| struct bt_mesh_priv_beacon *priv_beacon); |
| |
| /** @brief Optional callback for Private GATT Proxy Status message. |
| * |
| * Handles received Private GATT Proxy Status messages from a Private Beacon server. |
| * |
| * @param cli Private Beacon client context. |
| * @param addr Address of the sender. |
| * @param gatt_proxy Private GATT Proxy state received from the server. |
| */ |
| void (*priv_gatt_proxy_status)(struct bt_mesh_priv_beacon_cli *cli, uint16_t addr, |
| uint8_t gatt_proxy); |
| |
| /** @brief Optional callback for Private Node Identity Status message. |
| * |
| * Handles received Private Node Identity Status messages from a Private Beacon server. |
| * |
| * @param cli Private Beacon client context. |
| * @param addr Address of the sender. |
| * @param priv_node_id Private Node Identity state received from the server. |
| */ |
| void (*priv_node_id_status)(struct bt_mesh_priv_beacon_cli *cli, uint16_t addr, |
| struct bt_mesh_priv_node_id *priv_node_id); |
| }; |
| |
| /** Mesh Private Beacon Client model */ |
| struct bt_mesh_priv_beacon_cli { |
| struct bt_mesh_model *model; |
| |
| /* Internal parameters for tracking message responses. */ |
| struct bt_mesh_msg_ack_ctx ack_ctx; |
| |
| /** Optional callback for Private Beacon Client Status messages. */ |
| const struct bt_mesh_priv_beacon_cli_cb *cb; |
| }; |
| |
| /** @brief Set the target's Private Beacon state. |
| * |
| * @param net_idx Network index to encrypt with. |
| * @param addr Target node address. |
| * @param val New Private Beacon value. Returns response status on success. |
| * |
| * @return 0 on success, or (negative) error code otherwise. |
| */ |
| int bt_mesh_priv_beacon_cli_set(uint16_t net_idx, uint16_t addr, |
| struct bt_mesh_priv_beacon *val); |
| |
| /** @brief Get the target's Private Beacon state. |
| * |
| * @param net_idx Network index to encrypt with. |
| * @param addr Target node address. |
| * @param val Response buffer for Private Beacon value. |
| * |
| * @return 0 on success, or (negative) error code otherwise. |
| */ |
| int bt_mesh_priv_beacon_cli_get(uint16_t net_idx, uint16_t addr, |
| struct bt_mesh_priv_beacon *val); |
| |
| /** @brief Set the target's Private GATT Proxy state. |
| * |
| * @param net_idx Network index to encrypt with. |
| * @param addr Target node address. |
| * @param val New Private GATT Proxy value. Returns response status on |
| * success. |
| * |
| * @return 0 on success, or (negative) error code otherwise. |
| */ |
| int bt_mesh_priv_beacon_cli_gatt_proxy_set(uint16_t net_idx, uint16_t addr, |
| uint8_t *val); |
| |
| /** @brief Get the target's Private GATT Proxy state. |
| * |
| * @param net_idx Network index to encrypt with. |
| * @param addr Target node address. |
| * @param val Response buffer for Private GATT Proxy value. |
| * |
| * @return 0 on success, or (negative) error code otherwise. |
| */ |
| int bt_mesh_priv_beacon_cli_gatt_proxy_get(uint16_t net_idx, uint16_t addr, |
| uint8_t *val); |
| |
| /** @brief Set the target's Private Node Identity state. |
| * |
| * @param net_idx Network index to encrypt with. |
| * @param addr Target node address. |
| * @param val New Private Node Identity value. Returns response status on |
| * success. |
| * |
| * @return 0 on success, or (negative) error code otherwise. |
| */ |
| int bt_mesh_priv_beacon_cli_node_id_set(uint16_t net_idx, uint16_t addr, |
| struct bt_mesh_priv_node_id *val); |
| |
| /** @brief Get the target's Private Node Identity state. |
| * |
| * @param net_idx Network index to encrypt with. |
| * @param addr Target node address. |
| * @param key_net_idx Network index to get the Private Node Identity state of. |
| * @param val Response buffer for Private Node Identity value. |
| * |
| * @return 0 on success, or (negative) error code otherwise. |
| */ |
| int bt_mesh_priv_beacon_cli_node_id_get(uint16_t net_idx, uint16_t addr, |
| uint16_t key_net_idx, |
| struct bt_mesh_priv_node_id *val); |
| |
| /** @cond INTERNAL_HIDDEN */ |
| extern const struct bt_mesh_model_op bt_mesh_priv_beacon_cli_op[]; |
| extern const struct bt_mesh_model_cb bt_mesh_priv_beacon_cli_cb; |
| /** @endcond */ |
| |
| /** @} */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* ZEPHYR_INCLUDE_BLUETOOTH_MESH_PRIV_BEACON_CLI_H__ */ |