xref: /btstack/src/mesh/mesh_foundation.h (revision f4854a5efbe174cdf16fcaf3de7491781eef80ab)
1*f4854a5eSMatthias Ringwald /*
2*f4854a5eSMatthias Ringwald  * Copyright (C) 2018 BlueKitchen GmbH
3*f4854a5eSMatthias Ringwald  *
4*f4854a5eSMatthias Ringwald  * Redistribution and use in source and binary forms, with or without
5*f4854a5eSMatthias Ringwald  * modification, are permitted provided that the following conditions
6*f4854a5eSMatthias Ringwald  * are met:
7*f4854a5eSMatthias Ringwald  *
8*f4854a5eSMatthias Ringwald  * 1. Redistributions of source code must retain the above copyright
9*f4854a5eSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer.
10*f4854a5eSMatthias Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
11*f4854a5eSMatthias Ringwald  *    notice, this list of conditions and the following disclaimer in the
12*f4854a5eSMatthias Ringwald  *    documentation and/or other materials provided with the distribution.
13*f4854a5eSMatthias Ringwald  * 3. Neither the name of the copyright holders nor the names of
14*f4854a5eSMatthias Ringwald  *    contributors may be used to endorse or promote products derived
15*f4854a5eSMatthias Ringwald  *    from this software without specific prior written permission.
16*f4854a5eSMatthias Ringwald  * 4. Any redistribution, use, or modification is done solely for
17*f4854a5eSMatthias Ringwald  *    personal benefit and not for any commercial purpose or for
18*f4854a5eSMatthias Ringwald  *    monetary gain.
19*f4854a5eSMatthias Ringwald  *
20*f4854a5eSMatthias Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21*f4854a5eSMatthias Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22*f4854a5eSMatthias Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*f4854a5eSMatthias Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24*f4854a5eSMatthias Ringwald  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25*f4854a5eSMatthias Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26*f4854a5eSMatthias Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27*f4854a5eSMatthias Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28*f4854a5eSMatthias Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29*f4854a5eSMatthias Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30*f4854a5eSMatthias Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31*f4854a5eSMatthias Ringwald  * SUCH DAMAGE.
32*f4854a5eSMatthias Ringwald  *
33*f4854a5eSMatthias Ringwald  * Please inquire about commercial licensing options at
34*f4854a5eSMatthias Ringwald  * [email protected]
35*f4854a5eSMatthias Ringwald  *
36*f4854a5eSMatthias Ringwald  */
37*f4854a5eSMatthias Ringwald 
38*f4854a5eSMatthias Ringwald #ifndef __MESH_FOUNDATION_H
39*f4854a5eSMatthias Ringwald #define __MESH_FOUNDATION_H
40*f4854a5eSMatthias Ringwald 
41*f4854a5eSMatthias Ringwald #include <stdint.h>
42*f4854a5eSMatthias Ringwald 
43*f4854a5eSMatthias Ringwald #include "mesh/mesh_network.h"
44*f4854a5eSMatthias Ringwald 
45*f4854a5eSMatthias Ringwald #ifdef __cplusplus
46*f4854a5eSMatthias Ringwald extern "C"
47*f4854a5eSMatthias Ringwald {
48*f4854a5eSMatthias Ringwald #endif
49*f4854a5eSMatthias Ringwald 
50*f4854a5eSMatthias Ringwald #define MESH_TTL_MAX 0x7f
51*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATE_NOT_SUPPORTED 2
52*f4854a5eSMatthias Ringwald 
53*f4854a5eSMatthias Ringwald // Mesh Model Identifiers
54*f4854a5eSMatthias Ringwald #define MESH_SIG_MODEL_ID_CONFIGURATION_SERVER  0x0000u
55*f4854a5eSMatthias Ringwald #define MESH_SIG_MODEL_ID_CONFIGURATION_CLIENT  0x0001u
56*f4854a5eSMatthias Ringwald #define MESH_SIG_MODEL_ID_HEALTH_SERVER         0x0002u
57*f4854a5eSMatthias Ringwald #define MESH_SIG_MODEL_ID_HEALTH_CLIENT         0x0003u
58*f4854a5eSMatthias Ringwald #define MESH_SIG_MODEL_ID_GENERIC_ON_OFF_SERVER 0x1000u
59*f4854a5eSMatthias Ringwald #define MESH_SIG_MODEL_ID_GENERIC_ON_OFF_CLIENT 0x1001u
60*f4854a5eSMatthias Ringwald 
61*f4854a5eSMatthias Ringwald // Foundation Model Operations
62*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_APPKEY_ADD                                      0x00
63*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_APPKEY_UPDATE                                   0x01
64*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_COMPOSITION_DATA_STATUS                         0x02
65*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_PUBLICATION_SET                           0x03
66*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_CURRENT_STATUS                           0x04
67*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_FAULT_STATUS                             0x05
68*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEARTBEAT_PUBLICATION_STATUS                    0x06
69*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_APPKEY_DELETE                                 0x8000
70*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_APPKEY_GET                                    0x8001
71*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_APPKEY_LIST                                   0x8002
72*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_APPKEY_STATUS                                 0x8003
73*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_ATTENTION_GET                                 0x8004
74*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_ATTENTION_SET                                 0x8005
75*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_ATTENTION_SET_UNACKNOWLEDGED                  0x8006
76*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_ATTENTION_STATUS                              0x8007
77*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_COMPOSITION_DATA_GET                          0x8008
78*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_BEACON_GET                                    0x8009
79*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_BEACON_SET                                    0x800a
80*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_BEACON_STATUS                                 0x800b
81*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_DEFAULT_TTL_GET                               0x800c
82*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_DEFAULT_TTL_SET                               0x800d
83*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_DEFAULT_TTL_STATUS                            0x800e
84*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_FRIEND_GET                                    0x800f
85*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_FRIEND_SET                                    0x8010
86*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_FRIEND_STATUS                                 0x8011
87*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_GATT_PROXY_GET                                0x8012
88*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_GATT_PROXY_SET                                0x8013
89*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_GATT_PROXY_STATUS                             0x8014
90*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_KEY_REFRESH_PHASE_GET                         0x8015
91*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_KEY_REFRESH_PHASE_SET                         0x8016
92*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_KEY_REFRESH_PHASE_STATUS                      0x8017
93*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_PUBLICATION_GET                         0x8018
94*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_PUBLICATION_STATUS                      0x8019
95*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_PUBLICATION_VIRTUAL_ADDRESS_SET         0x801a
96*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_SUBSCRIPTION_ADD                        0x801b
97*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_SUBSCRIPTION_DELETE                     0x801c
98*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_SUBSCRIPTION_DELETE_ALL                 0x801d
99*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_SUBSCRIPTION_OVERWRITE                  0x801e
100*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_SUBSCRIPTION_STATUS                     0x801f
101*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_ADD        0x8020
102*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_DELETE     0x8021
103*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_SUBSCRIPTION_VIRTUAL_ADDRESS_OVERWRITE  0x8022
104*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NETWORK_TRANSMIT_GET                          0x8023
105*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NETWORK_TRANSMIT_SET                          0x8024
106*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NETWORK_TRANSMIT_STATUS                       0x8025
107*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_RELAY_GET                                     0x8026
108*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_RELAY_SET                                     0x8027
109*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_RELAY_STATUS                                  0x8028
110*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_SIG_MODEL_SUBSCRIPTION_GET                    0x8029
111*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_SIG_MODEL_SUBSCRIPTION_LIST                   0x802a
112*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_VENDOR_MODEL_SUBSCRIPTION_GET                 0x802b
113*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_VENDOR_MODEL_SUBSCRIPTION_LIST                0x802c
114*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_LOW_POWER_NODE_POLL_TIMEOUT_GET               0x802d
115*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_LOW_POWER_NODE_POLL_TIMEOUT_STATUS            0x802e
116*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_FAULT_CLEAR                            0x802f
117*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_FAULT_CLEAR_UNACKNOWLEDGED             0x8030
118*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_FAULT_GET                              0x8031
119*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_FAULT_TEST                             0x8032
120*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_FAULT_TEST_UNACKNOWLEDGED              0x8033
121*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_PERIOD_GET                             0x8034
122*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_PERIOD_SET                             0x8035
123*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_PERIOD_SET_UNACKNOWLEDGED              0x8036
124*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEALTH_PERIOD_STATUS                          0x8037
125*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEARTBEAT_PUBLICATION_GET                     0x8038
126*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEARTBEAT_PUBLICATION_SET                     0x8039
127*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEARTBEAT_SUBSCRIPTION_GET                    0x803a
128*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEARTBEAT_SUBSCRIPTION_SET                    0x803b
129*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_HEARTBEAT_SUBSCRIPTION_STATUS                 0x803c
130*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_APP_BIND                                0x803d
131*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_APP_STATUS                              0x803e
132*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_MODEL_APP_UNBIND                              0x803f
133*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NETKEY_ADD                                    0x8040
134*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NETKEY_DELETE                                 0x8041
135*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NETKEY_GET                                    0x8042
136*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NETKEY_LIST                                   0x8043
137*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NETKEY_STATUS                                 0x8044
138*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NETKEY_UPDATE                                 0x8045
139*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NODE_IDENTITY_GET                             0x8046
140*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NODE_IDENTITY_SET                             0x8047
141*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NODE_IDENTITY_STATUS                          0x8048
142*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NODE_RESET                                    0x8049
143*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_NODE_RESET_STATUS                             0x804a
144*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_SIG_MODEL_APP_GET                             0x804b
145*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_SIG_MODEL_APP_LIST                            0x804c
146*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_VENDOR_MODEL_APP_GET                          0x804d
147*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_OPERATION_VENDOR_MODEL_APP_LIST                         0x804e
148*f4854a5eSMatthias Ringwald 
149*f4854a5eSMatthias Ringwald // Foundation Models Status Codes
150*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_SUCCESS                                           0x00
151*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_INVALID_ADDRESS                                   0x01
152*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_INVALID_MODEL                                     0x02
153*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_INVALID_APPKEY_INDEX                              0x03
154*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_INVALID_NETKEY_INDEX                              0x04
155*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_INSUFFICIENT_RESOURCES                            0x05
156*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_KEY_INDEX_ALREADY_STORED                          0x06
157*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_INVALID_PUBLISH_PARAMETER                         0x07
158*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_NOT_A_SUBSCRIPTION_MODEL                          0x08
159*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_STORAGE_FAILURE                                   0x09
160*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_FEATURE_NOT_SUPPORTED                             0x0a
161*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_CANNOT_UPDATE                                     0x0b
162*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_CANNOT_REMOVE                                     0x0c
163*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_CANNOT_BIND                                       0x0d
164*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_TEMPORARILY_UNABLE_TO_CHANGE_STATE                0x0e
165*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_CANNOT_SET                                        0x0f
166*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_UNSPECIFIED_ERROR                                 0x10
167*f4854a5eSMatthias Ringwald #define MESH_FOUNDATION_STATUS_INVALID_BINDING                                   0x11
168*f4854a5eSMatthias Ringwald 
169*f4854a5eSMatthias Ringwald /**
170*f4854a5eSMatthias Ringwald  *
171*f4854a5eSMatthias Ringwald  * @param value on/off
172*f4854a5eSMatthias Ringwald  */
173*f4854a5eSMatthias Ringwald void mesh_foundation_gatt_proxy_set(uint8_t value);
174*f4854a5eSMatthias Ringwald 
175*f4854a5eSMatthias Ringwald /**
176*f4854a5eSMatthias Ringwald  *
177*f4854a5eSMatthias Ringwald  * @return
178*f4854a5eSMatthias Ringwald  */
179*f4854a5eSMatthias Ringwald uint8_t mesh_foundation_gatt_proxy_get(void);
180*f4854a5eSMatthias Ringwald 
181*f4854a5eSMatthias Ringwald /**
182*f4854a5eSMatthias Ringwald  *
183*f4854a5eSMatthias Ringwald  * @param value on/off
184*f4854a5eSMatthias Ringwald  */
185*f4854a5eSMatthias Ringwald void mesh_foundation_beacon_set(uint8_t value);
186*f4854a5eSMatthias Ringwald 
187*f4854a5eSMatthias Ringwald /**
188*f4854a5eSMatthias Ringwald  *
189*f4854a5eSMatthias Ringwald  * @return
190*f4854a5eSMatthias Ringwald  */
191*f4854a5eSMatthias Ringwald uint8_t mesh_foundation_beacon_get(void);
192*f4854a5eSMatthias Ringwald 
193*f4854a5eSMatthias Ringwald /**
194*f4854a5eSMatthias Ringwald  *
195*f4854a5eSMatthias Ringwald  * @param ttl
196*f4854a5eSMatthias Ringwald  */
197*f4854a5eSMatthias Ringwald void mesh_foundation_default_ttl_set(uint8_t ttl);
198*f4854a5eSMatthias Ringwald 
199*f4854a5eSMatthias Ringwald /**
200*f4854a5eSMatthias Ringwald  *
201*f4854a5eSMatthias Ringwald  * @return
202*f4854a5eSMatthias Ringwald  */
203*f4854a5eSMatthias Ringwald uint8_t mesh_foundation_default_ttl_get(void);
204*f4854a5eSMatthias Ringwald 
205*f4854a5eSMatthias Ringwald /**
206*f4854a5eSMatthias Ringwald  *
207*f4854a5eSMatthias Ringwald  * @param value on/off
208*f4854a5eSMatthias Ringwald  */
209*f4854a5eSMatthias Ringwald void mesh_foundation_friend_set(uint8_t value);
210*f4854a5eSMatthias Ringwald 
211*f4854a5eSMatthias Ringwald /**
212*f4854a5eSMatthias Ringwald  *
213*f4854a5eSMatthias Ringwald  * @return
214*f4854a5eSMatthias Ringwald  */
215*f4854a5eSMatthias Ringwald uint8_t mesh_foundation_friend_get(void);
216*f4854a5eSMatthias Ringwald 
217*f4854a5eSMatthias Ringwald /**
218*f4854a5eSMatthias Ringwald  *
219*f4854a5eSMatthias Ringwald  * @param value on/off
220*f4854a5eSMatthias Ringwald  */
221*f4854a5eSMatthias Ringwald void mesh_foundation_low_power_set(uint8_t value);
222*f4854a5eSMatthias Ringwald 
223*f4854a5eSMatthias Ringwald /**
224*f4854a5eSMatthias Ringwald  *
225*f4854a5eSMatthias Ringwald  * @return
226*f4854a5eSMatthias Ringwald  */
227*f4854a5eSMatthias Ringwald uint8_t mesh_foundation_low_power_get(void);
228*f4854a5eSMatthias Ringwald 
229*f4854a5eSMatthias Ringwald /**
230*f4854a5eSMatthias Ringwald  *
231*f4854a5eSMatthias Ringwald  * @param network_transmit
232*f4854a5eSMatthias Ringwald  */
233*f4854a5eSMatthias Ringwald void mesh_foundation_network_transmit_set(uint8_t network_transmit);
234*f4854a5eSMatthias Ringwald 
235*f4854a5eSMatthias Ringwald /**
236*f4854a5eSMatthias Ringwald  *
237*f4854a5eSMatthias Ringwald  * @return
238*f4854a5eSMatthias Ringwald  */
239*f4854a5eSMatthias Ringwald uint8_t mesh_foundation_network_transmit_get(void);
240*f4854a5eSMatthias Ringwald /**
241*f4854a5eSMatthias Ringwald  *
242*f4854a5eSMatthias Ringwald  * @param relay
243*f4854a5eSMatthias Ringwald  */
244*f4854a5eSMatthias Ringwald void mesh_foundation_relay_set(uint8_t relay);
245*f4854a5eSMatthias Ringwald 
246*f4854a5eSMatthias Ringwald /**
247*f4854a5eSMatthias Ringwald  *
248*f4854a5eSMatthias Ringwald  * @return
249*f4854a5eSMatthias Ringwald  */
250*f4854a5eSMatthias Ringwald uint8_t mesh_foundation_relay_get(void);
251*f4854a5eSMatthias Ringwald 
252*f4854a5eSMatthias Ringwald /**
253*f4854a5eSMatthias Ringwald  *
254*f4854a5eSMatthias Ringwald  * @param relay_retransmit
255*f4854a5eSMatthias Ringwald  */
256*f4854a5eSMatthias Ringwald void mesh_foundation_relay_retransmit_set(uint8_t relay_retransmit);
257*f4854a5eSMatthias Ringwald 
258*f4854a5eSMatthias Ringwald /**
259*f4854a5eSMatthias Ringwald  *
260*f4854a5eSMatthias Ringwald  * @return
261*f4854a5eSMatthias Ringwald  */
262*f4854a5eSMatthias Ringwald uint8_t mesh_foundation_relay_retransmit_get(void);
263*f4854a5eSMatthias Ringwald 
264*f4854a5eSMatthias Ringwald /**
265*f4854a5eSMatthias Ringwald  * @brief Get Features map (Relay, Proxy, Friend, Low Power)
266*f4854a5eSMatthias Ringwald  */
267*f4854a5eSMatthias Ringwald uint16_t mesh_foundation_get_features(void);
268*f4854a5eSMatthias Ringwald 
269*f4854a5eSMatthias Ringwald #ifdef __cplusplus
270*f4854a5eSMatthias Ringwald } /* end of extern "C" */
271*f4854a5eSMatthias Ringwald #endif
272*f4854a5eSMatthias Ringwald 
273*f4854a5eSMatthias Ringwald #endif
274