MeshX 0.4
This repository provides an implementation for Bluetooth Low Energy (BLE) Mesh network nodes. The project allows you to create BLE mesh nodes that can communicate with each other, enabling the development of smart home solutions or other IoT-based applications.
Loading...
Searching...
No Matches
meshx_ble_mesh_config_srv.h
Go to the documentation of this file.
1/**
2 * Copyright (c) 2024 - 2025 MeshX
3 *
4 * @file meshx_ble_mesh_config_srv.h
5 * @brief Header file for MeshX BLE Mesh Configuration Server.
6 *
7 * This file contains the definitions, data structures, and function declarations
8 * for the MeshX BLE Mesh Configuration Server. It provides the necessary APIs
9 * and context for managing the configuration server model in a BLE Mesh network.
10 *
11 * @author Pranjal Chanda
12 */
13
14#ifndef __MESHX_BLE_MESH_CONFIG_SRV_H__
15#define __MESHX_BLE_MESH_CONFIG_SRV_H__
16
18#include "meshx_control_task.h"
19
22
23/**
24 * @brief Configuration Server model related context.
25 */
26
27/** Parameters of Config Model Publication Set */
28typedef struct {
29 uint16_t element_addr; /*!< Element Address */
30 uint16_t pub_addr; /*!< Publish Address */
31 uint16_t app_idx; /*!< AppKey Index */
32 bool cred_flag; /*!< Friendship Credential Flag */
33 uint8_t pub_ttl; /*!< Publish TTL */
34 uint8_t pub_period; /*!< Publish Period */
35 uint8_t pub_retransmit; /*!< Publish Retransmit */
36 uint16_t company_id; /*!< Company ID */
37 uint16_t model_id; /*!< Model ID */
39
40/** Parameters of Config Model Publication Virtual Address Set */
41typedef struct {
42 uint16_t element_addr; /*!< Element Address */
43 uint8_t label_uuid[16]; /*!< Label UUID */
44 uint16_t app_idx; /*!< AppKey Index */
45 bool cred_flag; /*!< Friendship Credential Flag */
46 uint8_t pub_ttl; /*!< Publish TTL */
47 uint8_t pub_period; /*!< Publish Period */
48 uint8_t pub_retransmit; /*!< Publish Retransmit */
49 uint16_t company_id; /*!< Company ID */
50 uint16_t model_id; /*!< Model ID */
52
53/** Parameters of Config Model Subscription Add */
54typedef struct {
55 uint16_t element_addr; /*!< Element Address */
56 uint16_t sub_addr; /*!< Subscription Address */
57 uint16_t company_id; /*!< Company ID */
58 uint16_t model_id; /*!< Model ID */
60
61/** Parameters of Config Model Subscription Delete */
62typedef struct {
63 uint16_t element_addr; /*!< Element Address */
64 uint16_t sub_addr; /*!< Subscription Address */
65 uint16_t company_id; /*!< Company ID */
66 uint16_t model_id; /*!< Model ID */
68
69/** Parameters of Config NetKey Add */
70typedef struct {
71 uint16_t net_idx; /*!< NetKey Index */
72 uint8_t net_key[16]; /*!< NetKey */
74
75/** Parameters of Config NetKey Update */
76typedef struct {
77 uint16_t net_idx; /*!< NetKey Index */
78 uint8_t net_key[16]; /*!< NetKey */
80
81/** Parameter of Config NetKey Delete */
82typedef struct {
83 uint16_t net_idx; /*!< NetKey Index */
85
86/** Parameters of Config AppKey Add */
87typedef struct {
88 uint16_t net_idx; /*!< NetKey Index */
89 uint16_t app_idx; /*!< AppKey Index */
90 uint8_t app_key[16]; /*!< AppKey */
92
93/** Parameters of Config AppKey Update */
94typedef struct {
95 uint16_t net_idx; /*!< NetKey Index */
96 uint16_t app_idx; /*!< AppKey Index */
97 uint8_t app_key[16]; /*!< AppKey */
99
100/** Parameters of Config AppKey Delete */
101typedef struct {
102 uint16_t net_idx; /*!< NetKey Index */
103 uint16_t app_idx; /*!< AppKey Index */
105
106/** Parameters of Config Model App Bind */
107typedef struct {
108 uint16_t element_addr; /*!< Element Address */
109 uint16_t app_idx; /*!< AppKey Index */
110 uint16_t company_id; /*!< Company ID */
111 uint16_t model_id; /*!< Model ID */
113
114/** Parameters of Config Model App Unbind */
115typedef struct {
116 uint16_t element_addr; /*!< Element Address */
117 uint16_t app_idx; /*!< AppKey Index */
118 uint16_t company_id; /*!< Company ID */
119 uint16_t model_id; /*!< Model ID */
121
122/** Parameters of Config Key Refresh Phase Set */
123typedef struct {
124 uint16_t net_idx; /*!< NetKey Index */
125 uint8_t kr_phase; /*!< New Key Refresh Phase Transition */
127
128/**
129 * @brief Configuration Server model state change value union
130 */
131typedef union {
132 /**
133 * The recv_op in ctx can be used to decide which state is changed.
134 */
135 meshx_state_change_cfg_mod_pub_set_t mod_pub_set; /*!< Config Model Publication Set */
136 meshx_state_change_cfg_mod_pub_va_set_t mod_pub_va_set; /*!< Config Model Publication Virtual Address Set */
137 meshx_state_change_cfg_model_sub_add_t mod_sub_add; /*!< Config Model Subscription Add */
138 meshx_state_change_cfg_model_sub_delete_t mod_sub_delete; /*!< Config Model Subscription Delete */
147 meshx_state_change_cfg_kr_phase_set_t kr_phase_set; /*!< Config Key Refresh Phase Set */
149
156
157/**
158 * @brief Initializes the MeshX platform configuration server.
159 *
160 * This function sets up the necessary resources and configurations
161 * for the MeshX BLE Mesh configuration server. It should be called
162 * during the initialization phase of the application to ensure
163 * proper operation of the MeshX BLE Mesh stack.
164 *
165 * @return
166 * - MESHX_SUCCESS on successful initialization.
167 * - Appropriate error code from meshx_err_t on failure.
168 */
170
171/**
172 * @brief Retrieve the instance of the BLE Mesh configuration server.
173 *
174 * This function provides access to the BLE Mesh configuration server instance.
175 *
176 * @param[out] p_conf_srv Pointer to a variable where the configuration server instance will be stored.
177 * The caller must ensure that the pointer is valid and non-NULL.
178 *
179 * @return
180 * - MESHX_SUCCESS on success.
181 * - Appropriate error code from `meshx_err_t` on failure.
182 */
184
185/**
186 * @brief Retrieves the configuration server model for the BLE Mesh.
187 *
188 * This function provides access to the configuration server model used in the BLE Mesh
189 * implementation. The retrieved model can be used for configuring and managing the mesh network.
190 *
191 * @param[out] p_model Pointer to a variable where the address of the configuration server model
192 * will be stored. The caller must ensure that the pointer is valid.
193 *
194 * @return
195 * - MESHX_SUCCESS on success.
196 * - Appropriate error code from `meshx_err_t` on failure.
197 */
199
200#endif /* __MESHX_BLE_MESH_CONFIG_SRV_H__ */
Common BLE Mesh interface definitions and utility functions.
struct meshx_model meshx_model_t
struct meshx_ctx meshx_ctx_t
Structure to hold context information for BLE Mesh operations.
void * meshx_ptr_t
Definition meshx_ble_mesh_cmn_def.h:636
struct meshx_config_srv_cb_param meshx_config_srv_cb_param_t
control_task_msg_evt_config_t config_evt_t
Definition meshx_ble_mesh_config_srv.h:21
meshx_err_t meshx_plat_config_srv_init(void)
Initializes the MeshX platform configuration server.
meshx_err_t meshx_plat_get_config_srv_instance(meshx_ptr_t *p_conf_srv)
Retrieve the instance of the BLE Mesh configuration server.
meshx_err_t meshx_plat_get_config_srv_model(meshx_ptr_t p_model)
Retrieves the configuration server model for the BLE Mesh.
control_task_msg_handle_t config_srv_cb_t
Definition meshx_ble_mesh_config_srv.h:20
Header file for the control task in the BLE mesh node application.
enum __packed control_task_msg_evt_config control_task_msg_evt_config_t
Enumeration for control task config srv events.
meshx_err_t(* control_task_msg_handle_t)(dev_struct_t *pdev, control_task_msg_evt_t evt, void *params)
Function pointer type for control task message handler.
Definition meshx_control_task.h:188
meshx_err_t
MeshX Error Codes.
Definition meshx_err.h:43
Definition meshx_ble_mesh_config_srv.h:151
meshx_model_t model
Definition meshx_ble_mesh_config_srv.h:153
meshx_ctx_t ctx
Definition meshx_ble_mesh_config_srv.h:152
meshx_cfg_srv_state_change_t state_change
Definition meshx_ble_mesh_config_srv.h:154
Definition meshx_ble_mesh_config_srv.h:87
uint8_t app_key[16]
Definition meshx_ble_mesh_config_srv.h:90
uint16_t app_idx
Definition meshx_ble_mesh_config_srv.h:89
uint16_t net_idx
Definition meshx_ble_mesh_config_srv.h:88
Definition meshx_ble_mesh_config_srv.h:101
uint16_t app_idx
Definition meshx_ble_mesh_config_srv.h:103
uint16_t net_idx
Definition meshx_ble_mesh_config_srv.h:102
Definition meshx_ble_mesh_config_srv.h:94
uint8_t app_key[16]
Definition meshx_ble_mesh_config_srv.h:97
uint16_t net_idx
Definition meshx_ble_mesh_config_srv.h:95
uint16_t app_idx
Definition meshx_ble_mesh_config_srv.h:96
Definition meshx_ble_mesh_config_srv.h:123
uint16_t net_idx
Definition meshx_ble_mesh_config_srv.h:124
uint8_t kr_phase
Definition meshx_ble_mesh_config_srv.h:125
Configuration Server model related context.
Definition meshx_ble_mesh_config_srv.h:28
uint16_t element_addr
Definition meshx_ble_mesh_config_srv.h:29
uint16_t company_id
Definition meshx_ble_mesh_config_srv.h:36
uint16_t pub_addr
Definition meshx_ble_mesh_config_srv.h:30
uint8_t pub_retransmit
Definition meshx_ble_mesh_config_srv.h:35
uint8_t pub_ttl
Definition meshx_ble_mesh_config_srv.h:33
uint8_t pub_period
Definition meshx_ble_mesh_config_srv.h:34
bool cred_flag
Definition meshx_ble_mesh_config_srv.h:32
uint16_t app_idx
Definition meshx_ble_mesh_config_srv.h:31
uint16_t model_id
Definition meshx_ble_mesh_config_srv.h:37
Definition meshx_ble_mesh_config_srv.h:41
uint16_t company_id
Definition meshx_ble_mesh_config_srv.h:49
uint8_t pub_period
Definition meshx_ble_mesh_config_srv.h:47
uint16_t element_addr
Definition meshx_ble_mesh_config_srv.h:42
uint16_t app_idx
Definition meshx_ble_mesh_config_srv.h:44
bool cred_flag
Definition meshx_ble_mesh_config_srv.h:45
uint16_t model_id
Definition meshx_ble_mesh_config_srv.h:50
uint8_t pub_retransmit
Definition meshx_ble_mesh_config_srv.h:48
uint8_t pub_ttl
Definition meshx_ble_mesh_config_srv.h:46
uint8_t label_uuid[16]
Definition meshx_ble_mesh_config_srv.h:43
Definition meshx_ble_mesh_config_srv.h:107
uint16_t model_id
Definition meshx_ble_mesh_config_srv.h:111
uint16_t element_addr
Definition meshx_ble_mesh_config_srv.h:108
uint16_t company_id
Definition meshx_ble_mesh_config_srv.h:110
uint16_t app_idx
Definition meshx_ble_mesh_config_srv.h:109
Definition meshx_ble_mesh_config_srv.h:115
uint16_t element_addr
Definition meshx_ble_mesh_config_srv.h:116
uint16_t app_idx
Definition meshx_ble_mesh_config_srv.h:117
uint16_t model_id
Definition meshx_ble_mesh_config_srv.h:119
uint16_t company_id
Definition meshx_ble_mesh_config_srv.h:118
Definition meshx_ble_mesh_config_srv.h:54
uint16_t sub_addr
Definition meshx_ble_mesh_config_srv.h:56
uint16_t element_addr
Definition meshx_ble_mesh_config_srv.h:55
uint16_t company_id
Definition meshx_ble_mesh_config_srv.h:57
uint16_t model_id
Definition meshx_ble_mesh_config_srv.h:58
Definition meshx_ble_mesh_config_srv.h:62
uint16_t model_id
Definition meshx_ble_mesh_config_srv.h:66
uint16_t element_addr
Definition meshx_ble_mesh_config_srv.h:63
uint16_t company_id
Definition meshx_ble_mesh_config_srv.h:65
uint16_t sub_addr
Definition meshx_ble_mesh_config_srv.h:64
Definition meshx_ble_mesh_config_srv.h:70
uint16_t net_idx
Definition meshx_ble_mesh_config_srv.h:71
uint8_t net_key[16]
Definition meshx_ble_mesh_config_srv.h:72
Definition meshx_ble_mesh_config_srv.h:82
uint16_t net_idx
Definition meshx_ble_mesh_config_srv.h:83
Definition meshx_ble_mesh_config_srv.h:76
uint16_t net_idx
Definition meshx_ble_mesh_config_srv.h:77
uint8_t net_key[16]
Definition meshx_ble_mesh_config_srv.h:78
Configuration Server model state change value union.
Definition meshx_ble_mesh_config_srv.h:131
meshx_state_change_cfg_model_app_unbind_t mod_app_unbind
Definition meshx_ble_mesh_config_srv.h:146
meshx_state_change_cfg_netkey_delete_t netkey_delete
Definition meshx_ble_mesh_config_srv.h:141
meshx_state_change_cfg_model_sub_add_t mod_sub_add
Definition meshx_ble_mesh_config_srv.h:137
meshx_state_change_cfg_appkey_delete_t appkey_delete
Definition meshx_ble_mesh_config_srv.h:144
meshx_state_change_cfg_model_app_bind_t mod_app_bind
Definition meshx_ble_mesh_config_srv.h:145
meshx_state_change_cfg_mod_pub_set_t mod_pub_set
Definition meshx_ble_mesh_config_srv.h:135
meshx_state_change_cfg_model_sub_delete_t mod_sub_delete
Definition meshx_ble_mesh_config_srv.h:138
meshx_state_change_cfg_netkey_update_t netkey_update
Definition meshx_ble_mesh_config_srv.h:140
meshx_state_change_cfg_mod_pub_va_set_t mod_pub_va_set
Definition meshx_ble_mesh_config_srv.h:136
meshx_state_change_cfg_netkey_add_t netkey_add
Definition meshx_ble_mesh_config_srv.h:139
meshx_state_change_cfg_kr_phase_set_t kr_phase_set
Definition meshx_ble_mesh_config_srv.h:147
meshx_state_change_cfg_appkey_update_t appkey_update
Definition meshx_ble_mesh_config_srv.h:143
meshx_state_change_cfg_appkey_add_t appkey_add
Definition meshx_ble_mesh_config_srv.h:142