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_config_internal.h
Go to the documentation of this file.
1/**
2 * @file meshx_config_internal.h
3 * @brief Internal configuration settings for MeshX.
4 *
5 * This header file defines default configuration macros for MeshX, including
6 * mandatory fixed configurations, element counts, server and client counts,
7 * and enabling various features such as unit testing and light servers.
8 * It also includes error checks to ensure valid configuration settings.
9 *
10 */
11#ifndef __MESHX_CONFIG_INTERNAL_H__
12#define __MESHX_CONFIG_INTERNAL_H__
13
14#include "meshx_config.h"
15/**
16 * @brief Mandatory Fixed Configs
17 */
18#define CONFIG_MESHX_DEFAULT 1
19#define CONFIG_ENABLE_SERVER_COMMON 1
20#define CONFIG_ENABLE_PROVISIONING 1
21#define CONFIG_ENABLE_CONFIG_SERVER 1
22
23/**
24 * @brief Application Main
25 * @note: This needs to be defined based on platform
26 */
27#ifndef CONFIG_APP_MAIN
28#error "Define CONFIG_APP_MAIN to the application main function"
29// #define CONFIG_APP_MAIN main
30#endif /* CONFIG_APP_MAIN */
31
32#ifndef CONFIG_CID_ID
33#define CONFIG_CID_ID 0x7908
34#endif /* CONFIG_CID_ID */
35
36#ifndef CONFIG_PID_ID
37#define CONFIG_PID_ID 0x4
38#endif /* CONFIG_PID_ID */
39
40#ifndef CONFIG_PRODUCT_NAME
41#define CONFIG_PRODUCT_NAME "all_in_one"
42#endif /* CONFIG_PRODUCT_NAME */
43
44/**
45 * @brief Total Element Count in the Composition
46 * @note The number shall be number of elements + 1 (to include root model)
47 */
48#ifndef CONFIG_MAX_ELEMENT_COUNT
49#define CONFIG_MAX_ELEMENT_COUNT 5
50#endif /* CONFIG_MAX_ELEMENT_COUNT */
51
52/**
53 * @brief Relay Server Counts
54 */
55#ifndef CONFIG_RELAY_SERVER_COUNT
56#define CONFIG_RELAY_SERVER_COUNT 1
57#endif /* CONFIG_RELAY_SERVER_COUNT */
58
59
60/**
61 * @brief Relay Client Counts
62 */
63#ifndef CONFIG_RELAY_CLIENT_COUNT
64#define CONFIG_RELAY_CLIENT_COUNT 1
65#endif /* CONFIG_RELAY_CLIENT_COUNT */
66
67
68/**
69 * @brief CWWW Server Counts
70 */
71#ifndef CONFIG_LIGHT_CWWW_SRV_COUNT
72#define CONFIG_LIGHT_CWWW_SRV_COUNT 1
73#endif /* CONFIG_LIGHT_CWWW_SRV_COUNT */
74
75
76/**
77 * @brief CWWW Client Counts
78 */
79#ifndef CONFIG_LIGHT_CWWW_CLIENT_COUNT
80#define CONFIG_LIGHT_CWWW_CLIENT_COUNT 1
81#endif /* CONFIG_LIGHT_CWWW_CLIENT_COUNT */
82
83
84/**
85 * @brief Sensor Server Counts
86 */
87#ifndef CONFIG_SENSOR_SERVER_COUNT
88#define CONFIG_SENSOR_SERVER_COUNT 1
89#endif /* CONFIG_SENSOR_SERVER_COUNT */
90
91
92/**
93 * @brief Gen OnOff Server Counts
94 */
95#ifndef CONFIG_ENABLE_GEN_ONOFF_CLIENT
96#define CONFIG_ENABLE_GEN_ONOFF_CLIENT 1
97#endif /* CONFIG_ENABLE_GEN_ONOFF_CLIENT */
98
99/**
100 * @brief Gen OnOff Client Counts
101 */
102#ifndef CONFIG_ENABLE_GEN_ONOFF_SERVER
103#define CONFIG_ENABLE_GEN_ONOFF_SERVER 1
104#endif /* CONFIG_ENABLE_GEN_ONOFF_SERVER */
105
106/**
107 * @brief Gen Level Client Enable
108 */
109#ifndef CONFIG_ENABLE_GEN_LEVEL_CLIENT
110#define CONFIG_ENABLE_GEN_LEVEL_CLIENT 1
111#endif /* CONFIG_ENABLE_GEN_LEVEL_CLIENT */
112
113/**
114 * @brief Gen Level Server Enable
115 */
116#ifndef CONFIG_ENABLE_GEN_LEVEL_SERVER
117#define CONFIG_ENABLE_GEN_LEVEL_SERVER 1
118#endif /* CONFIG_ENABLE_GEN_LEVEL_SERVER */
119
120/**
121 * @brief Gen Power OnOff Client Enable
122 */
123#ifndef CONFIG_ENABLE_GEN_POWER_ONOFF_CLIENT
124#define CONFIG_ENABLE_GEN_POWER_ONOFF_CLIENT 1
125#endif /* CONFIG_ENABLE_GEN_POWER_ONOFF_CLIENT */
126
127/**
128 * @brief Gen Power OnOff Server Enable
129 */
130#ifndef CONFIG_ENABLE_GEN_POWER_ONOFF_SERVER
131#define CONFIG_ENABLE_GEN_POWER_ONOFF_SERVER 1
132#endif /* CONFIG_ENABLE_GEN_POWER_ONOFF_SERVER */
133
134/**
135 * @brief Gen Power OnOff Setup Server Enable
136 */
137#if CONFIG_ENABLE_GEN_POWER_ONOFF_SERVER
138#define CONFIG_ENABLE_GEN_POWER_ONOFF_SETUP_SERVER 1
139#endif /* CONFIG_ENABLE_GEN_POWER_ONOFF_SERVER */
140
141/**
142 * @brief Gen Power Level Client Enable
143 */
144#ifndef CONFIG_ENABLE_GEN_POWER_LEVEL_CLIENT
145#define CONFIG_ENABLE_GEN_POWER_LEVEL_CLIENT 1
146#endif /* CONFIG_ENABLE_GEN_POWER_LEVEL_CLIENT */
147
148/**
149 * @brief Gen Power Level Server Enable
150 */
151#ifndef CONFIG_ENABLE_GEN_POWER_LEVEL_SERVER
152#define CONFIG_ENABLE_GEN_POWER_LEVEL_SERVER 1
153#endif /* CONFIG_ENABLE_GEN_POWER_LEVEL_SERVER */
154
155/**
156 * @brief Gen Power Level Setup Server Enable
157 */
158#if CONFIG_ENABLE_GEN_POWER_LEVEL_SERVER
159#define CONFIG_ENABLE_GEN_POWER_LEVEL_SETUP_SERVER 1
160#endif /* CONFIG_ENABLE_GEN_POWER_LEVEL_SERVER */
161
162/**
163 * @brief Gen Default Transition Time Client Enable
164 */
165#ifndef CONFIG_ENABLE_GEN_DEF_TRANS_TIME_CLIENT
166#define CONFIG_ENABLE_GEN_DEF_TRANS_TIME_CLIENT 1
167#endif /* CONFIG_ENABLE_GEN_DEF_TRANS_TIME_CLIENT */
168
169/**
170 * @brief Gen Default Transition Time Server Enable
171 */
172#ifndef CONFIG_ENABLE_GEN_DEF_TRANS_TIME_SERVER
173#define CONFIG_ENABLE_GEN_DEF_TRANS_TIME_SERVER 1
174#endif /* CONFIG_ENABLE_GEN_DEF_TRANS_TIME_SERVER */
175
176/**
177 * @brief Gen Battery Client Enable
178 */
179#ifndef CONFIG_ENABLE_GEN_BATTERY_CLIENT
180#define CONFIG_ENABLE_GEN_BATTERY_CLIENT 1
181#endif /* CONFIG_ENABLE_GEN_BATTERY_CLIENT */
182
183/**
184 * @brief Gen Battery Server Enable
185 */
186#ifndef CONFIG_ENABLE_GEN_BATTERY_SERVER
187#define CONFIG_ENABLE_GEN_BATTERY_SERVER 1
188#endif /* CONFIG_ENABLE_GEN_BATTERY_SERVER */
189
190/**
191 * @brief Gen Location Client Enable
192 */
193#ifndef CONFIG_ENABLE_GEN_LOCATION_CLIENT
194#define CONFIG_ENABLE_GEN_LOCATION_CLIENT 1
195#endif /* CONFIG_ENABLE_GEN_LOCATION_CLIENT */
196
197/**
198 * @brief Gen Location Server Enable
199 */
200#ifndef CONFIG_ENABLE_GEN_LOCATION_SERVER
201#define CONFIG_ENABLE_GEN_LOCATION_SERVER 1
202#endif /* CONFIG_ENABLE_GEN_LOCATION_SERVER */
203
204/**
205 * @brief Gen Location Setup Server Enable
206 */
207#if CONFIG_ENABLE_GEN_LOCATION_SERVER
208#define CONFIG_ENABLE_GEN_LOCATION_SETUP_SERVER 1
209#endif /* CONFIG_ENABLE_GEN_LOCATION_SERVER */
210
211/**
212 * @brief Gen Property Client Enable
213 */
214#ifndef CONFIG_ENABLE_GEN_PROPERTY_CLIENT
215#define CONFIG_ENABLE_GEN_PROPERTY_CLIENT 1
216#endif /* CONFIG_ENABLE_GEN_PROPERTY_CLIENT */
217
218/**
219 * @brief Gen Admin Property Server Enable
220 */
221#ifndef CONFIG_ENABLE_GEN_ADMIN_PROPERTY_SERVER
222#define CONFIG_ENABLE_GEN_ADMIN_PROPERTY_SERVER 1
223#endif /* CONFIG_ENABLE_GEN_ADMIN_PROPERTY_SERVER */
224
225/**
226 * @brief Gen Manufacturer Property Server Enable
227 */
228#ifndef CONFIG_ENABLE_GEN_MANU_PROP_SERVER
229#define CONFIG_ENABLE_GEN_MANU_PROP_SERVER 1
230#endif /* CONFIG_ENABLE_GEN_MANU_PROP_SERVER */
231
232/**
233 * @brief Gen User Property Server Enable
234 */
235#ifndef CONFIG_ENABLE_GEN_USER_PROPERTY_SERVER
236#define CONFIG_ENABLE_GEN_USER_PROPERTY_SERVER 1
237#endif /* CONFIG_ENABLE_GEN_USER_PROPERTY_SERVER */
238
239/**
240 * @brief Gen Client Property Server Enable
241 */
242#ifndef CONFIG_ENABLE_GEN_CLIENT_PROPERTY_SERVER
243#define CONFIG_ENABLE_GEN_CLIENT_PROPERTY_SERVER 1
244#endif /* CONFIG_ENABLE_GEN_CLIENT_PROPERTY_SERVER */
245
246/**
247 * @brief Light CTL Server Counts
248 */
249#ifndef CONFIG_ENABLE_LIGHT_CTL_SERVER
250#define CONFIG_ENABLE_LIGHT_CTL_SERVER 1
251#endif /* CONFIG_ENABLE_LIGHT_CTL_SERVER */
252
253/**
254 * @brief Light CTL Client Counts
255 */
256#ifndef CONFIG_ENABLE_LIGHT_CTL_CLIENT
257#define CONFIG_ENABLE_LIGHT_CTL_CLIENT 1
258#endif /* CONFIG_ENABLE_LIGHT_CTL_CLIENT */
259
260/**
261 * @brief Gen OnOff Client Enable
262 */
263#ifndef CONFIG_ENABLE_GEN_CLIENT
264#define CONFIG_ENABLE_GEN_CLIENT 1
265#endif /* CONFIG_ENABLE_GEN_CLIENT */
266
267/**
268 * @brief Gen OnOff Server Enable
269 */
270#ifndef CONFIG_ENABLE_GEN_SERVER
271#define CONFIG_ENABLE_GEN_SERVER 1
272#endif /* CONFIG_ENABLE_GEN_SERVER */
273
274/**
275 * @brief Gen Light Server
276 */
277#ifndef CONFIG_ENABLE_LIGHT_SERVER
278#define CONFIG_ENABLE_LIGHT_SERVER 1
279#endif /* CONFIG_ENABLE_LIGHT_SERVER */
280
281/**
282 * @brief Gen Light Client
283 */
284#ifndef CONFIG_ENABLE_LIGHT_CLIENT
285#define CONFIG_ENABLE_LIGHT_CLIENT 1
286#endif /* CONFIG_ENABLE_LIGHT_CLIENT */
287
288/**
289 * @brief Sensor Server Enable
290 */
291#ifndef CONFIG_ENABLE_SENSOR_SERVER
292#define CONFIG_ENABLE_SENSOR_SERVER 1
293#endif /* CONFIG_ENABLE_SENSOR_SERVER */
294
295/**
296 * @brief Enable Unit Test
297 */
298#ifndef CONFIG_ENABLE_UNIT_TEST
299#define CONFIG_ENABLE_UNIT_TEST 0
300#endif /* CONFIG_ENABLE_UNIT_TEST */
301
302/**************************************************************************
303 * CONFIG ERROR CHECK
304 *************************************************************************/
305
306 /**
307 * @brief Element Level config check
308 */
309
310#if CONFIG_MAX_ELEMENT_COUNT < 1
311 #error "Element Count must be atleast 1"
312#endif
313
314#if CONFIG_RELAY_SERVER_COUNT
315 #if !CONFIG_ENABLE_GEN_ONOFF_SERVER
316 #error "Enable this to use Relay Server Element"
317 #endif
318#endif /* CONFIG_RELAY_SERVER_COUNT */
319
320#if CONFIG_RELAY_CLIENT_COUNT
321 #if !CONFIG_ENABLE_GEN_CLIENT
322 #error "Enable this to use Relay Client Element"
323 #endif
324#endif /* CONFIG_RELAY_CLIENT_COUNT */
325
326#if CONFIG_LIGHT_CWWW_SRV_COUNT
327 #if !CONFIG_ENABLE_GEN_SERVER || !CONFIG_ENABLE_LIGHT_CTL_SERVER
328 #error "Enable this to use CWWW Server Element"
329 #endif
330#endif /* CONFIG_LIGHT_CWWW_SRV_COUNT */
331
332#if CONFIG_LIGHT_CWWW_CLIENT_COUNT
333 #if !CONFIG_ENABLE_GEN_CLIENT || !CONFIG_ENABLE_LIGHT_CLIENT
334 #error "Enable this to use CWWW Client Element"
335 #endif
336#endif /* CONFIG_LIGHT_CWWW_CLIENT_COUNT */
337
338#if CONFIG_SENSOR_SERVER_COUNT
339 #if !CONFIG_ENABLE_SENSOR_SERVER
340 #error "Enable this to use Sensor Server Element"
341 #endif
342#endif /* CONFIG_SENSOR_SERVER_COUNT */
343
344/**
345 * @brief Model Level Config Check
346 */
347
348#if CONFIG_ENABLE_GEN_ONOFF_SERVER
349 #if !CONFIG_ENABLE_GEN_SERVER
350 #error "Enable this to use OnOff Server Element"
351 #endif
352#endif /* CONFIG_ENABLE_GEN_ONOFF_SERVER */
353
354#if CONFIG_ENABLE_GEN_ONOFF_CLIENT
355 #if !CONFIG_ENABLE_GEN_CLIENT
356 #error "Enable GEN_CLIENT to use OnOff Client Element"
357 #endif
358#endif /* CONFIG_ENABLE_GEN_ONOFF_CLIENT */
359
360#if CONFIG_ENABLE_GEN_LEVEL_SERVER
361 #if !CONFIG_ENABLE_GEN_SERVER
362 #error "Enable GEN_SERVER to use Level Server Element"
363 #endif
364#endif /* CONFIG_ENABLE_GEN_LEVEL_SERVER */
365
366#if CONFIG_ENABLE_GEN_LEVEL_CLIENT
367 #if !CONFIG_ENABLE_GEN_CLIENT
368 #error "Enable GEN_CLIENT to use Level Client Element"
369 #endif
370#endif /* CONFIG_ENABLE_GEN_LEVEL_CLIENT */
371
372#if CONFIG_ENABLE_GEN_BATTERY_SERVER
373 #if !CONFIG_ENABLE_GEN_SERVER
374 #error "Enable GEN_SERVER to use Battery Server Element"
375 #endif
376#endif /* CONFIG_ENABLE_GEN_BATTERY_SERVER */
377
378#if CONFIG_ENABLE_GEN_BATTERY_CLIENT
379 #if !CONFIG_ENABLE_GEN_CLIENT
380 #error "Enable GEN_CLIENT to use Battery Client Element"
381 #endif
382#endif /* CONFIG_ENABLE_GEN_BATTERY_CLIENT */
383
384#if CONFIG_ENABLE_GEN_POWER_LEVEL_SERVER
385 #if !CONFIG_ENABLE_GEN_SERVER
386 #error "Enable GEN_SERVER to use Power Level Server Element"
387 #endif
388#endif /* CONFIG_ENABLE_GEN_POWER_LEVEL_SERVER */
389
390#if CONFIG_ENABLE_GEN_POWER_LEVEL_CLIENT
391 #if !CONFIG_ENABLE_GEN_CLIENT
392 #error "Enable GEN_CLIENT to use Power Level Client Element"
393 #endif
394#endif /* CONFIG_ENABLE_GEN_POWER_LEVEL_CLIENT */
395
396#if CONFIG_ENABLE_GEN_POWER_ONOFF_SERVER
397 #if !CONFIG_ENABLE_GEN_SERVER
398 #error "Enable GEN_SERVER to use Power OnOff Server Element"
399 #endif
400#endif /* CONFIG_ENABLE_GEN_POWER_ONOFF_SERVER */
401
402#if CONFIG_ENABLE_GEN_POWER_ONOFF_CLIENT
403 #if !CONFIG_ENABLE_GEN_CLIENT
404 #error "Enable GEN_CLIENT to use Power OnOff Client Element"
405 #endif
406#endif /* CONFIG_ENABLE_GEN_POWER_ONOFF_CLIENT */
407
408#if CONFIG_ENABLE_GEN_DEF_TRANS_TIME_SERVER
409 #if !CONFIG_ENABLE_GEN_SERVER
410 #error "Enable GEN_SERVER to use Default Transition Time Server Element"
411 #endif
412#endif /* CONFIG_ENABLE_GEN_DEF_TRANS_TIME_SERVER */
413
414#if CONFIG_ENABLE_GEN_DEF_TRANS_TIME_CLIENT
415 #if !CONFIG_ENABLE_GEN_CLIENT
416 #error "Enable GEN_CLIENT to use Default Transition Time Client Element"
417 #endif
418#endif /* CONFIG_ENABLE_GEN_DEF_TRANS_TIME_CLIENT */
419
420#if CONFIG_ENABLE_GEN_LOCATION_SERVER
421 #if !CONFIG_ENABLE_GEN_SERVER
422 #error "Enable GEN_SERVER to use Location Server Element"
423 #endif
424#endif /* CONFIG_ENABLE_GEN_LOCATION_SERVER */
425
426#if CONFIG_ENABLE_GEN_LOCATION_CLIENT
427 #if !CONFIG_ENABLE_GEN_CLIENT
428 #error "Enable GEN_CLIENT to use Location Client Element"
429 #endif
430#endif /* CONFIG_ENABLE_GEN_LOCATION_CLIENT */
431
432/* Property Server checks require all property types */
433#if CONFIG_ENABLE_GEN_ADMIN_PROPERTY_SERVER || CONFIG_ENABLE_GEN_MANU_PROP_SERVER || CONFIG_ENABLE_GEN_USER_PROPERTY_SERVER || CONFIG_ENABLE_GEN_CLIENT_PROPERTY_SERVER
434 #if !CONFIG_ENABLE_GEN_SERVER
435 #error "Enable GEN_SERVER to use Property Server Elements"
436 #endif
437#endif
438
439#if CONFIG_ENABLE_GEN_PROPERTY_CLIENT
440 #if !CONFIG_ENABLE_GEN_CLIENT
441 #error "Enable GEN_CLIENT to use Property Client Element"
442 #endif
443#endif /* CONFIG_ENABLE_GEN_PROPERTY_CLIENT */
444
445#if CONFIG_ENABLE_LIGHT_CTL_SERVER
446 #if !CONFIG_ENABLE_LIGHT_SERVER
447 #error "Enable this to use Light Server Element"
448 #endif
449#endif /* CONFIG_ENABLE_LIGHT_CTL_SERVER */
450
451#define CONFIG_TXCM_ENABLE \
452 CONFIG_RELAY_CLIENT_COUNT \
453 || CONFIG_LIGHT_CWWW_CLIENT_COUNT \
454 || CONFIG_SENSOR_SERVER_COUNT
455
456#endif /* __MESHX_CONFIG_INTERNAL_H__ */