blob: 835dc38c773d602502d1f2373b8902ca4699b7cb [file] [log] [blame]
/*
* 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__ */