xref: /btstack/src/mesh/mesh_configuration_client.h (revision 2fca4dad957cd7b88f4657ed51e89c12615dda72)
1cc2a5f42SMilanka Ringwald /*
2cc2a5f42SMilanka Ringwald  * Copyright (C) 2019 BlueKitchen GmbH
3cc2a5f42SMilanka Ringwald  *
4cc2a5f42SMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
5cc2a5f42SMilanka Ringwald  * modification, are permitted provided that the following conditions
6cc2a5f42SMilanka Ringwald  * are met:
7cc2a5f42SMilanka Ringwald  *
8cc2a5f42SMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
9cc2a5f42SMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
10cc2a5f42SMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
11cc2a5f42SMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
12cc2a5f42SMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
13cc2a5f42SMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
14cc2a5f42SMilanka Ringwald  *    contributors may be used to endorse or promote products derived
15cc2a5f42SMilanka Ringwald  *    from this software without specific prior written permission.
16cc2a5f42SMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
17cc2a5f42SMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
18cc2a5f42SMilanka Ringwald  *    monetary gain.
19cc2a5f42SMilanka Ringwald  *
20cc2a5f42SMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21cc2a5f42SMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22cc2a5f42SMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*2fca4dadSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BLUEKITCHEN
24*2fca4dadSMilanka Ringwald  * GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25cc2a5f42SMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26cc2a5f42SMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27cc2a5f42SMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28cc2a5f42SMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29cc2a5f42SMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30cc2a5f42SMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31cc2a5f42SMilanka Ringwald  * SUCH DAMAGE.
32cc2a5f42SMilanka Ringwald  *
33cc2a5f42SMilanka Ringwald  * Please inquire about commercial licensing options at
34cc2a5f42SMilanka Ringwald  * [email protected]
35cc2a5f42SMilanka Ringwald  *
36cc2a5f42SMilanka Ringwald  */
37cc2a5f42SMilanka Ringwald 
38cc2a5f42SMilanka Ringwald #ifndef __MESH_CONFIGURATION_CLIENT_H
39cc2a5f42SMilanka Ringwald #define __MESH_CONFIGURATION_CLIENT_H
40cc2a5f42SMilanka Ringwald 
41cc2a5f42SMilanka Ringwald #include <stdint.h>
42cc2a5f42SMilanka Ringwald 
43cc2a5f42SMilanka Ringwald #include "mesh/mesh_access.h"
44cc2a5f42SMilanka Ringwald 
45cc2a5f42SMilanka Ringwald #ifdef __cplusplus
46cc2a5f42SMilanka Ringwald extern "C"
47cc2a5f42SMilanka Ringwald {
48cc2a5f42SMilanka Ringwald #endif
49cc2a5f42SMilanka Ringwald 
501126947fSMilanka Ringwald 
511126947fSMilanka Ringwald typedef struct {
521126947fSMilanka Ringwald     const uint8_t * models;
531126947fSMilanka Ringwald     uint16_t size;
541126947fSMilanka Ringwald     uint16_t offset;
551126947fSMilanka Ringwald 
561126947fSMilanka Ringwald     uint32_t id;
571126947fSMilanka Ringwald } mesh_model_id_iterator_t;
581126947fSMilanka Ringwald 
591126947fSMilanka Ringwald typedef struct {
601126947fSMilanka Ringwald     const uint8_t * elements;
611126947fSMilanka Ringwald     uint16_t size;
621126947fSMilanka Ringwald     uint16_t offset;
631126947fSMilanka Ringwald 
641126947fSMilanka Ringwald     uint16_t loc;
651126947fSMilanka Ringwald 
661126947fSMilanka Ringwald     mesh_model_id_iterator_t sig_model_iterator;
671126947fSMilanka Ringwald     mesh_model_id_iterator_t vendor_model_iterator;
681126947fSMilanka Ringwald } mesh_composite_data_iterator_t;
691126947fSMilanka Ringwald 
70f2ca42dfSMilanka Ringwald typedef struct {
71f2ca42dfSMilanka Ringwald     uint16_t publish_address_unicast;
72f2ca42dfSMilanka Ringwald     uint8_t  publish_address_virtual[16];
73f2ca42dfSMilanka Ringwald     uint16_t appkey_index;
74f2ca42dfSMilanka Ringwald     uint8_t  credential_flag;
75f2ca42dfSMilanka Ringwald     uint8_t  publish_ttl;
76f2ca42dfSMilanka Ringwald     uint8_t  publish_period;
77f2ca42dfSMilanka Ringwald     uint8_t  publish_retransmit_count;
78f2ca42dfSMilanka Ringwald     uint8_t  publish_retransmit_interval_steps;
79f2ca42dfSMilanka Ringwald } mesh_publication_model_config_t;
801126947fSMilanka Ringwald 
81f9202564SMilanka Ringwald const mesh_operation_t * mesh_configuration_client_get_operations(void);
82f9202564SMilanka Ringwald 
831126947fSMilanka Ringwald /**
841126947fSMilanka Ringwald  * @brief Initialize iterator for element descriptions list from Composition data in MESH_SUBEVENT_CONFIGURATION_COMPOSITION_DATA event
851126947fSMilanka Ringwald  * @param iterator
861126947fSMilanka Ringwald  * @param elements
871126947fSMilanka Ringwald  * @param size
881126947fSMilanka Ringwald  */
891126947fSMilanka Ringwald void mesh_composition_data_iterator_init(mesh_composite_data_iterator_t * iterator, const uint8_t * elements, uint16_t size);
901126947fSMilanka Ringwald 
911126947fSMilanka Ringwald /**
921126947fSMilanka Ringwald  * @brief Check if there is another element description in the list
931126947fSMilanka Ringwald  * @param iterator
941126947fSMilanka Ringwald  * @return has_next_element
951126947fSMilanka Ringwald  */
961126947fSMilanka Ringwald bool mesh_composition_data_iterator_has_next_element(mesh_composite_data_iterator_t * iterator);
971126947fSMilanka Ringwald 
981126947fSMilanka Ringwald /**
991126947fSMilanka Ringwald  * @brief Select the next element
1001126947fSMilanka Ringwald  * @param iterator
1011126947fSMilanka Ringwald  */
1021126947fSMilanka Ringwald void mesh_composition_data_iterator_next_element(mesh_composite_data_iterator_t * iterator);
1031126947fSMilanka Ringwald 
1041126947fSMilanka Ringwald /**
1051126947fSMilanka Ringwald  * @brief Get the element location descriptor for the current element
1061126947fSMilanka Ringwald  * @param iterator
1071126947fSMilanka Ringwald  * @return loc
1081126947fSMilanka Ringwald  */
1091126947fSMilanka Ringwald uint16_t mesh_composition_data_iterator_element_loc(mesh_composite_data_iterator_t * iterator);
1101126947fSMilanka Ringwald 
1111126947fSMilanka Ringwald /**
1121126947fSMilanka Ringwald  * @brief Check if there is another SIG model in current element
1131126947fSMilanka Ringwald  * @param iterator
1141126947fSMilanka Ringwald  * @return has_next_sig_model
1151126947fSMilanka Ringwald  */
1161126947fSMilanka Ringwald bool mesh_composition_data_iterator_has_next_sig_model(mesh_composite_data_iterator_t * iterator);
1171126947fSMilanka Ringwald 
1181126947fSMilanka Ringwald /**
1191126947fSMilanka Ringwald  * @brief Select the next SIG model
1201126947fSMilanka Ringwald  * @param iterator
1211126947fSMilanka Ringwald  */
122873d831bSMilanka Ringwald void mesh_composition_data_iterator_next_sig_model(mesh_composite_data_iterator_t * iterator);
1231126947fSMilanka Ringwald 
1241126947fSMilanka Ringwald /**
1251126947fSMilanka Ringwald  * @brief Get the SIG model ID for the current SIG model of the current element
1261126947fSMilanka Ringwald  * @param iterator
1271126947fSMilanka Ringwald  * @return loc
1281126947fSMilanka Ringwald  */
1291126947fSMilanka Ringwald uint16_t mesh_composition_data_iterator_sig_model_id(mesh_composite_data_iterator_t * iterator);
1301126947fSMilanka Ringwald 
1311126947fSMilanka Ringwald 
1321126947fSMilanka Ringwald /**
1331126947fSMilanka Ringwald  * @brief Check if there is another vendor model in current element
1341126947fSMilanka Ringwald  * @param iterator
1351126947fSMilanka Ringwald  * @return has_next_vendor_model
1361126947fSMilanka Ringwald  */
1371126947fSMilanka Ringwald bool mesh_composition_data_iterator_has_next_vendor_model(mesh_composite_data_iterator_t * iterator);
1381126947fSMilanka Ringwald 
1391126947fSMilanka Ringwald /**
1401126947fSMilanka Ringwald  * @brief Select the next VVendor model
1411126947fSMilanka Ringwald  * @param iterator
1421126947fSMilanka Ringwald  */
143873d831bSMilanka Ringwald void mesh_composition_data_iterator_next_vendor_model(mesh_composite_data_iterator_t * iterator);
1441126947fSMilanka Ringwald 
1451126947fSMilanka Ringwald /**
1461126947fSMilanka Ringwald  * @brief Get the Vendor model ID for the current vendor model of the current element
1471126947fSMilanka Ringwald  * @param iterator
1481126947fSMilanka Ringwald  * @return loc
1491126947fSMilanka Ringwald  */
1501126947fSMilanka Ringwald uint32_t mesh_composition_data_iterator_vendor_model_id(mesh_composite_data_iterator_t * iterator);
1511126947fSMilanka Ringwald 
152cc2a5f42SMilanka Ringwald /**
153d61023b2SMilanka Ringwald  * @brief Get field page from event MESH_SUBEVENT_CONFIGURATION_COMPOSITION_DATA
154d61023b2SMilanka Ringwald  * @param event packet
155d61023b2SMilanka Ringwald  * @return page
156d61023b2SMilanka Ringwald  * @note: btstack_type 1
157d61023b2SMilanka Ringwald  */
158d61023b2SMilanka Ringwald uint8_t mesh_subevent_configuration_composition_data_get_page(const uint8_t * event);
159d61023b2SMilanka Ringwald 
160d61023b2SMilanka Ringwald /**
161d61023b2SMilanka Ringwald  * @brief Get field cid from event MESH_SUBEVENT_CONFIGURATION_COMPOSITION_DATA
162d61023b2SMilanka Ringwald  * @param event packet
163d61023b2SMilanka Ringwald  * @return cid
164d61023b2SMilanka Ringwald  * @note: btstack_type 2
165d61023b2SMilanka Ringwald  */
166d61023b2SMilanka Ringwald uint16_t mesh_subevent_configuration_composition_data_get_cid(const uint8_t * event);
167d61023b2SMilanka Ringwald 
168d61023b2SMilanka Ringwald /**
169d61023b2SMilanka Ringwald  * @brief Get field pid from event MESH_SUBEVENT_CONFIGURATION_COMPOSITION_DATA
170d61023b2SMilanka Ringwald  * @param event packet
171d61023b2SMilanka Ringwald  * @return pid
172d61023b2SMilanka Ringwald  * @note: btstack_type 2
173d61023b2SMilanka Ringwald  */
174d61023b2SMilanka Ringwald uint16_t mesh_subevent_configuration_composition_data_get_pid(const uint8_t * event);
175d61023b2SMilanka Ringwald 
176d61023b2SMilanka Ringwald /**
177d61023b2SMilanka Ringwald  * @brief Get field vid from event MESH_SUBEVENT_CONFIGURATION_COMPOSITION_DATA
178d61023b2SMilanka Ringwald  * @param event packet
179d61023b2SMilanka Ringwald  * @return vid
180d61023b2SMilanka Ringwald  * @note: btstack_type 2
181d61023b2SMilanka Ringwald  */
182d61023b2SMilanka Ringwald uint16_t mesh_subevent_configuration_composition_data_get_vid(const uint8_t * event);
183d61023b2SMilanka Ringwald 
184d61023b2SMilanka Ringwald /**
185d61023b2SMilanka Ringwald  * @brief Get field crpl from event MESH_SUBEVENT_CONFIGURATION_COMPOSITION_DATA
186d61023b2SMilanka Ringwald  * @param event packet
187d61023b2SMilanka Ringwald  * @return crpl
188d61023b2SMilanka Ringwald  * @note: btstack_type 2
189d61023b2SMilanka Ringwald  */
190d61023b2SMilanka Ringwald uint16_t mesh_subevent_configuration_composition_data_get_crpl(const uint8_t * event);
191d61023b2SMilanka Ringwald 
192d61023b2SMilanka Ringwald /**
193d61023b2SMilanka Ringwald  * @brief Get field features from event MESH_SUBEVENT_CONFIGURATION_COMPOSITION_DATA
194d61023b2SMilanka Ringwald  * @param event packet
195d61023b2SMilanka Ringwald  * @return features
196d61023b2SMilanka Ringwald  * @note: btstack_type 2
197d61023b2SMilanka Ringwald  */
198d61023b2SMilanka Ringwald uint16_t mesh_subevent_configuration_composition_data_get_features(const uint8_t * event);
199d61023b2SMilanka Ringwald 
200d61023b2SMilanka Ringwald /**
201d61023b2SMilanka Ringwald  * @brief Get number elements from event MESH_SUBEVENT_CONFIGURATION_COMPOSITION_DATA
202d61023b2SMilanka Ringwald  **/
203d61023b2SMilanka Ringwald uint16_t mesh_subevent_configuration_composition_data_get_num_elements(const uint8_t * event, uint16_t size);
204d61023b2SMilanka Ringwald 
205d61023b2SMilanka Ringwald 
206d61023b2SMilanka Ringwald /**
207cc2a5f42SMilanka Ringwald  * @brief Register packet handler
208cc2a5f42SMilanka Ringwald  * @param configuration_client_model
209cc2a5f42SMilanka Ringwald  * @param events_packet_handler
210cc2a5f42SMilanka Ringwald  */
211aaf0c1d1SMilanka Ringwald void mesh_configuration_client_register_packet_handler(mesh_model_t *configuration_client_model, btstack_packet_handler_t events_packet_handler);
212aaf0c1d1SMilanka Ringwald 
213aaf0c1d1SMilanka Ringwald /**
2145448198cSMilanka Ringwald  * @brief Get the current Secure Network Beacon state of a node.
215aaf0c1d1SMilanka Ringwald  * @param mesh_model
216aaf0c1d1SMilanka Ringwald  * @param dest
217aaf0c1d1SMilanka Ringwald  * @param netkey_index
218aaf0c1d1SMilanka Ringwald  * @param appkey_index
2195448198cSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
220aaf0c1d1SMilanka Ringwald  */
2213013af6aSMilanka Ringwald uint8_t mesh_configuration_client_send_beacon_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
222cc2a5f42SMilanka Ringwald 
2235448198cSMilanka Ringwald /**
2245448198cSMilanka Ringwald  * @brief Get the current Secure Network Beacon state of a node.
2255448198cSMilanka Ringwald  * @param mesh_model
2265448198cSMilanka Ringwald  * @param dest
2275448198cSMilanka Ringwald  * @param netkey_index
2285448198cSMilanka Ringwald  * @param appkey_index
2295448198cSMilanka Ringwald  * @param Beacon        0x01 The node is broadcasting a Secure Network beacon, 0x00 broadcastinis  off
2305448198cSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
2315448198cSMilanka Ringwald  */
2323013af6aSMilanka Ringwald uint8_t mesh_configuration_client_send_beacon_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint8_t beacon);
2333013af6aSMilanka Ringwald 
2343013af6aSMilanka Ringwald /**
2353013af6aSMilanka Ringwald  * @brief Read one page of the Composition Data.
2363013af6aSMilanka Ringwald  * @param mesh_model
2373013af6aSMilanka Ringwald  * @param dest
2383013af6aSMilanka Ringwald  * @param netkey_index
2393013af6aSMilanka Ringwald  * @param appkey_index
2403013af6aSMilanka Ringwald  * @param page          Page number of the Composition Data
2413013af6aSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
2423013af6aSMilanka Ringwald  */
2433013af6aSMilanka Ringwald uint8_t mesh_configuration_client_send_composition_data_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint8_t page);
244cc2a5f42SMilanka Ringwald 
245344d6549SMilanka Ringwald /**
246344d6549SMilanka Ringwald  * @brief Get the current Default TTL state of a node
247344d6549SMilanka Ringwald  * @param mesh_model
248344d6549SMilanka Ringwald  * @param dest
249344d6549SMilanka Ringwald  * @param netkey_index
250344d6549SMilanka Ringwald  * @param appkey_index
251344d6549SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
252344d6549SMilanka Ringwald  */
253344d6549SMilanka Ringwald uint8_t mesh_configuration_client_send_default_ttl_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
254344d6549SMilanka Ringwald 
255344d6549SMilanka Ringwald /**
256344d6549SMilanka Ringwald  * @brief Set Default TTL state of a node
257344d6549SMilanka Ringwald  * @param mesh_model
258344d6549SMilanka Ringwald  * @param dest
259344d6549SMilanka Ringwald  * @param netkey_index
260344d6549SMilanka Ringwald  * @param appkey_index
261344d6549SMilanka Ringwald  * @param ttl           allowed values: 0x00, 0x02–0x7F
262344d6549SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
263344d6549SMilanka Ringwald  */
264344d6549SMilanka Ringwald uint8_t mesh_configuration_client_send_default_ttl_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint8_t ttl);
265344d6549SMilanka Ringwald 
266e38651d8SMilanka Ringwald /**
267e38651d8SMilanka Ringwald  * @brief Get the current Default GATT proxy state of a node
268e38651d8SMilanka Ringwald  * @param mesh_model
269e38651d8SMilanka Ringwald  * @param dest
270e38651d8SMilanka Ringwald  * @param netkey_index
271e38651d8SMilanka Ringwald  * @param appkey_index
272e38651d8SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
273e38651d8SMilanka Ringwald  */
274f9202564SMilanka Ringwald uint8_t mesh_configuration_client_send_gatt_proxy_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
275e38651d8SMilanka Ringwald 
276e38651d8SMilanka Ringwald /**
277e38651d8SMilanka Ringwald  * @brief Set Default GATT proxy state of a node
278e38651d8SMilanka Ringwald  * @param mesh_model
279e38651d8SMilanka Ringwald  * @param dest
280e38651d8SMilanka Ringwald  * @param netkey_index
281e38651d8SMilanka Ringwald  * @param appkey_index
282e38651d8SMilanka Ringwald  * @param gatt_proxy_state        0 - the proxy feature is supported and disabled, 1 - supported and enabled, 2 - not supported
283e38651d8SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
284e38651d8SMilanka Ringwald  */
285f9202564SMilanka Ringwald uint8_t mesh_configuration_client_send_gatt_proxy_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint8_t gatt_proxy_state);
286f9202564SMilanka Ringwald 
287f9202564SMilanka Ringwald 
288f9202564SMilanka Ringwald /**
289f9202564SMilanka Ringwald  * @brief Get the current Relay and Relay Retransmit states of a node
290f9202564SMilanka Ringwald  * @param mesh_model
291f9202564SMilanka Ringwald  * @param dest
292f9202564SMilanka Ringwald  * @param netkey_index
293f9202564SMilanka Ringwald  * @param appkey_index
294f9202564SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
295f9202564SMilanka Ringwald  */
296f9202564SMilanka Ringwald uint8_t mesh_configuration_client_send_relay_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
297f9202564SMilanka Ringwald 
298f9202564SMilanka Ringwald /**
299f9202564SMilanka Ringwald  * @brief Set the current Relay and Relay Retransmit states of a node
300f9202564SMilanka Ringwald  * @param mesh_model
301f9202564SMilanka Ringwald  * @param dest
302f9202564SMilanka Ringwald  * @param netkey_index
303f9202564SMilanka Ringwald  * @param appkey_index
304f9202564SMilanka Ringwald  * @param relay
305f9202564SMilanka Ringwald  * @param relay_retransmit_count
306f9202564SMilanka Ringwald  * @param relay_retransmit_interval_steps
307f9202564SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
308f9202564SMilanka Ringwald  */
309f9202564SMilanka Ringwald uint8_t mesh_configuration_client_send_relay_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint8_t relay, uint8_t relay_retransmit_count, uint8_t relay_retransmit_interval_steps);
310e38651d8SMilanka Ringwald 
311f2ca42dfSMilanka Ringwald /**
312f2ca42dfSMilanka Ringwald  * @brief Get the publish address and parameters of an outgoing message that originates from a model
313f2ca42dfSMilanka Ringwald  * @param mesh_model
314f2ca42dfSMilanka Ringwald  * @param dest         element_address
315f2ca42dfSMilanka Ringwald  * @param netkey_index
316f2ca42dfSMilanka Ringwald  * @param appkey_index
317f2ca42dfSMilanka Ringwald  * @param model_id
318f2ca42dfSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
319f2ca42dfSMilanka Ringwald  */
320f2ca42dfSMilanka Ringwald uint8_t mesh_configuration_client_send_model_publication_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint32_t model_id);
321f2ca42dfSMilanka Ringwald 
322f2ca42dfSMilanka Ringwald /**
323f2ca42dfSMilanka Ringwald  * @brief Set the Model Publication state of an outgoing message that originates from a model.
324f2ca42dfSMilanka Ringwald  * @param mesh_model
325f2ca42dfSMilanka Ringwald  * @param dest         element_address
326f2ca42dfSMilanka Ringwald  * @param netkey_index
327f2ca42dfSMilanka Ringwald  * @param appkey_index
328f2ca42dfSMilanka Ringwald  * @param model_id
329f2ca42dfSMilanka Ringwald  * @param publication_config
330f2ca42dfSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
331f2ca42dfSMilanka Ringwald  */
332f2ca42dfSMilanka Ringwald uint8_t mesh_configuration_client_send_model_publication_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint32_t model_id, mesh_publication_model_config_t * publication_config);
333f2ca42dfSMilanka Ringwald 
334f2ca42dfSMilanka Ringwald /**
335f2ca42dfSMilanka Ringwald  * @brief Set the Model Publication state of an outgoing message that originates from a model.
336f2ca42dfSMilanka Ringwald  * @param mesh_model
337f2ca42dfSMilanka Ringwald  * @param dest         element_address
338f2ca42dfSMilanka Ringwald  * @param netkey_index
339f2ca42dfSMilanka Ringwald  * @param appkey_index
340f2ca42dfSMilanka Ringwald  * @param model_id
341f2ca42dfSMilanka Ringwald  * @param publication_config
342f2ca42dfSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
343f2ca42dfSMilanka Ringwald  */
344f2ca42dfSMilanka Ringwald uint8_t mesh_configuration_client_send_model_publication_virtual_address_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint32_t model_id, mesh_publication_model_config_t * publication_config);
345f2ca42dfSMilanka Ringwald 
34667abec42SMilanka Ringwald /**
34767abec42SMilanka Ringwald  * @brief Add an address to a Subscription List of a model
34867abec42SMilanka Ringwald  * @param mesh_model
34967abec42SMilanka Ringwald  * @param dest         element_address
35067abec42SMilanka Ringwald  * @param netkey_index
35167abec42SMilanka Ringwald  * @param appkey_index
35267abec42SMilanka Ringwald  * @param address
35367abec42SMilanka Ringwald  * @param model_id
35467abec42SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
35567abec42SMilanka Ringwald  */
35667abec42SMilanka Ringwald uint8_t mesh_configuration_client_send_model_subscription_add(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t address, uint32_t model_id);
35767abec42SMilanka Ringwald uint8_t mesh_configuration_client_send_model_subscription_virtual_address_add(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint8_t * address, uint32_t model_id);
35867abec42SMilanka Ringwald 
35967abec42SMilanka Ringwald /**
36067abec42SMilanka Ringwald  * @brief Delete an address from a Subscription List of a model
36167abec42SMilanka Ringwald  * @param mesh_model
36267abec42SMilanka Ringwald  * @param dest         element_address
36367abec42SMilanka Ringwald  * @param netkey_index
36467abec42SMilanka Ringwald  * @param appkey_index
36567abec42SMilanka Ringwald  * @param address
36667abec42SMilanka Ringwald  * @param model_id
36767abec42SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
36867abec42SMilanka Ringwald  */
36967abec42SMilanka Ringwald uint8_t mesh_configuration_client_send_model_subscription_delete(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t address, uint32_t model_id);
37067abec42SMilanka Ringwald uint8_t mesh_configuration_client_send_model_subscription_virtual_address_delete(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint8_t * address, uint32_t model_id);
37167abec42SMilanka Ringwald 
37267abec42SMilanka Ringwald /**
37367abec42SMilanka Ringwald  * @brief Discard the Subscription List and add an address to the cleared Subscription List of a model
37467abec42SMilanka Ringwald  * @param mesh_model
37567abec42SMilanka Ringwald  * @param dest         element_address
37667abec42SMilanka Ringwald  * @param netkey_index
37767abec42SMilanka Ringwald  * @param appkey_index
37867abec42SMilanka Ringwald  * @param address
37967abec42SMilanka Ringwald  * @param model_id
38067abec42SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
38167abec42SMilanka Ringwald  */
38267abec42SMilanka Ringwald uint8_t mesh_configuration_client_send_model_subscription_overwrite(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t address, uint32_t model_id);
38367abec42SMilanka Ringwald uint8_t mesh_configuration_client_send_model_subscription_virtual_address_overwrite(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint8_t * address, uint32_t model_id);
38467abec42SMilanka Ringwald 
38567abec42SMilanka Ringwald /**
38667abec42SMilanka Ringwald  * @brief Discard the Subscription List of a model
38767abec42SMilanka Ringwald  * @param mesh_model
38867abec42SMilanka Ringwald  * @param dest         element_address
38967abec42SMilanka Ringwald  * @param netkey_index
39067abec42SMilanka Ringwald  * @param appkey_index
39167abec42SMilanka Ringwald  * @param address
39267abec42SMilanka Ringwald  * @param model_id
39367abec42SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
39467abec42SMilanka Ringwald  */
39567abec42SMilanka Ringwald uint8_t mesh_configuration_client_send_model_subscription_delete_all(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t address, uint32_t model_id);
39667abec42SMilanka Ringwald 
397908a73e3SMilanka Ringwald /**
398908a73e3SMilanka Ringwald  * @brief Get the list of subscription addresses of a SIG or vendor model within the element
399908a73e3SMilanka Ringwald  * @param mesh_model
400908a73e3SMilanka Ringwald  * @param dest         element_address
401908a73e3SMilanka Ringwald  * @param netkey_index
402908a73e3SMilanka Ringwald  * @param appkey_index
403908a73e3SMilanka Ringwald  * @param vendor_model_id
404908a73e3SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
405908a73e3SMilanka Ringwald  */
406908a73e3SMilanka Ringwald uint8_t mesh_configuration_client_send_model_subscription_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint32_t model_id);
407908a73e3SMilanka Ringwald 
408908a73e3SMilanka Ringwald 
409b629980dSMilanka Ringwald /**
410b629980dSMilanka Ringwald  * @brief Add a NetKey to a NetKey List on a node.
411b629980dSMilanka Ringwald  * @param mesh_model
412b629980dSMilanka Ringwald  * @param dest         element_address
413b629980dSMilanka Ringwald  * @param netkey_index
414b629980dSMilanka Ringwald  * @param appkey_index
415b629980dSMilanka Ringwald  * @param index
416b629980dSMilanka Ringwald  * @param netkey
417b629980dSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
418b629980dSMilanka Ringwald  */
419b629980dSMilanka Ringwald uint8_t mesh_configuration_client_send_netkey_add(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t index, uint8_t * netkey);
420b629980dSMilanka Ringwald 
421b629980dSMilanka Ringwald /**
422b629980dSMilanka Ringwald  * @brief Update NetKey in a NetKey List on a node.
423b629980dSMilanka Ringwald  * @param mesh_model
424b629980dSMilanka Ringwald  * @param dest         element_address
425b629980dSMilanka Ringwald  * @param netkey_index
426b629980dSMilanka Ringwald  * @param appkey_index
427b629980dSMilanka Ringwald  * @param index
428b629980dSMilanka Ringwald  * @param netkey
429b629980dSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
430b629980dSMilanka Ringwald  */
431b629980dSMilanka Ringwald uint8_t mesh_configuration_client_send_netkey_update(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t index, uint8_t * netkey);
432b629980dSMilanka Ringwald 
433b629980dSMilanka Ringwald /**
434b629980dSMilanka Ringwald  * @brief Delete a NetKey from a NetKey List on a node.
435b629980dSMilanka Ringwald  * @param mesh_model
436b629980dSMilanka Ringwald  * @param dest         element_address
437b629980dSMilanka Ringwald  * @param netkey_index
438b629980dSMilanka Ringwald  * @param appkey_index
439b629980dSMilanka Ringwald  * @param index
440b629980dSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
441b629980dSMilanka Ringwald  */
442b629980dSMilanka Ringwald uint8_t mesh_configuration_client_send_netkey_delete(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t index);
443b629980dSMilanka Ringwald 
444b629980dSMilanka Ringwald /**
445b629980dSMilanka Ringwald  * @brief Get NetKey List on a node.
446b629980dSMilanka Ringwald  * @param mesh_model
447b629980dSMilanka Ringwald  * @param dest         element_address
448b629980dSMilanka Ringwald  * @param netkey_index
449b629980dSMilanka Ringwald  * @param appkey_index
450b629980dSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
451b629980dSMilanka Ringwald  */
452b629980dSMilanka Ringwald uint8_t mesh_configuration_client_send_netkey_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
453b629980dSMilanka Ringwald 
454b629980dSMilanka Ringwald /**
455b629980dSMilanka Ringwald  * @brief Add a AppKey to a AppKey List on a node.
456b629980dSMilanka Ringwald  * @param mesh_model
457b629980dSMilanka Ringwald  * @param dest         element_address
458b629980dSMilanka Ringwald  * @param netkey_index
459b629980dSMilanka Ringwald  * @param appkey_index
460b629980dSMilanka Ringwald  * @param netk_index
461b629980dSMilanka Ringwald  * @param appk_index
462b629980dSMilanka Ringwald  * @param appkey
463b629980dSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
464b629980dSMilanka Ringwald  */
465b629980dSMilanka Ringwald uint8_t mesh_configuration_client_send_appkey_add(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t netk_index, uint16_t appk_index, uint8_t * appkey);
466b629980dSMilanka Ringwald 
467b629980dSMilanka Ringwald /**
468b629980dSMilanka Ringwald  * @brief Update AppKey in a AppKey List on a node.
469b629980dSMilanka Ringwald  * @param mesh_model
470b629980dSMilanka Ringwald  * @param dest         element_address
471b629980dSMilanka Ringwald  * @param netkey_index
472b629980dSMilanka Ringwald  * @param appkey_index
473b629980dSMilanka Ringwald  * @param netk_index
474b629980dSMilanka Ringwald  * @param appk_index
475b629980dSMilanka Ringwald  * @param appkey
476b629980dSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
477b629980dSMilanka Ringwald  */
478b629980dSMilanka Ringwald uint8_t mesh_configuration_client_send_appkey_update(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t netk_index, uint16_t appk_index, uint8_t * appkey);
479b629980dSMilanka Ringwald 
480b629980dSMilanka Ringwald /**
481b629980dSMilanka Ringwald  * @brief Delete a AppKey from a AppKey List on a node.
482b629980dSMilanka Ringwald  * @param mesh_model
483b629980dSMilanka Ringwald  * @param dest         element_address
484b629980dSMilanka Ringwald  * @param netkey_index
485df02a641SMilanka Ringwald  * @param appkey_index
486b629980dSMilanka Ringwald  * @param netk_index
487b629980dSMilanka Ringwald  * @param appk_index
488b629980dSMilanka Ringwald  * @param index
489b629980dSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
490b629980dSMilanka Ringwald  */
491b629980dSMilanka Ringwald uint8_t mesh_configuration_client_send_appkey_delete(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t netk_index, uint16_t appk_index);
492b629980dSMilanka Ringwald 
493b629980dSMilanka Ringwald /**
494b629980dSMilanka Ringwald  * @brief Get AppKey List on a node that is bound to the NetKey.
495b629980dSMilanka Ringwald  * @param mesh_model
496b629980dSMilanka Ringwald  * @param dest         element_address
497b629980dSMilanka Ringwald  * @param netkey_index
498df02a641SMilanka Ringwald  * @param appkey_index
499b629980dSMilanka Ringwald  * @param netk_index
500b629980dSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
501b629980dSMilanka Ringwald  */
502b629980dSMilanka Ringwald uint8_t mesh_configuration_client_send_appkey_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t netk_index);
503b629980dSMilanka Ringwald 
50482cfc808SMilanka Ringwald /**
50582cfc808SMilanka Ringwald  * @brief Get the current Node Identity state for a subnet.
50682cfc808SMilanka Ringwald  * @param mesh_model
50782cfc808SMilanka Ringwald  * @param dest         element_address
50882cfc808SMilanka Ringwald  * @param netkey_index
509df02a641SMilanka Ringwald  * @param appkey_index
51082cfc808SMilanka Ringwald  * @param netk_index
51182cfc808SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
51282cfc808SMilanka Ringwald  */
51382cfc808SMilanka Ringwald uint8_t mesh_configuration_client_send_node_identity_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t netk_index);
51482cfc808SMilanka Ringwald 
51582cfc808SMilanka Ringwald /**
51682cfc808SMilanka Ringwald  * @brief Set the current Node Identity state for a subnet.
51782cfc808SMilanka Ringwald  * @param mesh_model
51882cfc808SMilanka Ringwald  * @param dest         element_address
51982cfc808SMilanka Ringwald  * @param netkey_index
520df02a641SMilanka Ringwald  * @param appkey_index
52182cfc808SMilanka Ringwald  * @param netk_index
52282cfc808SMilanka Ringwald  * @param node_identity_state
52382cfc808SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
52482cfc808SMilanka Ringwald  */
52582cfc808SMilanka Ringwald uint8_t mesh_configuration_client_send_node_identity_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t netk_index, mesh_node_identity_state_t node_identity_state);
5268d4cf36eSMilanka Ringwald 
5278d4cf36eSMilanka Ringwald /**
5288d4cf36eSMilanka Ringwald  * @brief Bind an AppKey to a model.
5298d4cf36eSMilanka Ringwald  * @param mesh_model
5308d4cf36eSMilanka Ringwald  * @param dest         element_address
5318d4cf36eSMilanka Ringwald  * @param netkey_index
532df02a641SMilanka Ringwald  * @param appkey_index
5338d4cf36eSMilanka Ringwald  * @param appk_index
5348d4cf36eSMilanka Ringwald  * @param model_identifier
5358d4cf36eSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
5368d4cf36eSMilanka Ringwald  */
5378d4cf36eSMilanka Ringwald uint8_t mesh_configuration_client_send_model_app_bind_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t appk_index, uint32_t model_identifier);
5388d4cf36eSMilanka Ringwald 
5398d4cf36eSMilanka Ringwald /**
5408d4cf36eSMilanka Ringwald  * @brief Remove the binding between an AppKey and a model.
5418d4cf36eSMilanka Ringwald  * @param mesh_model
5428d4cf36eSMilanka Ringwald  * @param dest         element_address
5438d4cf36eSMilanka Ringwald  * @param netkey_index
544df02a641SMilanka Ringwald  * @param appkey_index
5458d4cf36eSMilanka Ringwald  * @param appk_index
5468d4cf36eSMilanka Ringwald  * @param model_identifier
5478d4cf36eSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
5488d4cf36eSMilanka Ringwald  */
5498d4cf36eSMilanka Ringwald uint8_t mesh_configuration_client_send_model_app_unbind_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t appk_index, uint32_t model_identifier);
5508d4cf36eSMilanka Ringwald 
551df02a641SMilanka Ringwald /**
552df02a641SMilanka Ringwald  * @brief Report of all AppKeys bound to the Model.
553df02a641SMilanka Ringwald  * @param mesh_model
554df02a641SMilanka Ringwald  * @param dest         element_address
555df02a641SMilanka Ringwald  * @param netkey_index
556df02a641SMilanka Ringwald  * @param appkey_index
557df02a641SMilanka Ringwald  * @param model_identifier
558df02a641SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
559df02a641SMilanka Ringwald  */
560df02a641SMilanka Ringwald uint8_t mesh_configuration_client_send_model_app_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint32_t model_identifier);
561df02a641SMilanka Ringwald 
56264c3d06bSMilanka Ringwald /**
5631da46a67SMilanka Ringwald  * @brief Reset a node (other than a Provisioner) and remove it from the network.
56464c3d06bSMilanka Ringwald  * @param mesh_model
56564c3d06bSMilanka Ringwald  * @param dest         element_address
56664c3d06bSMilanka Ringwald  * @param netkey_index
56764c3d06bSMilanka Ringwald  * @param appkey_index
56864c3d06bSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
56964c3d06bSMilanka Ringwald  */
57064c3d06bSMilanka Ringwald uint8_t mesh_configuration_client_send_node_reset(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
57164c3d06bSMilanka Ringwald 
57264c3d06bSMilanka Ringwald /**
5731da46a67SMilanka Ringwald  * @brief Get the current Friend state of a node.
57464c3d06bSMilanka Ringwald  * @param mesh_model
57564c3d06bSMilanka Ringwald  * @param dest         element_address
57664c3d06bSMilanka Ringwald  * @param netkey_index
57764c3d06bSMilanka Ringwald  * @param appkey_index
57864c3d06bSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
57964c3d06bSMilanka Ringwald  */
58064c3d06bSMilanka Ringwald uint8_t mesh_configuration_client_send_friend_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
58164c3d06bSMilanka Ringwald 
58264c3d06bSMilanka Ringwald /**
5831da46a67SMilanka Ringwald  * @brief Set the current Friend state of a node.
58464c3d06bSMilanka Ringwald  * @param mesh_model
58564c3d06bSMilanka Ringwald  * @param dest         element_address
58664c3d06bSMilanka Ringwald  * @param netkey_index
58764c3d06bSMilanka Ringwald  * @param appkey_index
58864c3d06bSMilanka Ringwald  * @param friend_state
58964c3d06bSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
59064c3d06bSMilanka Ringwald  */
59164c3d06bSMilanka Ringwald uint8_t mesh_configuration_client_send_friend_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, mesh_friend_state_t friend_state);
592df02a641SMilanka Ringwald 
5931da46a67SMilanka Ringwald /**
5941da46a67SMilanka Ringwald  * @brief Get the current Key Refresh Phase state of the identified network key
5951da46a67SMilanka Ringwald  * @param mesh_model
5961da46a67SMilanka Ringwald  * @param dest         element_address
5971da46a67SMilanka Ringwald  * @param netkey_index
5981da46a67SMilanka Ringwald  * @param appkey_index
5991da46a67SMilanka Ringwald  * @param netk_index
6001da46a67SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
6011da46a67SMilanka Ringwald  */
6021da46a67SMilanka Ringwald uint8_t mesh_configuration_client_send_key_refresh_phase_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t netk_index);
6031da46a67SMilanka Ringwald 
6041da46a67SMilanka Ringwald /**
6051da46a67SMilanka Ringwald  * @brief Set the current Key Refresh Phase state of the identified network key
6061da46a67SMilanka Ringwald  * @param mesh_model
6071da46a67SMilanka Ringwald  * @param dest         element_address
6081da46a67SMilanka Ringwald  * @param netkey_index
6091da46a67SMilanka Ringwald  * @param appkey_index
6101da46a67SMilanka Ringwald  * @param netk_index
6111da46a67SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
6121da46a67SMilanka Ringwald  */
6131da46a67SMilanka Ringwald uint8_t mesh_configuration_client_send_key_refresh_phase_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t netk_index, uint8_t transition);
6141da46a67SMilanka Ringwald 
6157d339f89SMilanka Ringwald /**
6167d339f89SMilanka Ringwald  * @brief Get the current Heartbeat Publication state of an element.
6177d339f89SMilanka Ringwald  * @param mesh_model
6187d339f89SMilanka Ringwald  * @param dest         element_address
6197d339f89SMilanka Ringwald  * @param netkey_index
6207d339f89SMilanka Ringwald  * @param appkey_index
6217d339f89SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
6227d339f89SMilanka Ringwald  */
6237d339f89SMilanka Ringwald uint8_t mesh_configuration_client_send_heartbeat_publication_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
6247d339f89SMilanka Ringwald 
6257d339f89SMilanka Ringwald /**
6267d339f89SMilanka Ringwald  * @brief Set the current Heartbeat Publication state of an element.
6277d339f89SMilanka Ringwald  * @param mesh_model
6287d339f89SMilanka Ringwald  * @param dest         element_address
6297d339f89SMilanka Ringwald  * @param netkey_index
6307d339f89SMilanka Ringwald  * @param appkey_index
6317d339f89SMilanka Ringwald  * @param publication_state
6327d339f89SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
6337d339f89SMilanka Ringwald  */
6347d339f89SMilanka Ringwald uint8_t mesh_configuration_client_send_heartbeat_publication_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, mesh_heartbeat_publication_state_t publication_state);
6357d339f89SMilanka Ringwald 
6367d339f89SMilanka Ringwald /**
6377d339f89SMilanka Ringwald  * @brief Get the current Heartbeat Subscription state of an element.
6387d339f89SMilanka Ringwald  * @param mesh_model
6397d339f89SMilanka Ringwald  * @param dest         element_address
6407d339f89SMilanka Ringwald  * @param netkey_index
6417d339f89SMilanka Ringwald  * @param appkey_index
6427d339f89SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
6437d339f89SMilanka Ringwald  */
6447d339f89SMilanka Ringwald uint8_t mesh_configuration_client_send_heartbeat_subscription_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
6457d339f89SMilanka Ringwald 
6467d339f89SMilanka Ringwald /**
6477d339f89SMilanka Ringwald  * @brief Set the current Heartbeat Subscription state of an element.
6487d339f89SMilanka Ringwald  * @param mesh_model
6497d339f89SMilanka Ringwald  * @param dest         element_address
6507d339f89SMilanka Ringwald  * @param netkey_index
6517d339f89SMilanka Ringwald  * @param appkey_index
6524f44739eSMilanka Ringwald  * @param heartbeat_source
6534f44739eSMilanka Ringwald  * @param heartbeat_destination
654d175073cSMilanka Ringwald  * @param period_s
6557d339f89SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
6567d339f89SMilanka Ringwald  */
657d175073cSMilanka Ringwald uint8_t mesh_configuration_client_send_heartbeat_subscription_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint16_t heartbeat_source, uint16_t heartbeat_destination, uint16_t period_s);
6587d339f89SMilanka Ringwald 
65970fcff1aSMilanka Ringwald /**
66070fcff1aSMilanka Ringwald  * @brief Get the current value of PollTimeout timer of the Low Power node within a Friend node.
66170fcff1aSMilanka Ringwald  * @param mesh_model
66270fcff1aSMilanka Ringwald  * @param dest         element_address
66370fcff1aSMilanka Ringwald  * @param netkey_index
66470fcff1aSMilanka Ringwald  * @param appkey_index
66570fcff1aSMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
66670fcff1aSMilanka Ringwald  */
66770fcff1aSMilanka Ringwald uint8_t mesh_configuration_client_send_low_power_node_poll_timeout_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
66870fcff1aSMilanka Ringwald 
669786ea917SMilanka Ringwald /**
670786ea917SMilanka Ringwald  * @brief Get the current Network Transmit state of a node.
671786ea917SMilanka Ringwald  * @param mesh_model
672786ea917SMilanka Ringwald  * @param dest         element_address
673786ea917SMilanka Ringwald  * @param netkey_index
674786ea917SMilanka Ringwald  * @param appkey_index
675786ea917SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
676786ea917SMilanka Ringwald  */
677786ea917SMilanka Ringwald uint8_t mesh_configuration_client_send_network_transmit_get(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index);
678786ea917SMilanka Ringwald 
679786ea917SMilanka Ringwald /**
680786ea917SMilanka Ringwald  * @brief Set the current Network Transmit state of a node.
681786ea917SMilanka Ringwald  * @param mesh_model
682786ea917SMilanka Ringwald  * @param dest         element_address
683786ea917SMilanka Ringwald  * @param netkey_index
684786ea917SMilanka Ringwald  * @param appkey_index
685786ea917SMilanka Ringwald  * @param transmit_count
686786ea917SMilanka Ringwald  * @param transmit_interval_steps_ms
687786ea917SMilanka Ringwald  * @return status       ERROR_CODE_SUCCESS if successful, otherwise BTSTACK_MEMORY_ALLOC_FAILED or ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
688786ea917SMilanka Ringwald  */
689786ea917SMilanka Ringwald uint8_t mesh_configuration_client_send_network_transmit_set(mesh_model_t * mesh_model, uint16_t dest, uint16_t netkey_index, uint16_t appkey_index, uint8_t transmit_count, uint16_t transmit_interval_steps_ms);
69070fcff1aSMilanka Ringwald 
6917d339f89SMilanka Ringwald 
692cc2a5f42SMilanka Ringwald #ifdef __cplusplus
693cc2a5f42SMilanka Ringwald } /* end of extern "C" */
694cc2a5f42SMilanka Ringwald #endif
695cc2a5f42SMilanka Ringwald 
696cc2a5f42SMilanka Ringwald #endif
697