80 lines
2.3 KiB
C
80 lines
2.3 KiB
C
/*
|
|
* Copyright (c) 2023 Nordic Semiconductor ASA
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/** Virtual address entry. */
|
|
struct bt_mesh_va {
|
|
uint16_t ref:15,
|
|
changed:1;
|
|
uint16_t addr;
|
|
uint8_t uuid[16];
|
|
};
|
|
|
|
/** @brief Store Label UUID.
|
|
*
|
|
* @param uuid Label UUID to be stored.
|
|
* @param entry Pointer to a memory where a new or updated entry will be stored, or NULL.
|
|
*
|
|
* @return STATUS_SUCCESS if entry is stored or updated, error code otherwise.
|
|
*/
|
|
uint8_t bt_mesh_va_add(const uint8_t uuid[16], const struct bt_mesh_va **entry);
|
|
|
|
/** @brief Delete Label UUID.
|
|
*
|
|
* @c uuid must be a pointer to @ref bt_mesh_va.uuid. Use @ref bt_mesh_va_uuid_get to get valid
|
|
* pointer.
|
|
*
|
|
* @param uuid Label UUID to delete.
|
|
*
|
|
* @return STATUS_SUCCESS if entry is deleted, error code otherwise.
|
|
*/
|
|
uint8_t bt_mesh_va_del(const uint8_t *uuid);
|
|
|
|
/** @brief Find virtual address entry by Label UUID.
|
|
*
|
|
* @c uuid can be a user data.
|
|
*
|
|
* @param uuid pointer to memory with Label UUID to be found.
|
|
*
|
|
* @return Pointer to a valid entry, NULL otherwise.
|
|
*/
|
|
const struct bt_mesh_va *bt_mesh_va_find(const uint8_t *uuid);
|
|
|
|
/** @brief Check if there are more than one Label UUID which hash has the specified virtual
|
|
* address.
|
|
*
|
|
* @param addr Virtual address to check
|
|
*
|
|
* @return True if there is collision, false otherwise.
|
|
*/
|
|
bool bt_mesh_va_collision_check(uint16_t addr);
|
|
|
|
/* Needed for storing va as indexes in persistent storage. */
|
|
/** @brief Get Label UUID by index.
|
|
*
|
|
* @param idx Index of virtual address entry.
|
|
*
|
|
* @return Pointer to a valid Label UUID, or NULL if entry is not found.
|
|
*/
|
|
const uint8_t *bt_mesh_va_get_uuid_by_idx(uint16_t idx);
|
|
|
|
/** @brief Get virtual address entry index by Label UUID.
|
|
*
|
|
* @c uuid must be a pointer to @ref bt_mesh_va.uuid. Use @ref bt_mesh_va_uuid_get to get valid
|
|
* pointer.
|
|
*
|
|
* @param uuid Label UUID which index to find
|
|
* @param uuidx Pointer to a memory where to store index.
|
|
*
|
|
* @return 0 if entry is found, error code otherwise.
|
|
*/
|
|
int bt_mesh_va_get_idx_by_uuid(const uint8_t *uuid, uint16_t *uuidx);
|
|
|
|
/** @brief Store pending virtual address entries in the persistent storage.*/
|
|
void bt_mesh_va_pending_store(void);
|
|
|
|
/** @brief Remove all stored virtual addresses and remove them from the persistent storage. */
|
|
void bt_mesh_va_clear(void);
|