2016-10-16 19:51:42 +02:00
// Check selected board type
# if defined (STM32_BOARD) && defined (ORANGE_TX)
# error You must comment the board type STM32_BOARD in _Config.h to compile ORANGE_TX
# endif
# if not defined (ORANGE_TX) && not defined (STM32_BOARD)
//Atmega328p
2017-11-20 17:04:38 +01:00
# if not defined(ARDUINO_AVR_PRO) && not defined(ARDUINO_MULTI_NO_BOOT) && not defined(ARDUINO_MULTI_FLASH_FROM_TX) && not defined(ARDUINO_AVR_MINI) && not defined(ARDUINO_AVR_NANO)
2016-10-18 09:27:14 +02:00
# error You must select one of these boards: "Multi 4-in-1", "Arduino Pro or Pro Mini" or "Arduino Mini"
2016-10-16 19:51:42 +02:00
# endif
# if F_CPU != 16000000L || not defined(__AVR_ATmega328P__)
# error You must select the processor type "ATmega328(5V, 16MHz)"
# endif
# endif
# if defined (STM32_BOARD) && not defined (ORANGE_TX)
//STM32
2018-08-10 20:11:32 +01:00
# if not defined(ARDUINO_GENERIC_STM32F103C) && not defined(ARDUINO_MULTI_STM32_FLASH_FROM_TX) && not defined(ARDUINO_MULTI_STM32_NO_BOOT) && not defined(ARDUINO_MULTI_STM32_WITH_BOOT)
2017-11-27 21:19:49 +00:00
# error You must select one of these boards: "Multi 4-in-1 (STM32F103CB)" or "Generic STM32F103C series"
2016-10-16 19:51:42 +02:00
# endif
# endif
2019-08-01 14:23:08 +02:00
// Check for minimum board file definition version for DIY multi-module boards
2019-10-04 10:14:52 +02:00
# define MIN_AVR_BOARD 110
# define MIN_ORX_BOARD 110
# define MIN_STM32_BOARD 117
2017-12-20 11:31:20 +00:00
//AVR
# if (defined(ARDUINO_MULTI_NO_BOOT) && ARDUINO_MULTI_NO_BOOT < MIN_AVR_BOARD) || (defined(ARDUINO_MULTI_FLASH_FROM_TX) && ARDUINO_MULTI_FLASH_FROM_TX < MIN_AVR_BOARD)
# error You need to update your Multi 4-in-1 board definition. Open Boards Manager and update to the latest version of the Multi 4-in-1 AVR Boards.
# endif
//OrangeRX
# if (defined(ARDUINO_MULTI_ORANGERX) && ARDUINO_MULTI_ORANGERX < MIN_ORX_BOARD)
# error You need to update your Multi 4-in-1 board definition. Open Boards Manager and update to the latest version of the Multi 4-in-1 AVR Boards.
# endif
//STM32
2018-08-10 20:11:32 +01:00
# if (defined(ARDUINO_MULTI_STM32_NO_BOOT) && ARDUINO_MULTI_STM32_NO_BOOT < MIN_STM32_BOARD) || (defined(ARDUINO_MULTI_STM32_FLASH_FROM_TX) && ARDUINO_MULTI_STM32_FLASH_FROM_TX < MIN_STM32_BOARD) || (defined(ARDUINO_MULTI_STM32_WITH_BOOT) && ARDUINO_MULTI_STM32_WITH_BOOT < MIN_STM32_BOARD)
2017-12-20 11:31:20 +00:00
# error You need to update your Multi 4-in-1 board definition. Open Boards Manager and update to the latest version of the Multi 4-in-1 STM32 Board.
# endif
2019-09-06 13:05:57 +01:00
// Enable serial debugging if a debugging option was chosen in the IDE
# ifdef ARDUINO_MULTI_DEBUG
# define DEBUG_SERIAL
# endif
2017-11-28 10:13:52 +00:00
// Error if CHECK_FOR_BOOTLOADER is not enabled but a FLASH_FROM_TX board is selected
# if (defined(ARDUINO_MULTI_FLASH_FROM_TX) || defined(ARDUINO_MULTI_STM32_FLASH_FROM_TX)) &! defined(CHECK_FOR_BOOTLOADER)
# if defined(STM32_BOARD)
2017-12-07 21:42:23 +01:00
# error "You have selected the 'Flash from TX' upload method but not enabled CHECK_FOR_BOOTLOADER."
# else
# error "You have selected the 'Flash from TX' bootloader but not enabled CHECK_FOR_BOOTLOADER."
# endif
2017-11-20 17:04:38 +01:00
# endif
2017-11-28 09:21:03 +00:00
2019-08-24 21:50:36 +02:00
// Warning if CHECK_FOR_BOOTLOADER is enabled but no bootloader
2018-01-24 10:17:23 +01:00
# if defined(ARDUINO_MULTI_NO_BOOT) && defined(CHECK_FOR_BOOTLOADER)
2019-08-24 21:50:36 +02:00
# undef CHECK_FOR_BOOTLOADER
# warning "Disabling CHECK_FOR_BOOTLOADER since no bootloader is selected."
2017-12-07 21:42:23 +01:00
# endif
2018-01-30 12:02:45 +01:00
//Check number of banks
# if NBR_BANKS < 1 || NBR_BANKS > 5
# error "You need to select a number of banks between 1 and 5."
# endif
2017-12-07 21:42:23 +01:00
//Check failsafe throttle value
# ifdef FAILSAFE_ENABLE
# if ( FAILSAFE_THROTTLE_LOW < -125 ) || ( FAILSAFE_THROTTLE_LOW > 125 )
# error "The failsafe value for throttle is outside of the range -125..125."
# endif
2017-11-20 17:04:38 +01:00
# endif
2017-12-19 19:14:49 +00:00
// Check forced tuning values are valid
2019-08-17 22:37:00 +02:00
//CC2500
# ifdef FORCE_CORONA_TUNING
# if ( FORCE_CORONA_TUNING < -127 ) || ( FORCE_CORONA_TUNING > 127 )
# error "The CORONA forced frequency tuning value is outside of the range -127..127."
# endif
# endif
2017-12-19 19:14:49 +00:00
# ifdef FORCE_FRSKYD_TUNING
# if ( FORCE_FRSKYD_TUNING < -127 ) || ( FORCE_FRSKYD_TUNING > 127 )
# error "The FrSkyD forced frequency tuning value is outside of the range -127..127."
# endif
# endif
# ifdef FORCE_FRSKYV_TUNING
# if ( FORCE_FRSKYV_TUNING < -127 ) || ( FORCE_FRSKYV_TUNING > 127 )
# error "The FrSkyV forced frequency tuning value is outside of the range -127..127."
# endif
# endif
# ifdef FORCE_FRSKYX_TUNING
# if ( FORCE_FRSKYX_TUNING < -127 ) || ( FORCE_FRSKYX_TUNING > 127 )
# error "The FrSkyX forced frequency tuning value is outside of the range -127..127."
# endif
# endif
2019-08-17 22:37:00 +02:00
# ifdef FORCE_HITEC_TUNING
# if ( FORCE_HITEC_TUNING < -127 ) || ( FORCE_HITEC_TUNING > 127 )
# error "The HITEC forced frequency tuning value is outside of the range -127..127."
2018-01-03 13:04:58 +01:00
# endif
# endif
2019-06-17 17:16:39 +02:00
# ifdef FORCE_REDPINE_TUNING
# if ( FORCE_REDPINE_TUNING < -127 ) || ( FORCE_REDPINE_TUNING > 127 )
# error "The REDPINE forced frequency tuning value is outside of the range -127..127."
# endif
# endif
2019-08-17 22:37:00 +02:00
# ifdef FORCE_SFHSS_TUNING
# if ( FORCE_SFHSS_TUNING < -127 ) || ( FORCE_SFHSS_TUNING > 127 )
# error "The SFHSS forced frequency tuning value is outside of the range -127..127."
# endif
# endif
//A7105
# ifdef FORCE_AFHDS2A_TUNING
# if ( FORCE_AFHDS2A_TUNING < -300 ) || ( FORCE_AFHDS2A_TUNING > 300 )
# error "The AFHDS2A forced frequency tuning value is outside of the range -300..300."
# endif
# endif
# ifdef FORCE_BUGS_TUNING
# if ( FORCE_BUGS_TUNING < -300 ) || ( FORCE_BUGS_TUNING > 300 )
# error "The BUGS forced frequency tuning value is outside of the range -300..300."
2018-08-03 18:29:24 +02:00
# endif
# endif
2018-01-04 14:37:05 +01:00
# ifdef FORCE_FLYSKY_TUNING
# if ( FORCE_FLYSKY_TUNING < -300 ) || ( FORCE_FLYSKY_TUNING > 300 )
# error "The Flysky forced frequency tuning value is outside of the range -300..300."
# endif
# endif
2019-08-17 22:37:00 +02:00
# ifdef FORCE_FLYZONE_TUNING
# if ( FORCE_FLYZONE_TUNING < -300 ) || ( FORCE_FLYZONE_TUNING > 300 )
# error "The Flyzone forced frequency tuning value is outside of the range -300..300."
# endif
# endif
2018-01-04 14:37:05 +01:00
# ifdef FORCE_HUBSAN_TUNING
# if ( FORCE_HUBSAN_TUNING < -300 ) || ( FORCE_HUBSAN_TUNING > 300 )
# error "The Hubsan forced frequency tuning value is outside of the range -300..300."
# endif
# endif
2019-08-17 22:37:00 +02:00
2018-01-04 14:37:05 +01:00
# ifndef USE_A7105_CH15_TUNING
2019-08-17 22:37:00 +02:00
# ifndef FORCE_BUGS_TUNING
# define FORCE_BUGS_TUNING 0
# endif
2018-01-04 14:37:05 +01:00
# ifndef FORCE_FLYSKY_TUNING
# define FORCE_FLYSKY_TUNING 0
# endif
2019-08-17 22:37:00 +02:00
# ifndef FORCE_FLYZONE_TUNING
# define FORCE_FLYZONE_TUNING 0
# endif
2018-01-04 14:37:05 +01:00
# ifndef FORCE_HUBSAN_TUNING
# define FORCE_HUBSAN_TUNING 0
# endif
# ifndef FORCE_AFHDS2A_TUNING
# define FORCE_AFHDS2A_TUNING 0
# endif
# endif
2017-12-19 19:14:49 +00:00
2019-08-01 14:23:08 +02:00
# if defined (USE_CYRF6936_CH15_TUNING) && (DSM_THROTTLE_KILL_CH == 15)
# error "Error Channel 15 conflict between the CYRF6936 freq tuning and the DSM throttle kill feature."
# endif
2016-10-16 19:51:42 +02:00
//Change/Force configuration if OrangeTX
# ifdef ORANGE_TX
# undef ENABLE_PPM // Disable PPM for OrangeTX module
# undef A7105_INSTALLED // Disable A7105 for OrangeTX module
2017-02-21 00:29:40 +01:00
# undef A7105_CSN_pin
2016-10-16 19:51:42 +02:00
# undef CC2500_INSTALLED // Disable CC2500 for OrangeTX module
2017-02-21 00:29:40 +01:00
# undef CC25_CSN_pin
2016-10-16 19:51:42 +02:00
# undef NRF24L01_INSTALLED // Disable NRF for OrangeTX module
2017-02-21 00:29:40 +01:00
# undef NRF_CSN_pin
2016-10-16 19:51:42 +02:00
# define TELEMETRY // Enable telemetry
# define INVERT_TELEMETRY // Enable invert telemetry
# define DSM_TELEMETRY // Enable DSM telemetry
# endif
//Make sure protocols are selected correctly
# ifndef A7105_INSTALLED
# undef FLYSKY_A7105_INO
# undef HUBSAN_A7105_INO
2016-10-20 21:55:02 +02:00
# undef AFHDS2A_A7105_INO
2018-08-28 16:13:28 +02:00
# undef BUGS_A7105_INO
2019-08-17 22:37:00 +02:00
# undef FLYZONE_A7105_INO
2019-10-01 20:44:26 +02:00
# undef AFHDS2A_RX_A7105_INO
2016-10-16 19:51:42 +02:00
# endif
# ifndef CYRF6936_INSTALLED
# undef DEVO_CYRF6936_INO
# undef DSM_CYRF6936_INO
# undef J6PRO_CYRF6936_INO
2018-08-21 14:58:44 +02:00
# undef WFLY_CYRF6936_INO
2017-01-03 19:19:53 +01:00
# undef WK2x01_CYRF6936_INO
2019-08-06 17:27:42 +02:00
# undef TRAXXAS_CYRF6936_INO
2016-10-16 19:51:42 +02:00
# endif
# ifndef CC2500_INSTALLED
# undef FRSKYD_CC2500_INO
# undef FRSKYV_CC2500_INO
# undef FRSKYX_CC2500_INO
# undef SFHSS_CC2500_INO
2018-01-03 13:04:58 +01:00
# undef CORONA_CC2500_INO
2019-06-17 17:16:39 +02:00
# undef REDPINE_CC2500_INO
2018-08-03 18:29:24 +02:00
# undef HITEC_CC2500_INO
2019-06-05 21:54:47 +02:00
# undef XN297L_CC2500_EMU
2019-09-10 23:37:54 +02:00
# undef SCANNER_CC2500_INO
2019-10-12 19:50:11 +02:00
# undef FRSKY_RX_CC2500_INO
2016-10-16 19:51:42 +02:00
# endif
# ifndef NRF24L01_INSTALLED
# undef BAYANG_NRF24L01_INO
# undef CG023_NRF24L01_INO
# undef CX10_NRF24L01_INO
# undef ESKY_NRF24L01_INO
# undef HISKY_NRF24L01_INO
2019-06-04 21:44:40 +02:00
# undef KF606_NRF24L01_INO
2016-10-16 19:51:42 +02:00
# undef KN_NRF24L01_INO
# undef SLT_NRF24L01_INO
# undef SYMAX_NRF24L01_INO
# undef V2X2_NRF24L01_INO
# undef YD717_NRF24L01_INO
# undef MT99XX_NRF24L01_INO
# undef MJXQ_NRF24L01_INO
# undef SHENQI_NRF24L01_INO
# undef FY326_NRF24L01_INO
# undef FQ777_NRF24L01_INO
# undef ASSAN_NRF24L01_INO
# undef HONTAI_NRF24L01_INO
2017-01-24 16:58:41 +01:00
# undef Q303_NRF24L01_INO
2017-02-24 11:00:02 +01:00
# undef GW008_NRF24L01_INO
2018-11-15 11:08:07 +01:00
# undef GD00X_NRF24L01_INO
2017-03-22 14:55:55 +01:00
# undef DM002_NRF24L01_INO
2017-11-23 18:44:31 +01:00
# undef CABELL_NRF24L01_INO
2017-12-07 14:40:59 +00:00
# undef ESKY150_NRF24L01_INO
# undef H8_3D_NRF24L01_INO
2018-05-04 07:12:04 -07:00
# undef CFLIE_NRF24L01_INO
2018-10-17 13:23:27 +02:00
# undef BUGSMINI_NRF24L01_INO
2018-11-02 21:20:57 +01:00
# undef NCC1701_NRF24L01_INO
2018-11-06 22:06:19 +01:00
# undef E01X_NRF24L01_INO
2019-05-17 16:25:39 +02:00
# undef V761_NRF24L01_INO
2018-11-09 00:31:26 +01:00
# undef V911S_NRF24L01_INO
2019-06-05 21:54:47 +02:00
# undef XN297L_CC2500_EMU
2019-06-19 11:25:21 +02:00
# undef POTENSIC_NRF24L01_INO
2019-08-10 21:43:14 +02:00
# undef ZSX_NRF24L01_INO
2016-10-16 19:51:42 +02:00
# endif
//Make sure telemetry is selected correctly
# ifndef TELEMETRY
# undef INVERT_TELEMETRY
2016-12-06 22:30:48 +01:00
# undef AFHDS2A_FW_TELEMETRY
# undef AFHDS2A_HUB_TELEMETRY
2018-08-03 18:29:24 +02:00
# undef HITEC_FW_TELEMETRY
# undef HITEC_HUB_TELEMETRY
2016-12-06 22:30:48 +01:00
# undef BAYANG_HUB_TELEMETRY
2017-11-23 18:44:31 +01:00
# undef CABELL_HUB_TELEMETRY
2016-12-06 22:30:48 +01:00
# undef HUBSAN_HUB_TELEMETRY
2018-08-28 16:13:28 +02:00
# undef BUGS_HUB_TELEMETRY
2018-11-03 17:24:47 +01:00
# undef NCC1701_HUB_TELEMETRY
2016-10-16 19:51:42 +02:00
# undef HUB_TELEMETRY
2016-12-19 17:33:30 +01:00
# undef SPORT_TELEMETRY
2019-09-30 20:53:10 +02:00
# undef SPORT_SEND
2016-12-19 17:33:30 +01:00
# undef DSM_TELEMETRY
2017-02-06 21:50:56 +01:00
# undef MULTI_STATUS
2016-12-19 17:33:30 +01:00
# undef MULTI_TELEMETRY
2019-09-10 23:37:54 +02:00
# undef SCANNER_TELEMETRY
2019-09-17 09:53:18 +02:00
# undef SCANNER_CC2500_INO
2019-10-12 19:50:11 +02:00
# undef FRSKY_RX_TELEMETRY
# undef FRSKY_RX_CC2500_INO
2019-10-01 20:44:26 +02:00
# undef AFHDS2A_RX_TELEMETRY
# undef AFHDS2A_RX_A7105_INO
2016-10-16 19:51:42 +02:00
# else
2019-09-17 09:53:18 +02:00
# if defined(MULTI_TELEMETRY) && defined(MULTI_STATUS)
# error You should choose either MULTI_TELEMETRY or MULTI_STATUS but not both.
2017-02-06 21:50:56 +01:00
# endif
2019-09-17 09:53:18 +02:00
# if not defined(SCANNER_CC2500_INO) || not defined(SCANNER_TELEMETRY)
2019-09-11 12:23:36 +02:00
# undef SCANNER_TELEMETRY
2019-09-17 09:53:18 +02:00
# undef SCANNER_CC2500_INO
2019-09-11 12:23:36 +02:00
# endif
2019-10-12 19:50:11 +02:00
# if not defined(FRSKY_RX_CC2500_INO) || not defined(FRSKY_RX_TELEMETRY)
# undef FRSKY_RX_TELEMETRY
# undef FRSKY_RX_CC2500_INO
2019-09-17 23:35:19 +02:00
# endif
2019-10-01 20:44:26 +02:00
# if not defined(AFHDS2A_RX_A7105_INO) || not defined(AFHDS2A_RX_TELEMETRY)
# undef AFHDS2A_RX_TELEMETRY
# undef AFHDS2A_RX_A7105_INO
# endif
2016-12-06 22:30:48 +01:00
# if not defined(BAYANG_NRF24L01_INO)
# undef BAYANG_HUB_TELEMETRY
2016-10-16 19:51:42 +02:00
# endif
2018-11-03 17:24:47 +01:00
# if not defined(NCC1701_NRF24L01_INO)
# undef NCC1701_HUB_TELEMETRY
# endif
2019-09-17 23:35:19 +02:00
# if not defined(BUGS_A7105_INO) && not defined(BUGSMINI_NRF24L01_INO)
2018-10-17 13:23:27 +02:00
# undef BUGS_HUB_TELEMETRY
# endif
2017-11-23 18:44:31 +01:00
# if not defined(CABELL_NRF24L01_INO)
# undef CABELL_HUB_TELEMETRY
# endif
2016-12-06 22:30:48 +01:00
# if not defined(HUBSAN_A7105_INO)
# undef HUBSAN_HUB_TELEMETRY
# endif
# if not defined(AFHDS2A_A7105_INO)
# undef AFHDS2A_HUB_TELEMETRY
# undef AFHDS2A_FW_TELEMETRY
# endif
2018-08-03 18:29:24 +02:00
# if not defined(HITEC_CC2500_INO)
# undef HITEC_HUB_TELEMETRY
# undef HITEC_FW_TELEMETRY
# endif
2016-12-06 22:30:48 +01:00
# if not defined(FRSKYD_CC2500_INO)
2016-10-16 19:51:42 +02:00
# undef HUB_TELEMETRY
# endif
2016-10-22 12:06:44 +02:00
# if not defined(FRSKYX_CC2500_INO)
2016-10-16 19:51:42 +02:00
# undef SPORT_TELEMETRY
2019-09-30 20:53:10 +02:00
# undef SPORT_SEND
2018-08-03 18:29:24 +02:00
# endif
2019-09-30 20:53:10 +02:00
# if not defined (SPORT_TELEMETRY)
# undef SPORT_SEND
2016-10-16 19:51:42 +02:00
# endif
2016-12-06 22:30:48 +01:00
# if not defined(DSM_CYRF6936_INO)
# undef DSM_TELEMETRY
2016-11-06 16:36:44 +01:00
# endif
2019-10-13 11:08:20 +02:00
# if not defined(DSM_TELEMETRY) && not defined(SPORT_TELEMETRY) && not defined(HUB_TELEMETRY) && not defined(HUBSAN_HUB_TELEMETRY) && not defined(BUGS_HUB_TELEMETRY) && not defined(NCC1701_HUB_TELEMETRY) && not defined(BAYANG_HUB_TELEMETRY) && not defined(CABELL_HUB_TELEMETRY) && not defined(AFHDS2A_HUB_TELEMETRY) && not defined(AFHDS2A_FW_TELEMETRY) && not defined(MULTI_TELEMETRY) && not defined(MULTI_STATUS) && not defined(HITEC_HUB_TELEMETRY) && not defined(HITEC_FW_TELEMETRY) && not defined(SCANNER_TELEMETRY) && not defined(FRSKY_RX_TELEMETRY) && not defined(AFHDS2A_RX_TELEMETRY)
2016-10-16 19:51:42 +02:00
# undef TELEMETRY
# undef INVERT_TELEMETRY
# endif
# endif
2019-10-10 23:12:09 +02:00
# ifdef SPORT_TELEMETRY
# define SPORT_SEND
# endif
2019-10-11 01:14:04 +02:00
# if not defined(MULTI_TELEMETRY) || not defined(STM32_BOARD)
2019-10-10 23:12:09 +02:00
# undef MULTI_SYNC
# endif
2016-10-16 19:51:42 +02:00
//Make sure TX is defined correctly
# ifndef AILERON
# error You must select a correct channel order.
# endif
2018-01-09 09:04:55 +01:00
# if not defined(PPM_MAX_100) || not defined(PPM_MIN_100)
# error You must set correct PPM end points for your TX.
2016-10-16 19:51:42 +02:00
# endif
2017-01-02 17:26:35 +01:00
# if defined(ENABLE_BIND_CH)
# if BIND_CH<4
# error BIND_CH must be above 4.
# endif
# if BIND_CH>16
# error BIND_CH must be below or equal to 16.
# endif
# endif
2017-02-28 10:36:35 +01:00
2018-11-20 16:54:55 +01:00
# if defined(DSM_THROTTLE_KILL_CH)
# if DSM_THROTTLE_KILL_CH<4
# error DSM_THROTTLE_KILL_CH must be above 4.
# endif
# if DSM_THROTTLE_KILL_CH>16
# error DSM_THROTTLE_KILL_CH must be below or equal to 16.
# endif
# endif
2018-11-20 21:04:29 +01:00
# if defined(AFHDS2A_LQI_CH)
# if AFHDS2A_LQI_CH<4
# error AFHDS2A_LQI_CH must be above 4.
# endif
# if AFHDS2A_LQI_CH>14
# error AFHDS2A_LQI_CH must be below or equal to 14.
# endif
# endif
2017-02-28 10:36:35 +01:00
# if MIN_PPM_CHANNELS>16
# error MIN_PPM_CHANNELS must be below or equal to 16. The default for this value is 4.
# endif
# if MIN_PPM_CHANNELS<2
# error MIN_PPM_CHANNELS must be larger than 1. The default for this value is 4.
# endif
# if MAX_PPM_CHANNELS<MIN_PPM_CHANNELS
# error MAX_PPM_CHANNELS must be higher than MIN_PPM_CHANNELS. The default for this value is 16.
# endif
# if MAX_PPM_CHANNELS>16
# error MAX_PPM_CHANNELS must be below or equal to 16. The default for this value is 16.
2017-12-07 14:40:59 +00:00
# endif
2019-05-08 22:01:24 +02:00
# if defined (STM32_BOARD) && defined (DEBUG_SERIAL) && defined (NRF24L01_INSTALLED)
# define XN297DUMP_NRF24L01_INO
# endif