Anjay Lite
Loading...
Searching...
No Matches
init.h
Go to the documentation of this file.
1/*
2 * Copyright 2023-2025 AVSystem <avsystem@avsystem.com>
3 * AVSystem Anjay Lite LwM2M SDK
4 * All rights reserved.
5 *
6 * Licensed under AVSystem Anjay Lite LwM2M Client SDK - Non-Commercial License.
7 * See the attached LICENSE file for details.
8 */
9
10#ifndef ANJ_INIT_H
11#define ANJ_INIT_H
12
13#include <anj/anj_config.h> // IWYU pragma: export
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19#if !defined(ANJ_COAP_WITH_TCP) && !defined(ANJ_COAP_WITH_UDP)
20# error "At least one binding mode must be enabled"
21#endif // !defined(ANJ_COAP_WITH_TCP) && !defined(ANJ_COAP_WITH_UDP)
22
23#if defined(ANJ_COAP_WITH_UDP) && !defined(ANJ_NET_WITH_UDP)
24# error "if CoAP UDP binding is enabled, NET UDP has to be enabled too"
25#endif // defined(ANJ_COAP_WITH_UDP) && !defined(ANJ_NET_WITH_UDP)
26
27#if defined(ANJ_COAP_WITH_TCP) && !defined(ANJ_NET_WITH_TCP)
28# error "if CoAP TCP binding is enabled, NET TCP has to be enabled too"
29#endif // defined(ANJ_COAP_WITH_TCP) && !defined(ANJ_NET_WITH_TCP)
30
31#if defined(ANJ_WITH_CACHE) && !defined(ANJ_COAP_WITH_UDP)
32# error "Responses caching only makes sense for UDP"
33#endif // defined(ANJ_WITH_CACHE) && !defined(ANJ_COAP_WITH_UDP)
34
35#if defined(ANJ_WITH_LWM2M_CBOR) && !defined(ANJ_WITH_LWM2M12)
36# error "ANJ_WITH_LWM2M_CBOR requires ANJ_WITH_LWM2M12 enabled"
37#endif // defined(ANJ_WITH_LWM2M_CBOR) && !defined(ANJ_WITH_LWM2M12)
38
39#if !defined(ANJ_WITH_SENML_CBOR) && !defined(ANJ_WITH_LWM2M_CBOR)
40# error "At least one of ANJ_WITH_SENML_CBOR or ANJ_WITH_LWM2M_CBOR must be enabled."
41#endif // !defined(ANJ_WITH_SENML_CBOR) && !defined(ANJ_WITH_LWM2M_CBOR)
42
43#if defined(ANJ_WITH_DISCOVER_ATTR) && !defined(ANJ_WITH_OBSERVE)
44# error "if discover attributes are enabled, observe module needs to be enabled"
45#endif // defined(ANJ_WITH_DISCOVER_ATTR) && !defined(ANJ_WITH_OBSERVE)
46
47#if defined(ANJ_WITH_COMPOSITE_OPERATIONS) \
48 && !defined(ANJ_DM_MAX_COMP_READ_ENTRIES)
49# error "if composite operations are enabled, their parameters have to be defined"
50#endif // defined(ANJ_WITH_COMPOSITE_OPERATIONS) &&
51 // !defined(ANJ_DM_MAX_COMP_READ_ENTRIES)
52
53#ifdef ANJ_WITH_OBSERVE
54# if !defined(ANJ_OBSERVE_MAX_OBSERVATIONS_NUMBER) \
55 || !defined(ANJ_OBSERVE_MAX_WRITE_ATTRIBUTES_NUMBER)
56# error "if observe module is enabled, its parameters has to be defined"
57# endif // !defined(ANJ_OBSERVE_MAX_OBSERVATIONS_NUMBER) ||
58 // !defined(ANJ_OBSERVE_MAX_WRITE_ATTRIBUTES_NUMBER)
59#endif // ANJ_WITH_OBSERVE
60
61#if defined(ANJ_WITH_OBSERVE_COMPOSITE) \
62 && (!defined(ANJ_WITH_OBSERVE) \
63 || !defined(ANJ_WITH_COMPOSITE_OPERATIONS))
64# error "if composite observations are enabled, observations and composite operations have to be enabled"
65#endif // defined(ANJ_WITH_OBSERVE_COMPOSITE) && (!defined(ANJ_WITH_OBSERVE) ||
66 // !defined(ANJ_WITH_COMPOSITE_OPERATIONS))
67
68#ifdef ANJ_WITH_LWM2M_SEND
69# if !defined(ANJ_LWM2M_SEND_QUEUE_SIZE)
70# error "if LwM2M Send module is enabled, its parameters has to be defined"
71# endif // !defined(ANJ_LWM2M_SEND_QUEUE_SIZE)
72#endif // ANJ_WITH_LWM2M_SEND
73
74#ifdef ANJ_WITH_DEFAULT_FOTA_OBJ
75# if !defined(ANJ_FOTA_WITH_PULL_METHOD) \
76 && !defined(ANJ_FOTA_WITH_PUSH_METHOD)
77# error "if FW Update object is enabled, at least one of push or pull methods needs to be enabled"
78# endif // !defined(ANJ_FOTA_WITH_PULL_METHOD) &&
79 // !defined(ANJ_FOTA_WITH_PUSH_METHOD)
80
81# if defined(ANJ_FOTA_WITH_PULL_METHOD) && !defined(ANJ_FOTA_WITH_COAP) \
82 && !defined(ANJ_FOTA_WITH_COAPS) && !defined(ANJ_FOTA_WITH_HTTP) \
83 && !defined(ANJ_FOTA_WITH_HTTPS) \
84 && !defined(ANJ_FOTA_WITH_COAP_TCP) \
85 && !defined(ANJ_FOTA_WITH_COAPS_TCP)
86# error "if pull method is enabled, at least one of CoAP, CoAPS, HTTP, HTTPS, TCP or TLS needs to be enabled"
87# endif // defined(ANJ_FOTA_WITH_PULL_METHOD) && !defined(ANJ_FOTA_WITH_COAP)
88 // && !defined(ANJ_FOTA_WITH_COAPS) && !defined(ANJ_FOTA_WITH_HTTP)
89 // && !defined(ANJ_FOTA_WITH_HTTPS) &&
90 // !defined(ANJ_FOTA_WITH_COAP_TCP) &&
91 // !defined(ANJ_FOTA_WITH_COAPS_TCP)
92#endif // ANJ_WITH_DEFAULT_FOTA_OBJ
93
94#ifdef ANJ_WITH_DEFAULT_SECURITY_OBJ
95# if !defined(ANJ_SEC_OBJ_MAX_PUBLIC_KEY_OR_IDENTITY_SIZE) \
96 || !defined(ANJ_SEC_OBJ_MAX_SERVER_PUBLIC_KEY_SIZE) \
97 || !defined(ANJ_SEC_OBJ_MAX_SECRET_KEY_SIZE)
98# error "if default Security Object is enabled, its parameters needs to be defined"
99# endif // !defined(ANJ_SEC_OBJ_MAX_PUBLIC_KEY_OR_IDENTITY_SIZE) ||
100 // !defined(ANJ_SEC_OBJ_MAX_SERVER_PUBLIC_KEY_SIZE) ||
101 // !defined(ANJ_SEC_OBJ_MAX_SECRET_KEY_SIZE)
102#endif // ANJ_WITH_DEFAULT_SECURITY_OBJ
103
104#ifdef ANJ_WITH_COAP_DOWNLOADER
105# if !defined(ANJ_COAP_DOWNLOADER_MAX_MSG_SIZE) \
106 || !defined(ANJ_COAP_DOWNLOADER_MAX_PATHS_NUMBER)
107# error "if CoAP Downloader module is enabled, its parameters has to be defined"
108# endif
109#endif // ANJ_WITH_COAP_DOWNLOADER
110
111#ifdef ANJ_LOG_FULL
112# define _ANJ_LOG_FULL_ENABLED 1
113#else // ANJ_LOG_FULL
114# define _ANJ_LOG_FULL_ENABLED 0
115#endif // ANJ_LOG_FULL
116
117#ifdef ANJ_LOG_ALT_IMPL_HEADER
118# define _ANJ_LOG_ALT_IMPL_HEADER_ENABLED 1
119#else // ANJ_LOG_ALT_IMPL_HEADER
120# define _ANJ_LOG_ALT_IMPL_HEADER_ENABLED 0
121#endif // ANJ_LOG_ALT_IMPL_HEADER
122
123#define _ANJ_LOG_TYPES_ENABLED \
124 (_ANJ_LOG_FULL_ENABLED + _ANJ_LOG_ALT_IMPL_HEADER_ENABLED)
125
126#if _ANJ_LOG_TYPES_ENABLED > 1
127# error "Only one logger type can be enabled at a time."
128#endif // _ANJ_LOG_TYPES_ENABLED > 1
129
130#ifdef ANJ_LOG_HANDLER_OUTPUT_STDERR
131# define _ANJ_LOG_HANDLER_OUTPUT_STDERR_ENABLED 1
132#else // ANJ_LOG_HANDLER_OUTPUT_STDERR
133# define _ANJ_LOG_HANDLER_OUTPUT_STDERR_ENABLED 0
134#endif // ANJ_LOG_HANDLER_OUTPUT_STDERR
135
136#ifdef ANJ_LOG_HANDLER_OUTPUT_ALT
137# define _ANJ_LOG_HANDLER_OUTPUT_ALT_ENABLED 1
138#else // ANJ_LOG_HANDLER_OUTPUT_ALT
139# define _ANJ_LOG_HANDLER_OUTPUT_ALT_ENABLED 0
140#endif // ANJ_LOG_HANDLER_OUTPUT_ALT
141
142#define _ANJ_LOG_HANDLER_OUTPUT_TYPES_ENABLED \
143 (_ANJ_LOG_HANDLER_OUTPUT_STDERR_ENABLED \
144 + _ANJ_LOG_HANDLER_OUTPUT_ALT_ENABLED)
145
146#if _ANJ_LOG_HANDLER_OUTPUT_TYPES_ENABLED > 1
147# error "Only one log handler output type can be enabled at a time."
148#endif // _ANJ_LOG_HANDLER_OUTPUT_TYPES_ENABLED > 1
149
150#if _ANJ_LOG_TYPES_ENABLED == 1
151# define _ANJ_LOG_ENABLED
152#endif // _ANJ_LOG_TYPES_ENABLED == 1
153
154#if defined(_ANJ_LOG_ENABLED) && !defined(ANJ_LOG_ALT_IMPL_HEADER)
155# define _ANJ_LOG_USES_BUILTIN_HANDLER_IMPL
156
157# if _ANJ_LOG_HANDLER_OUTPUT_TYPES_ENABLED == 0
158# error "Log handler output type must be defined when using built-in log handler implementation."
159# endif // _ANJ_LOG_HANDLER_OUTPUT_TYPES_ENABLED == 0
160
161# if !defined(ANJ_LOG_FORMATTER_BUF_SIZE) || ANJ_LOG_FORMATTER_BUF_SIZE <= 0
162# error "Log formatter buffer size must be greater than 0 when using built-in log handler implementation."
163# endif // !defined(ANJ_LOG_FORMATTER_BUF_SIZE) || ANJ_LOG_FORMATTER_BUF_SIZE
164 // <= 0
165#endif // defined(_ANJ_LOG_ENABLED) && !defined(ANJ_LOG_ALT_IMPL_HEADER)
166
167#ifdef __cplusplus
168}
169#endif
170
171#endif // ANJ_INIT_H