option(EXT "Telemetry protocol" OFF) # TODO rename this EXT option to TELEMETRY
option(AUDIO "Audio support" OFF)
option(VOICE "Voice support" OFF)
option(GRAPHICS "Additional graphics" ON)
option(BOLD "Bold font" ON)
option(BATTGRAPH "Battery graph" OFF)
option(HAPTIC "Haptic support" OFF)
set(TTS "EN" CACHE STRING "TTS language")
set(LCD "DEFAULT" CACHE STRING "LCD type (DEFAULT/ST7565P/ST7565R/ERC12864FSF/ST7920/KS108)")
set(DSM2 "NO" CACHE STRING "LCD type (NO/PPM/SERIAL)")
set(LUA NO)
set(PULSES_SRC pulses_avr.cpp)
set(SRC ${SRC} main_avr.cpp)
set(FIRMWARE_SRC ${FIRMWARE_SRC} targets/common/avr/adc_driver.cpp)
add_definitions(-DLCD_${LCD})
if(DSM2)
  add_definitions(-DDSM2 -DDSM2_${DSM2})
endif()
if(SDCARD)
  set(FIRMWARE_SRC ${FIRMWARE_SRC} targets/gruvin9x/diskio.cpp)
endif()
if(AUDIO)
  add_definitions(-DAUDIO)
  set(SRC ${SRC} audio_avr.cpp)
  set(BUZZER OFF)
else()
  set(BUZZER ON)
endif()
if(BUZZER)
  add_definitions(-DBUZZER)
  set(SRC ${SRC} buzzer.cpp)
endif()
if(VOICE)
  add_definitions(-DVOICE)
  set(TARGET_SRC ${TARGET_SRC} voice.cpp)
  foreach(LANGUAGE ${TTS_LANGUAGES})
    string(TOUPPER ${LANGUAGE} LANGUAGE_CAPITALIZED)
    if(TTS STREQUAL ${LANGUAGE_CAPITALIZED})
      add_definitions(-DTTS_${LANGUAGE_CAPITALIZED})
      set(SRC ${SRC} translations/tts_${LANGUAGE}.cpp)
    endif()
  endforeach()
endif()
if(GRAPHICS)
  add_definitions(-DGRAPHICS)
endif()
if(BOLD)
  add_definitions(-DBOLD_FONT)
endif()
if(BATTGRAPH)
  add_definitions(-DBATTGRAPH)
endif()
if(HAPTIC)
  add_definitions(-DHAPTIC)
  set(SRC ${SRC} haptic.cpp)
endif()
if(${EXT} STREQUAL OFF)
  add_definitions(-DEXTSTD)
elseif(EXT STREQUAL ARDUPILOT)
  add_definitions(-DARDUPILOT)
  set(SRC ${SRC} telemetry/ardupilot.cpp)
elseif(EXT STREQUAL NMEA)
  add_definitions(-DNMEA)
  set(SRC ${SRC} telemetry/nmea.cpp)
elseif(EXT STREQUAL JETI)
  add_definitions(-DJETI)
  set(SRC ${SRC} telemetry/jeti.cpp)
elseif(EXT STREQUAL MAVLINK)
  add_definitions(-DMAVLINK)
  include_directories(${THIRDPARTY_DIR} gui/${GUI_DIR} targets/common/avr)
  set(SRC ${SRC} telemetry/mavlink.cpp targets/common/avr/serial_driver.cpp)
  set(GUI_SRC ${GUI_SRC} view_mavlink.cpp)
  math(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${MAVLINK_VARIANT})
elseif(EXT STREQUAL TELEMETREZ)
  add_definitions(-DTELEMETREZ)
  set(SRC ${SRC} telemetry/jeti.cpp)
elseif(EXT STREQUAL FRSKY_SPORT)
  add_definitions(-DFRSKY_SPORT)
  set(SRC ${SRC} crc16.cpp telemetry/frsky_sport.cpp)
endif()
if(EXT STREQUAL FRSKY OR EXT STREQUAL FRSKY_SPORT OR EXT STREQUAL TELEMETREZ)
  option(FRSKY_HUB "FrSky Hub support" ON)
  option(WS_HOW_HIGH "Winged Shadow sensors support" ON)
  option(GAUGES "Telemetry gauges" OFF)
  option(GPS "GPS support" ON)
  option(VARIO "Vario support" ON)
  add_definitions(-DFRSKY)
  set(SRC ${SRC} telemetry/telemetry.cpp telemetry/telemetry_holders.cpp telemetry/frsky.cpp telemetry/frsky_d.cpp)
  set(FIRMWARE_SRC ${FIRMWARE_SRC} targets/common/avr/telemetry_driver.cpp)
  set(GUI_SRC ${GUI_SRC} view_telemetry.cpp)
  if(FRSKY_HUB)
    add_definitions(-DFRSKY_HUB)
  endif()
  if(WS_HOW_HIGH)
    add_definitions(-DWS_HOW_HIGH)
  endif()
  if(GAUGES)
    add_definitions(-DGAUGES)
  endif()
  if(GPS)
    add_definitions(-DGPS)
  endif()
  if(VARIO)
    add_definitions(-DVARIO)
    set(SRC ${SRC} vario.cpp)
  endif()
  math(EXPR EEPROM_VARIANT ${EEPROM_VARIANT}+${FRSKY_VARIANT})
endif()
add_definitions(-DTIMERS=2)
if(EEPROM_VARIANT_NEEDED)
  add_definitions(-DEEPROM_VARIANT=${EEPROM_VARIANT})
endif()

