Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
openmrn_features.h
Go to the documentation of this file.
1
37#ifndef _INCLUDE_OPENMRN_FEATURES_
38#define _INCLUDE_OPENMRN_FEATURES_
39
40#ifdef ESP_PLATFORM
41#include <esp_idf_version.h>
42#else
43#define ESP_IDF_VERSION 0
44#define ESP_IDF_VERSION_VAL(a,b,c) 1
45#endif // ESP_PLATFORM
46
47#ifdef __FreeRTOS__
49#define OPENMRN_FEATURE_DEVICE_SELECT 1
51#define OPENMRN_FEATURE_DEVTAB 1
54#define OPENMRN_FEATURE_REENT 1
55#endif
56
57#if defined(__FreeRTOS__) || defined(ESP_PLATFORM)
58// Note: this is not using OPENMRN_FEATURE_DEVICE_SELECT due to other usages
59// of that macro which may conflict with the ESP32 version of this feature.
61#define OPENMRN_FEATURE_FD_CAN_DEVICE 1
62#endif
63
64#if defined(__linux__) || defined(__MACH__) || defined(__WINNT__) || \
65 defined(ESP_PLATFORM) || defined(OPENMRN_FEATURE_DEVTAB)
69#define OPENMRN_HAVE_POSIX_FD 1
70#endif
71
72#if !defined(ESP_PLATFORM)
74#define OPENMRN_HAVE_SOCKET_FSTAT 1
75#endif
76
78#if !defined(__FreeRTOS__) && !defined(__WINNT__) && !defined(ESP_PLATFORM) && \
79 !defined(ARDUINO) && !defined(ESP_NONOS)
81#define OPENMRN_HAVE_PSELECT 1
82#endif
83
84#if defined(__WINNT__) || defined(ESP_PLATFORM) || defined(ESP_NONOS)
86#define OPENMRN_HAVE_SELECT 1
87#endif
88
89#if defined(OPENMRN_HAVE_SELECT) || defined(OPENMRN_HAVE_PSELECT) || \
90 defined(OPENMRN_FEATURE_DEVICE_SELECT)
91#define OPENMRN_FEATURE_EXECUTOR_SELECT 1
92#endif
93
94#if (defined(ARDUINO) && !defined(ESP_PLATFORM)) || defined(ESP_NONOS) || \
95 defined(__EMSCRIPTEN__)
97#define OPENMRN_FEATURE_SINGLE_THREADED 1
98#endif
99
100#if defined(__FreeRTOS__) || defined(ESP_PLATFORM)
102#define OPENMRN_FEATURE_MUTEX_FREERTOS 1
103
105#define OPENMRN_FEATURE_RTOS_FROM_ISR 1
106#elif OPENMRN_FEATURE_SINGLE_THREADED
109#define OPENMRN_FEATURE_MUTEX_FAKE 1
110#else
112#define OPENMRN_FEATURE_MUTEX_PTHREAD 1
113#endif
114
115#if OPENMRN_FEATURE_MUTEX_FREERTOS || OPENMRN_FEATURE_MUTEX_PTHREAD || \
116 defined(__EMSCRIPTEN__)
118#define OPENMRN_FEATURE_SEM_TIMEDWAIT 1
119#endif
120
121#if defined(__FreeRTOS__) || defined(ESP_PLATFORM)
124#define OPENMRN_FEATURE_THREAD_FREERTOS 1
125#elif OPENMRN_FEATURE_SINGLE_THREADED
126#else
128#define OPENMRN_FEATURE_THREAD_PTHREAD 1
129#if !defined (__MINGW32__) && !defined (__MACH__)
131#define OPENMRN_HAVE_PTHREAD_SETNAME 1
132#endif
133#if !defined(__linux__) && !defined(__MACH__)
136#define OPENMRN_FEATURE_PTHREAD_SETSTACK 1
137#endif
138#endif
139
140#if defined(__linux__) || defined(__MACH__) || defined(__FreeRTOS__) || \
141 defined(ESP_PLATFORM)
143#define OPENMRN_FEATURE_BSD_SOCKETS 1
144
145#ifndef __FreeRTOS__
148#define OPENMRN_HAVE_BSD_SOCKETS_RX_TIMEOUT 1
149#endif
150
151#if !defined(__FreeRTOS__) && !defined(ESP_PLATFORM)
154#define OPENMRN_HAVE_BSD_SOCKETS_GETSOCKNAME 1
155#endif
156
157#if defined(__linux__)
159#define OPENMRN_HAVE_BSD_SOCKETS_IPV6 1
160#endif
161
162#if defined(__linux__) || defined(__MACH__)
164#define OPENMRN_FEATURE_BSD_SOCKETS_IGNORE_SIGPIPE 1
165#endif
166
167#if defined(__linux__) || defined(__MACH__) || defined(ESP_PLATFORM)
169#define OPENMRN_FEATURE_BSD_SOCKETS_REPORT_EOF_ERROR 1
170#endif
171
172#endif
173
174#if !defined(__MACH__)
177#define OPENMRN_FEATURE_REBOOT 1
178#endif
179
180
181#endif // _INCLUDE_OPENMRN_FEATURES_