2 #if !defined TARGET_NATIVE
8 /// General Features ///
9 #define LED_MAX_BRIGHTNESS 50 //0..255 for max led brightness
11 /////////////////////////
13 #define WORD_ALIGNED_ATTR __attribute__((aligned(4)))
16 /* ICACHE_RAM_ATTR1 is always linked into RAM */
17 #define ICACHE_RAM_ATTR1 __section(".ram_code")
18 /* ICACHE_RAM_ATTR2 is linked into RAM only if enough space */
20 #define ICACHE_RAM_ATTR2
22 #define ICACHE_RAM_ATTR2 __section(".ram_code")
24 #define ICACHE_RAM_ATTR //nothing//
26 #undef ICACHE_RAM_ATTR //fix to allow both esp32 and esp8266 to use ICACHE_RAM_ATTR for mapping to IRAM
27 #define ICACHE_RAM_ATTR IRAM_ATTR
30 #if defined(TARGET_NATIVE)
41 * define features based on pins before defining pins as UNDEF_PIN
43 #if defined(GPIO_PIN_FAN_EN)
46 #if defined(USE_OLED_I2C) || defined(USE_OLED_SPI) || defined(USE_OLED_SPI_SMALL) || defined(HAS_TFT_SCREEN)
49 #if defined(GPIO_PIN_SPI_VTX_NSS)
50 #if !defined(HAS_VTX_SPI)
53 #define OPT_HAS_VTX_SPI true
56 #define OPT_HAS_VTX_SPI false
59 #ifndef USE_TX_BACKPACK
60 #define OPT_USE_TX_BACKPACK false
61 #elif !defined(OPT_USE_TX_BACKPACK)
62 #define OPT_USE_TX_BACKPACK true
66 #define OPT_HAS_THERMAL false
67 #elif !defined(OPT_HAS_THERMAL)
68 #define OPT_HAS_THERMAL true
72 #define OPT_HAS_GSENSOR false
73 #elif !defined(OPT_HAS_GSENSOR)
74 #define OPT_HAS_GSENSOR true
77 #if defined(GPIO_PIN_SDA) && defined(GPIO_PIN_SCL)
80 #define GPIO_PIN_SDA UNDEF_PIN
81 #define GPIO_PIN_SCL UNDEF_PIN
84 #ifndef GPIO_PIN_BUFFER_OE
85 #define GPIO_PIN_BUFFER_OE UNDEF_PIN
88 #define GPIO_PIN_SCK UNDEF_PIN
90 #ifndef GPIO_PIN_NSS_2
91 #define GPIO_PIN_NSS_2 UNDEF_PIN
94 #define GPIO_PIN_RST UNDEF_PIN
97 #define GPIO_PIN_BUSY UNDEF_PIN
99 #ifndef GPIO_PIN_BUSY_2
100 #define GPIO_PIN_BUSY_2 UNDEF_PIN
102 #ifndef GPIO_PIN_DIO0
103 #define GPIO_PIN_DIO0 UNDEF_PIN
105 #ifndef GPIO_PIN_DIO0_2
106 #define GPIO_PIN_DIO0_2 UNDEF_PIN
108 #ifndef GPIO_PIN_DIO1
109 #define GPIO_PIN_DIO1 UNDEF_PIN
111 #ifndef GPIO_PIN_DIO1_2
112 #define GPIO_PIN_DIO1_2 UNDEF_PIN
114 #ifndef GPIO_PIN_DIO2
115 #define GPIO_PIN_DIO2 UNDEF_PIN
117 #ifndef GPIO_PIN_PA_ENABLE
118 #define GPIO_PIN_PA_ENABLE UNDEF_PIN
120 #ifndef GPIO_PIN_RX_ENABLE
121 #define GPIO_PIN_RX_ENABLE UNDEF_PIN
123 #ifndef GPIO_PIN_RX_ENABLE_2
124 #define GPIO_PIN_RX_ENABLE_2 UNDEF_PIN
126 #ifndef GPIO_PIN_TX_ENABLE
127 #define GPIO_PIN_TX_ENABLE UNDEF_PIN
129 #ifndef GPIO_PIN_TX_ENABLE_2
130 #define GPIO_PIN_TX_ENABLE_2 UNDEF_PIN
132 #ifndef GPIO_PIN_ANT_CTRL
133 #define GPIO_PIN_ANT_CTRL UNDEF_PIN
135 #ifndef GPIO_PIN_ANT_CTRL_COMPL
136 #define GPIO_PIN_ANT_CTRL_COMPL UNDEF_PIN
138 #ifndef GPIO_PIN_RFamp_APC1
139 #define GPIO_PIN_RFamp_APC1 UNDEF_PIN
141 #ifndef GPIO_PIN_RFamp_APC2
142 #define GPIO_PIN_RFamp_APC2 UNDEF_PIN
144 #ifndef POWER_OUTPUT_FIXED
145 #define POWER_OUTPUT_FIXED -99
147 #ifndef GPIO_PIN_FAN_EN
148 #define GPIO_PIN_FAN_EN UNDEF_PIN
150 #ifndef GPIO_PIN_FAN_PWM
151 #define GPIO_PIN_FAN_PWM UNDEF_PIN
153 #ifndef GPIO_PIN_FAN_TACHO
154 #define GPIO_PIN_FAN_TACHO UNDEF_PIN
156 #ifndef GPIO_PIN_OLED_MOSI
157 #define GPIO_PIN_OLED_MOSI UNDEF_PIN
159 #ifndef GPIO_PIN_OLED_CS
160 #define GPIO_PIN_OLED_CS UNDEF_PIN
162 #ifndef GPIO_PIN_OLED_DC
163 #define GPIO_PIN_OLED_DC UNDEF_PIN
167 #ifndef GPIO_PIN_FIVE_WAY_INPUT1
168 #define GPIO_PIN_FIVE_WAY_INPUT1 UNDEF_PIN
170 #ifndef GPIO_PIN_FIVE_WAY_INPUT2
171 #define GPIO_PIN_FIVE_WAY_INPUT2 UNDEF_PIN
173 #ifndef GPIO_PIN_FIVE_WAY_INPUT3
174 #define GPIO_PIN_FIVE_WAY_INPUT3 UNDEF_PIN
178 #ifndef GPIO_PIN_OLED_SCK
179 #define GPIO_PIN_OLED_SCK GPIO_PIN_SCL
181 #ifndef GPIO_PIN_OLED_SDA
182 #define GPIO_PIN_OLED_SDA GPIO_PIN_SDA
185 #if !defined(BACKPACK_LOGGING_BAUD)
186 #define BACKPACK_LOGGING_BAUD 460800
188 #ifndef GPIO_PIN_BACKPACK_BOOT
189 #define GPIO_PIN_BACKPACK_BOOT UNDEF_PIN
192 #ifndef GPIO_PIN_SPI_VTX_NSS
193 #define GPIO_PIN_SPI_VTX_NSS UNDEF_PIN
197 #if defined(TARGET_TX)
198 #if defined(PLATFORM_ESP32)
199 #ifndef GPIO_PIN_DEBUG_RX
200 #define GPIO_PIN_DEBUG_RX 3
202 #ifndef GPIO_PIN_DEBUG_TX
203 #define GPIO_PIN_DEBUG_TX 1
205 #elif defined(PLATFORM_ESP8266)
206 #ifndef GPIO_PIN_DEBUG_RX
207 #define GPIO_PIN_DEBUG_RX UNDEF_PIN
209 #ifndef GPIO_PIN_DEBUG_TX
210 #define GPIO_PIN_DEBUG_TX UNDEF_PIN
213 #if !defined(TARGET_UNIFIED_TX)
214 #if defined(DEBUG_LOG) || defined(DEBUG_LOG_VERBOSE) || defined(USE_TX_BACKPACK)
215 #if GPIO_PIN_RCSIGNAL_TX == GPIO_PIN_DEBUG_TX || GPIO_PIN_RCSIGNAL_TX == GPIO_PIN_DEBUG_RX
216 #error "Cannot debug out the RC signal port!"
218 #if !defined(GPIO_PIN_DEBUG_RX) || !defined(GPIO_PIN_DEBUG_TX) || GPIO_PIN_DEBUG_RX == UNDEF_PIN || GPIO_PIN_DEBUG_TX == UNDEF_PIN
219 #error "When using DEBUG_LOG, DEBUG_LOG_VERBOSE or USE_TX_BACKPACK you must define both GPIO_PIN_DEBUG_RX and GPIO_PIN_DEBUG_TX"
224 #ifndef GPIO_PIN_RCSIGNAL_TX_SBUS
225 #define GPIO_PIN_RCSIGNAL_TX_SBUS UNDEF_PIN
227 #ifndef GPIO_PIN_RCSIGNAL_RX_SBUS
228 #define GPIO_PIN_RCSIGNAL_RX_SBUS UNDEF_PIN
230 #if defined(PLATFORM_ESP8266)
231 #ifndef GPIO_PIN_DEBUG_RX
232 #define GPIO_PIN_DEBUG_RX 3
234 #ifndef GPIO_PIN_DEBUG_TX
235 #define GPIO_PIN_DEBUG_TX 1
240 #if defined(DEBUG_CRSF_NO_OUTPUT)
241 #define OPT_CRSF_RCVR_NO_SERIAL true
242 #elif defined(TARGET_UNIFIED_RX)
243 extern bool pwmSerialDefined
;
245 #define OPT_CRSF_RCVR_NO_SERIAL (GPIO_PIN_RCSIGNAL_RX == UNDEF_PIN && GPIO_PIN_RCSIGNAL_TX == UNDEF_PIN && !pwmSerialDefined)
247 #define OPT_CRSF_RCVR_NO_SERIAL false
250 #if defined(USE_ANALOG_VBAT) && !defined(GPIO_ANALOG_VBAT)
251 #define GPIO_ANALOG_VBAT A0
252 #if !defined(ANALOG_VBAT_SCALE)
253 #define ANALOG_VBAT_SCALE 1
257 #if defined(RADIO_SX128X)
258 #define Regulatory_Domain_ISM_2400 1
259 // ISM 2400 band is in use => undefine other requlatory domain defines
260 #undef Regulatory_Domain_AU_915
261 #undef Regulatory_Domain_EU_868
262 #undef Regulatory_Domain_IN_866
263 #undef Regulatory_Domain_FCC_915
264 #undef Regulatory_Domain_AU_433
265 #undef Regulatory_Domain_EU_433
267 #elif defined(RADIO_SX127X)
268 #if !(defined(Regulatory_Domain_AU_915) || defined(Regulatory_Domain_FCC_915) || \
269 defined(Regulatory_Domain_EU_868) || defined(Regulatory_Domain_IN_866) || \
270 defined(Regulatory_Domain_AU_433) || defined(Regulatory_Domain_EU_433) || \
272 #error "Regulatory_Domain is not defined for 900MHz device. Check user_defines.txt!"
275 #error "Either RADIO_SX127X or RADIO_SX128X must be defined!"
278 #if defined(TARGET_UNIFIED_TX) || defined(TARGET_UNIFIED_RX)
279 #include "hardware.h"