RDMnet  0.3.0
Implementation of ANSI E1.33 (RDMnet)
View other versions:
opts.h
Go to the documentation of this file.
1 /******************************************************************************
2  * Copyright 2020 ETC Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  ******************************************************************************
16  * This file is a part of RDMnet. For more information, go to:
17  * https://github.com/ETCLabs/RDMnet
18  *****************************************************************************/
19 
27 #ifndef RDMNET_CORE_OPTS_H_
28 #define RDMNET_CORE_OPTS_H_
29 
39 #if RDMNET_HAVE_CONFIG_H
40 #include "rdmnet_config.h"
41 #endif
42 
43 #include "etcpal/thread.h"
44 
45 /* Some option hints based on well-known compile definitions */
46 
49 /* Are we being compiled for a full-featured OS? */
50 #if defined(_WIN32) || defined(__APPLE__) || defined(__linux__) || defined(__unix__) || defined(_POSIX_VERSION)
51 #define RDMNET_FULL_OS_AVAILABLE_HINT 1
52 #else
53 #define RDMNET_FULL_OS_AVAILABLE_HINT 0
54 #endif
55 
56 /* Are we being compiled in/for a Microsoft Windows environment? */
57 #ifdef _WIN32
58 #define RDMNET_WINDOWS_HINT 1
59 #else
60 #define RDMNET_WINDOWS_HINT 0
61 #endif
62 
65 /********************************* Global ************************************/
66 
90 #ifndef RDMNET_DYNAMIC_MEM
91 #define RDMNET_DYNAMIC_MEM RDMNET_FULL_OS_AVAILABLE_HINT
92 #endif
93 
97 #ifndef RDMNET_LOG_MSG_PREFIX
98 #define RDMNET_LOG_MSG_PREFIX "RDMnet: "
99 #endif
100 
107 #ifndef RDMNET_ASSERT
108 #include <assert.h>
109 #define RDMNET_ASSERT(expr) assert(expr)
110 #endif
111 
133 #ifndef RDMNET_MAX_CONTROLLERS
134 #define RDMNET_MAX_CONTROLLERS 0
135 #endif
136 
143 #ifndef RDMNET_MAX_DEVICES
144 #define RDMNET_MAX_DEVICES 1
145 #endif
146 
152 #ifndef RDMNET_MAX_EPT_CLIENTS
153 #define RDMNET_MAX_EPT_CLIENTS 0
154 #endif
155 
161 #ifndef RDMNET_MAX_SCOPES_PER_CONTROLLER
162 #define RDMNET_MAX_SCOPES_PER_CONTROLLER 1
163 #endif
164 
170 #ifndef RDMNET_MAX_ENDPOINTS_PER_DEVICE
171 #define RDMNET_MAX_ENDPOINTS_PER_DEVICE 1
172 #endif
173 
179 #ifndef RDMNET_MAX_RESPONDERS_PER_DEVICE_ENDPOINT
180 #define RDMNET_MAX_RESPONDERS_PER_DEVICE_ENDPOINT 1
181 #endif
182 
188 #ifndef RDMNET_MAX_PROTOCOLS_PER_EPT_CLIENT
189 #define RDMNET_MAX_PROTOCOLS_PER_EPT_CLIENT 5
190 #endif
191 
203 #ifndef RDMNET_MAX_SENT_ACK_OVERFLOW_RESPONSES
204 #define RDMNET_MAX_SENT_ACK_OVERFLOW_RESPONSES 2
205 #endif
206 
213 #ifdef RDMNET_MAX_RPT_CLIENTS
214 #undef RDMNET_MAX_RPT_CLIENTS
215 #endif
216 #define RDMNET_MAX_RPT_CLIENTS (RDMNET_MAX_CONTROLLERS + RDMNET_MAX_DEVICES)
217 
218 #ifdef RDMNET_MAX_CLIENTS
219 #undef RDMNET_MAX_CLIENTS
220 #endif
221 #define RDMNET_MAX_CLIENTS (RDMNET_MAX_RPT_CLIENTS + RDMNET_MAX_EPT_CLIENTS)
222 
223 #if !RDMNET_MAX_CLIENTS
224 #undef RDMNET_MAX_CLIENTS
225 #define RDMNET_MAX_CLIENTS 1
226 #endif
227 
228 #if RDMNET_MAX_SENT_ACK_OVERFLOW_RESPONSES < 1
229 #undef RDMNET_MAX_SENT_ACK_OVERFLOW_RESPONSES
230 #define RDMNET_MAX_SENT_ACK_OVERFLOW_RESPONSES 1
231 #endif
232 
233 #ifndef RDMNET_MAX_CONNECTIONS
234 #define RDMNET_MAX_CONNECTIONS RDMNET_MAX_CLIENTS
235 #endif
236 
237 #if RDMNET_MAX_CONNECTIONS < 1
238 #undef RDMNET_MAX_CONNECTIONS
239 #define RDMNET_MAX_CONNECTIONS 1
240 #endif
241 
261 #ifndef RDMNET_PARSER_MAX_CLIENT_ENTRIES
262 #define RDMNET_PARSER_MAX_CLIENT_ENTRIES 5
263 #endif
264 
265 #if RDMNET_PARSER_MAX_CLIENT_ENTRIES < 1
266 #undef RDMNET_PARSER_MAX_CLIENT_ENTRIES
267 #define RDMNET_PARSER_MAX_CLIENT_ENTRIES 1
268 #endif
269 
276 #ifndef RDMNET_PARSER_MAX_EPT_SUBPROTS
277 #define RDMNET_PARSER_MAX_EPT_SUBPROTS 5
278 #endif
279 
280 #if RDMNET_PARSER_MAX_EPT_SUBPROTS < 1
281 #undef RDMNET_PARSER_MAX_EPT_SUBPROTS
282 #define RDMNET_PARSER_MAX_EPT_SUBPROTS 1
283 #endif
284 
292 #ifndef RDMNET_PARSER_MAX_DYNAMIC_UID_ENTRIES
293 #define RDMNET_PARSER_MAX_DYNAMIC_UID_ENTRIES 5
294 #endif
295 
296 #if RDMNET_PARSER_MAX_DYNAMIC_UID_ENTRIES < 1
297 #undef RDMNET_PARSER_MAX_DYNAMIC_UID_ENTRIES
298 #define RDMNET_PARSER_MAX_DYNAMIC_UID_ENTRIES 1
299 #endif
300 
309 #ifndef RDMNET_PARSER_MAX_ACK_OVERFLOW_RESPONSES
310 #define RDMNET_PARSER_MAX_ACK_OVERFLOW_RESPONSES 5
311 #endif
312 
313 #if RDMNET_PARSER_MAX_ACK_OVERFLOW_RESPONSES < 1
314 #undef RDMNET_PARSER_MAX_ACK_OVERFLOW_RESPONSES
315 #define RDMNET_PARSER_MAX_ACK_OVERFLOW_RESPONSES 1
316 #endif
317 
326 #ifndef RDMNET_MAX_MCAST_NETINTS
327 #define RDMNET_MAX_MCAST_NETINTS 3
328 #endif
329 
330 #if RDMNET_MAX_MCAST_NETINTS < 1
331 #undef RDMNET_MAX_MCAST_NETINTS
332 #define RDMNET_MAX_MCAST_NETINTS 1
333 #endif
334 
343 #ifndef RDMNET_BIND_MCAST_SOCKETS_TO_MCAST_ADDRESS
344 #define RDMNET_BIND_MCAST_SOCKETS_TO_MCAST_ADDRESS !RDMNET_WINDOWS_HINT
345 #endif
346 
352 #ifndef RDMNET_TICK_THREAD_PRIORITY
353 #define RDMNET_TICK_THREAD_PRIORITY ETCPAL_THREAD_DEFAULT_PRIORITY
354 #endif
355 
361 #ifndef RDMNET_TICK_THREAD_STACK
362 #define RDMNET_TICK_THREAD_STACK (ETCPAL_THREAD_DEFAULT_STACK * 2)
363 #endif
364 
382 #ifndef RDMNET_MAX_MONITORED_SCOPES
383 #define RDMNET_MAX_MONITORED_SCOPES ((RDMNET_MAX_SCOPES_PER_CONTROLLER * RDMNET_MAX_CONTROLLERS) + RDMNET_MAX_DEVICES)
384 #endif
385 
391 #ifndef RDMNET_MAX_DISCOVERED_BROKERS_PER_SCOPE
392 #define RDMNET_MAX_DISCOVERED_BROKERS_PER_SCOPE 1
393 #endif
394 
402 #ifndef RDMNET_MAX_ADDRS_PER_DISCOVERED_BROKER
403 #define RDMNET_MAX_ADDRS_PER_DISCOVERED_BROKER 2
404 #endif
405 
406 #if !RDMNET_MAX_ADDRS_PER_DISCOVERED_BROKER
407 #error "RDMNET_MAX_ADDRS_PER_DISCOVERED_BROKER must be at least 1"
408 #endif
409 
416 #ifndef RDMNET_MAX_ADDITIONAL_TXT_ITEMS_PER_DISCOVERED_BROKER
417 #define RDMNET_MAX_ADDITIONAL_TXT_ITEMS_PER_DISCOVERED_BROKER 5
418 #endif
419 
420 #if RDMNET_MAX_ADDITIONAL_TXT_ITEMS_PER_DISCOVERED_BROKER < 1
421 #undef RDMNET_MAX_ADDITIONAL_TXT_ITEMS_PER_DISCOVERED_BROKER
422 #define RDMNET_MAX_ADDITIONAL_TXT_ITEMS_PER_DISCOVERED_BROKER 1
423 #endif
424 
442 #ifndef RDMNET_MAX_LLRP_TARGETS
443 #define RDMNET_MAX_LLRP_TARGETS RDMNET_MAX_CLIENTS
444 #endif
445 
448 #if RDMNET_MAX_LLRP_TARGETS
449 #define RC_MAX_LLRP_TARGETS RDMNET_MAX_LLRP_TARGETS
450 #else
451 #define RC_MAX_LLRP_TARGETS 1
452 #endif
453 
460 #endif /* RDMNET_CORE_OPTS_H_ */