diff --git a/.github/workflows/macosx_cpn.yml b/.github/workflows/macosx_cpn.yml index 268275478f1..324d2c33f65 100644 --- a/.github/workflows/macosx_cpn.yml +++ b/.github/workflows/macosx_cpn.yml @@ -67,7 +67,7 @@ jobs: cache-key-prefix: 'install-qt-action-macOS' - name: Install dependencies - run: python3 -m pip install --upgrade pip Pillow lz4 clang jinja2 + run: python3 -m pip install --upgrade pip Pillow lz4 clang jinja2 pydantic - name: Install libusb run: brew install libusb diff --git a/.github/workflows/win_cpn-64.yml b/.github/workflows/win_cpn-64.yml index e5cbcd7ca13..ed67e98fb77 100644 --- a/.github/workflows/win_cpn-64.yml +++ b/.github/workflows/win_cpn-64.yml @@ -69,7 +69,7 @@ jobs: - name: Install Python Dependencies run: | echo $PATH - $Python3_ROOT_DIR/python3.exe -m pip install clang jinja2 lz4 pillow + $Python3_ROOT_DIR/python3.exe -m pip install clang jinja2 lz4 pillow pydantic - name: Setup dfu-util and libusb run: | diff --git a/cmake/Macros.cmake b/cmake/Macros.cmake index d6a929e8337..89d47ffab49 100644 --- a/cmake/Macros.cmake +++ b/cmake/Macros.cmake @@ -96,18 +96,18 @@ function(AddHardwareDefTarget output) endforeach() set(GEN_HW_DEFS ${CMAKE_CXX_COMPILER} ${HW_DEF_ARGS} -x c++-header -E -dM ${HW_DEF_SRC}) - set(GEN_JSON ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/hw_defs/generate_hw_def.py) - set(GEN_JSON ${GEN_JSON} -i defines -T ${FLAVOUR} -) + # set(GEN_JSON ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/hw_defs/generate_hw_def.py) + # set(GEN_JSON ${GEN_JSON} -i defines -T ${FLAVOUR} -) - add_custom_command(OUTPUT ${output} - COMMAND ${GEN_HW_DEFS} | ${GEN_JSON} > ${output} - DEPENDS ${HW_DEF_SRC} ${RADIO_DIRECTORY}/util/hw_defs/generate_hw_def.py - ) + # add_custom_command(OUTPUT ${output} + # COMMAND ${GEN_HW_DEFS} | ${GEN_JSON} > ${output} + # DEPENDS ${HW_DEF_SRC} ${RADIO_DIRECTORY}/util/hw_defs/generate_hw_def.py + # ) add_custom_command(OUTPUT ${output}.h COMMAND ${GEN_HW_DEFS} > ${output}.h DEPENDS ${HW_DEF_SRC} ${RADIO_DIRECTORY}/util/hw_defs/generate_hw_def.py - ) + ) endfunction() function(AddHWGenTarget input template output) @@ -116,7 +116,7 @@ function(AddHWGenTarget input template output) set(GEN_JSON ${PYTHON_EXECUTABLE} ${RADIO_DIRECTORY}/util/hw_defs/generate_hw_def.py) # Inputs - set(INPUT_JSON ${CMAKE_CURRENT_BINARY_DIR}/${input}) + set(INPUT_JSON ${RADIO_SRC_DIR}/boards/hw_defs/${input}) set(TEMPLATE ${RADIO_DIRECTORY}/util/hw_defs/${template}.jinja) set(GEN_PY_DEPS ${RADIO_DIRECTORY}/util/hw_defs/generator.py diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 918367a6396..72de9d98ca0 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -130,7 +130,8 @@ else() endif() ############# Import radio hardware definitions ############### -set(HWDEFS_DIR "${CMAKE_CURRENT_BINARY_DIR}/../../radio/src") + +set(HWDEFS_DIR "${CMAKE_SOURCE_DIR}/radio/src/boards/hw_defs") set(HWDEFS_TMPL "${COMPANION_SRC_DIRECTORY}/hwdefs.qrc.in") set(HWDEFS_PHDR "HWDEF_JSON_LIST") set(HWDEFS_QRC "${CMAKE_CURRENT_BINARY_DIR}/hwdefs.qrc") @@ -300,22 +301,6 @@ add_subdirectory(tests) ############# Install #################### -# the current flavour is not automatically added if build in the current cmake iteration, so always -# add its library name to be sure -string(TOLOWER ${PCB} FLAVOUR) - -if(PCBREV) - if(PCB STREQUAL X7 AND PCBREV STREQUAL ACCESS) - set(FLAVOUR x7access) - elseif(PCB STREQUAL X9D+ AND PCBREV STREQUAL 2019) - set(FLAVOUR x9d+2019) - elseif(PCB STREQUAL X10 AND PCBREV STREQUAL EXPRESS) - set(FLAVOUR x10express) - else() - string(TOLOWER ${PCBREV} FLAVOUR) - endif() -endif(PCBREV) - set(COMPANION_TARGETS_DIR_ROOT "${COMPANION_SRC_DIRECTORY}/../targets") if(CMAKE_SYSTEM_NAME STREQUAL "Linux") @@ -680,4 +665,3 @@ else() endif() include(CPack) - diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index e3988c7ba92..923fd2b3038 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -100,11 +100,18 @@ else() message(FATAL_ERROR "Unknown PCB '${PCB}'") endif() +# Add RADIO_xxx definition +string(TOUPPER ${FLAVOUR} RADIO_NAME) +string(REPLACE "+" "P" RADIO_NAME ${RADIO_NAME}) +string(CONCAT RADIO_NAME "RADIO_" ${RADIO_NAME}) +add_definitions(-D${RADIO_NAME}) +set(${RADIO_NAME} YES) + set(HW_DESC_JSON ${FLAVOUR}.json) AddHardwareDefTarget(${HW_DESC_JSON}) # enable generating JSON definition separately for debugging -add_custom_target(hardware_defs DEPENDS ${HW_DESC_JSON} ${HW_DESC_JSON}.h) +add_custom_target(hardware_defs DEPENDS ${HW_DESC_JSON}.h) include(hal/CMakeLists.txt) @@ -719,5 +726,3 @@ if(CPU_FAMILY STREQUAL STM32) endif() PrintTargetReport("firmware") - -AddHardwareDefTarget(hardware_defs ${RADIO_DIRECTORY}/src/targets/hw_defs/${FLAVOUR}.json) diff --git a/radio/src/boards/generic_stm32/CMakeLists.txt b/radio/src/boards/generic_stm32/CMakeLists.txt index 629da13d719..8739feebb21 100644 --- a/radio/src/boards/generic_stm32/CMakeLists.txt +++ b/radio/src/boards/generic_stm32/CMakeLists.txt @@ -8,7 +8,7 @@ AddHWGenTarget(${HW_DESC_JSON} hal_adc_inputs hal_adc_inputs.inc) # Dependencies common to bootloader and firmware set(MINIMAL_BOARD_LIB_SRC - ${CMAKE_CURRENT_BINARY_DIR}/${HW_DESC_JSON} + ${RADIO_SRC_DIR}/boards/hw_defs/${HW_DESC_JSON} ${CMAKE_CURRENT_BINARY_DIR}/stm32_keys.inc boards/generic_stm32/inputs.cpp diff --git a/radio/src/boards/generic_stm32/analog_inputs.cpp b/radio/src/boards/generic_stm32/analog_inputs.cpp index bfd99db1e2a..e18fc13ec3a 100644 --- a/radio/src/boards/generic_stm32/analog_inputs.cpp +++ b/radio/src/boards/generic_stm32/analog_inputs.cpp @@ -27,7 +27,7 @@ #include "hal.h" -#if defined(ADC_SPI) +#if defined(USE_ADS79XX) #include "ads79xx.h" #endif @@ -40,8 +40,9 @@ // generated files #include "stm32_adc_inputs.inc" -#include "stm32_pwm_inputs.inc" +#if !defined(BOOT) #include "hal_adc_inputs.inc" +#endif constexpr uint8_t n_ADC = DIM(_ADC_adc); constexpr uint8_t n_ADC_spi = DIM(_ADC_spi); @@ -54,16 +55,21 @@ static_assert(n_inputs <= MAX_ANALOG_INPUTS, "Too many analog inputs"); static bool adc_init() { bool success = stm32_hal_adc_init(_ADC_adc, n_ADC, _ADC_inputs, _ADC_GPIOs, n_GPIO); -#if defined(ADC_SPI) +#if defined(USE_ADS79XX) if (n_ADC_spi > 0) ads79xx_init(&_ADC_spi[0]); #endif return success; } +static void adc_deinit() +{ + stm32_hal_adc_deinit(_ADC_adc, n_ADC); +} + static bool adc_start_read() { bool success = stm32_hal_adc_start_read(_ADC_adc, n_ADC, _ADC_inputs, n_inputs); -#if defined(ADC_SPI) +#if defined(USE_ADS79XX) if (n_ADC_spi > 0) { success = success && ads79xx_adc_start_read(&_ADC_spi[0], _ADC_inputs); } @@ -73,7 +79,7 @@ static bool adc_start_read() static void adc_wait_completion() { -#if defined(ADC_SPI) +#if defined(USE_ADS79XX) // ADS79xx does all the work in the completion function // so it's probably better to poll it first if (n_ADC_spi > 0) ads79xx_adc_wait_completion(&_ADC_spi[0], _ADC_inputs); @@ -82,17 +88,22 @@ static void adc_wait_completion() } const etx_hal_adc_driver_t _adc_driver = { +#if !defined(BOOT) .inputs = _hal_inputs, .default_pots_cfg = _pot_default_config, +#endif .init = adc_init, + .deinit = adc_deinit, .start_conversion = adc_start_read, .wait_completion = adc_wait_completion, .set_input_mask = stm32_hal_set_inputs_mask, .get_input_mask = stm32_hal_get_inputs_mask, }; +#if !defined(BOOT) #if defined(PWM_STICKS) #include "stm32_gpio.h" +#include "stm32_pwm_inputs.inc" static const stick_pwm_timer_t _sticks_timer = { .GPIOx = PWM_GPIO, @@ -141,3 +152,4 @@ void gimbalsDetect() detected = gimbal_drivers[idx++](); } } +#endif // !BOOT diff --git a/radio/src/boards/hw_defs/boxer.json b/radio/src/boards/hw_defs/boxer.json new file mode 100644 index 00000000000..85e8913938f --- /dev/null +++ b/radio/src/boards/hw_defs/boxer.json @@ -0,0 +1,309 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_5", + "label": "6P", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 0 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_1", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/bumblebee.json b/radio/src/boards/hw_defs/bumblebee.json new file mode 100644 index 00000000000..a6f8915e3bb --- /dev/null +++ b/radio/src/boards/hw_defs/bumblebee.json @@ -0,0 +1,378 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_9", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_0", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SC", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 1 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 2 + ], + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SG", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 3 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 3 + ], + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_15", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_13", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "is_cfs": true, + "cfs_idx": 3 + }, + { + "name": "SW5", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": true, + "cfs_idx": 4 + }, + { + "name": "SW6", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_12", + "is_cfs": true, + "cfs_idx": 5 + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "inc": { + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/commando8.json b/radio/src/boards/hw_defs/commando8.json new file mode 100644 index 00000000000..0f73209ce20 --- /dev/null +++ b/radio/src/boards/hw_defs/commando8.json @@ -0,0 +1,258 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "pwm_channel": 1, + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "pwm_channel": 0 + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "pwm_channel": 2, + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "pwm_channel": 3 + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 0 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_4", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_6", + "gpio_low": "GPIOC", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 1 + ], + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "BCK" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "Left" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "Right" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_PLUS", + "name": "PLUS", + "label": "Up" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "active_low": true, + "key": "KEY_MINUS", + "name": "MINUS", + "label": "Down" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_0", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_1", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_0", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/el18.json b/radio/src/boards/hw_defs/el18.json new file mode 100644 index 00000000000..28ef98fedf6 --- /dev/null +++ b/radio/src/boards/hw_defs/el18.json @@ -0,0 +1,323 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_4" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + }, + { + "name": "SWA", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9" + }, + { + "name": "SWB", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6" + }, + { + "name": "SWC", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8" + }, + { + "name": "SWD", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_10", + "channel": "LL_ADC_CHANNEL_8" + }, + { + "name": "SWE", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "SWF", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true + }, + { + "name": "SWG", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "inverted": true + }, + { + "name": "SWH", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_7" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWA", + "is_cfs": false + }, + { + "name": "SB", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWB", + "is_cfs": false + }, + { + "name": "SC", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWC", + "is_cfs": false + }, + { + "name": "SD", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWD", + "is_cfs": false + }, + { + "name": "SE", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWE", + "is_cfs": false + }, + { + "name": "SF", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWF", + "is_cfs": false + }, + { + "name": "SG", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWG", + "is_cfs": false + }, + { + "name": "SH", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "adc_input": "SWH", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_11", + "active_low": false, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": false, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_2", + "active_low": false + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_2", + "active_low": false + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": false + }, + "inc": { + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_7", + "active_low": false + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_0", + "active_low": false + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_15", + "active_low": false + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": false + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_10", + "active_low": false + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/f16.json b/radio/src/boards/hw_defs/f16.json new file mode 100644 index 00000000000..436b0aaabbf --- /dev/null +++ b/radio/src/boards/hw_defs/f16.json @@ -0,0 +1,417 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "label": "6POS", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_4", + "inverted": true, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "EXT1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "EXT1", + "short_label": "E1" + }, + { + "name": "EXT2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "label": "EXT2", + "short_label": "E2" + }, + { + "name": "EXT3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true, + "label": "EXT3", + "short_label": "E3" + }, + { + "name": "EXT4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "label": "EXT4", + "short_label": "E4" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOI", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_12", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOJ", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_4", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_6", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_6", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/gx12.json b/radio/src/boards/hw_defs/gx12.json new file mode 100644 index 00000000000..0dec260a49c --- /dev/null +++ b/radio/src/boards/hw_defs/gx12.json @@ -0,0 +1,419 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true, + "label": "P1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true, + "label": "P2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S1", + "short_label": "S1", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_5", + "inverted": true, + "label": "S2", + "short_label": "S2", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_14", + "is_cfs": true, + "cfs_idx": 7 + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": null, + "pin_high": "PCA95XX_PIN_10", + "gpio_low": null, + "pin_low": "PCA95XX_PIN_11", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": null, + "pin_high": "PCA95XX_PIN_5", + "gpio_low": null, + "pin_low": "PCA95XX_PIN_4", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_1", + "is_cfs": true, + "cfs_idx": 6 + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": null, + "pin_high": "PCA95XX_PIN_12", + "gpio_low": null, + "pin_low": "PCA95XX_PIN_13", + "is_cfs": false + }, + { + "name": "SF", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": null, + "pin_high": "PCA95XX_PIN_3", + "gpio_low": null, + "pin_low": "PCA95XX_PIN_2", + "is_cfs": false + }, + { + "name": "SG", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 2 + ], + "gpio": null, + "pin": "PCA95XX_PIN_15", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 2 + ], + "gpio": null, + "pin": "PCA95XX_PIN_0", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_0", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_1", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_2", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_3", + "is_cfs": true, + "cfs_idx": 3 + }, + { + "name": "SW5", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_4", + "is_cfs": true, + "cfs_idx": 4 + }, + { + "name": "SW6", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_5", + "is_cfs": true, + "cfs_idx": 5 + } + ], + "keys": [ + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/lr3pro.json b/radio/src/boards/hw_defs/lr3pro.json new file mode 100644 index 00000000000..a663f8fde14 --- /dev/null +++ b/radio/src/boards/hw_defs/lr3pro.json @@ -0,0 +1,238 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_13", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SC", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 1 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_9", + "active_low": true, + "key": "KEY_UP", + "name": "UP", + "label": "Up" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_DOWN", + "name": "DOWN", + "label": "Down" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_LEFT", + "name": "LEFT", + "label": "Left" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_RIGHT", + "name": "RIGHT", + "label": "Right" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/mt12.json b/radio/src/boards/hw_defs/mt12.json new file mode 100644 index 00000000000..b92e81cdad2 --- /dev/null +++ b/radio/src/boards/hw_defs/mt12.json @@ -0,0 +1,287 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "ST", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "TH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_5", + "label": "S3", + "short_label": "3", + "default": "NONE" + }, + { + "name": "P4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S4", + "short_label": "4", + "default": "NONE" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 1 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SC", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 0 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/nb4p.json b/radio/src/boards/hw_defs/nb4p.json new file mode 100644 index 00000000000..d0013682de2 --- /dev/null +++ b/radio/src/boards/hw_defs/nb4p.json @@ -0,0 +1,150 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "ST", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "TH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "label": "VR1L", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_7", + "label": "VR1R", + "short_label": "2", + "default": "POT" + }, + { + "name": "RAW1", + "type": "RAW", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11" + }, + { + "name": "RAW2", + "type": "RAW", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RAW3", + "type": "RAW", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6" + }, + { + "name": "RAW4", + "type": "RAW", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "is_cfs": false + }, + { + "name": "SB", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "is_cfs": false + } + ], + "keys": [ + { + "gpio": null, + "pin": null, + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": null, + "pin": null, + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + } + ], + "trims": [ + { + "name": "T1" + }, + { + "name": "T2" + } + ] +} diff --git a/radio/src/boards/hw_defs/nv14.json b/radio/src/boards/hw_defs/nv14.json new file mode 100644 index 00000000000..3c90e3504a1 --- /dev/null +++ b/radio/src/boards/hw_defs/nv14.json @@ -0,0 +1,323 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_4" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + }, + { + "name": "SWA", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9" + }, + { + "name": "SWB", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6" + }, + { + "name": "SWC", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8" + }, + { + "name": "SWD", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_10", + "channel": "LL_ADC_CHANNEL_8" + }, + { + "name": "SWE", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "SWF", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true + }, + { + "name": "SWG", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "inverted": true + }, + { + "name": "SWH", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_7" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWA", + "is_cfs": false + }, + { + "name": "SB", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWB", + "is_cfs": false + }, + { + "name": "SC", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "adc_input": "SWC", + "is_cfs": false + }, + { + "name": "SD", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWD", + "is_cfs": false + }, + { + "name": "SE", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "adc_input": "SWE", + "is_cfs": false + }, + { + "name": "SF", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWF", + "is_cfs": false + }, + { + "name": "SG", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWG", + "is_cfs": false + }, + { + "name": "SH", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "adc_input": "SWH", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_11", + "active_low": false, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": false, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_2", + "active_low": false + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_2", + "active_low": false + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": false + }, + "inc": { + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_7", + "active_low": false + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_0", + "active_low": false + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_15", + "active_low": false + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": false + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_10", + "active_low": false + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/pa01.json b/radio/src/boards/hw_defs/pa01.json new file mode 100644 index 00000000000..70b1814c1e2 --- /dev/null +++ b/radio/src/boards/hw_defs/pa01.json @@ -0,0 +1,286 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMAMUX1_REQ_ADC1", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_64CYCLES_5" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMAMUX1_REQ_ADC3", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_64CYCLES_5" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_15", + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_19", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + }, + { + "name": "SWB", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true + }, + { + "name": "SWC", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SB", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWB", + "is_cfs": false + }, + { + "name": "SC", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWC", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "AW9523B_PIN_0", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "AW9523B_PIN_1", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "AW9523B_PIN_2", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "AW9523B_PIN_3", + "is_cfs": true, + "cfs_idx": 3 + } + ], + "keys": [ + { + "gpio": null, + "pin": null, + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": null, + "pin": null, + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": null, + "pin": null, + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": null, + "pin": null, + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": null, + "pin": null, + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1" + }, + { + "name": "T2" + }, + { + "name": "T3" + }, + { + "name": "T4" + } + ] +} diff --git a/radio/src/boards/hw_defs/pl18.json b/radio/src/boards/hw_defs/pl18.json new file mode 100644 index 00000000000..53ff09750e3 --- /dev/null +++ b/radio/src/boards/hw_defs/pl18.json @@ -0,0 +1,294 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14", + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "S3", + "short_label": "3", + "default": "POT" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "inverted": true, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_7", + "inverted": true, + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + }, + { + "name": "SWB", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true + }, + { + "name": "SWD", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "inverted": true + }, + { + "name": "SWE", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12" + }, + { + "name": "SWF", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8" + }, + { + "name": "SWG", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9" + }, + { + "name": "SWH", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_10", + "channel": "LL_ADC_CHANNEL_8" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_9", + "is_cfs": false + }, + { + "name": "SB", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWB", + "is_cfs": false + }, + { + "name": "SC", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SD", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWD", + "is_cfs": false + }, + { + "name": "SE", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWE", + "is_cfs": false + }, + { + "name": "SF", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWF", + "is_cfs": false + }, + { + "name": "SG", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWG", + "is_cfs": false + }, + { + "name": "SH", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "adc_input": "SWH", + "is_cfs": false + } + ], + "keys": [], + "trims": [ + { + "name": "T1" + }, + { + "name": "T2" + }, + { + "name": "T3" + }, + { + "name": "T4" + }, + { + "name": "T5" + }, + { + "name": "T6" + }, + { + "name": "T7" + }, + { + "name": "T8" + } + ] +} diff --git a/radio/src/boards/hw_defs/pl18ev.json b/radio/src/boards/hw_defs/pl18ev.json new file mode 100644 index 00000000000..d90b9a2256f --- /dev/null +++ b/radio/src/boards/hw_defs/pl18ev.json @@ -0,0 +1,338 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14", + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "S3", + "short_label": "3", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "inverted": true, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_7", + "inverted": true, + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "EXT1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_5", + "label": "EXT1", + "short_label": "E1", + "default": "POT_CENTER" + }, + { + "name": "EXT2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "label": "EXT2", + "short_label": "E2", + "default": "POT_CENTER" + }, + { + "name": "EXT3", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_4", + "label": "EXT3", + "short_label": "E3", + "default": "MULTIPOS" + }, + { + "name": "EXT4", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "label": "EXT4", + "short_label": "E4", + "default": "MULTIPOS" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + }, + { + "name": "SWB", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true + }, + { + "name": "SWD", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "inverted": true + }, + { + "name": "SWE", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12" + }, + { + "name": "SWF", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8" + }, + { + "name": "SWG", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9" + }, + { + "name": "SWH", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_10", + "channel": "LL_ADC_CHANNEL_8" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_9", + "is_cfs": false + }, + { + "name": "SB", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWB", + "is_cfs": false + }, + { + "name": "SC", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SD", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWD", + "is_cfs": false + }, + { + "name": "SE", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWE", + "is_cfs": false + }, + { + "name": "SF", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWF", + "is_cfs": false + }, + { + "name": "SG", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWG", + "is_cfs": false + }, + { + "name": "SH", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWH", + "is_cfs": false + } + ], + "keys": [], + "trims": [ + { + "name": "T1" + }, + { + "name": "T2" + }, + { + "name": "T3" + }, + { + "name": "T4" + }, + { + "name": "T5" + }, + { + "name": "T6" + }, + { + "name": "T7" + }, + { + "name": "T8" + } + ] +} diff --git a/radio/src/boards/hw_defs/pl18u.json b/radio/src/boards/hw_defs/pl18u.json new file mode 100644 index 00000000000..9b1361e754d --- /dev/null +++ b/radio/src/boards/hw_defs/pl18u.json @@ -0,0 +1,309 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": null + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14", + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "S3", + "short_label": "3", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "inverted": true, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_7", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + }, + { + "name": "SWB", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true + }, + { + "name": "SWD", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "SWE", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "inverted": true + }, + { + "name": "SWF", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8" + }, + { + "name": "SWG", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9", + "inverted": true + }, + { + "name": "SWH", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_10", + "channel": "LL_ADC_CHANNEL_8" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_6", + "is_cfs": false + }, + { + "name": "SB", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWB", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOJ", + "pin_high": "LL_GPIO_PIN_14", + "gpio_low": "GPIOH", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SD", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWD", + "is_cfs": false + }, + { + "name": "SE", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWE", + "is_cfs": false + }, + { + "name": "SF", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWF", + "is_cfs": false + }, + { + "name": "SG", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWG", + "is_cfs": false + }, + { + "name": "SH", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "adc_input": "SWH", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": null, + "pin": null, + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": null, + "pin": null, + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + } + ], + "trims": [ + { + "name": "T1" + }, + { + "name": "T2" + }, + { + "name": "T3" + }, + { + "name": "T4" + }, + { + "name": "T5" + }, + { + "name": "T6" + } + ] +} diff --git a/radio/src/boards/hw_defs/pocket.json b/radio/src/boards/hw_defs/pocket.json new file mode 100644 index 00000000000..2bf00537e9e --- /dev/null +++ b/radio/src/boards/hw_defs/pocket.json @@ -0,0 +1,272 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 0 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 0 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/st16.json b/radio/src/boards/hw_defs/st16.json new file mode 100644 index 00000000000..cb4a50b3d70 --- /dev/null +++ b/radio/src/boards/hw_defs/st16.json @@ -0,0 +1,386 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMAMUX1_REQ_ADC1", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_8CYCLES_5" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMAMUX1_REQ_ADC3", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_64CYCLES_5" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_14" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_15" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_16" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_17" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_3", + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_5", + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_9", + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_7", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + }, + { + "name": "SWA", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "SWB", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "SWC", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "SWD", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "SWE", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_8" + }, + { + "name": "SWF", + "type": "SWITCH", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_7" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWA", + "is_cfs": false + }, + { + "name": "SB", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWB", + "is_cfs": false + }, + { + "name": "SC", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "adc_input": "SWC", + "is_cfs": false + }, + { + "name": "SD", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWD", + "is_cfs": false + }, + { + "name": "SE", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWE", + "is_cfs": false + }, + { + "name": "SF", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "adc_input": "SWF", + "is_cfs": false + }, + { + "name": "SG", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_6", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_7", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_0", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_1", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_2", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_3", + "is_cfs": true, + "cfs_idx": 3 + }, + { + "name": "SW5", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_4", + "is_cfs": true, + "cfs_idx": 4 + }, + { + "name": "SW6", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_PIN_5", + "is_cfs": true, + "cfs_idx": 5 + } + ], + "keys": [ + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_14", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "MENU" + } + ], + "trims": [ + { + "name": "T1" + }, + { + "name": "T2" + }, + { + "name": "T3" + }, + { + "name": "T4" + } + ] +} diff --git a/radio/src/boards/hw_defs/t12.json b/radio/src/boards/hw_defs/t12.json new file mode 100644 index 00000000000..48785f16ccc --- /dev/null +++ b/radio/src/boards/hw_defs/t12.json @@ -0,0 +1,314 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_13", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_0", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_2", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SG", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 2 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_10", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_9", + "active_low": true, + "key": "KEY_UP", + "name": "UP", + "label": "Up" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_DOWN", + "name": "DOWN", + "label": "Down" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_LEFT", + "name": "LEFT", + "label": "Left" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_RIGHT", + "name": "RIGHT", + "label": "Right" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/t12max.json b/radio/src/boards/hw_defs/t12max.json new file mode 100644 index 00000000000..6ed45144ca8 --- /dev/null +++ b/radio/src/boards/hw_defs/t12max.json @@ -0,0 +1,272 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 0 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SB", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 0 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_0", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_15", + "gpio_low": "GPIOA", + "pin_low": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 2 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/t14.json b/radio/src/boards/hw_defs/t14.json new file mode 100644 index 00000000000..2a90708bc2e --- /dev/null +++ b/radio/src/boards/hw_defs/t14.json @@ -0,0 +1,272 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 0 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SB", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 0 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_0", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_15", + "gpio_low": "GPIOA", + "pin_low": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 2 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/t15.json b/radio/src/boards/hw_defs/t15.json new file mode 100644 index 00000000000..b39162d033f --- /dev/null +++ b/radio/src/boards/hw_defs/t15.json @@ -0,0 +1,352 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_12", + "gpio_low": "GPIOH", + "pin_low": "LL_GPIO_PIN_9", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_2", + "gpio_low": "GPIOH", + "pin_low": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOI", + "pin_high": "LL_GPIO_PIN_15", + "gpio_low": "GPIOH", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_14", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_7", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_13", + "is_cfs": true, + "cfs_idx": 3 + }, + { + "name": "SW5", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_8", + "is_cfs": true, + "cfs_idx": 4 + }, + { + "name": "SW6", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_13", + "is_cfs": true, + "cfs_idx": 5 + } + ], + "keys": [ + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_6", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/t16.json b/radio/src/boards/hw_defs/t16.json new file mode 100644 index 00000000000..2de99252f11 --- /dev/null +++ b/radio/src/boards/hw_defs/t16.json @@ -0,0 +1,431 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "label": "6POS", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_4", + "inverted": true, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "EXT1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "EXT1", + "short_label": "E1" + }, + { + "name": "EXT2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "label": "EXT2", + "short_label": "E2" + }, + { + "name": "EXT3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true, + "label": "EXT3", + "short_label": "E3" + }, + { + "name": "EXT4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "label": "EXT4", + "short_label": "E4" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOI", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_12", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOJ", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_4", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_6", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_6", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_9", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/t18.json b/radio/src/boards/hw_defs/t18.json new file mode 100644 index 00000000000..5b78ca04313 --- /dev/null +++ b/radio/src/boards/hw_defs/t18.json @@ -0,0 +1,433 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "label": "6POS", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_4", + "inverted": true, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "EXT1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "EXT1", + "short_label": "E1" + }, + { + "name": "EXT2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "label": "EXT2", + "short_label": "E2" + }, + { + "name": "EXT3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true, + "label": "EXT3", + "short_label": "E3" + }, + { + "name": "EXT4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "label": "EXT4", + "short_label": "E4" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOI", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_12", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOJ", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_4", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_6", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_6", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_9", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/t20.json b/radio/src/boards/hw_defs/t20.json new file mode 100644 index 00000000000..e66c3520131 --- /dev/null +++ b/radio/src/boards/hw_defs/t20.json @@ -0,0 +1,511 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "inverted": true, + "label": "S3", + "short_label": "3", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "inverted": true, + "label": "S4", + "short_label": "4", + "default": "SLIDER" + }, + { + "name": "SL3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15", + "inverted": true, + "label": "SL", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_9", + "inverted": true, + "label": "SR", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": true, + "default": "2POS", + "display": [ + 0, + 0 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "2POS", + "flags": 0, + "inverted": true, + "default": "2POS", + "display": [ + 1, + 0 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 2 + ], + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SG", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 3 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 3 + ], + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 4 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 4 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_12", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_13", + "is_cfs": true, + "cfs_idx": 3 + }, + { + "name": "SW5", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": true, + "cfs_idx": 4 + }, + { + "name": "SW6", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_15", + "is_cfs": true, + "cfs_idx": 5 + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "inc": { + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_9", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_10", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T7", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "active_low": true + }, + { + "name": "T8", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/t20v2.json b/radio/src/boards/hw_defs/t20v2.json new file mode 100644 index 00000000000..11e029d52a8 --- /dev/null +++ b/radio/src/boards/hw_defs/t20v2.json @@ -0,0 +1,511 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "inverted": true, + "label": "S3", + "short_label": "3", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "inverted": true, + "label": "S4", + "short_label": "4", + "default": "SLIDER" + }, + { + "name": "SL3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15", + "inverted": true, + "label": "SL", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_9", + "inverted": true, + "label": "SR", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": true, + "default": "2POS", + "display": [ + 0, + 0 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "2POS", + "flags": 0, + "inverted": true, + "default": "2POS", + "display": [ + 1, + 0 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 2 + ], + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SG", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 3 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 3 + ], + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 4 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 4 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_12", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_13", + "is_cfs": true, + "cfs_idx": 3 + }, + { + "name": "SW5", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": true, + "cfs_idx": 4 + }, + { + "name": "SW6", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_15", + "is_cfs": true, + "cfs_idx": 5 + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "inc": { + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_9", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_10", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T7", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "active_low": true + }, + { + "name": "T8", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/t8.json b/radio/src/boards/hw_defs/t8.json new file mode 100644 index 00000000000..ae0b91c12cf --- /dev/null +++ b/radio/src/boards/hw_defs/t8.json @@ -0,0 +1,254 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 0 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_13", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 1 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "ENT" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_9", + "active_low": true, + "key": "KEY_PLUS", + "name": "PLUS", + "label": "(+)" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_MINUS", + "name": "MINUS", + "label": "(-)" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/tlite.json b/radio/src/boards/hw_defs/tlite.json new file mode 100644 index 00000000000..0b89aff882c --- /dev/null +++ b/radio/src/boards/hw_defs/tlite.json @@ -0,0 +1,238 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_13", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_2", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SC", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 1 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "ENT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_9", + "active_low": true, + "key": "KEY_UP", + "name": "UP", + "label": "Up" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_DOWN", + "name": "DOWN", + "label": "Down" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_LEFT", + "name": "LEFT", + "label": "Left/SYS" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_RIGHT", + "name": "RIGHT", + "label": "Right/MDL" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/tpro.json b/radio/src/boards/hw_defs/tpro.json new file mode 100644 index 00000000000..142e356107c --- /dev/null +++ b/radio/src/boards/hw_defs/tpro.json @@ -0,0 +1,344 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_6", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_8", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_2", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SC", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 2 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_10", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 1, + 2 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_9", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_6", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_5", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_4", + "is_cfs": true, + "cfs_idx": 3 + }, + { + "name": "SW5", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_3", + "is_cfs": true, + "cfs_idx": 4 + }, + { + "name": "SW6", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_2", + "is_cfs": true, + "cfs_idx": 5 + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/tpros.json b/radio/src/boards/hw_defs/tpros.json new file mode 100644 index 00000000000..3c9e33b3d08 --- /dev/null +++ b/radio/src/boards/hw_defs/tpros.json @@ -0,0 +1,272 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_0", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_15", + "gpio_low": "GPIOA", + "pin_low": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SC", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/tprov2.json b/radio/src/boards/hw_defs/tprov2.json new file mode 100644 index 00000000000..e372676d807 --- /dev/null +++ b/radio/src/boards/hw_defs/tprov2.json @@ -0,0 +1,372 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_6", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_8", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_2", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SC", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 2 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SG", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 3 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_10", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 1, + 3 + ], + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_9", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_6", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_5", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_4", + "is_cfs": true, + "cfs_idx": 3 + }, + { + "name": "SW5", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_3", + "is_cfs": true, + "cfs_idx": 4 + }, + { + "name": "SW6", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_2", + "is_cfs": true, + "cfs_idx": 5 + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/tx12.json b/radio/src/boards/hw_defs/tx12.json new file mode 100644 index 00000000000..3b3c291f97d --- /dev/null +++ b/radio/src/boards/hw_defs/tx12.json @@ -0,0 +1,324 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 0 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_0", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 2 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_13", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SF", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 2 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_2", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/tx12mk2.json b/radio/src/boards/hw_defs/tx12mk2.json new file mode 100644 index 00000000000..431f7aed673 --- /dev/null +++ b/radio/src/boards/hw_defs/tx12mk2.json @@ -0,0 +1,301 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 0 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 2 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_14", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SF", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 2 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_14", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/tx15.json b/radio/src/boards/hw_defs/tx15.json new file mode 100644 index 00000000000..188db6026e4 --- /dev/null +++ b/radio/src/boards/hw_defs/tx15.json @@ -0,0 +1,322 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMAMUX1_REQ_ADC1", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_8CYCLES_5" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMAMUX1_REQ_ADC3", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_64CYCLES_5" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_4" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_5", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "EXT", + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_14" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": null, + "pin_high": "PCA95XX_P15", + "gpio_low": null, + "pin_low": "PCA95XX_P14", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": null, + "pin_high": "PCA95XX_P13", + "gpio_low": null, + "pin_low": "PCA95XX_P12", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": null, + "pin_high": "PCA95XX_P11", + "gpio_low": null, + "pin_low": "PCA95XX_P10", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": null, + "pin_high": "PCA95XX_P7", + "gpio_low": null, + "pin_low": "PCA95XX_P6", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_P16", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": null, + "pin": "PCA95XX_P4", + "is_cfs": false + }, + { + "name": "SW1", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_P0", + "is_cfs": true, + "cfs_idx": 0 + }, + { + "name": "SW2", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_P1", + "is_cfs": true, + "cfs_idx": 1 + }, + { + "name": "SW3", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_P2", + "is_cfs": true, + "cfs_idx": 2 + }, + { + "name": "SW4", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_P3", + "is_cfs": true, + "cfs_idx": 3 + }, + { + "name": "SW5", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_P4", + "is_cfs": true, + "cfs_idx": 4 + }, + { + "name": "SW6", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": null, + "pin": "PCA95XX_P5", + "is_cfs": true, + "cfs_idx": 5 + } + ], + "keys": [ + { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1" + }, + { + "name": "T2" + }, + { + "name": "T3" + }, + { + "name": "T4" + } + ] +} diff --git a/radio/src/boards/hw_defs/tx16s.json b/radio/src/boards/hw_defs/tx16s.json new file mode 100644 index 00000000000..fe7ae2dd6c1 --- /dev/null +++ b/radio/src/boards/hw_defs/tx16s.json @@ -0,0 +1,439 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "label": "6POS", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_4", + "inverted": true, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "EXT1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "EXT1", + "short_label": "E1" + }, + { + "name": "EXT2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "label": "EXT2", + "short_label": "E2" + }, + { + "name": "EXT3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true, + "label": "EXT3", + "short_label": "E3" + }, + { + "name": "EXT4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "label": "EXT4", + "short_label": "E4" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOI", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_12", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOJ", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_4", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_6", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_6", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/v12.json b/radio/src/boards/hw_defs/v12.json new file mode 100644 index 00000000000..91e1e6db72a --- /dev/null +++ b/radio/src/boards/hw_defs/v12.json @@ -0,0 +1,335 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "label": "S3", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + }, + { + "name": "SWB", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "SWC", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "SWE", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_7" + }, + { + "name": "SWF", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SB", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "adc_input": "SWB", + "is_cfs": false + }, + { + "name": "SC", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "adc_input": "SWC", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SE", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "adc_input": "SWE", + "is_cfs": false + }, + { + "name": "SF", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 2 + ], + "adc_input": "SWF", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_1", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_0", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/v14.json b/radio/src/boards/hw_defs/v14.json new file mode 100644 index 00000000000..1b5bfcc5f78 --- /dev/null +++ b/radio/src/boards/hw_defs/v14.json @@ -0,0 +1,335 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "label": "S3", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + }, + { + "name": "SWB", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "SWC", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "SWE", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_7" + }, + { + "name": "SWF", + "type": "SWITCH", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 0 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SB", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "adc_input": "SWB", + "is_cfs": false + }, + { + "name": "SC", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "adc_input": "SWC", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SE", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "adc_input": "SWE", + "is_cfs": false + }, + { + "name": "SF", + "type": "ADC", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 2 + ], + "adc_input": "SWF", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_1", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_0", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/v16.json b/radio/src/boards/hw_defs/v16.json new file mode 100644 index 00000000000..0d1c2463549 --- /dev/null +++ b/radio/src/boards/hw_defs/v16.json @@ -0,0 +1,437 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "label": "6POS", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_5", + "inverted": true, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "EXT1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "EXT1", + "short_label": "E1" + }, + { + "name": "EXT2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "label": "EXT2", + "short_label": "E2" + }, + { + "name": "EXT3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true, + "label": "EXT3", + "short_label": "E3" + }, + { + "name": "EXT4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "label": "EXT4", + "short_label": "E4" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOI", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_12", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOJ", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_4", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_6", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_6", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x10.json b/radio/src/boards/hw_defs/x10.json new file mode 100644 index 00000000000..223cf6ff68f --- /dev/null +++ b/radio/src/boards/hw_defs/x10.json @@ -0,0 +1,437 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "pwm_channel": 0 + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "pwm_channel": 1, + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "pwm_channel": 3 + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "pwm_channel": 2, + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "label": "6POS", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_4", + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "inverted": true, + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "EXT1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "EXT1", + "short_label": "E1" + }, + { + "name": "EXT2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "label": "EXT2", + "short_label": "E2" + }, + { + "name": "EXT3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "label": "EXT3", + "short_label": "E3" + }, + { + "name": "EXT4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true, + "label": "EXT4", + "short_label": "E4" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOI", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_12", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOJ", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_4", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_6", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_6", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PgUp/Dn" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_9", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x10express.json b/radio/src/boards/hw_defs/x10express.json new file mode 100644 index 00000000000..223cf6ff68f --- /dev/null +++ b/radio/src/boards/hw_defs/x10express.json @@ -0,0 +1,437 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "pwm_channel": 0 + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "pwm_channel": 1, + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "pwm_channel": 3 + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "pwm_channel": 2, + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "label": "6POS", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_4", + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_13", + "inverted": true, + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "EXT1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "label": "EXT1", + "short_label": "E1" + }, + { + "name": "EXT2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "label": "EXT2", + "short_label": "E2" + }, + { + "name": "EXT3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "label": "EXT3", + "short_label": "E3" + }, + { + "name": "EXT4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true, + "label": "EXT4", + "short_label": "E4" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_7", + "channel": "LL_ADC_CHANNEL_5" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOI", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_12", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOJ", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": true, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_4", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_6", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_15", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_6", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PgUp/Dn" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_9", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x12s.json b/radio/src/boards/hw_defs/x12s.json new file mode 100644 index 00000000000..ae2d60d0604 --- /dev/null +++ b/radio/src/boards/hw_defs/x12s.json @@ -0,0 +1,430 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "SPI", + "adc": "SPI4", + "gpio_pin_miso": "GPIO_PIN(GPIOE, 5)", + "gpio_pin_mosi": "GPIO_PIN(GPIOE, 6)", + "gpio_pin_sck": "GPIO_PIN(GPIOE, 2)", + "gpio_pin_cs": "GPIO_PIN(GPIOE, 4)" + }, + { + "name": "MAIN", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + }, + { + "name": "EXT", + "adc": "ADC1", + "dma": null, + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "SPI", + "channel": 0 + }, + { + "name": "LV", + "type": "STICK", + "adc": "SPI", + "channel": 1, + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "SPI", + "channel": 2 + }, + { + "name": "RH", + "type": "STICK", + "adc": "SPI", + "channel": 3, + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "SPI", + "channel": 4, + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "SPI", + "channel": 5, + "label": "6POS", + "short_label": "3", + "default": "MULTIPOS" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "SPI", + "channel": 6, + "inverted": true, + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "SPI", + "channel": 7, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "SPI", + "channel": 8, + "inverted": true, + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "SL3", + "type": "FLEX", + "adc": "SPI", + "channel": 11, + "inverted": true, + "label": "L1", + "short_label": "1", + "default": "SLIDER" + }, + { + "name": "SL4", + "type": "FLEX", + "adc": "SPI", + "channel": 10, + "inverted": true, + "label": "L2", + "short_label": "2", + "default": "SLIDER" + }, + { + "name": "JSx", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": 6, + "label": "JSx", + "short_label": "X", + "default": "AXIS_X" + }, + { + "name": "JSy", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": 7, + "label": "JSy", + "short_label": "Y", + "default": "AXIS_Y" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "SPI", + "channel": 9 + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "EXT", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOI", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_12", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOJ", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOH", + "pin_high": "LL_GPIO_PIN_4", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": true, + "default": "2POS", + "display": null, + "gpio": "GPIOH", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": null, + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_6", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": null, + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": null, + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_6", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PgUp" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PgDn" + }, + { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_12", + "active_low": true + }, + "inc": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "active_low": true + }, + "inc": { + "gpio": "GPIOI", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + }, + { + "name": "T5", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + }, + { + "name": "T6", + "dec": { + "gpio": "GPIOJ", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x7.json b/radio/src/boards/hw_defs/x7.json new file mode 100644 index 00000000000..417a3589db2 --- /dev/null +++ b/radio/src/boards/hw_defs/x7.json @@ -0,0 +1,304 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_13", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_0", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_2", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 2 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 3 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SJ", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 3 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_10", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x7access.json b/radio/src/boards/hw_defs/x7access.json new file mode 100644 index 00000000000..99b36e90789 --- /dev/null +++ b/radio/src/boards/hw_defs/x7access.json @@ -0,0 +1,290 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_13", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_10", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_2", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 2 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 3 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x9d+.json b/radio/src/boards/hw_defs/x9d+.json new file mode 100644 index 00000000000..20ec26d2163 --- /dev/null +++ b/radio/src/boards/hw_defs/x9d+.json @@ -0,0 +1,357 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9", + "inverted": true, + "label": "S3", + "short_label": "3" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14", + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_15", + "gpio_low": "GPIOA", + "pin_low": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 2 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 3 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 2 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 3 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "ENT" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_PLUS", + "name": "PLUS", + "label": "(+)" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MINUS", + "name": "MINUS", + "label": "(-)" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x9d+2019.json b/radio/src/boards/hw_defs/x9d+2019.json new file mode 100644 index 00000000000..812cd273d8e --- /dev/null +++ b/radio/src/boards/hw_defs/x9d+2019.json @@ -0,0 +1,345 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14", + "inverted": true, + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_15", + "gpio_low": "GPIOA", + "pin_low": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 2 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 3 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 2 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 3 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SI", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 4 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_10", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "ENT" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x9d.json b/radio/src/boards/hw_defs/x9d.json new file mode 100644 index 00000000000..b1d23760d2b --- /dev/null +++ b/radio/src/boards/hw_defs/x9d.json @@ -0,0 +1,346 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "label": "S2", + "short_label": "2", + "default": "POT_CENTER" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14", + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15", + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_15", + "gpio_low": "GPIOA", + "pin_low": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 2 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 3 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 2 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 3 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "ENT" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_PLUS", + "name": "PLUS", + "label": "(+)" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MINUS", + "name": "MINUS", + "label": "(-)" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x9e.json b/radio/src/boards/hw_defs/x9e.json new file mode 100644 index 00000000000..3f68e33684e --- /dev/null +++ b/radio/src/boards/hw_defs/x9e.json @@ -0,0 +1,549 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + }, + { + "name": "EXT", + "adc": "ADC3", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_2", + "dma_stream": "LL_DMA_STREAM_0", + "dma_stream_irq": "DMA2_Stream0_IRQn", + "dma_stream_irq_handler": "DMA2_Stream0_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_56CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_8", + "channel": "LL_ADC_CHANNEL_6", + "inverted": true, + "label": "F1", + "short_label": "F1", + "default": "POT_CENTER" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true, + "label": "F2", + "short_label": "F2", + "default": "POT_CENTER" + }, + { + "name": "P3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "channel": "LL_ADC_CHANNEL_15", + "inverted": true, + "label": "F3", + "short_label": "F3", + "default": "NONE" + }, + { + "name": "P4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "channel": "LL_ADC_CHANNEL_14", + "label": "F4", + "short_label": "F4", + "default": "NONE" + }, + { + "name": "SL1", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_10", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true, + "label": "S1", + "short_label": "S1", + "default": "SLIDER" + }, + { + "name": "SL2", + "type": "FLEX", + "adc": "EXT", + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_9", + "channel": "LL_ADC_CHANNEL_7", + "label": "S2", + "short_label": "S2", + "default": "SLIDER" + }, + { + "name": "SL3", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "LS", + "short_label": "L", + "default": "SLIDER" + }, + { + "name": "SL4", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_9", + "inverted": true, + "label": "RS", + "short_label": "R", + "default": "SLIDER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_10", + "gpio_low": "GPIOD", + "pin_low": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_10", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOF", + "pin_high": "LL_GPIO_PIN_13", + "gpio_low": "GPIOF", + "pin_low": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SE", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 2 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 3 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "is_cfs": false + }, + { + "name": "SG", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 3 + ], + "gpio_high": "GPIOF", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOF", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 2 + ], + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SI", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 4 + ], + "gpio_high": "GPIOF", + "pin_high": "LL_GPIO_PIN_15", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SJ", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 1, + 4 + ], + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SK", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 5 + ], + "gpio_high": "GPIOG", + "pin_high": "LL_GPIO_PIN_13", + "gpio_low": "GPIOG", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SL", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 1, + 5 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_9", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SM", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 6 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_15", + "gpio_low": "GPIOA", + "pin_low": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SN", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 1, + 6 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + }, + { + "name": "SO", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 7 + ], + "gpio_high": "GPIOF", + "pin_high": "LL_GPIO_PIN_7", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_10", + "is_cfs": false + }, + { + "name": "SP", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 1, + 7 + ], + "gpio_high": "GPIOF", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOF", + "pin_low": "LL_GPIO_PIN_12", + "is_cfs": false + }, + { + "name": "SQ", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 0, + 8 + ], + "gpio_high": "GPIOF", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOF", + "pin_low": "LL_GPIO_PIN_6", + "is_cfs": false + }, + { + "name": "SR", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "NONE", + "display": [ + 1, + 8 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOF", + "pin": "LL_GPIO_PIN_0", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOG", + "pin": "LL_GPIO_PIN_0", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x9lite.json b/radio/src/boards/hw_defs/x9lite.json new file mode 100644 index 00000000000..9fb6ee1e07f --- /dev/null +++ b/radio/src/boards/hw_defs/x9lite.json @@ -0,0 +1,249 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_9", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_9", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/x9lites.json b/radio/src/boards/hw_defs/x9lites.json new file mode 100644 index 00000000000..390d0139b42 --- /dev/null +++ b/radio/src/boards/hw_defs/x9lites.json @@ -0,0 +1,277 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3" + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "label": "S1", + "short_label": "1", + "default": "POT_CENTER" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 2 + ], + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 3 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + }, + { + "name": "SG", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 3 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_MENU", + "name": "MENU", + "label": "MENU" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_9", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_13", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_9", + "active_low": true + }, + "inc": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_8", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/boards/hw_defs/xlite.json b/radio/src/boards/hw_defs/xlite.json new file mode 100644 index 00000000000..45d29c16739 --- /dev/null +++ b/radio/src/boards/hw_defs/xlite.json @@ -0,0 +1,255 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "pwm_channel": 0 + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "pwm_channel": 1, + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "pwm_channel": 3, + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "pwm_channel": 2 + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOA", + "pin_low": "LL_GPIO_PIN_6", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_UP", + "name": "UP", + "label": "Up" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "active_low": true, + "key": "KEY_DOWN", + "name": "DOWN", + "label": "Down" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_LEFT", + "name": "LEFT", + "label": "Left" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_RIGHT", + "name": "RIGHT", + "label": "Right" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_SHIFT", + "name": "SHIFT", + "label": "Shift" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3" + }, + { + "name": "T4" + } + ] +} diff --git a/radio/src/boards/hw_defs/xlites.json b/radio/src/boards/hw_defs/xlites.json new file mode 100644 index 00000000000..6807a68df40 --- /dev/null +++ b/radio/src/boards/hw_defs/xlites.json @@ -0,0 +1,283 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0", + "pwm_channel": 0 + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "pwm_channel": 1, + "inverted": true + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "pwm_channel": 3, + "inverted": true + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2", + "pwm_channel": 2 + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_11", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_12", + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_1", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOA", + "pin_low": "LL_GPIO_PIN_6", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 1 + ], + "gpio_high": "GPIOE", + "pin_high": "LL_GPIO_PIN_3", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_2", + "is_cfs": false + }, + { + "name": "SD", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 1 + ], + "gpio_high": "GPIOB", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOB", + "pin_low": "LL_GPIO_PIN_4", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 2 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "EXIT" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_10", + "active_low": true, + "key": "KEY_UP", + "name": "UP", + "label": "Up" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "active_low": true, + "key": "KEY_DOWN", + "name": "DOWN", + "label": "Down" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_12", + "active_low": true, + "key": "KEY_LEFT", + "name": "LEFT", + "label": "Left" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_RIGHT", + "name": "RIGHT", + "label": "Right" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "active_low": true, + "key": "KEY_SHIFT", + "name": "SHIFT", + "label": "Shift" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "inc": { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3" + }, + { + "name": "T4" + } + ] +} diff --git a/radio/src/boards/hw_defs/zorro.json b/radio/src/boards/hw_defs/zorro.json new file mode 100644 index 00000000000..5351f6aae22 --- /dev/null +++ b/radio/src/boards/hw_defs/zorro.json @@ -0,0 +1,325 @@ +{ + "adc_inputs": { + "adcs": [ + { + "name": "MAIN", + "adc": "ADC1", + "dma": "DMA2", + "dma_channel": "LL_DMA_CHANNEL_0", + "dma_stream": "LL_DMA_STREAM_4", + "dma_stream_irq": "DMA2_Stream4_IRQn", + "dma_stream_irq_handler": "DMA2_Stream4_IRQHandler", + "sample_time": "LL_ADC_SAMPLINGTIME_28CYCLES" + } + ], + "inputs": [ + { + "name": "LH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_3", + "channel": "LL_ADC_CHANNEL_3", + "inverted": true + }, + { + "name": "LV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_2", + "channel": "LL_ADC_CHANNEL_2" + }, + { + "name": "RV", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_0" + }, + { + "name": "RH", + "type": "STICK", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_1", + "channel": "LL_ADC_CHANNEL_1", + "inverted": true + }, + { + "name": "P1", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_8", + "inverted": true, + "label": "S1", + "short_label": "1", + "default": "POT" + }, + { + "name": "P2", + "type": "FLEX", + "adc": "MAIN", + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_6", + "channel": "LL_ADC_CHANNEL_6", + "label": "S2", + "short_label": "2", + "default": "POT" + }, + { + "name": "VBAT", + "type": "VBAT", + "adc": "MAIN", + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_0", + "channel": "LL_ADC_CHANNEL_10" + }, + { + "name": "RTC_BAT", + "type": "RTC_BAT", + "adc": "MAIN", + "gpio": null, + "pin": null, + "channel": "LL_ADC_CHANNEL_VBAT" + } + ] + }, + "switches": [ + { + "name": "SA", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 1 + ], + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_13", + "is_cfs": false + }, + { + "name": "SB", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 0, + 0 + ], + "gpio_high": "GPIOA", + "pin_high": "LL_GPIO_PIN_5", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_15", + "is_cfs": false + }, + { + "name": "SC", + "type": "3POS", + "flags": 0, + "inverted": false, + "default": "3POS", + "display": [ + 1, + 0 + ], + "gpio_high": "GPIOD", + "pin_high": "LL_GPIO_PIN_11", + "gpio_low": "GPIOE", + "pin_low": "LL_GPIO_PIN_0", + "is_cfs": false + }, + { + "name": "SD", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 1 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_8", + "is_cfs": false + }, + { + "name": "SE", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 0, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_7", + "is_cfs": false + }, + { + "name": "SF", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "2POS", + "display": [ + 1, + 2 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_1", + "is_cfs": false + }, + { + "name": "SG", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 0, + 3 + ], + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + }, + { + "name": "SH", + "type": "2POS", + "flags": 0, + "inverted": false, + "default": "TOGGLE", + "display": [ + 1, + 3 + ], + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_14", + "is_cfs": false + } + ], + "keys": [ + { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_5", + "active_low": true, + "key": "KEY_EXIT", + "name": "EXIT", + "label": "RTN" + }, + { + "gpio": "GPIOA", + "pin": "LL_GPIO_PIN_13", + "active_low": true, + "key": "KEY_ENTER", + "name": "ENTER", + "label": "Enter" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_3", + "active_low": true, + "key": "KEY_PAGEUP", + "name": "PAGEUP", + "label": "PAGE<" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_7", + "active_low": true, + "key": "KEY_PAGEDN", + "name": "PAGEDN", + "label": "PAGE>" + }, + { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_11", + "active_low": true, + "key": "KEY_MODEL", + "name": "MDL", + "label": "MDL" + }, + { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_2", + "active_low": true, + "key": "KEY_TELE", + "name": "TELE", + "label": "TELE" + }, + { + "gpio": "GPIOB", + "pin": "LL_GPIO_PIN_4", + "active_low": true, + "key": "KEY_SYS", + "name": "SYS", + "label": "SYS" + } + ], + "trims": [ + { + "name": "T1", + "dec": { + "gpio": "GPIOD", + "pin": "LL_GPIO_PIN_15", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_1", + "active_low": true + }, + "active_low": true + }, + { + "name": "T2", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_6", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_5", + "active_low": true + }, + "active_low": true + }, + { + "name": "T3", + "dec": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOC", + "pin": "LL_GPIO_PIN_2", + "active_low": true + }, + "active_low": true + }, + { + "name": "T4", + "dec": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_3", + "active_low": true + }, + "inc": { + "gpio": "GPIOE", + "pin": "LL_GPIO_PIN_4", + "active_low": true + }, + "active_low": true + } + ] +} diff --git a/radio/src/bootloader/CMakeLists.txt b/radio/src/bootloader/CMakeLists.txt index 905d967d357..36995f159fb 100644 --- a/radio/src/bootloader/CMakeLists.txt +++ b/radio/src/bootloader/CMakeLists.txt @@ -1,7 +1,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -AddHardwareDefTarget(${HW_DESC_JSON}) +# AddHardwareDefTarget(${HW_DESC_JSON}) AddHWGenTarget(${HW_DESC_JSON} hal_keys hal_keys.inc) set(BOOTLOADER_SRC ${BOOTLOADER_SRC} @@ -52,6 +52,7 @@ if(NOT NO_LTO) target_compile_options(stm32_drivers PRIVATE -flto) target_compile_options(stm32_drivers_w_dbg_fw PRIVATE -flto) target_compile_options(stm32_drivers_w_dbg_bl PRIVATE -flto) + target_compile_options(board_bl PRIVATE -flto) endif() add_executable(bootloader EXCLUDE_FROM_ALL ${BOOTLOADER_SRC}) diff --git a/radio/src/cli.cpp b/radio/src/cli.cpp index a0e3f97f4ed..8d7aa1f0fe5 100644 --- a/radio/src/cli.cpp +++ b/radio/src/cli.cpp @@ -1442,7 +1442,7 @@ int cliDisplay(const char ** argv) if (!strcmp(argv[1], "keys")) { for (int i = 0; i <= MAX_KEYS; i++) { - if (keysGetSupported() & (1 << i)) { + if (keyIsSupported(i)) { cliSerialPrint("[Key %s] = %s", keysGetLabel((EnumKeys)i), keysGetState(i) ? "on" : "off"); diff --git a/radio/src/gui/colorlcd/libui/keyboard_base.cpp b/radio/src/gui/colorlcd/libui/keyboard_base.cpp index 07e4c31abea..880a785ce61 100644 --- a/radio/src/gui/colorlcd/libui/keyboard_base.cpp +++ b/radio/src/gui/colorlcd/libui/keyboard_base.cpp @@ -84,6 +84,12 @@ static void _assign_lv_group(lv_group_t* g) Keyboard::Keyboard(coord_t height) : NavWindow(MainWindow::instance(), {0, LCD_H - height, LCD_W, height}) { +#if defined(USE_HATS_AS_KEYS) + hasTwoPageKeys = true; +#else + hasTwoPageKeys = keyIsSupported(KEY_PAGEUP); +#endif + lv_obj_set_parent(lvobj, lv_layer_top()); // the keyboard is always on top // use a separate group for the keyboard diff --git a/radio/src/gui/colorlcd/libui/keyboard_base.h b/radio/src/gui/colorlcd/libui/keyboard_base.h index cf670073f7c..5b7697a2fdd 100644 --- a/radio/src/gui/colorlcd/libui/keyboard_base.h +++ b/radio/src/gui/colorlcd/libui/keyboard_base.h @@ -36,6 +36,7 @@ class Keyboard : public NavWindow protected: static Keyboard *activeKeyboard; + bool hasTwoPageKeys; lv_group_t* group = nullptr; lv_obj_t* keyboard = nullptr; diff --git a/radio/src/gui/colorlcd/libui/keyboard_number.cpp b/radio/src/gui/colorlcd/libui/keyboard_number.cpp index de9efde635c..38609b85303 100644 --- a/radio/src/gui/colorlcd/libui/keyboard_number.cpp +++ b/radio/src/gui/colorlcd/libui/keyboard_number.cpp @@ -111,36 +111,14 @@ void NumberKeyboard::changeSign() #if defined(HARDWARE_KEYS) -#if (defined(KEYS_GPIO_REG_PAGEUP) || defined(USE_HATS_AS_KEYS)) && \ - !defined(PCBX12S) -// Radios with both PGUP and PGDN buttons except X12S -void NumberKeyboard::onPressSYS() { decLarge(); } +void NumberKeyboard::onPressSYS() { if (hasTwoPageKeys) decLarge(); else decSmall(); } void NumberKeyboard::onLongPressSYS() { setMIN(); } void NumberKeyboard::onPressMDL() { incLarge(); } -void NumberKeyboard::onLongPressMDL() { setMAX(); } -void NumberKeyboard::onPressTELE() { changeSign(); } -void NumberKeyboard::onLongPressTELE() { setDEF(); } -void NumberKeyboard::onPressPGUP() { decSmall(); } -void NumberKeyboard::onPressPGDN() { incSmall(); } -void NumberKeyboard::onLongPressPGUP() {} -void NumberKeyboard::onLongPressPGDN() {} -#else -// Radios witb only a single PGUP/DN button or X12S -void NumberKeyboard::onPressSYS() { decSmall(); } -void NumberKeyboard::onLongPressSYS() { setMIN(); } -void NumberKeyboard::onPressMDL() { incLarge(); } -void NumberKeyboard::onLongPressMDL() { changeSign(); } -void NumberKeyboard::onPressTELE() { incSmall(); } -void NumberKeyboard::onLongPressTELE() { setMAX(); } -#if defined(PCBX12S) -void NumberKeyboard::onPressPGUP() { decLarge(); } -#else -void NumberKeyboard::onPressPGUP() { setDEF(); } -#endif -void NumberKeyboard::onPressPGDN() { decLarge(); } -void NumberKeyboard::onLongPressPGUP() { setDEF(); } -void NumberKeyboard::onLongPressPGDN() { setDEF(); } -#endif +void NumberKeyboard::onLongPressMDL() { if (hasTwoPageKeys) setMAX(); else changeSign(); } +void NumberKeyboard::onPressTELE() { if (hasTwoPageKeys) changeSign(); else incSmall(); } +void NumberKeyboard::onLongPressTELE() { if (hasTwoPageKeys) setDEF(); else setMAX(); } +void NumberKeyboard::onPressPGUP() { if (hasTwoPageKeys) decSmall(); else setDEF(); } +void NumberKeyboard::onPressPGDN() { if (hasTwoPageKeys) incSmall(); else decLarge(); } #endif diff --git a/radio/src/gui/colorlcd/libui/keyboard_number.h b/radio/src/gui/colorlcd/libui/keyboard_number.h index 0354a9c3176..c396ac295a3 100644 --- a/radio/src/gui/colorlcd/libui/keyboard_number.h +++ b/radio/src/gui/colorlcd/libui/keyboard_number.h @@ -53,8 +53,6 @@ class NumberKeyboard : public Keyboard void onLongPressTELE() override; void onPressPGUP() override; void onPressPGDN() override; - void onLongPressPGUP() override; - void onLongPressPGDN() override; #endif static NumberKeyboard* _instance; diff --git a/radio/src/gui/colorlcd/libui/keyboard_text.cpp b/radio/src/gui/colorlcd/libui/keyboard_text.cpp index a4f72938631..ee85e60cc7b 100644 --- a/radio/src/gui/colorlcd/libui/keyboard_text.cpp +++ b/radio/src/gui/colorlcd/libui/keyboard_text.cpp @@ -95,36 +95,16 @@ void TextKeyboard::cursorEnd() lv_textarea_cursor_right(kb->ta); } -#if (defined(KEYS_GPIO_REG_PAGEUP) || defined(USE_HATS_AS_KEYS)) && \ - !defined(PCBX12S) -// Radios with both PGUP and PGDN buttons except X12S -void TextKeyboard::onPressSYS() { changeMode(); } -void TextKeyboard::onLongPressSYS() {} -void TextKeyboard::onPressMDL() {} +void TextKeyboard::onPressSYS() { if (hasTwoPageKeys) changeMode(); else cursorLeft(); } +void TextKeyboard::onLongPressSYS() { if (!hasTwoPageKeys) cursorStart(); } +void TextKeyboard::onPressMDL() { if (!hasTwoPageKeys) changeMode(); } void TextKeyboard::onLongPressMDL() { backspace(); } -void TextKeyboard::onPressTELE() { toggleCase(); } -void TextKeyboard::onLongPressTELE() { deleteChar(); } -void TextKeyboard::onPressPGUP() { cursorLeft(); } -void TextKeyboard::onPressPGDN() { cursorRight(); } +void TextKeyboard::onPressTELE() { if (hasTwoPageKeys) toggleCase(); else cursorRight(); } +void TextKeyboard::onLongPressTELE() { if (hasTwoPageKeys) deleteChar(); else cursorEnd(); } +void TextKeyboard::onPressPGUP() { if (hasTwoPageKeys) cursorLeft(); else deleteChar(); } +void TextKeyboard::onPressPGDN() { if (hasTwoPageKeys) cursorRight(); else toggleCase(); } void TextKeyboard::onLongPressPGUP() { cursorStart(); } void TextKeyboard::onLongPressPGDN() { cursorEnd(); } -#else -// Radios witb only a single PGUP/DN button or X12S -void TextKeyboard::onPressSYS() { cursorLeft(); } -void TextKeyboard::onLongPressSYS() { cursorStart(); } -void TextKeyboard::onPressMDL() { changeMode(); } -void TextKeyboard::onLongPressMDL() { backspace(); } -void TextKeyboard::onPressTELE() { cursorRight(); } -void TextKeyboard::onLongPressTELE() { cursorEnd(); } -#if defined(PCBX12S) -void TextKeyboard::onPressPGUP() { toggleCase(); } -#else -void TextKeyboard::onPressPGUP() { deleteChar(); } -#endif -void TextKeyboard::onPressPGDN() { toggleCase(); } -void TextKeyboard::onLongPressPGUP() {} -void TextKeyboard::onLongPressPGDN() { deleteChar(); } -#endif #endif void TextKeyboard::open(FormField* field) diff --git a/radio/src/gui/common/stdlcd/radio_ghost_menu.cpp b/radio/src/gui/common/stdlcd/radio_ghost_menu.cpp index a0e1e816e76..6ce59251e10 100644 --- a/radio/src/gui/common/stdlcd/radio_ghost_menu.cpp +++ b/radio/src/gui/common/stdlcd/radio_ghost_menu.cpp @@ -38,26 +38,18 @@ void menuGhostModuleConfig(event_t event) moduleState[EXTERNAL_MODULE].counter = GHST_MENU_CONTROL; break; -#if defined(ROTARY_ENCODER_NAVIGATION) case EVT_ROTARY_LEFT: -#elif defined(KEYS_GPIO_REG_UP) - case EVT_KEY_BREAK(KEY_UP): -#elif defined(KEYS_GPIO_REG_PLUS) - case EVT_KEY_BREAK(KEY_PLUS): -#endif + case EVT_KEY_BREAK(KEY_UP): + case EVT_KEY_BREAK(KEY_PLUS): reusableBuffer.ghostMenu.buttonAction = GHST_BTN_JOYUP; reusableBuffer.ghostMenu.menuAction = GHST_MENU_CTRL_NONE; moduleState[EXTERNAL_MODULE].counter = GHST_MENU_CONTROL; audioKeyPress(); break; -#if defined(ROTARY_ENCODER_NAVIGATION) case EVT_ROTARY_RIGHT: -#elif defined(KEYS_GPIO_REG_DOWN) - case EVT_KEY_BREAK(KEY_DOWN): -#elif defined(KEYS_GPIO_REG_MINUS) + case EVT_KEY_BREAK(KEY_DOWN): case EVT_KEY_BREAK(KEY_MINUS): -#endif reusableBuffer.ghostMenu.buttonAction = GHST_BTN_JOYDOWN; reusableBuffer.ghostMenu.menuAction = GHST_MENU_CTRL_NONE; moduleState[EXTERNAL_MODULE].counter = GHST_MENU_CONTROL; diff --git a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp index 104f66bdefb..c6888798f87 100644 --- a/radio/src/gui/common/stdlcd/radio_sdmanager.cpp +++ b/radio/src/gui/common/stdlcd/radio_sdmanager.cpp @@ -304,14 +304,12 @@ void menuRadioSdManager(event_t _event) switch (_event) { -#if defined(KEYS_GPIO_REG_MENU) case EVT_KEY_LONG(KEY_MENU): if (SD_CARD_PRESENT() && s_editMode == 0) { POPUP_MENU_ADD_ITEM(STR_SD_INFO); POPUP_MENU_START(onSdManagerMenu); } break; -#endif case EVT_KEY_BREAK(KEY_EXIT): REFRESH_FILES(); diff --git a/radio/src/gui/navigation/navigation.h b/radio/src/gui/navigation/navigation.h index 46cc593b4ca..454501d4638 100644 --- a/radio/src/gui/navigation/navigation.h +++ b/radio/src/gui/navigation/navigation.h @@ -21,18 +21,18 @@ #pragma once -// Define navigation type based on available keys -#if LCD_W == 212 - #define NAVIGATION_X9D -#elif defined(KEYS_GPIO_REG_SHIFT) +// Define navigation type if not defined already +#if defined(RADIO_XLITE) || defined(RADIO_XLITES) #define NAVIGATION_XLITE -#elif defined(KEYS_GPIO_REG_LEFT) +#elif defined(RADIO_LR3PRO) || defined(RADIO_T12) || defined(RADIO_TLITE) #define NAVIGATION_9X -#elif defined(KEYS_GPIO_REG_PAGEUP) && defined(KEYS_GPIO_REG_TELE) - #define NAVIGATION_X7 - #define NAVIGATION_X7_TX12 +#elif defined(RADIO_X9D) || defined(RADIO_X9DP) || defined(RADIO_X9DP2019) || defined(RADIO_X9E) + #define NAVIGATION_X9D #else #define NAVIGATION_X7 + #if defined(MANUFACTURER_RADIOMASTER) && !defined(RADIO_T8) + #define NAVIGATION_X7_RM + #endif #endif #if defined(NAVIGATION_X7) || defined(NAVIGATION_X9D) @@ -55,7 +55,7 @@ #define EVT_KEY_MODEL_MENU EVT_KEY_BREAK(KEY_MODEL) #define EVT_KEY_GENERAL_MENU EVT_KEY_BREAK(KEY_SYS) #define EVT_KEY_TELEMETRY EVT_KEY_LONG(KEY_PAGEUP) -#elif defined(NAVIGATION_X7_TX12) +#elif defined(NAVIGATION_X7_RM) #define EVT_KEY_PREVIOUS_VIEW EVT_KEY_BREAK(KEY_PAGEUP) #define EVT_KEY_NEXT_VIEW EVT_KEY_BREAK(KEY_PAGEDN) #define EVT_KEY_NEXT_PAGE EVT_ROTARY_RIGHT @@ -86,7 +86,7 @@ #if defined(NAVIGATION_XLITE) #define EVT_KEY_PREVIOUS_TELEM_VIEW(evt) (evt == EVT_KEY_LONG(KEY_LEFT) && keysGetState(KEY_SHIFT)) #define EVT_KEY_NEXT_TELEM_VIEW(evt) (evt == EVT_KEY_LONG(KEY_RIGHT) && keysGetState(KEY_SHIFT)) -#elif defined(KEYS_GPIO_REG_PAGEUP) +#elif defined(NAVIGATION_X7_RM) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) #define EVT_KEY_PREVIOUS_TELEM_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEUP)) #define EVT_KEY_NEXT_TELEM_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEDN)) #elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D) diff --git a/radio/src/hal/adc_driver.h b/radio/src/hal/adc_driver.h index 41468445e81..93ea83ccb90 100644 --- a/radio/src/hal/adc_driver.h +++ b/radio/src/hal/adc_driver.h @@ -77,6 +77,7 @@ struct etx_hal_adc_driver_t { potconfig_t default_pots_cfg; bool (*init)(); + void (*deinit)(); bool (*start_conversion)(); void (*wait_completion)(); diff --git a/radio/src/hal/key_driver.h b/radio/src/hal/key_driver.h index 933fbd08119..b5932b8a033 100644 --- a/radio/src/hal/key_driver.h +++ b/radio/src/hal/key_driver.h @@ -60,8 +60,13 @@ uint32_t readTrims(); // Init GPIO ports void keysInit(); +// returns a bit field with each supported key uint32_t keysGetSupported(); +static inline bool keyIsSupported(EnumKeys key) { + return keysGetSupported() & (1 << key); +} + uint8_t keysGetMaxKeys(); uint8_t keysGetMaxTrims(); diff --git a/radio/src/keys.cpp b/radio/src/keys.cpp index b529c315639..42d429b185c 100644 --- a/radio/src/keys.cpp +++ b/radio/src/keys.cpp @@ -467,22 +467,20 @@ bool keysPollingCycle() event_t evt = keys[i].input(keys_input & (1 << i)); if (evt) { evt |= i; -#if defined(KEYS_GPIO_REG_PAGEDN) && !defined(KEYS_GPIO_REG_PAGEUP) + // Radio with single PAGEDN key - if (evt == EVT_KEY_LONG(KEY_PAGEDN)) { - // Convert long press PAGEDN to short press PAGEUP - evt = EVT_KEY_BREAK(KEY_PAGEUP); - killEvents(KEY_PAGEDN); + if (!keyIsSupported(KEY_PAGEUP)) { + if (evt == EVT_KEY_LONG(KEY_PAGEDN)) { + // Convert long press PAGEDN to short press PAGEUP + evt = EVT_KEY_BREAK(KEY_PAGEUP); + killEvents(KEY_PAGEDN); + } } -#endif -#if defined(KEYS_GPIO_REG_SHIFT) + // SHIFT key should not trigger REPT events - if (evt != EVT_KEY_REPT(KEY_SHIFT)) { - pushEvent(evt); - } -#else + if (evt == EVT_KEY_REPT(KEY_SHIFT)) continue; + pushEvent(evt); -#endif } } diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index ee23bb7d1bc..7f59d05dc8c 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1693,12 +1693,13 @@ Stops key state machine. See [Key Events](../key_events.md) for the detailed des */ static int luaKillEvents(lua_State * L) { -#if defined(KEYS_GPIO_REG_MENU) - #define IS_MASKABLE(key) \ - ((key) != KEY_EXIT && (key) != KEY_ENTER && \ - ((scriptInternalData[0].reference == SCRIPT_STANDALONE) || \ - (key) != KEY_PAGEDN)) +#if !defined(COLORLCD) + #define IS_STANDALONE() (scriptInternalData[0].reference == SCRIPT_STANDALONE) + #define IS_MASKABLE(key) \ + ((key) != KEY_EXIT && (key) != KEY_ENTER && \ + (!keyIsSupported(KEY_MENU) || (IS_STANDALONE() || ((key) != KEY_PAGEDN)))) #else + #define IS_STANDALONE() (false) #define IS_MASKABLE(key) ((key) != KEY_EXIT && (key) != KEY_ENTER) #endif @@ -1710,6 +1711,9 @@ static int luaKillEvents(lua_State * L) luaEmptyEventBuffer(); } return 0; + +#undef IS_MASKABLE +#undef IS_STANDALONE } #if LCD_DEPTH > 1 && !defined(COLORLCD) diff --git a/radio/src/lua/interface.cpp b/radio/src/lua/interface.cpp index 7113c767410..be01b4acab0 100644 --- a/radio/src/lua/interface.cpp +++ b/radio/src/lua/interface.cpp @@ -1236,8 +1236,8 @@ static bool resumeLua(bool init, bool allowLcdUsage) luaState = INTERPRETER_RELOAD_PERMANENT_SCRIPTS; killEvents(evt.event); } -#if defined(KEYS_GPIO_REG_MENU) - // TODO find another key and add a #define +#if !defined(COLORLCD) + // TODO find another key else if (evt.event == EVT_KEY_LONG(KEY_MENU)) { luaEmptyEventBuffer(); luaDisplayStatistics = !luaDisplayStatistics; diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index 835c08f1d9d..51136a4af94 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -242,8 +242,10 @@ enum DisplayTrims DISPLAY_TRIMS_ALWAYS }; +#if !defined(BOOT) extern RadioData g_eeGeneral; extern ModelData g_model; +#endif constexpr uint8_t EE_GENERAL = 0x01; constexpr uint8_t EE_MODEL = 0x02; diff --git a/radio/src/targets/common/arm/stm32/stm32_adc.cpp b/radio/src/targets/common/arm/stm32/stm32_adc.cpp index 75d8c860b5e..d80ea9e7414 100644 --- a/radio/src/targets/common/arm/stm32/stm32_adc.cpp +++ b/radio/src/targets/common/arm/stm32/stm32_adc.cpp @@ -540,6 +540,16 @@ bool stm32_hal_adc_init(const stm32_adc_t* ADCs, uint8_t n_ADC, return true; } +void stm32_hal_adc_deinit(const stm32_adc_t* ADCs, uint8_t n_ADC) +{ + const stm32_adc_t* adc = ADCs; + + while (n_ADC > 0) { + LL_ADC_Disable(adc->ADCx); + adc++; n_ADC--; + } +} + #if defined(STM32H7RS) static inline DMA_Channel_TypeDef* _dma_get_stream(DMA_TypeDef *DMAx, uint32_t Channel) diff --git a/radio/src/targets/common/arm/stm32/stm32_adc.h b/radio/src/targets/common/arm/stm32/stm32_adc.h index 9812a1526b0..f0e94856308 100644 --- a/radio/src/targets/common/arm/stm32/stm32_adc.h +++ b/radio/src/targets/common/arm/stm32/stm32_adc.h @@ -56,6 +56,8 @@ bool stm32_hal_adc_init(const stm32_adc_t* ADCs, uint8_t n_ADC, const stm32_adc_input_t* inputs, const stm32_adc_gpio_t* ADC_GPIOs, uint8_t n_GPIO); +void stm32_hal_adc_deinit(const stm32_adc_t* ADCs, uint8_t n_ADC); + bool stm32_hal_adc_start_read(const stm32_adc_t* ADCs, uint8_t n_ADC, const stm32_adc_input_t* inputs, uint8_t n_inputs); diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index cae18358fc6..866b71632d3 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -54,11 +54,9 @@ if (PCB STREQUAL X10) set(BLUETOOTH ON) set(AUX_SERIAL OFF) add_definitions(-DHARDWARE_POWER_MANAGEMENT_UNIT) - add_definitions(-DRADIO_X10E) add_definitions(-DMANUFACTURER_FRSKY) elseif (PCBREV STREQUAL T15) set(FLAVOUR t15) - add_definitions(-DRADIO_T15) add_definitions(-DRADIO_FAMILY_T16) set(FUNCTION_SWITCHES ON) set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") @@ -75,7 +73,6 @@ if (PCB STREQUAL X10) set(LCD_DRIVER lcd_st7796s_driver.cpp) elseif (PCBREV STREQUAL T16) set(FLAVOUR t16) - add_definitions(-DRADIO_T16) add_definitions(-DRADIO_FAMILY_T16) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") option(BLUETOOTH "Support for bluetooth module" OFF) @@ -86,7 +83,6 @@ if (PCB STREQUAL X10) set(FLYSKY_GIMBAL ON) elseif (PCBREV STREQUAL TX16S) set(FLAVOUR tx16s) - add_definitions(-DRADIO_TX16S) add_definitions(-DRADIO_FAMILY_T16) # Uncomment the line below to enable bootloader support for SPI flash @@ -104,7 +100,6 @@ if (PCB STREQUAL X10) set(FLEXSW "2" CACHE STRING "Max flex inputs usable as switches") elseif (PCBREV STREQUAL F16) set(FLAVOUR f16) - add_definitions(-DRADIO_F16) add_definitions(-DRADIO_FAMILY_T16) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") option(BLUETOOTH "Support for bluetooth module" OFF) @@ -113,7 +108,6 @@ if (PCB STREQUAL X10) set(VIDEO_SWITCH ON) elseif (PCBREV STREQUAL V16) set(FLAVOUR v16) - add_definitions(-DRADIO_V16) add_definitions(-DRADIO_FAMILY_T16) set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") option(BLUETOOTH "Support for bluetooth module" OFF) @@ -128,7 +122,6 @@ if (PCB STREQUAL X10) endif() elseif (PCBREV STREQUAL T18) set(FLAVOUR t18) - add_definitions(-DRADIO_T18) add_definitions(-DRADIO_FAMILY_T16) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") option(BLUETOOTH "Support for bluetooth module" OFF) @@ -141,7 +134,6 @@ if (PCB STREQUAL X10) set(FLAVOUR x10) set(DEFAULT_INTERNAL_MODULE XJT_PXX1 CACHE STRING "Default internal module") set(BLUETOOTH ON) - add_definitions(-DRADIO_X10) add_definitions(-DMANUFACTURER_FRSKY) endif() elseif (PCB STREQUAL X12S) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 0679f50bb0c..cecb8d3dccd 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -29,65 +29,6 @@ #define TELEMETRY_EXTI_PRIO 0 // required for soft serial -// Keys -#if defined(PCBX12S) - #define KEYS_GPIO_REG_PAGEUP GPIOC - #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_13 // PC.13 - #define KEYS_GPIO_REG_PAGEDN GPIOI - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_8 // PI.08 - #define KEYS_GPIO_REG_SYS GPIOI - #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_7 // PI.07 - #define KEYS_GPIO_REG_ENTER GPIOC - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_1 // PC.01 - #define KEYS_GPIO_REG_MDL GPIOG - #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_13 // PG.13 - #define KEYS_GPIO_REG_EXIT GPIOI - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_6 // PI.06 - #define KEYS_GPIO_REG_TELE GPIOC - #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_4 // PC.04 -#elif defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) - #define KEYS_GPIO_REG_ENTER GPIOI - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_8 // PI.08 - #define KEYS_GPIO_REG_PAGEUP GPIOC - #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_13 // PC.13 - #define KEYS_GPIO_REG_PAGEDN GPIOI - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_11 // PI.11 - #define KEYS_GPIO_REG_MDL GPIOI - #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_6 // PI.06 - #define KEYS_GPIO_REG_EXIT GPIOI - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_4 // PI.04 - #define KEYS_GPIO_REG_SYS GPIOI - #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_7 // PI.07 - #define KEYS_GPIO_REG_TELE GPIOI - #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_5 // PI.05 -#elif defined(RADIO_T15) - #define KEYS_GPIO_REG_ENTER GPIOI - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_8 // PI.08 - #define KEYS_GPIO_REG_PAGEDN GPIOI - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_11 // PI.11 - #define KEYS_GPIO_REG_MDL GPIOI - #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_6 // PI.06 - #define KEYS_GPIO_REG_EXIT GPIOI - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_5 // PI.05 - #define KEYS_GPIO_REG_SYS GPIOI - #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_7 // PI.07 - #define KEYS_GPIO_REG_TELE GPIOI - #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_4 // PI.04 -#elif defined(PCBX10) - #define KEYS_GPIO_REG_ENTER GPIOI - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_8 // PI.08 - #define KEYS_GPIO_REG_PAGEDN GPIOI - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_11 // PI.11 - #define KEYS_GPIO_REG_MDL GPIOI - #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_4 // PI.04 - #define KEYS_GPIO_REG_EXIT GPIOI - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_6 // PI.06 - #define KEYS_GPIO_REG_SYS GPIOI - #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_7 // PI.07 - #define KEYS_GPIO_REG_TELE GPIOI - #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_5 // PI.05 -#endif - // Rotary Encoder #define ROTARY_ENCODER_GPIO GPIOH #define ROTARY_ENCODER_GPIO_PIN_A LL_GPIO_PIN_11 // PH.11 @@ -107,168 +48,7 @@ #define ROTARY_ENCODER_TIMER_IRQHandler TIM8_BRK_TIM12_IRQHandler #if defined(RADIO_T15) - #define ROTARY_ENCODER_INVERTED -#endif - -// Switches -#if defined(RADIO_T15) - #define STORAGE_SWITCH_A - #define HARDWARE_SWITCH_A - #define SWITCHES_GPIO_REG_A_H GPIOG - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_3 // PG.03 - #define SWITCHES_GPIO_REG_A_L GPIOD - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_11 // PD.11 - #define SWITCHES_A_INVERTED - - #define STORAGE_SWITCH_B - #define HARDWARE_SWITCH_B - #define SWITCHES_GPIO_REG_B_H GPIOB - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_12 // PB.12 - #define SWITCHES_GPIO_REG_B_L GPIOH - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_9 // PH.09 - - #define STORAGE_SWITCH_C - #define HARDWARE_SWITCH_C - #define SWITCHES_GPIO_REG_C_H GPIOG - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_2 // PG.02 - #define SWITCHES_GPIO_REG_C_L GPIOH - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_14 // PH.14 - #define SWITCHES_C_INVERTED - - #define STORAGE_SWITCH_D - #define HARDWARE_SWITCH_D - #define SWITCHES_GPIO_REG_D_H GPIOI - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_15 // PI.15 - #define SWITCHES_GPIO_REG_D_L GPIOH - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_15 // PH.15 - - #define STORAGE_SWITCH_E - #define HARDWARE_SWITCH_E - #define SWITCHES_GPIO_REG_E GPIOB - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_15 // PB.15 - #define STORAGE_SWITCH_F - #define HARDWARE_SWITCH_F - #define SWITCHES_GPIO_REG_F GPIOH - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_12 // PH.12 - //SW1 - #define FUNCTION_SWITCH_1 SG - #define STORAGE_SWITCH_G - #define HARDWARE_SWITCH_G - #define SWITCHES_GPIO_REG_G GPIOB - #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_14 // PB.14 - #define SWITCHES_G_CFS_IDX 0 - //SW2 - #define FUNCTION_SWITCH_2 SH - #define STORAGE_SWITCH_H - #define HARDWARE_SWITCH_H - #define SWITCHES_GPIO_REG_H GPIOD - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_13 // PD.13 - #define SWITCHES_H_CFS_IDX 1 - //SW3 - #define FUNCTION_SWITCH_3 SI - #define STORAGE_SWITCH_I - #define HARDWARE_SWITCH_I - #define SWITCHES_GPIO_REG_I GPIOJ - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_7 // PJ.07 - #define SWITCHES_I_CFS_IDX 2 - //SW4 - #define FUNCTION_SWITCH_4 SJ - #define STORAGE_SWITCH_J - #define HARDWARE_SWITCH_J - #define SWITCHES_GPIO_REG_J GPIOG - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_13 // PG.13 - #define SWITCHES_J_CFS_IDX 3 - //SW5 - #define FUNCTION_SWITCH_5 SK - #define STORAGE_SWITCH_K - #define HARDWARE_SWITCH_K - #define SWITCHES_GPIO_REG_K GPIOJ - #define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_8 // PJ.08 - #define SWITCHES_K_CFS_IDX 4 - //SW6 - #define FUNCTION_SWITCH_6 SL - #define STORAGE_SWITCH_L - #define HARDWARE_SWITCH_L - #define SWITCHES_GPIO_REG_L GPIOB - #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_13 // PB.13 - #define SWITCHES_L_CFS_IDX 5 -#else - #define STORAGE_SWITCH_A - #define HARDWARE_SWITCH_A - #define SWITCHES_GPIO_REG_A_H GPIOH - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_9 // PH.09 - #define SWITCHES_GPIO_REG_A_L GPIOI - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_15 // PI.15 - #define STORAGE_SWITCH_B - #define HARDWARE_SWITCH_B - #define SWITCHES_GPIO_REG_B_H GPIOH - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_12 // PH.12 - #define SWITCHES_GPIO_REG_B_L GPIOB - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_12 // PB.12 - #define STORAGE_SWITCH_C - #define HARDWARE_SWITCH_C - #define SWITCHES_GPIO_REG_C_H GPIOD - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_11 // PD.11 - #define SWITCHES_GPIO_REG_C_L GPIOB - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_15 // PB.15 - #define STORAGE_SWITCH_D - #define HARDWARE_SWITCH_D - #define SWITCHES_GPIO_REG_D_H GPIOJ - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_7 // PJ.07 - #define SWITCHES_GPIO_REG_D_L GPIOG - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_2 // PG.02 - #define STORAGE_SWITCH_E - #define HARDWARE_SWITCH_E - #define SWITCHES_GPIO_REG_E_H GPIOH - #define SWITCHES_GPIO_PIN_E_H LL_GPIO_PIN_4 // PH.04 - #define SWITCHES_GPIO_REG_E_L GPIOE - #define SWITCHES_GPIO_PIN_E_L LL_GPIO_PIN_3 // PE.03 - #define STORAGE_SWITCH_F - #define HARDWARE_SWITCH_F - #define SWITCHES_GPIO_REG_F GPIOH - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_3 // PH.03 - #define STORAGE_SWITCH_G - #define HARDWARE_SWITCH_G - #define SWITCHES_GPIO_REG_G_H GPIOG - #define SWITCHES_GPIO_PIN_G_H LL_GPIO_PIN_6 // PG.06 - #define SWITCHES_GPIO_REG_G_L GPIOG - #define SWITCHES_GPIO_PIN_G_L LL_GPIO_PIN_3 // PG.03 - #define STORAGE_SWITCH_H - #define HARDWARE_SWITCH_H - #define SWITCHES_GPIO_REG_H GPIOG - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_7 // PG.07 - - #if defined(PCBX12S) - #define SWITCHES_F_INVERTED - #elif defined(PCBX10) - #define SWITCHES_B_INVERTED - #define SWITCHES_D_INVERTED - #define SWITCHES_E_INVERTED - #endif - - #if defined(PCBX10) && !defined(RADIO_F16) - // Gimbal switch left - #define STORAGE_SWITCH_I - #define HARDWARE_SWITCH_I - #define SWITCHES_GPIO_REG_I GPIOH - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_14 // PH.14 - // Gimbal switch right - #define STORAGE_SWITCH_J - #define HARDWARE_SWITCH_J - #define SWITCHES_GPIO_REG_J GPIOH - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_15 // PH.15 - #elif defined(PCBX12S) - // Gimbal switch left - #define STORAGE_SWITCH_I - #define HARDWARE_SWITCH_I - #define SWITCHES_GPIO_REG_I GPIOB - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_1 // PB.01 - // Gimbal switch right - #define STORAGE_SWITCH_J - #define HARDWARE_SWITCH_J - #define SWITCHES_GPIO_REG_J GPIOB - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_0 // PB.00 - #endif + #define ROTARY_ENCODER_INVERTED #endif // 6POS SW @@ -279,231 +59,13 @@ #define SIXPOS_LED_BLUE 0 #endif -// Trims -#if defined(RADIO_T15) - #define TRIMS_GPIO_REG_LHL GPIOD - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PD.03 - #define TRIMS_GPIO_REG_LHR GPIOD - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_7 // PD.07 - #define TRIMS_GPIO_REG_LVU GPIOJ - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_12 // PJ.12 - #define TRIMS_GPIO_REG_LVD GPIOJ - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_13 // PJ.13 - #define TRIMS_GPIO_REG_RVD GPIOG - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_12 // PG.12 - #define TRIMS_GPIO_REG_RHL GPIOA - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_6 // PA.06 - #define TRIMS_GPIO_REG_RVU GPIOJ - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_14 // PJ.14 - #define TRIMS_GPIO_REG_RHR GPIOC - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_4 // PC.04 -#elif defined(PCBX12S) - #define TRIMS_GPIO_REG_RHL GPIOC - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_0 // PC.00 - #define TRIMS_GPIO_REG_RHR GPIOI - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_4 // PI.04 - #define TRIMS_GPIO_REG_RVD GPIOG - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_12 // PG.12 - #define TRIMS_GPIO_REG_RVU GPIOJ - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_14 // PJ.14 - #define TRIMS_GPIO_REG_LVD GPIOJ - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_13 // PJ.13 - #define TRIMS_GPIO_REG_LHL GPIOD - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PD.03 - #define TRIMS_GPIO_REG_LVU GPIOJ - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_12 // PJ.12 - #define TRIMS_GPIO_REG_LHR GPIOD - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_7 // PD.07 - #define TRIMS_GPIO_REG_RSD GPIOJ - #define TRIMS_GPIO_PIN_RSD LL_GPIO_PIN_8 // PJ.08 - #define TRIMS_GPIO_REG_RSU GPIOD - #define TRIMS_GPIO_PIN_RSU LL_GPIO_PIN_13 // PD.13 - #define TRIMS_GPIO_REG_LSD GPIOB - #define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_14 // PB.14 - #define TRIMS_GPIO_REG_LSU GPIOB - #define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_13 // PB.13 -#elif defined(PCBX10) - // Left/Right Horizontal trims (LHL/LHR) - #if defined(RADIO_TX16S) || defined(RADIO_F16) || defined(RADIO_V16) - #define TRIMS_GPIO_REG_LHL GPIOA - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_6 // PA.06 - #define TRIMS_GPIO_REG_LHR GPIOC - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_4 // PC.04 - #else - #define TRIMS_GPIO_REG_LHL GPIOB - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_8 // PB.08 - #define TRIMS_GPIO_REG_LHR GPIOB - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_9 // PB.09 - #endif - - // Vertical trims - common across all PCBX10 variants - #define TRIMS_GPIO_REG_LVD GPIOG - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_12 // PG.12 - #define TRIMS_GPIO_REG_LVU GPIOJ - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_14 // PJ.14 - #define TRIMS_GPIO_REG_RVD GPIOJ - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_13 // PJ.13 - #define TRIMS_GPIO_REG_RVU GPIOJ - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_12 // PJ.12 - - // Right Horizontal trims - common across all PCBX10 variants - #define TRIMS_GPIO_REG_RHL GPIOD - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_3 // PD.03 - #define TRIMS_GPIO_REG_RHR GPIOD - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_7 // PD.07 - - // T5/T6 trim assignments - #if defined(RADIO_V16) - // T5/T6 trims are in exchanged positions to other handsets - #define TRIMS_GPIO_REG_LSU GPIOB - #define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_14 // PB.14 - #define TRIMS_GPIO_REG_LSD GPIOB - #define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_13 // PB.13 - #define TRIMS_GPIO_REG_RSU GPIOD - #define TRIMS_GPIO_PIN_RSU LL_GPIO_PIN_13 // PD.13 - #define TRIMS_GPIO_REG_RSD GPIOJ - #define TRIMS_GPIO_PIN_RSD LL_GPIO_PIN_8 // PJ.08 - #elif defined(RADIO_FAMILY_T16) - #define TRIMS_GPIO_REG_LSU GPIOD - #define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_13 // PD.13 - #define TRIMS_GPIO_REG_LSD GPIOJ - #define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_8 // PJ.08 - #define TRIMS_GPIO_REG_RSU GPIOB - #define TRIMS_GPIO_PIN_RSU LL_GPIO_PIN_14 // PB.14 - #define TRIMS_GPIO_REG_RSD GPIOB - #define TRIMS_GPIO_PIN_RSD LL_GPIO_PIN_13 // PB.13 - #else // Other PCBX10 variants - #define TRIMS_GPIO_REG_LSU GPIOJ - #define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_8 // PJ.08 - #define TRIMS_GPIO_REG_LSD GPIOD - #define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_13 // PD.13 - #define TRIMS_GPIO_REG_RSU GPIOB - #define TRIMS_GPIO_PIN_RSU LL_GPIO_PIN_14 // PB.14 - #define TRIMS_GPIO_REG_RSD GPIOB - #define TRIMS_GPIO_PIN_RSD LL_GPIO_PIN_13 // PB.13 - #endif -#endif - - // ADC #if defined(PCBX12S) - #define ADC_SPI SPI4 - #define ADC_SPI_GPIO_PIN_SCK GPIO_PIN(GPIOE, 2) // PE.02 - #define ADC_SPI_GPIO_PIN_CS GPIO_PIN(GPIOE, 4) // PE.04 - #define ADC_SPI_GPIO_PIN_MOSI GPIO_PIN(GPIOE, 6) // PE.06 - #define ADC_SPI_GPIO_PIN_MISO GPIO_PIN(GPIOE, 5) // PE.05 - - #define ADC_SPI_STICK_LH 0 - #define ADC_SPI_STICK_LV 1 - #define ADC_SPI_STICK_RV 2 - #define ADC_SPI_STICK_RH 3 - #define ADC_SPI_POT1 4 - #define ADC_SPI_POT2 5 - #define ADC_SPI_POT3 6 - #define ADC_SPI_SLIDER1 7 - #define ADC_SPI_SLIDER2 8 - #define ADC_SPI_BATT 9 - #define ADC_SPI_SLIDER3 11 - #define ADC_SPI_SLIDER4 10 - - #define ADC_MAIN ADC3 - #define ADC_GPIO_PIN_MOUSE1 LL_GPIO_PIN_8 // PF.08 ADC3_IN6 J5 MOUSE_X - #define ADC_GPIO_PIN_MOUSE2 LL_GPIO_PIN_9 // PF.09 ADC3_IN7 J6 MOUSE_Y - #define ADC_GPIO_MOUSE GPIOF - #define ADC_CHANNEL_MOUSE1 6 - #define ADC_CHANNEL_MOUSE2 7 - #define ADC_GPIOF_PINS (ADC_GPIO_PIN_MOUSE1 | ADC_GPIO_PIN_MOUSE2) - #define ADC_EXT ADC1 - #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES - #define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN16 - #define ADC_EXT_CHANNELS { ADC_CHANNEL_RTC_BATT } - #define ADC_DMA DMA2 - #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_2 - // TODO: use for SPI1_RX instead? - #define ADC_DMA_STREAM LL_DMA_STREAM_0 - #define ADC_DMA_STREAM_IRQ DMA2_Stream0_IRQn - #define ADC_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler - #define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES + #define USE_ADS79XX #define ADC_VREF_PREC2 300 #elif defined(RADIO_V16) - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_2 // PC.00 // ADC123_IN10 -> ADC3_IN10 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PC.02 // ADC123_IN12 -> ADC3_IN12 - #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_0 // PC.01 // ADC123_IN11 -> ADC3_IN11 - #define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_5 // PA.05 - #define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_3 // PC.03 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_7 // PF.07 - #define ADC_GPIO_PIN_EXT1 LL_GPIO_PIN_8 // PF.08 - #define ADC_GPIO_PIN_EXT2 LL_GPIO_PIN_9 // PF.09 - #define ADC_GPIO_PIN_EXT3 ADC_GPIO_PIN_STICK_RH - #define ADC_GPIO_PIN_EXT4 ADC_GPIO_PIN_STICK_RV - #define ADC_GPIOA_PINS_FS (LL_GPIO_PIN_2 | LL_GPIO_PIN_3) - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_SLIDER1) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_SLIDER2) - #define ADC_GPIOF_PINS (ADC_GPIO_PIN_EXT1 | ADC_GPIO_PIN_EXT2) - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_0 // ADC123_IN0 -> ADC3_IN0 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_1 // ADC123_IN1 -> ADC3_IN1 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_2 // ADC123_IN2 -> ADC3_IN2 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_3 // ADC123_IN3 -> ADC3_IN3 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_12 // ADC123_IN10 -> ADC3_IN10 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_11 // ADC123_IN12 -> ADC3_IN12 - #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_10 // ADC123_IN11 -> ADC3_IN11 - #define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_5 // ADC12_IN5 -> ADC1_IN5 - #define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_13 // ADC123_IN13 -> ADC1_IN13 - #define ADC_CHANNEL_EXT1 LL_ADC_CHANNEL_6 // ADC3_IN6 -> ADC3_IN6 - #define ADC_CHANNEL_EXT2 LL_ADC_CHANNEL_7 // ADC3_IN7 -> ADC3_IN7 - #define ADC_CHANNEL_EXT3 LL_ADC_CHANNEL_2 // ADC3_IN2: same as RH - #define ADC_CHANNEL_EXT4 LL_ADC_CHANNEL_3 // ADC3_IN3: same as RV - #define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN18 - #define ADC_MAIN ADC3 - #define ADC_EXT ADC1 - #define ADC_EXT_CHANNELS { ADC_CHANNEL_SLIDER1, ADC_CHANNEL_SLIDER2, ADC_CHANNEL_RTC_BAT } - #define ADC_EXT_DMA DMA2 - #define ADC_EXT_DMA_CHANNEL LL_DMA_CHANNEL_0 - #define ADC_EXT_DMA_STREAM LL_DMA_STREAM_4 - #define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream4_IRQn - #define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler - #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES - #define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES - #define ADC_DMA DMA2 - #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_2 - #define ADC_DMA_STREAM LL_DMA_STREAM_0 - #define ADC_DMA_STREAM_IRQ DMA2_Stream0_IRQn - #define ADC_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler #define ADC_VREF_PREC2 330 #elif defined(PCBX10) -#if defined(RADIO_T15) - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_2 // PC.02 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_0 // PC.00 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_12 // ADC3_IN12 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_10 // ADC3_IN10 -#else - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PC.01 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_10 // ADC3_IN10 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_11 // ADC3_IN11 -#endif - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_7 // PF.07 -#if !defined(RADIO_T15) - #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_2 // PC.02 // - #define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_6 // PF.06 - #define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_3 // PC.03 // - #define ADC_GPIO_PIN_EXT1 LL_GPIO_PIN_8 // PF.08 - #define ADC_GPIO_PIN_EXT2 LL_GPIO_PIN_9 // PF.09 - #define ADC_GPIO_PIN_EXT3 ADC_GPIO_PIN_STICK_RH - #define ADC_GPIO_PIN_EXT4 ADC_GPIO_PIN_STICK_RV -#endif #if defined(RADIO_X10) || defined(RADIO_X10E) #define PWM_STICKS #define PWM_TIMER TIM5 @@ -512,66 +74,8 @@ #define PWM_GPIO_AF GPIO_AF2 #define PWM_IRQHandler TIM5_IRQHandler #define PWM_IRQn TIM5_IRQn - #define PWM_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_RV) - #define STICK_PWM_CHANNEL_LH 0 - #define STICK_PWM_CHANNEL_LV 1 - #define STICK_PWM_CHANNEL_RV 3 - #define STICK_PWM_CHANNEL_RH 2 - #endif -#if defined(RADIO_T15) - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_1 // ADC3_IN1 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_0 // ADC3_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_3 // ADC3_IN3 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_2 // ADC3_IN2 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_5 // ADC3_IN5 -#else - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_0 // ADC3_IN0 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_1 // ADC3_IN1 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_2 // ADC3_IN2 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_3 // ADC3_IN3 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_5 // ADC3_IN5 -#endif -#if !defined(RADIO_T15) - #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_12 // ADC3_IN12 - #define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_4 // ADC3_IN4 - #define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_13 // ADC3_IN13 - #define ADC_CHANNEL_EXT1 LL_ADC_CHANNEL_6 // ADC3_IN6 - #define ADC_CHANNEL_EXT2 LL_ADC_CHANNEL_7 // ADC3_IN7 - #define ADC_CHANNEL_EXT3 LL_ADC_CHANNEL_2 // ADC3_IN2: same as RH - #define ADC_CHANNEL_EXT4 LL_ADC_CHANNEL_3 // ADC3_IN3: same as RV -#endif -#if defined(RADIO_T15) - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_RV) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2) - #define ADC_GPIOF_PINS (ADC_GPIO_PIN_BATT) -#else - #define ADC_GPIOA_PINS_FS (LL_GPIO_PIN_2 | LL_GPIO_PIN_3) - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_RV) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_SLIDER2) - #define ADC_GPIOF_PINS (ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_BATT | ADC_GPIO_PIN_EXT1 | ADC_GPIO_PIN_EXT2) -#endif - #define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN18 - #define ADC_MAIN ADC3 - #define ADC_EXT ADC1 - #if defined(RADIO_V16) - #define ADC_EXT_CHANNELS { ADC_CHANNEL_SLIDER1, ADC_CHANNEL_SLIDER2, ADC_CHANNEL_RTC_BAT } - // Required DMA for more than one channel for EXT_ADC - #define ADC_EXT_DMA DMA2 - #define ADC_EXT_DMA_CHANNEL LL_DMA_CHANNEL_0 - #define ADC_EXT_DMA_STREAM LL_DMA_STREAM_4 - #define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream4_IRQn - #define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler - #else - #define ADC_EXT_CHANNELS { ADC_CHANNEL_RTC_BAT } + #define PWM_GPIOA_PINS (LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | LL_GPIO_PIN_3) #endif - #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES - #define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES - #define ADC_DMA DMA2 - #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_2 - #define ADC_DMA_STREAM LL_DMA_STREAM_0 - #define ADC_DMA_STREAM_IRQ DMA2_Stream0_IRQn - #define ADC_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler - // VBat divider is /4 on F42x and F43x devices #if defined(RADIO_TX16S) || defined(RADIO_T15) || defined(RADIO_F16) || defined(RADIO_V16) || defined(RADIO_T18) #define ADC_VREF_PREC2 330 @@ -582,29 +86,10 @@ #endif #endif -#if defined(RADIO_T15) - #define ADC_DIRECTION {1,-1,1,-1, 1,1} -#elif defined(RADIO_T16) - #define ADC_DIRECTION {1,-1,1,-1, 1,1,1, -1,1,1,1, -1,1 } -#elif defined(RADIO_T18) - #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1, -1,1,1,1, -1,1 } -#elif defined(RADIO_TX16S) || defined(RADIO_F16) - #define ADC_DIRECTION {1,-1,1,-1, 1,1,1, -1,1,1,1, -1,1 } -#elif defined(RADIO_V16) - #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1, -1,1,1,1, -1,1 } -#elif defined(PCBX10) - #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1, 1,-1,1,1, 1,-1 } -#elif defined(PCBX12S) - #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1, 1,-1, -1,-1, 0,0,0} -#else - #error "Missing ADC_DIRECTION array" -#endif - #if defined(RADIO_TX16S) #define DEFAULT_6POS_CALIB {3, 12, 21, 30, 38} #define DEFAULT_6POS_IDX 5 #endif - // Power #if defined(RADIO_T18) diff --git a/radio/src/targets/nv14/hal.h b/radio/src/targets/nv14/hal.h index 6b1e34435ed..4d1f880e951 100644 --- a/radio/src/targets/nv14/hal.h +++ b/radio/src/targets/nv14/hal.h @@ -46,130 +46,12 @@ 2/3/4 SDIO */ - -// Trims -#define TRIMS_GPIO_REG_RHL GPIOD -#define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_7 // PD.07 -#define TRIMS_GPIO_REG_RHR GPIOG -#define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_10 // PG.10 -#define TRIMS_GPIO_REG_RVD GPIOJ -#define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_0 // PJ.00 -#define TRIMS_GPIO_REG_RVU GPIOB -#define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_15 // PB.15 - -#define KEYS_GPIO_REG_ENTER GPIOC -#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PC.13 - -#define TRIMS_GPIO_REG_LHL GPIOH -#define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_2 // PH.02 -#define TRIMS_GPIO_REG_LHR GPIOG -#define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_2 // PG.02 -#define TRIMS_GPIO_REG_LVU GPIOH -#define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_7 // PH.07 -#define TRIMS_GPIO_REG_LVD GPIOJ -#define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_12 // PJ.12 - -#define KEYS_GPIO_REG_EXIT GPIOG -#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_11 // PG.11 - // Monitor pin #define VBUS_MONITOR_GPIO GPIO_PIN(GPIOJ, 14) // PJ.14 -// Switches -#define HARDWARE_SWITCH_A -#define STORAGE_SWITCH_A -#define HARDWARE_SWITCH_B -#define STORAGE_SWITCH_B -#define HARDWARE_SWITCH_C -#define STORAGE_SWITCH_C -#define HARDWARE_SWITCH_D -#define STORAGE_SWITCH_D -#define HARDWARE_SWITCH_E -#define STORAGE_SWITCH_E -#define HARDWARE_SWITCH_F -#define STORAGE_SWITCH_F -#define HARDWARE_SWITCH_G -#define STORAGE_SWITCH_G -#define HARDWARE_SWITCH_H -#define STORAGE_SWITCH_H - -// Index of all switches / trims -#define KEYS_GPIO_ACTIVE_HIGH -#define TRIMS_GPIO_ACTIVE_HIGH - // ADC - -#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02 -#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03 -#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_4 // PA.04 -#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_5 // PA.05 - -#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_6 // PA.06 VRA -#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_4 // PC.04 VRB -#define ADC_GPIO_PIN_SWA LL_GPIO_PIN_1 // PB.01 -#define ADC_GPIO_PIN_SWB LL_GPIO_PIN_8 // PF.08 -#define ADC_GPIO_PIN_SWC LL_GPIO_PIN_0 // PB.00 -#define ADC_GPIO_PIN_SWD LL_GPIO_PIN_10 // PF.10 -#define ADC_GPIO_PIN_SWE LL_GPIO_PIN_0 // PC.00 -#define ADC_GPIO_PIN_SWF LL_GPIO_PIN_1 // PC.01 -#define ADC_GPIO_PIN_SWG LL_GPIO_PIN_2 // PC.02 -#define ADC_GPIO_PIN_SWH LL_GPIO_PIN_7 // PA.07 - -#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_5 // PC.05 - -// FLYSKY_HALL_STICKS -// #define ADC_GPIOA_PINS_FS (GPIO_Pin_6 | GPIO_Pin_7) -#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH \ - | ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_SWH) -#define ADC_GPIOB_PINS (ADC_GPIO_PIN_SWA | ADC_GPIO_PIN_SWC) -#define ADC_GPIOC_PINS \ - (ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SWE | ADC_GPIO_PIN_SWF | ADC_GPIO_PIN_SWG | ADC_GPIO_PIN_BATT) -#define ADC_GPIOF_PINS (ADC_GPIO_PIN_SWB | ADC_GPIO_PIN_SWD) - -#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC123_IN2 -> ADC1_IN2 -#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC123_IN3 -> ADC1_IN3 -#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_4 // ADC12_IN4 -> ADC1_IN4 -#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_5 // ADC12_IN5 -> ADC1_IN5 - -#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6 -#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_14 // ADC12_IN14 -> ADC1_IN14 -#define ADC_CHANNEL_SWA LL_ADC_CHANNEL_9 // ADC12_IN9 -> ADC1_IN9 -#define ADC_CHANNEL_SWB LL_ADC_CHANNEL_6 // ADC3_IN6 -> ADC3_IN6 -#define ADC_CHANNEL_SWC LL_ADC_CHANNEL_8 // ADC12_IN8 -> ADC1_IN8 -#define ADC_CHANNEL_SWD LL_ADC_CHANNEL_8 // ADC3_IN8 -> ADC3_IN8 -#define ADC_CHANNEL_SWE LL_ADC_CHANNEL_10 // ADC123_IN10-> ADC1_IN10 -#define ADC_CHANNEL_SWF LL_ADC_CHANNEL_11 // ADC123_IN11-> ADC1_IN11 -#define ADC_CHANNEL_SWG LL_ADC_CHANNEL_12 // ADC123_IN12-> ADC1_IN12 -#define ADC_CHANNEL_SWH LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7 - -#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15 -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN18 - -#define ADC_MAIN ADC1 -#define ADC_EXT ADC3 -#define ADC_EXT_CHANNELS { ADC_CHANNEL_SWB, ADC_CHANNEL_SWD } -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES -#define ADC_DMA DMA2 -#define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0 -#define ADC_DMA_STREAM LL_DMA_STREAM_4 -#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn -#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler - -#define ADC_EXT_DMA DMA2 -#define ADC_EXT_DMA_CHANNEL LL_DMA_CHANNEL_2 -#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 -#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn -#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler -#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES #define ADC_VREF_PREC2 330 -#define ADC_DIRECTION \ - { 0 /*STICK1*/, 0 /*STICK2*/, 0 /*STICK3*/, 0 /*STICK4*/, \ - -1 /*POT1*/, 0 /*POT2*/, 0 /*TX_VOLTAGE*/, 0 /*TX_VBAT*/, \ - 0 /*SWA*/, 0 /*SWB*/, 0 /*SWC*/, 0 /*SWD*/, 0 /*SWE*/, \ - -1 /*SWF*/, -1 /*SWG*/, 0 /*SWH*/ \ - } - // Power #define PWR_SWITCH_GPIO GPIO_PIN(GPIOI, 11) // PI.11 #define PWR_ON_GPIO GPIO_PIN(GPIOI, 14) // PI.14 diff --git a/radio/src/targets/pa01/CMakeLists.txt b/radio/src/targets/pa01/CMakeLists.txt index d60283e57db..a3a0675a846 100644 --- a/radio/src/targets/pa01/CMakeLists.txt +++ b/radio/src/targets/pa01/CMakeLists.txt @@ -47,7 +47,6 @@ add_definitions(-DFIRMWARE_FORMAT_UF2) add_definitions(-DUSE_CUSTOM_EXTI_IRQ) set(FLAVOUR pa01) -add_definitions(-DRADIO_PA01) # Defines internal modules for PL18 via UART7 set(INTERNAL_MODULES AFHDS3;CRSF CACHE STRING "Internal modules") diff --git a/radio/src/targets/pa01/hal.h b/radio/src/targets/pa01/hal.h index 2bc20e0ecaf..baf7fc14d0f 100644 --- a/radio/src/targets/pa01/hal.h +++ b/radio/src/targets/pa01/hal.h @@ -39,173 +39,9 @@ /* DMA Allocation: */ -// Keys -#define KEYS_GPIO_REG_ENTER -#define KEYS_GPIO_PIN_ENTER -#define KEYS_GPIO_ENTER GPIO_PIN(GPIOG, 13) // PG.13 - -// Keys in bsp matrix -#define KEYS_GPIO_REG_PAGEUP -#define KEYS_GPIO_PIN_PAGEUP -#define KEYS_GPIO_REG_PAGEDN -#define KEYS_GPIO_PIN_PAGEDN -#define KEYS_GPIO_REG_SYS -#define KEYS_GPIO_PIN_SYS -#define KEYS_GPIO_REG_EXIT -#define KEYS_GPIO_PIN_EXIT - -// Trims in bsp matrix -#define TRIMS_GPIO_REG_LHL -#define TRIMS_GPIO_PIN_LHL - -#define TRIMS_GPIO_REG_LHR -#define TRIMS_GPIO_PIN_LHR - -#define TRIMS_GPIO_REG_LVD -#define TRIMS_GPIO_PIN_LVD - -#define TRIMS_GPIO_REG_LVU -#define TRIMS_GPIO_PIN_LVU - -#define TRIMS_GPIO_REG_RHL -#define TRIMS_GPIO_PIN_RHL - -#define TRIMS_GPIO_REG_RHR -#define TRIMS_GPIO_PIN_RHR - -#define TRIMS_GPIO_REG_RVD -#define TRIMS_GPIO_PIN_RVD - -#define TRIMS_GPIO_REG_RVU -#define TRIMS_GPIO_PIN_RVU - -// function switches -#define FUNCTION_SWITCH_1 SK -#define SWITCHES_GPIO_REG_K -#define SWITCHES_GPIO_PIN_K AW9523B_PIN_0 -#define SWITCHES_K_CFS_IDX 0 -#define FUNCTION_SWITCH_2 SL -#define SWITCHES_GPIO_REG_L -#define SWITCHES_GPIO_PIN_L AW9523B_PIN_1 -#define SWITCHES_L_CFS_IDX 1 -#define FUNCTION_SWITCH_3 SM -#define SWITCHES_GPIO_REG_M -#define SWITCHES_GPIO_PIN_M AW9523B_PIN_2 -#define SWITCHES_M_CFS_IDX 2 -#define FUNCTION_SWITCH_4 SN -#define SWITCHES_GPIO_REG_N -#define SWITCHES_GPIO_PIN_N AW9523B_PIN_3 -#define SWITCHES_N_CFS_IDX 3 - -// Direct switches -// SWA -#define STORAGE_SWITCH_A -#define HARDWARE_SWITCH_A -#define SWITCHES_GPIO_REG_A GPIOA -#define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_2 // PA.02 - -// SWD -#define STORAGE_SWITCH_D -#define HARDWARE_SWITCH_D -#define SWITCHES_GPIO_REG_D GPIOF -#define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_8 // PF.08 - -// SWE -#define STORAGE_SWITCH_E -#define HARDWARE_SWITCH_E -#define SWITCHES_GPIO_REG_E GPIOG -#define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_3 // PG.03 - -// SWF -#define STORAGE_SWITCH_F -#define HARDWARE_SWITCH_F -#define SWITCHES_GPIO_REG_F GPIOG -#define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_2 // PG.02 - -#define KEYS_GPIOB_PINS (LL_GPIO_PIN_15) - -// PC8 allocated to SDIO D0, is not required to sample SWA ! -#define KEYS_GPIOC_PINS (LL_GPIO_PIN_13) - -#define KEYS_GPIOD_PINS () - -#define KEYS_GPIOH_PINS \ - (LL_GPIO_PIN_8 | LL_GPIO_PIN_9 | LL_GPIO_PIN_10 | LL_GPIO_PIN_11) - -#define KEYS_GPIOJ_PINS (LL_GPIO_PIN_12) - -#define KEYS_OUT_GPIOG_PINS (LL_GPIO_PIN_2 ) - -#define KEYS_OUT_GPIOH_PINS (LL_GPIO_PIN_7) - // ADC -#define ADC_GPIO_PIN_STICK_LH -#define ADC_GPIO_PIN_STICK_LV -#define ADC_GPIO_PIN_STICK_RV -#define ADC_GPIO_PIN_STICK_RH - -#define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_3 // PA.03 S1 -#define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_5 // PA.05 S2 - -#define ADC_GPIO_PIN_SWB LL_GPIO_PIN_5 // PC.05 -#define ADC_GPIO_PIN_SWC LL_GPIO_PIN_7 // PF.07 - -#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_1 // PC.01 - -#define ADC_GPIOA_PINS ( ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2 ) - -#define ADC_GPIOC_PINS ( ADC_GPIO_PIN_BATT | ADC_GPIO_PIN_SWB ) - -#define ADC_GPIOF_PINS ( ADC_GPIO_PIN_SWC ) - -#define ADC_CHANNEL_STICK_LH -#define ADC_CHANNEL_STICK_LV -#define ADC_CHANNEL_STICK_RV -#define ADC_CHANNEL_STICK_RH - -// Sliders -#define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_15 // ADC12_INP15 -#define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_19 // ADC12_INP19 - -// Analog switches -#define ADC_CHANNEL_SWB LL_ADC_CHANNEL_8 // ADC12_INP8 -#define ADC_CHANNEL_SWC LL_ADC_CHANNEL_3 // ADC3_INP3 - -#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_11 // ADC123_INP11 -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC12_IN16 - -#define ADC_MAIN ADC1 -#define ADC_DMA DMA2 -#define ADC_DMA_CHANNEL LL_DMAMUX1_REQ_ADC1 -#define ADC_DMA_STREAM LL_DMA_STREAM_4 -#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn -#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_64CYCLES_5 - -#define ADC_EXT ADC3 -#define ADC_EXT_CHANNELS \ - { ADC_CHANNEL_SWC, ADC_CHANNEL_SWD } - -#define ADC_EXT_DMA DMA2 -#define ADC_EXT_DMA_CHANNEL LL_DMAMUX1_REQ_ADC3 -#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 -#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn -#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler -#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_64CYCLES_5 - #define ADC_VREF_PREC2 329 -#define ADC_DIRECTION { \ - 0,0,0,0, /* gimbals */ \ - 0,0, /* sliders */ \ - 0, /* vbat */ \ - 0, /* rtc_bat */ \ - -1, /* SWB */ \ - -1, /* SWC */ \ - 0, /* SWE */ \ - 0 /* SWF */ \ - } - // Power #define PWR_SWITCH_GPIO GPIO_PIN(GPIOE, 6) // PE.06 #define PWR_ON_GPIO GPIO_PIN(GPIOE, 3) // PE.03 diff --git a/radio/src/targets/pa01/key_driver.cpp b/radio/src/targets/pa01/key_driver.cpp index e8435d25510..c8255aaaa43 100644 --- a/radio/src/targets/pa01/key_driver.cpp +++ b/radio/src/targets/pa01/key_driver.cpp @@ -34,6 +34,8 @@ #define BSP_KEY_OUT_MASK \ (BSP_KEY_OUT1 | BSP_KEY_OUT2 | BSP_KEY_OUT3 | BSP_KEY_OUT4) +#define KEYS_GPIO_ENTER GPIO_PIN(GPIOG, 13) // PG.13 + /* The output bit-order has to be: 0 LHL TR3L (Left equals down) 1 LHR TR3R diff --git a/radio/src/targets/pl18/CMakeLists.txt b/radio/src/targets/pl18/CMakeLists.txt index ad9cc6b7270..e729b506ea9 100644 --- a/radio/src/targets/pl18/CMakeLists.txt +++ b/radio/src/targets/pl18/CMakeLists.txt @@ -44,7 +44,6 @@ add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS) if(PCBREV STREQUAL PL18U) set(FLAVOUR pl18u) - add_definitions(-DRADIO_PL18U) set(DISK_CACHE ON) set(WIRELESS_CHARGER YES) set(FLYSKY_GIMBAL ON) @@ -57,7 +56,7 @@ if(PCBREV STREQUAL PL18U) set(DEFAULT_INTERNAL_MODULE FLYSKY_AFHDS3 CACHE STRING "Default internal module") elseif (PCBREV STREQUAL EL18) set(FLAVOUR el18) - add_definitions(-DRADIO_EL18 -DRADIO_NV14_FAMILY -DPCBNV14 -DUSE_HATS_AS_KEYS) + add_definitions(-DRADIO_NV14_FAMILY -DPCBNV14 -DUSE_HATS_AS_KEYS) set(DISK_CACHE ON) set(FLYSKY_GIMBAL ON) set(USE_VS1053B ON) @@ -68,7 +67,7 @@ elseif (PCBREV STREQUAL EL18) set(DEFAULT_INTERNAL_MODULE FLYSKY_AFHDS3 CACHE STRING "Default internal module") elseif(PCBREV STREQUAL NV14) set(FLAVOUR nv14) - add_definitions(-DRADIO_NV14 -DRADIO_NV14_FAMILY -DPCBNV14) + add_definitions(-DRADIO_NV14_FAMILY -DPCBNV14) add_definitions(-DUSE_HATS_AS_KEYS -DAFHDS2_BAUDRATE=${PCB_RF_BAUD}) set(DISK_CACHE ON) set(FLYSKY_GIMBAL ON) @@ -81,7 +80,7 @@ elseif(PCBREV STREQUAL NV14) set(DEFAULT_INTERNAL_MODULE FLYSKY_AFHDS2A CACHE STRING "Default internal module") elseif(PCBREV STREQUAL NB4P) set(FLAVOUR nb4p) - add_definitions(-DRADIO_NB4P -DSPI_FLASH) + add_definitions(-DSPI_FLASH) set(ROTARY_ENCODER YES) set(LED_STRIP ON) set(AFHDS3 ON) @@ -92,7 +91,7 @@ elseif(PCBREV STREQUAL NB4P) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") elseif(PCBREV STREQUAL PL18EV) set(FLAVOUR pl18ev) - add_definitions(-DRADIO_PL18EV -DSPI_FLASH -DUSE_HATS_AS_KEYS) + add_definitions(-DSPI_FLASH -DUSE_HATS_AS_KEYS) set(WIRELESS_CHARGER YES) set(FLYSKY_GIMBAL ON) set(LED_STRIP ON) @@ -100,7 +99,7 @@ elseif(PCBREV STREQUAL PL18EV) set(KEY_DRIVER key_driver.cpp) else() set(FLAVOUR pl18) - add_definitions(-DRADIO_PL18 -DSPI_FLASH -DUSE_HATS_AS_KEYS) + add_definitions(-DSPI_FLASH -DUSE_HATS_AS_KEYS) set(WIRELESS_CHARGER YES) set(FLYSKY_GIMBAL ON) set(LED_STRIP ON) @@ -201,6 +200,14 @@ add_library(board_bl OBJECT EXCLUDE_FROM_ALL targets/common/arm/stm32/sdram_driver.cpp ) add_dependencies(board_bl ${BITMAPS_TARGET}) + +if(PCBREV STREQUAL NB4P) + target_sources(board_bl PUBLIC + ${CMAKE_CURRENT_BINARY_DIR}/stm32_adc_inputs.inc + boards/generic_stm32/analog_inputs.cpp + ) +endif() + set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $) # Firmware board library diff --git a/radio/src/targets/pl18/board.cpp b/radio/src/targets/pl18/board.cpp index d8d265e5b8b..7508cdfa7f3 100644 --- a/radio/src/targets/pl18/board.cpp +++ b/radio/src/targets/pl18/board.cpp @@ -183,7 +183,7 @@ void boardBLPreJump() { SDRAM_Init(); #if defined(RADIO_NB4P) - LL_ADC_Disable(ADC_MAIN); + _adc_driver.deinit(); #endif } diff --git a/radio/src/targets/pl18/board.h b/radio/src/targets/pl18/board.h index fc1a771124a..3c45038f3f8 100644 --- a/radio/src/targets/pl18/board.h +++ b/radio/src/targets/pl18/board.h @@ -29,8 +29,8 @@ #include "hal/serial_port.h" #include "hal/watchdog_driver.h" -#if defined(ADC_GPIO_PIN_STICK_TH) -#define SURFACE_RADIO true +#if defined(RADIO_NB4P) + #define SURFACE_RADIO true #endif #define FLASHSIZE 0x200000 diff --git a/radio/src/targets/pl18/hal.h b/radio/src/targets/pl18/hal.h index a53851692d0..4fd79ef25fe 100644 --- a/radio/src/targets/pl18/hal.h +++ b/radio/src/targets/pl18/hal.h @@ -47,252 +47,18 @@ 2/3/4 SDIO */ -// Keys -// PL18/PL18EV only has virtual keys via trim buttons -// #define KEYS_GPIO_PIN_PGUP /* for activating PGUP in keys diagnose screen */ - #if defined(RADIO_NV14_FAMILY) - // Trims - #define TRIMS_GPIO_REG_RHL GPIOD - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_7 // PD.07 - #define TRIMS_GPIO_REG_RHR GPIOG - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_10 // PG.10 - #define TRIMS_GPIO_REG_RVD GPIOJ - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_0 // PJ.00 - #define TRIMS_GPIO_REG_RVU GPIOB - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_15 // PB.15 - - #define TRIMS_GPIO_REG_LHL GPIOH - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_2 // PH.02 - #define TRIMS_GPIO_REG_LHR GPIOG - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_2 // PG.02 - #define TRIMS_GPIO_REG_LVU GPIOH - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_7 // PH.07 - #define TRIMS_GPIO_REG_LVD GPIOJ - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_12 // PJ.12 - - // Keys - #define KEYS_GPIO_REG_ENTER GPIOC - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PC.13 - #define KEYS_GPIO_REG_EXIT GPIOG - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_11 // PG.11 - // Monitor pin #define VBUS_MONITOR_GPIO GPIO_PIN(GPIOJ, 14) // PJ.14 - - // Switches - #define HARDWARE_SWITCH_A - #define STORAGE_SWITCH_A - #define HARDWARE_SWITCH_B - #define STORAGE_SWITCH_B - #define HARDWARE_SWITCH_C - #define STORAGE_SWITCH_C - #define HARDWARE_SWITCH_D - #define STORAGE_SWITCH_D - #define HARDWARE_SWITCH_E - #define STORAGE_SWITCH_E - #define HARDWARE_SWITCH_F - #define STORAGE_SWITCH_F - #define HARDWARE_SWITCH_G - #define STORAGE_SWITCH_G - #define HARDWARE_SWITCH_H - #define STORAGE_SWITCH_H - - // Index of all switches / trims - #define KEYS_GPIO_ACTIVE_HIGH - #define TRIMS_GPIO_ACTIVE_HIGH - // ADC - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_4 // PA.04 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_5 // PA.05 - - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_6 // PA.06 VRA - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_4 // PC.04 VRB - #define ADC_GPIO_PIN_SWA LL_GPIO_PIN_1 // PB.01 - #define ADC_GPIO_PIN_SWB LL_GPIO_PIN_8 // PF.08 - #define ADC_GPIO_PIN_SWC LL_GPIO_PIN_0 // PB.00 - #define ADC_GPIO_PIN_SWD LL_GPIO_PIN_10 // PF.10 - #define ADC_GPIO_PIN_SWE LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIO_PIN_SWF LL_GPIO_PIN_1 // PC.01 - #define ADC_GPIO_PIN_SWG LL_GPIO_PIN_2 // PC.02 - #define ADC_GPIO_PIN_SWH LL_GPIO_PIN_7 // PA.07 - - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_5 // PC.05 - - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH \ - | ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_SWH) - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_SWA | ADC_GPIO_PIN_SWC) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SWE | ADC_GPIO_PIN_SWF | ADC_GPIO_PIN_SWG | ADC_GPIO_PIN_BATT) - #define ADC_GPIOF_PINS (ADC_GPIO_PIN_SWB | ADC_GPIO_PIN_SWD) - - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC123_IN2 -> ADC1_IN2 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC123_IN3 -> ADC1_IN3 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_4 // ADC12_IN4 -> ADC1_IN4 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_5 // ADC12_IN5 -> ADC1_IN5 - - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_14 // ADC12_IN14 -> ADC1_IN14 - #define ADC_CHANNEL_SWA LL_ADC_CHANNEL_9 // ADC12_IN9 -> ADC1_IN9 - #define ADC_CHANNEL_SWB LL_ADC_CHANNEL_6 // ADC3_IN6 -> ADC3_IN6 - #define ADC_CHANNEL_SWC LL_ADC_CHANNEL_8 // ADC12_IN8 -> ADC1_IN8 - #define ADC_CHANNEL_SWD LL_ADC_CHANNEL_8 // ADC3_IN8 -> ADC3_IN8 - #define ADC_CHANNEL_SWE LL_ADC_CHANNEL_10 // ADC123_IN10-> ADC1_IN10 - #define ADC_CHANNEL_SWF LL_ADC_CHANNEL_11 // ADC123_IN11-> ADC1_IN11 - #define ADC_CHANNEL_SWG LL_ADC_CHANNEL_12 // ADC123_IN12-> ADC1_IN12 - #define ADC_CHANNEL_SWH LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7 - - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15 - #define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN18 - - #define ADC_MAIN ADC1 - #define ADC_EXT ADC3 - #define ADC_EXT_CHANNELS { ADC_CHANNEL_SWB, ADC_CHANNEL_SWD } - #define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES - #define ADC_DMA DMA2 - #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0 - #define ADC_DMA_STREAM LL_DMA_STREAM_4 - #define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn - #define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler - - #define ADC_EXT_DMA DMA2 - #define ADC_EXT_DMA_CHANNEL LL_DMA_CHANNEL_2 - #define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 - #define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn - #define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler - #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES #define ADC_VREF_PREC2 330 - - #define ADC_DIRECTION \ - { 0 /*STICK1*/, 0 /*STICK2*/, 0 /*STICK3*/, 0 /*STICK4*/, \ - -1 /*POT1*/, 0 /*POT2*/, 0 /*TX_VOLTAGE*/, 0 /*TX_VBAT*/, \ - 0 /*SWA*/, 0 /*SWB*/, 0 /*SWC*/, 0 /*SWD*/, 0 /*SWE*/, \ - -1 /*SWF*/, -1 /*SWG*/, 0 /*SWH*/ \ - } - #elif defined(RADIO_NB4P) - // Trims - #define TRIMS_GPIO_REG_T1L - #define TRIMS_GPIO_PIN_T1L - #define TRIMS_GPIO_REG_T1R - #define TRIMS_GPIO_PIN_T1R - #define TRIMS_GPIO_REG_T2L - #define TRIMS_GPIO_PIN_T2L - #define TRIMS_GPIO_REG_T2R - #define TRIMS_GPIO_PIN_T2R - - // Switches - #define SWITCHES_A_2POS - #define SWITCHES_B_2POS - - // Keys - #define KEYS_GPIO_PIN_ENTER - #define KEYS_GPIO_REG_ENTER - #define KEYS_GPIO_PIN_EXIT - #define KEYS_GPIO_REG_EXIT - - #define ADC_GPIO_PIN_STICK_TH LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_STICK_ST LL_GPIO_PIN_2 // PA.02 - #define ADC_CHANNEL_STICK_TH LL_ADC_CHANNEL_3 // ADC123_IN3 -> ADC1_IN3 - #define ADC_CHANNEL_STICK_ST LL_ADC_CHANNEL_2 // ADC123_IN2 -> ADC1_IN2 #define ADC_GPIO_RAW1 GPIOC - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_2 // PC.02 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_7 // PA.07 - #define ADC_GPIO_PIN_RAW1 LL_GPIO_PIN_1 // PC.01 (SW1) - #define ADC_GPIO_PIN_RAW2 LL_GPIO_PIN_0 // PC.00 (SW2 SW3) - #define ADC_GPIO_PIN_RAW3 LL_GPIO_PIN_6 // PA.06 (TR1) - #define ADC_GPIO_PIN_RAW4 LL_GPIO_PIN_4 // PC.04 (TR2) - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_5 // PC.05 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_12 // ADC123_IN12 -> ADC1_IN12 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7 - #define ADC_CHANNEL_RAW1 LL_ADC_CHANNEL_11 // ADC123_IN11 -> ADC1_IN11 - #define ADC_CHANNEL_RAW2 LL_ADC_CHANNEL_10 // ADC123_IN10 -> ADC1_IN10 - #define ADC_CHANNEL_RAW3 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6 - #define ADC_CHANNEL_RAW4 LL_ADC_CHANNEL_14 // ADC12_IN14 -> ADC1_IN14 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15 - #define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN18 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_TH | ADC_GPIO_PIN_STICK_ST | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_RAW3) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_RAW1 | ADC_GPIO_PIN_RAW2 | ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_RAW4 | ADC_GPIO_PIN_BATT) - - #define ADC_MAIN ADC1 - #define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES - #define ADC_DMA DMA2 - #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0 - #define ADC_DMA_STREAM LL_DMA_STREAM_4 - #define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn - #define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler - #define ADC_VREF_PREC2 330 - - #define ADC_DIRECTION { \ - 0,0, /* gimbals */ \ - 0,0, /* pots */ \ - 0,0,0,0, /* raw1-4 */ \ - 0, /* vbat */ \ - 0 /* rtc_bat */ \ - } - -#else // !defined(RADIO_NB4P) && !defined(RADIO_NV14_FAMILY) - -// Keys -#if defined(RADIO_PL18U) -#define KEYS_GPIO_PIN_ENTER -#define KEYS_GPIO_REG_ENTER -#define KEYS_GPIO_PIN_EXIT -#define KEYS_GPIO_REG_EXIT #endif // Trims -#define TRIMS_GPIO_REG_LHL -#define TRIMS_GPIO_PIN_LHL - -#define TRIMS_GPIO_REG_LHR -#define TRIMS_GPIO_PIN_LHR - -#define TRIMS_GPIO_REG_LVD -#define TRIMS_GPIO_PIN_LVD - -#define TRIMS_GPIO_REG_LVU -#define TRIMS_GPIO_PIN_LVU - -#define TRIMS_GPIO_REG_RHL -#define TRIMS_GPIO_PIN_RHL - -#define TRIMS_GPIO_REG_RHR -#define TRIMS_GPIO_PIN_RHR - -#define TRIMS_GPIO_REG_RVD -#define TRIMS_GPIO_PIN_RVD - -#define TRIMS_GPIO_REG_RVU -#define TRIMS_GPIO_PIN_RVU - -#define TRIMS_GPIO_REG_LSD -#define TRIMS_GPIO_PIN_LSD - -#define TRIMS_GPIO_REG_LSU -#define TRIMS_GPIO_PIN_LSU - -#define TRIMS_GPIO_REG_RSD -#define TRIMS_GPIO_PIN_RSD - -#define TRIMS_GPIO_REG_RSU -#define TRIMS_GPIO_PIN_RSU - #if !defined(RADIO_PL18U) - #define TRIMS_GPIO_REG_T7L - #define TRIMS_GPIO_PIN_T7L - - #define TRIMS_GPIO_REG_T7R - #define TRIMS_GPIO_PIN_T7R - - #define TRIMS_GPIO_REG_T8D - #define TRIMS_GPIO_PIN_T8D - - #define TRIMS_GPIO_REG_T8U - #define TRIMS_GPIO_PIN_T8U - #define TRIMS_GPIO_REG_TR1U GPIOH->IDR #define TRIMS_GPIO_PIN_TR1U LL_GPIO_PIN_8 // PH.08 #define TRIMS_GPIO_REG_TR1D GPIOH->IDR @@ -336,7 +102,6 @@ #define TRIMS_GPIO_PIN_IN4 LL_GPIO_PIN_12 // PJ.12 // Index of all trims - #define KEYS_GPIOB_PINS (LL_GPIO_PIN_15) // PC8 allocated to SDIO D0, is not required to sample SWA ! @@ -365,181 +130,9 @@ // #define VBUS_MONITOR_GPIO (GPIOJ) // #define VBUS_MONITOR_PIN (LL_GPIO_PIN_14) -// Switches: -// Switches A and C on PL18/PL18EV are 2-position switches, -// so there is no NEED to configure two pins for Switches A and C. -// -// Especially, as on current dev. state, using PC8 for SDIO D0. -// (happy coincidence ;) -// -#if defined(RADIO_PL18U) - #define SWITCHES_GPIO_REG_A_H GPIOD - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_3 // PD.03 - #define SWITCHES_GPIO_REG_A_L GPIOB - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_6 // PB.06 -#else - #define SWITCHES_GPIO_REG_A GPIOC - #define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_9 // PC.09 -#endif - -// High rail of Switch C is not required and thus PC10 is free to use for -// customizations. -// -// #define SWITCHES_GPIO_REG_C_H GPIOC -// #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_10 // PC.10 -// #define SWITCHES_GPIO_REG_C_L GPIOC -// #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_11 // PC.11 - -#if defined(RADIO_PL18U) - #define SWITCHES_GPIO_REG_C_H GPIOJ - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_14 // PJ.14 - #define SWITCHES_GPIO_REG_C_L GPIOH - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_2 // PH.02 -#else - #define SWITCHES_GPIO_REG_C GPIOC - #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_11 // PC.11 -#endif - // ADC - -#define ADC_GPIO_PIN_STICK_LH -#define ADC_GPIO_PIN_STICK_LV -#define ADC_GPIO_PIN_STICK_RV -#define ADC_GPIO_PIN_STICK_RH - -#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_6 // PA.06 VRA -#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_4 // PC.04 VRB -#define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_8 // PF.08 VRC -#define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_9 // PF.09 VRD/LS -#define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_7 // PA.07 VRE/RS - -#if defined(RADIO_PL18EV) -#define ADC_GPIO_PIN_EXT1 LL_GPIO_PIN_5 // PA.05 -#define ADC_GPIO_PIN_EXT2 LL_GPIO_PIN_2 // PA.02 -#define ADC_GPIO_PIN_EXT3 LL_GPIO_PIN_6 // PF.06 -#define ADC_GPIO_PIN_EXT4 LL_GPIO_PIN_3 // PA.03 -#endif - -#define ADC_GPIO_PIN_SWB LL_GPIO_PIN_1 // PC.01 -#define ADC_GPIO_PIN_SWD LL_GPIO_PIN_0 // PC.00 -#define ADC_GPIO_PIN_SWE LL_GPIO_PIN_2 // PC.02 -#define ADC_GPIO_PIN_SWF LL_GPIO_PIN_0 // PB.00 -#define ADC_GPIO_PIN_SWG LL_GPIO_PIN_1 // PB.01 -#define ADC_GPIO_PIN_SWH LL_GPIO_PIN_10 // PF.10 - -#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_5 // PC.05 - -#define ADC_GPIOA_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_SLIDER2 | \ - ADC_GPIO_PIN_EXT1 | ADC_GPIO_PIN_EXT2 | ADC_GPIO_PIN_EXT4) -#define ADC_GPIOB_PINS (ADC_GPIO_PIN_SWF | ADC_GPIO_PIN_SWG) -#define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_BATT | \ - ADC_GPIO_PIN_SWB | ADC_GPIO_PIN_SWD | ADC_GPIO_PIN_SWE) -#define ADC_GPIOF_PINS (ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_SLIDER1 | \ - ADC_GPIO_PIN_EXT3 | ADC_GPIO_PIN_SWH) - -#define ADC_CHANNEL_STICK_LH -#define ADC_CHANNEL_STICK_LV -#define ADC_CHANNEL_STICK_RV -#define ADC_CHANNEL_STICK_RH - -#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6 -#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_14 // ADC12_IN14 -> ADC1_IN14 -#define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_6 // ADC3_IN6 -> ADC3_IN6 -#define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_7 // ADC3_IN7 -> ADC3_IN7 -#define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7 - -#if defined(RADIO_PL18EV) -// Left, right stick end pot on PL18EV -#define ADC_CHANNEL_EXT1 LL_ADC_CHANNEL_5 // ADC12_IN5 -> ADC1_IN5 -#define ADC_CHANNEL_EXT2 LL_ADC_CHANNEL_2 // ADC123_IN2 -> ADC1_IN2 - -// Left, right stick end buttons on PL18EV -#define ADC_CHANNEL_EXT3 LL_ADC_CHANNEL_4 // ADC3_IN4 -> ADC3_IN4 -#define ADC_CHANNEL_EXT4 LL_ADC_CHANNEL_3 // ADC123_IN3 -> ADC3_IN3 -#endif - -// Analog switches -#define ADC_CHANNEL_SWB LL_ADC_CHANNEL_11 // ADC123_IN11 -> ADC3_IN11 -#define ADC_CHANNEL_SWD LL_ADC_CHANNEL_10 // ADC123_IN10 -> ADC3_IN10 -#define ADC_CHANNEL_SWE LL_ADC_CHANNEL_12 // ADC123_IN12 -> ADC3_IN12 -#define ADC_CHANNEL_SWF LL_ADC_CHANNEL_8 // ADC12_IN8 -> ADC1_IN8 -#define ADC_CHANNEL_SWG LL_ADC_CHANNEL_9 // ADC12_IN9 -> ADC1_IN9 -#define ADC_CHANNEL_SWH LL_ADC_CHANNEL_8 // ADC3_IN8 -> ADC3_IN8 - -#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15 -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC1_IN18 - -#define ADC_MAIN ADC1 -#define ADC_EXT ADC3 - -#define ADC_EXT_CHANNELS \ - { ADC_CHANNEL_POT3, ADC_CHANNEL_SLIDER1, ADC_CHANNEL_EXT3, ADC_CHANNEL_EXT4, \ - ADC_CHANNEL_SWB, ADC_CHANNEL_SWD, ADC_CHANNEL_SWE, ADC_CHANNEL_SWH \ - } - -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES -#define ADC_DMA DMA2 -#define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0 -#define ADC_DMA_STREAM LL_DMA_STREAM_4 -#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn -#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler - -#define ADC_EXT_DMA DMA2 -#define ADC_EXT_DMA_CHANNEL LL_DMA_CHANNEL_2 -#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 -#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn -#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler -#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES - #define ADC_VREF_PREC2 330 -#if defined(RADIO_PL18EV) -#define ADC_DIRECTION { \ - 0,0,0,0, /* gimbals */ \ - 0,0,0, /* pots */ \ - -1,-1, /* sliders */ \ - 0,0,0,0, /* ext1-4 */ \ - 0, /* vbat */ \ - 0, /* rtc_bat */ \ - -1, /* SWB */ \ - -1, /* SWD */ \ - 0, /* SWE */ \ - 0, /* SWF */ \ - 0, /* SWG */ \ - 0 /* SWH */ \ - } -#elif defined(RADIO_PL18U) -#define ADC_DIRECTION { \ - 0,0,0,0, /* gimbals */ \ - 0,0,0, /* pots */ \ - -1,1, /* sliders */ \ - 0, /* vbat */ \ - 0, /* rtc_bat */ \ - -1, /* SWB */ \ - 0, /* SWD */ \ - -1, /* SWE */ \ - 0, /* SWF */ \ - -1, /* SWG */ \ - 0 /* SWH */ \ - } -#else -#define ADC_DIRECTION { \ - 0,0,0,0, /* gimbals */ \ - 0,0,0, /* pots */ \ - -1,-1, /* sliders */ \ - 0, /* vbat */ \ - 0, /* rtc_bat */ \ - -1, /* SWB */ \ - -1, /* SWD */ \ - 0, /* SWE */ \ - 0, /* SWF */ \ - 0, /* SWG */ \ - 0 /* SWH */ \ - } -#endif - -#endif - // Power #define PWR_SWITCH_GPIO GPIO_PIN(GPIOI, 11) // PI.11 #define PWR_ON_GPIO GPIO_PIN(GPIOI, 14) // PI.14 diff --git a/radio/src/targets/pl18/nb4p_key_driver.cpp b/radio/src/targets/pl18/nb4p_key_driver.cpp index c3521c4fe48..0bac65c23b5 100644 --- a/radio/src/targets/pl18/nb4p_key_driver.cpp +++ b/radio/src/targets/pl18/nb4p_key_driver.cpp @@ -28,11 +28,15 @@ #include "delays_driver.h" #include "keys.h" -#if !defined(BOOT) - #include "hal/adc_driver.h" +#include "hal/adc_driver.h" + +#if defined(BOOT) + #include "stm32_adc.h" + #include "boards/generic_stm32/analog_inputs.h" #endif -#define BOOTLOADER_KEYS 0x42 +#define BOOTLOADER_KEYS 0x42 +#define ADC_KEYS_INDEX 4 /* The output bit-order has to be: 0 LHL STD (Left equals down) @@ -47,92 +51,51 @@ enum PhysicalTrims STU, THD = 2, THU, -/* TR2L = 4, +/* + TR2L = 4, TR2R, TR2D = 8, - TR2U,*/ + TR2U, +*/ }; void keysInit() { #if defined(BOOT) - LL_GPIO_InitTypeDef pinInit; - LL_GPIO_StructInit(&pinInit); - - pinInit.Pin = ADC_GPIO_PIN_RAW1; - pinInit.Mode = LL_GPIO_MODE_ANALOG; - pinInit.Pull = LL_GPIO_PULL_NO; - stm32_gpio_enable_clock(ADC_GPIO_RAW1); - LL_GPIO_Init(ADC_GPIO_RAW1, &pinInit); - - // Init ADC clock - uint32_t adc_idx = (((uint32_t) ADC_MAIN) - ADC1_BASE) / 0x100UL; - uint32_t adc_msk = RCC_APB2ENR_ADC1EN << adc_idx; - LL_APB2_GRP1_EnableClock(adc_msk); - - // Init common to all ADCs - LL_ADC_CommonInitTypeDef commonInit; - LL_ADC_CommonStructInit(&commonInit); - - commonInit.CommonClock = LL_ADC_CLOCK_SYNC_PCLK_DIV4; - LL_ADC_CommonInit(__LL_ADC_COMMON_INSTANCE(ADC_MAIN), &commonInit); - - // ADC must be disabled for the functions used here - LL_ADC_Disable(ADC_MAIN); - - LL_ADC_InitTypeDef adcInit; - LL_ADC_StructInit(&adcInit); - adcInit.SequencersScanMode = LL_ADC_SEQ_SCAN_DISABLE; - adcInit.DataAlignment = LL_ADC_DATA_ALIGN_RIGHT; - adcInit.Resolution = LL_ADC_RESOLUTION_12B; - LL_ADC_Init(ADC_MAIN, &adcInit); - - LL_ADC_REG_InitTypeDef adcRegInit; - LL_ADC_REG_StructInit(&adcRegInit); - adcRegInit.TriggerSource = LL_ADC_REG_TRIG_SOFTWARE; - adcRegInit.ContinuousMode = LL_ADC_REG_CONV_SINGLE; - LL_ADC_REG_Init(ADC_MAIN, &adcRegInit); - - // Enable ADC - LL_ADC_Enable(ADC_MAIN); + _adc_driver.init(); #endif } #if defined(BOOT) -uint16_t _adcRead() -{ - // Configure ADC channel - LL_ADC_REG_SetSequencerRanks(ADC_MAIN, LL_ADC_REG_RANK_1, ADC_CHANNEL_RAW1); - LL_ADC_SetChannelSamplingTime(ADC_MAIN, ADC_CHANNEL_RAW1, LL_ADC_SAMPLINGTIME_3CYCLES); - - // Start ADC conversion - LL_ADC_REG_StartConversionSWStart(ADC_MAIN); +static uint16_t _adc_values[MAX_ADC_INPUTS]; - // Wait until ADC conversion is complete - while (!LL_ADC_IsActiveFlag_EOCS(ADC_MAIN)); +uint16_t* getAnalogValues() { return _adc_values; } - // Read ADC converted value - return LL_ADC_REG_ReadConversionData12(ADC_MAIN); +static uint16_t _adcRead(uint8_t index) +{ + if (!_adc_driver.start_conversion()) { + return ADC_MAX_VALUE / 2; + } + _adc_driver.wait_completion(); + return _adc_values[4]; } #endif uint32_t readKeys() { + uint16_t value; uint32_t result = 0; #if defined(BOOT) - uint16_t value = _adcRead(); - if (value >= 3584) - result |= 1 << KEY_EXIT; - else if (value < 512) - result |= 1 << KEY_ENTER; + value = _adcRead(ADC_KEYS_INDEX); #else - uint16_t value = getAnalogValue(4); + value = getAnalogValue(ADC_KEYS_INDEX); +#endif + if (value >= 3584) result |= 1 << KEY_EXIT; else if (value < 512) result |= 1 << KEY_ENTER; -#endif return result; } @@ -142,12 +105,12 @@ uint32_t readTrims() uint32_t result = 0; #if defined(BOOT) - uint16_t value = _adcRead(); + uint16_t value = _adcRead(ADC_KEYS_INDEX); if (value >= 1536 && value < 2560) result = BOOTLOADER_KEYS; #else - uint16_t tr1Val = getAnalogValue(6); - uint16_t tr2Val = getAnalogValue(7); + uint16_t tr1Val = getAnalogValue(6); // TODO: define constant + uint16_t tr2Val = getAnalogValue(7); // TODO: define constant if (tr1Val < 500) // Physical TR1 Left // result |= 1 << TR1L; ; @@ -171,4 +134,4 @@ uint32_t readTrims() #endif return result; -} \ No newline at end of file +} diff --git a/radio/src/targets/simu/CMakeLists.txt b/radio/src/targets/simu/CMakeLists.txt index b55d12cdea2..cd601777ac8 100644 --- a/radio/src/targets/simu/CMakeLists.txt +++ b/radio/src/targets/simu/CMakeLists.txt @@ -23,7 +23,7 @@ set(SIMU_DRIVERS ) set(HW_DESC_JSON ${FLAVOUR}.json) -AddHardwareDefTarget(${HW_DESC_JSON}) +# AddHardwareDefTarget(${HW_DESC_JSON}) AddHWGenTarget(${HW_DESC_JSON} simu_keys simu_keys.inc) AddHWGenTarget(${HW_DESC_JSON} simu_switches simu_switches.inc) AddHWGenTarget(${HW_DESC_JSON} hal_adc_inputs hal_adc_inputs.inc) @@ -32,8 +32,8 @@ set(SIMU_DRIVERS ${SIMU_DRIVERS} ${CMAKE_CURRENT_BINARY_DIR}/simu_keys.inc ${CMAKE_CURRENT_BINARY_DIR}/simu_switches.inc ${CMAKE_CURRENT_BINARY_DIR}/hal_adc_inputs.inc - ${CMAKE_CURRENT_BINARY_DIR}/${HW_DESC_JSON} - ) + ${RADIO_SRC_DIR}/boards/hw_defs/${HW_DESC_JSON} +) include_directories(${CMAKE_CURRENT_BINARY_DIR}) if(SIMU_LUA_COMPILER) diff --git a/radio/src/targets/simu/opentxsimulator.cpp b/radio/src/targets/simu/opentxsimulator.cpp index 1c96ef2b07b..f4b97fe7f49 100644 --- a/radio/src/targets/simu/opentxsimulator.cpp +++ b/radio/src/targets/simu/opentxsimulator.cpp @@ -421,6 +421,8 @@ extern volatile uint32_t rotencDt; void OpenTxSimulator::rotaryEncoderEvent(int steps) { + if (steps == 0) return; + #if defined(ROTARY_ENCODER_NAVIGATION) && !defined(USE_HATS_AS_KEYS) static uint32_t last_tick = 0; if (steps != 0) { @@ -434,22 +436,14 @@ void OpenTxSimulator::rotaryEncoderEvent(int steps) last_tick = now; } #else - // TODO : this should probably be handled in the GUI int key; -#if defined(PCBXLITE) - if (steps > 0) - key = KEY_DOWN; - else if (steps < 0) - key = KEY_UP; -#elif defined(KEYS_GPIO_REG_PLUS) && defined(KEYS_GPIO_REG_MINUS) - if (steps > 0) - key = KEY_MINUS; - else if (steps < 0) - key = KEY_PLUS; - else -#endif - // Should not happen but Clang complains that key is unset otherwise - return; + if (keyIsSupported(KEY_UP) | keyIsSupported(KEY_DOWN)) { + key = steps > 0 ? KEY_DOWN : KEY_UP; + } else if (keyIsSupported(KEY_PLUS) | keyIsSupported(KEY_MINUS)) { + key = steps > 0 ? KEY_MINUS : KEY_PLUS; + } else { + return; // not supposed to happen??? + } setKey(key, 1); QTimer::singleShot(10, [this, key]() { setKey(key, 0); }); diff --git a/radio/src/targets/st16/CMakeLists.txt b/radio/src/targets/st16/CMakeLists.txt index d31133800cc..c764f197269 100644 --- a/radio/src/targets/st16/CMakeLists.txt +++ b/radio/src/targets/st16/CMakeLists.txt @@ -48,7 +48,6 @@ add_definitions(-DFIRMWARE_FORMAT_UF2) add_definitions(-DUSE_CUSTOM_EXTI_IRQ) set(FLAVOUR st16) -add_definitions(-DRADIO_ST16) # Defines internal modules for PL18 via UART7 # set(INTERNAL_MODULES MULTI CACHE STRING "Internal modules") diff --git a/radio/src/targets/st16/hal.h b/radio/src/targets/st16/hal.h index c32be675d8d..086c55a7927 100644 --- a/radio/src/targets/st16/hal.h +++ b/radio/src/targets/st16/hal.h @@ -44,198 +44,7 @@ #define TIMER_MULT_APB1 2 #define TIMER_MULT_APB2 2 -// Keys -#define KEYS_GPIO_REG_ENTER GPIOG -#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_14 // PG.14 -#define KEYS_GPIO_REG_PAGEDN GPIOA -#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_8 // PA.08 -#define KEYS_GPIO_REG_EXIT GPIOC -#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_5 // PC.05 - -// Trims -#define TRIMS_GPIO_REG_LHL -#define TRIMS_GPIO_PIN_LHL - -#define TRIMS_GPIO_REG_LHR -#define TRIMS_GPIO_PIN_LHR - -#define TRIMS_GPIO_REG_LVD -#define TRIMS_GPIO_PIN_LVD - -#define TRIMS_GPIO_REG_LVU -#define TRIMS_GPIO_PIN_LVU - -#define TRIMS_GPIO_REG_RHL -#define TRIMS_GPIO_PIN_RHL - -#define TRIMS_GPIO_REG_RHR -#define TRIMS_GPIO_PIN_RHR - -#define TRIMS_GPIO_REG_RVD -#define TRIMS_GPIO_PIN_RVD - -#define TRIMS_GPIO_REG_RVU -#define TRIMS_GPIO_PIN_RVU - - -// function switches -#define FUNCTION_SWITCH_1 SK -#define SWITCHES_GPIO_REG_K -#define SWITCHES_GPIO_PIN_K PCA95XX_PIN_0 -#define SWITCHES_K_CFS_IDX 0 -#define FUNCTION_SWITCH_2 SL -#define SWITCHES_GPIO_REG_L -#define SWITCHES_GPIO_PIN_L PCA95XX_PIN_1 -#define SWITCHES_L_CFS_IDX 1 -#define FUNCTION_SWITCH_3 SM -#define SWITCHES_GPIO_REG_M -#define SWITCHES_GPIO_PIN_M PCA95XX_PIN_2 -#define SWITCHES_M_CFS_IDX 2 -#define FUNCTION_SWITCH_4 SN -#define SWITCHES_GPIO_REG_N -#define SWITCHES_GPIO_PIN_N PCA95XX_PIN_3 -#define SWITCHES_N_CFS_IDX 3 -#define FUNCTION_SWITCH_5 SO -#define SWITCHES_GPIO_REG_O -#define SWITCHES_GPIO_PIN_O PCA95XX_PIN_4 -#define SWITCHES_O_CFS_IDX 4 -#define FUNCTION_SWITCH_6 SP -#define SWITCHES_GPIO_REG_P -#define SWITCHES_GPIO_PIN_P PCA95XX_PIN_5 -#define SWITCHES_P_CFS_IDX 5 - -// Direct switches - -// Key 1 -#define STORAGE_SWITCH_G -#define HARDWARE_SWITCH_G -#define SWITCHES_G_2POS -#define SWITCHES_GPIO_REG_G -#define SWITCHES_GPIO_PIN_G PCA95XX_PIN_6 - -// Key 2 -#define STORAGE_SWITCH_H -#define HARDWARE_SWITCH_H -#define SWITCHES_H_2POS -#define SWITCHES_GPIO_REG_H -#define SWITCHES_GPIO_PIN_H PCA95XX_PIN_7 - - -// Key 3 -#define STORAGE_SWITCH_I -#define HARDWARE_SWITCH_I -#define SWITCHES_GPIO_REG_I GPIOI -#define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_3 // PI.03 - -// Key 4 -#define STORAGE_SWITCH_J -#define HARDWARE_SWITCH_J -#define SWITCHES_GPIO_REG_J GPIOI -#define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_11 // PI.11 - - -// ADC -#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 -#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_1 // PA.01 -#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_2 // PA.02 -#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_3 // PA.03 - -#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_6 // PA.06 VRA -#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PB.01 VRB -#define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_0 // PB.00 VRC/LS -#define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_7 // PA.07 VRD/RS - -// If serial gimbals are used, we can reuse the channels -#define ADC_GPIO_PIN_EXT1 LL_GPIO_PIN_0 // PA.00 EXT1 -#define ADC_GPIO_PIN_EXT2 LL_GPIO_PIN_1 // PA.01 EXT2 -#define ADC_GPIO_PIN_EXT3 LL_GPIO_PIN_2 // PA.02 EXT3 -#define ADC_GPIO_PIN_EXT4 LL_GPIO_PIN_3 // PA.03 EXT4 - -#define ADC_GPIO_PIN_SWA LL_GPIO_PIN_2 // PC.02_C -#define ADC_GPIO_PIN_SWB LL_GPIO_PIN_3 // PC.03_C -#define ADC_GPIO_PIN_SWC LL_GPIO_PIN_9 // PF.09 -#define ADC_GPIO_PIN_SWD LL_GPIO_PIN_7 // PF.07 -#define ADC_GPIO_PIN_SWE LL_GPIO_PIN_8 // PF.08 -#define ADC_GPIO_PIN_SWF LL_GPIO_PIN_6 // PF.06 - -#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_1 // PC.01 - -#define ADC_GPIOA_PINS \ - (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_SLIDER2 | ADC_GPIO_PIN_STICK_LH | \ - ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_RV) - -#define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SLIDER1) - -#define ADC_GPIOC_PINS (ADC_GPIO_PIN_SWA | ADC_GPIO_PIN_SWB | ADC_GPIO_PIN_BATT) - -#define ADC_GPIOF_PINS \ - (ADC_GPIO_PIN_SWC | ADC_GPIO_PIN_SWD | ADC_GPIO_PIN_SWE | ADC_GPIO_PIN_SWF) - -#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_14 // ADC12_INP14 -#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_15 // ADC12_INP15 -#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_16 // ADC12_INP16 -#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_17 // ADC12_INP17 - -// Each ADC cannot map more than 8 channels, otherwise it will cause problems -#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_3 // ADC12_INP3 -#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_5 // ADC12_INP5 -#define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_9 // ADC12_INP9 -#define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_7 // ADC12_INP7 - -// Ext inputs: analog gimbal channel re-use -#define ADC_CHANNEL_EXT1 LL_ADC_CHANNEL_14 // ADC12_INP14 -#define ADC_CHANNEL_EXT2 LL_ADC_CHANNEL_15 // ADC12_INP15 -#define ADC_CHANNEL_EXT3 LL_ADC_CHANNEL_16 // ADC12_INP16 -#define ADC_CHANNEL_EXT4 LL_ADC_CHANNEL_17 // ADC12_INP17 - -// Analog switches -#define ADC_CHANNEL_SWA LL_ADC_CHANNEL_0 // ADC3_INP0 -#define ADC_CHANNEL_SWB LL_ADC_CHANNEL_1 // ADC3_INP1 -#define ADC_CHANNEL_SWC LL_ADC_CHANNEL_2 // ADC3_INP2 -#define ADC_CHANNEL_SWD LL_ADC_CHANNEL_3 // ADC3_INP3 -#define ADC_CHANNEL_SWE LL_ADC_CHANNEL_8 // ADC3_INP8 -#define ADC_CHANNEL_SWF LL_ADC_CHANNEL_7 // ADC3_INP7 - -#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_11 // ADC123_INP11 -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC12_IN16 - -#define ADC_MAIN ADC1 -#define ADC_DMA DMA2 -#define ADC_DMA_CHANNEL LL_DMAMUX1_REQ_ADC1 -#define ADC_DMA_STREAM LL_DMA_STREAM_4 -#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn -#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_8CYCLES_5 - -#define ADC_EXT ADC3 -#define ADC_EXT_CHANNELS \ - { \ - ADC_CHANNEL_SWA, ADC_CHANNEL_SWB, ADC_CHANNEL_SWC, ADC_CHANNEL_SWD, \ - ADC_CHANNEL_SWE, ADC_CHANNEL_SWF, ADC_CHANNEL_BATT \ - } - -#define ADC_EXT_DMA DMA2 -#define ADC_EXT_DMA_CHANNEL LL_DMAMUX1_REQ_ADC3 -#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 -#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn -#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler -#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_64CYCLES_5 - -#define ADC_VREF_PREC2 329 - -#define ADC_DIRECTION { \ - 0,0,0,0, /* gimbals */ \ - 0,0, /* pots */ \ - 0,0, /* sliders */ \ - 0, /* vbat */ \ - 0, /* rtc_bat */ \ - 0, /* SWA */ \ - 0, /* SWB */ \ - 0, /* SWC */ \ - 0, /* SWD */ \ - 0, /* SWE */ \ - 0 /* SWF */ \ - } +#define ADC_VREF_PREC2 329 #define USE_EXTI9_5_IRQ // used for I2C port extender interrupt #define EXTI9_5_IRQ_Priority 5 diff --git a/radio/src/targets/stm32h7s78-dk/hal.h b/radio/src/targets/stm32h7s78-dk/hal.h index 1b8540a0751..d73d34c9e34 100644 --- a/radio/src/targets/stm32h7s78-dk/hal.h +++ b/radio/src/targets/stm32h7s78-dk/hal.h @@ -49,60 +49,8 @@ // ADC - #define ADC_VREF_PREC2 1024 // fake -#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 -#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_2 -#define ADC_GPIO_PIN_STICK_RV -#define ADC_GPIO_PIN_STICK_RH -#define ADC_GPIO_PIN_BATT // fake - -// #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PA0_C VR1 -// #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PA1_C VR2 - -// #define ADC_GPIOA_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2) -#define ADC_GPIOC_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - -// Fake gimbal channels -#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_10 -#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_12 -#define ADC_CHANNEL_STICK_RV -#define ADC_CHANNEL_STICK_RH -#define ADC_CHANNEL_BATT // fake -#define ADC_CHANNEL_RTC_BAT // fake - -// #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_0 // ADC12_INP0 -// #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_1 // ADC12_INP1 - -#define ADC_MAIN ADC1 -#define ADC_DMA GPDMA1 -#define ADC_DMA_CHANNEL LL_GPDMA1_REQUEST_ADC1 -#define ADC_DMA_STREAM LL_DMA_CHANNEL_0 -#define ADC_DMA_STREAM_IRQ GPDMA1_Channel0_IRQn -#define ADC_DMA_STREAM_IRQHandler GPDMA1_Channel0_IRQHandler - -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_92CYCLES_5 -#define ADC_DIRECTION {0,0,0,0,0,0} - -// Power -// #define PWR_SWITCH_GPIO GPIO_PIN(GPIOI, 11) // PI.11 -// #define PWR_ON_GPIO GPIO_PIN(GPIOI, 14) // PI.14 - -// Chargers (USB and wireless) -// #define UCHARGER_GPIO GPIO_PIN(GPIOB, 14) // PB.14 input -// #define UCHARGER_CHARGE_END_GPIO GPIO_PIN(GPIOB, 13) // PB.13 input -// #define UCHARGER_EN_GPIO GPIO_PIN(GPIOG, 3) // PG.03 output - -// #if defined (WIRELESS_CHARGER) -// #define WCHARGER_GPIO GPIO_PIN(GPIOI, 9) // PI.09 input -// #define WCHARGER_CHARGE_END_GPIO GPIO_PIN(GPIOI, 10) // PI.10 input -// #define WCHARGER_EN_GPIO GPIO_PIN(GPIOH, 4) // PH.04 output -// #define WCHARGER_I_CONTROL_GPIO GPIO_PIN(GPIOH, 13) // PH.13 output -// #endif - -// TODO! Check IOLL1 to PI.01 connectivity! - // S.Port update connector // #define SPORT_MAX_BAUDRATE 400000 // #define SPORT_UPDATE_RCC_AHB1Periph 0 diff --git a/radio/src/targets/taranis/CMakeLists.txt b/radio/src/targets/taranis/CMakeLists.txt index 4ceec6dc045..495b32d62c4 100644 --- a/radio/src/targets/taranis/CMakeLists.txt +++ b/radio/src/targets/taranis/CMakeLists.txt @@ -63,7 +63,6 @@ elseif(PCB STREQUAL X9D+) set(FLAVOUR x9d+2019) set(CPU_TYPE_FULL STM32F407xE) set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)") - add_definitions(-DRADIO_X9DP2019) add_definitions(-DSOFTWARE_VOLUME -DPWR_BUTTON_${PWR_BUTTON} -DHARDWARE_POWER_MANAGEMENT_UNIT) set(STATUS_LEDS YES) set(PXX2 ON) @@ -113,7 +112,6 @@ elseif(PCB STREQUAL X7) set(MODULE_SIZE_STD YES) set(FLAVOUR t12) set(CPU_TYPE_FULL STM32F205xE) - add_definitions(-DRADIO_T12) add_definitions(-DRADIO_FAMILY_JUMPER_T12) add_definitions(-DMANUFACTURER_JUMPER) elseif(PCBREV STREQUAL TPRO) @@ -124,7 +122,6 @@ elseif(PCB STREQUAL X7) set(ROTARY_ENCODER YES) set(CPU_TYPE_FULL STM32F205xE) set(FUNCTION_SWITCHES ON) - add_definitions(-DRADIO_TPRO) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") elseif(PCBREV STREQUAL TPROV2) @@ -135,7 +132,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xE) set(ROTARY_ENCODER YES) set(FUNCTION_SWITCHES ON) - add_definitions(-DRADIO_TPROV2) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") elseif(PCBREV STREQUAL TPROS) @@ -146,7 +142,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xG) set(ROTARY_ENCODER YES) set(USB_CHARGE_LED YES) - add_definitions(-DRADIO_TPROS) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") elseif(PCBREV STREQUAL BUMBLEBEE) @@ -158,7 +153,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xG) set(ROTARY_ENCODER YES) set(FUNCTION_SWITCHES YES) - add_definitions(-DRADIO_BUMBLEBEE) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") set(AUX_SERIAL ON) @@ -171,7 +165,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xG) set(PXX2 ON) set(USB_CHARGE_LED YES) - add_definitions(-DRADIO_T14) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") elseif (PCBREV STREQUAL T12MAX) @@ -182,7 +175,6 @@ elseif(PCB STREQUAL X7) set(ROTARY_ENCODER YES) set(USB_CHARGE_LED YES) set(CPU_TYPE_FULL STM32F407xG) - add_definitions(-DRADIO_T12MAX) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") elseif(PCBREV STREQUAL T20) @@ -194,7 +186,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xE) set(FLYSKY_GIMBAL ON) set(FUNCTION_SWITCHES ON) - add_definitions(-DRADIO_T20) add_definitions(-DRADIO_FAMILY_T20) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -208,7 +199,6 @@ elseif(PCB STREQUAL X7) set(FLYSKY_GIMBAL ON) set(PXX2 ON) set(FUNCTION_SWITCHES ON) - add_definitions(-DRADIO_T20V2) add_definitions(-DRADIO_FAMILY_T20) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -218,17 +208,6 @@ elseif(PCB STREQUAL X7) set(MODULE_SIZE_SML YES) set(FLAVOUR tlite) set(CPU_TYPE_FULL STM32F205xE) - add_definitions(-DRADIO_TLITE) - add_definitions(-DRADIO_FAMILY_JUMPER_T12) - add_definitions(-DMANUFACTURER_JUMPER) - set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") - elseif(PCBREV STREQUAL TLITEF4) - set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") - set(INTERNAL_MODULE_SERIAL YES) - set(MODULE_SIZE_SML YES) - set(FLAVOUR tlitef4) - set(CPU_TYPE_FULL STM32F407xE) # for size report - add_definitions(-DRADIO_TLITE) add_definitions(-DRADIO_FAMILY_JUMPER_T12) add_definitions(-DMANUFACTURER_JUMPER) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -238,7 +217,6 @@ elseif(PCB STREQUAL X7) set(MODULE_SIZE_SML YES) set(FLAVOUR lr3pro) set(CPU_TYPE_FULL STM32F205xE) - add_definitions(-DRADIO_LR3PRO) add_definitions(-DRADIO_FAMILY_JUMPER_T12) add_definitions(-DMANUFACTURER_BETAFPV) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -251,7 +229,6 @@ elseif(PCB STREQUAL X7) set(ROTARY_ENCODER YES) set(BLUETOOTH NO) set(USB_CHARGER YES) - add_definitions(-DRADIO_TX12) add_definitions(-DMANUFACTURER_RADIOMASTER) elseif(PCBREV STREQUAL TX12MK2) set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module") @@ -264,7 +241,6 @@ elseif(PCB STREQUAL X7) if (NOT BLUETOOTH) set(AUX_SERIAL ON) endif() - add_definitions(-DRADIO_TX12MK2) add_definitions(-DMANUFACTURER_RADIOMASTER) set(PXX2 ON) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -278,7 +254,6 @@ elseif(PCB STREQUAL X7) set(BLUETOOTH NO) set(USB_CHARGER YES) set(HELI NO) - add_definitions(-DRADIO_MT12) add_definitions(-DMANUFACTURER_RADIOMASTER) set(PXX2 ON) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -295,7 +270,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xG) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) - add_definitions(-DRADIO_BOXER) add_definitions(-DMANUFACTURER_RADIOMASTER) set(PXX2 ON) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -312,7 +286,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xG) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) - add_definitions(-DRADIO_GX12) add_definitions(-DMANUFACTURER_RADIOMASTER) set(PXX2 ON) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -331,7 +304,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xE) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) - add_definitions(-DRADIO_ZORRO) add_definitions(-DMANUFACTURER_RADIOMASTER) set(PXX2 ON) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -346,7 +318,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xE) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) - add_definitions(-DRADIO_POCKET) add_definitions(-DMANUFACTURER_RADIOMASTER) set(PXX2 ON) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -364,7 +335,6 @@ elseif(PCB STREQUAL X7) if(RADIOMASTER_RELEASE) set(BIND_KEY YES) endif() - add_definitions(-DRADIO_T8) add_definitions(-DMANUFACTURER_RADIOMASTER) elseif(PCBREV STREQUAL COMMANDO8) set(DEFAULT_INTERNAL_MODULE MULTIMODULE CACHE STRING "Default internal module") @@ -376,7 +346,6 @@ elseif(PCB STREQUAL X7) set(ROTARY_ENCODER NO) set(BLUETOOTH NO) set(USE_RTC_CLOCK NO) - add_definitions(-DRADIO_COMMANDO8) add_definitions(-DMUTUALLY_EXCLUSIVE_MODULES) add_definitions(-DMANUFACTURER_IFLIGHT) elseif(PCBREV STREQUAL ACCESS) @@ -385,7 +354,6 @@ elseif(PCB STREQUAL X7) set(MODULE_SIZE_STD YES) set(FLAVOUR x7access) set(CPU_TYPE_FULL STM32F407xE) - add_definitions(-DRADIO_X7ACCESS) add_definitions(-DPCBREV=${PCBREV}) add_definitions(-DPCBX7ACCESS) add_definitions(-DHARDWARE_POWER_MANAGEMENT_UNIT) @@ -402,7 +370,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xG) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) - add_definitions(-DRADIO_V12) add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS) set(PXX2 ON) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -418,7 +385,6 @@ elseif(PCB STREQUAL X7) set(CPU_TYPE_FULL STM32F407xG) set(ROTARY_ENCODER YES) set(USB_CHARGER YES) - add_definitions(-DRADIO_V14) add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS) set(PXX2 ON) set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough") @@ -431,7 +397,6 @@ elseif(PCB STREQUAL X7) set(DEFAULT_INTERNAL_MODULE XJT_PXX1 CACHE STRING "Default internal module") set(FLAVOUR x7) set(CPU_TYPE_FULL STM32F205xE) - add_definitions(-DRADIO_X7) set(BLUETOOTH YES) add_definitions(-DBLUETOOTH_PROBE) set(ROTARY_ENCODER YES) diff --git a/radio/src/targets/taranis/board.h b/radio/src/targets/taranis/board.h index 3c55039659d..08dd47bbb4e 100644 --- a/radio/src/targets/taranis/board.h +++ b/radio/src/targets/taranis/board.h @@ -110,7 +110,7 @@ enum { #endif -#if defined(ADC_GPIO_PIN_STICK_TH) +#if defined(RADIO_MT12) #define SURFACE_RADIO true #endif diff --git a/radio/src/targets/taranis/hal.h b/radio/src/targets/taranis/hal.h index e89d43e3e56..40846403350 100644 --- a/radio/src/targets/taranis/hal.h +++ b/radio/src/targets/taranis/hal.h @@ -44,210 +44,12 @@ #define TELEMETRY_EXTI_PRIO 0 // required for soft serial // Keys -#if defined(PCBX9E) - #define KEYS_GPIO_REG_MENU GPIOD - #define KEYS_GPIO_PIN_MENU LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_EXIT GPIOD - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02 - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03 - #define KEYS_GPIO_REG_ENTER GPIOF - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_0 // PF.00 -#elif defined(PCBXLITE) - #define KEYS_GPIO_REG_SHIFT GPIOE - #define KEYS_GPIO_PIN_SHIFT LL_GPIO_PIN_8 // PE.08 - #define KEYS_GPIO_REG_EXIT GPIOE - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_7 // PE.07 - #define KEYS_GPIO_REG_ENTER GPIOE - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_11 // PE.11 - #define KEYS_GPIO_REG_UP GPIOE - #define KEYS_GPIO_PIN_UP LL_GPIO_PIN_10 // PE.10 - #define KEYS_GPIO_REG_DOWN GPIOE - #define KEYS_GPIO_PIN_DOWN LL_GPIO_PIN_14 // PE.14 - #define KEYS_GPIO_REG_LEFT GPIOE - #define KEYS_GPIO_PIN_LEFT LL_GPIO_PIN_12 // PE.12 - #define KEYS_GPIO_REG_RIGHT GPIOE - #define KEYS_GPIO_PIN_RIGHT LL_GPIO_PIN_13 // PE.13 -#elif defined(RADIO_TPROS) - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03 - #define KEYS_GPIO_REG_MENU GPIOD - #define KEYS_GPIO_PIN_MENU LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_EXIT GPIOD - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02 - #define KEYS_GPIO_REG_ENTER GPIOA - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PA.13 -#elif defined(RADIO_FAMILY_JUMPER_T12) && !defined(RADIO_TPRO) && !defined(RADIO_TPROV2) - #define KEYS_GPIO_REG_EXIT GPIOD - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02 - #define KEYS_GPIO_REG_ENTER GPIOE - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_10 // PE.10 - #define KEYS_GPIO_REG_UP GPIOE - #define KEYS_GPIO_PIN_UP LL_GPIO_PIN_9 // PE.09 - #define KEYS_GPIO_REG_DOWN GPIOE - #define KEYS_GPIO_PIN_DOWN LL_GPIO_PIN_11 // PE.11 - #define KEYS_GPIO_REG_LEFT GPIOD - #define KEYS_GPIO_PIN_LEFT LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_RIGHT GPIOD - #define KEYS_GPIO_PIN_RIGHT LL_GPIO_PIN_3 // PD.03 -#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_GX12) -#if defined(RADIO_MT12) - #define KEYS_GPIO_REG_PAGEUP GPIOD - #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03 -#else - #define KEYS_GPIO_REG_PAGEUP GPIOD - #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_3 // PD.03 - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_7 // PD.07 -#endif -#if defined(RADIO_TX12) - #define KEYS_GPIO_REG_EXIT GPIOB - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_3 // PB.03 -#else - #define KEYS_GPIO_REG_EXIT GPIOC - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_5 // PC.05 -#endif -#if defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_GX12) - #define KEYS_GPIO_REG_ENTER GPIOA - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_10 // PA.10 -#else - #define KEYS_GPIO_REG_ENTER GPIOA - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PA.13 -#endif - #define KEYS_GPIO_REG_SYS GPIOB - #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_4 // PB.04 - #define KEYS_GPIO_REG_MDL GPIOE - #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_11 // PE.11 - #define KEYS_GPIO_REG_TELE GPIOD - #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_2 // PD.02 -#elif defined(RADIO_T8) - #define KEYS_GPIO_REG_PAGEUP GPIOD - #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_3 // PD.03 - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_EXIT GPIOB - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_3 // PB.03 - #define KEYS_GPIO_REG_ENTER GPIOA - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PA.13 - #define KEYS_GPIO_REG_SYS GPIOB - #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_4 // PB.04 - #define KEYS_GPIO_REG_MDL GPIOE - #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_11 // PE.11 - #define KEYS_GPIO_REG_PLUS GPIOE - #define KEYS_GPIO_PIN_PLUS LL_GPIO_PIN_9 // PE.09 - #define KEYS_GPIO_REG_MINUS GPIOE - #define KEYS_GPIO_PIN_MINUS LL_GPIO_PIN_10 // PE.10 +#if defined(RADIO_T8) #define KEYS_GPIO_REG_BIND GPIOA #define KEYS_GPIO_PIN_BIND LL_GPIO_PIN_10 // PA.10 #elif defined(RADIO_COMMANDO8) - #define KEYS_GPIO_REG_PAGEUP GPIOE - #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_11 // PE.11 - #define KEYS_GPIO_REG_PAGEDN GPIOE - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_13 // PE.13 - #define KEYS_GPIO_REG_EXIT GPIOD - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02 - #define KEYS_GPIO_REG_ENTER GPIOE - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_10 // PE.10 - #define KEYS_GPIO_REG_SYS GPIOD - #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_1 // PD.01 - #define KEYS_GPIO_REG_MDL GPIOD - #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_0 // PD.00 - #define KEYS_GPIO_REG_PLUS GPIOE - #define KEYS_GPIO_PIN_PLUS LL_GPIO_PIN_12 // PE.12 - #define KEYS_GPIO_REG_MINUS GPIOE - #define KEYS_GPIO_PIN_MINUS LL_GPIO_PIN_14 // PE.14 #define KEYS_GPIO_REG_BIND GPIOD #define KEYS_GPIO_PIN_BIND LL_GPIO_PIN_9 // PD.09 -#elif defined(RADIO_FAMILY_T20) || defined(RADIO_BUMBLEBEE) - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_11 // PD.11 - #define KEYS_GPIO_REG_MENU GPIOD - #define KEYS_GPIO_PIN_MENU LL_GPIO_PIN_10 // PD.10 - #define KEYS_GPIO_REG_EXIT GPIOD - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_12 // PD.12 - #define KEYS_GPIO_REG_ENTER GPIOE - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_7 // PE.7 -#elif defined(RADIO_T14) || defined(RADIO_T12MAX) - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03 - #define KEYS_GPIO_REG_MENU GPIOD - #define KEYS_GPIO_PIN_MENU LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_EXIT GPIOD - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02 - #define KEYS_GPIO_REG_ENTER GPIOA - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_13 // PA.13 -#elif defined(RADIO_GX12) - #define KEYS_GPIO_REG_SYS GPIOB - #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_4 // PB.04 - #define KEYS_GPIO_REG_ENTER GPIOA - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_10 // PA.10 - #define KEYS_GPIO_REG_EXIT GPIOC - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_5 // PC.05 - #define KEYS_GPIO_REG_MDL GPIOE - #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_11 // PE.11 - #define KEYS_GPIO_REG_PAGEUP GPIOD - #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_7 // PD.03 - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.07 - #define KEYS_GPIO_REG_TELE GPIOD - #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_2 // PD.02 -#elif defined(RADIO_V14) || defined(RADIO_V12) - #define KEYS_GPIO_REG_PAGEUP GPIOD - #define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_3 // PD.03 - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_EXIT GPIOE - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_1 // PE.01 - #define KEYS_GPIO_REG_ENTER GPIOD - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_11 // PD.11 - #define KEYS_GPIO_REG_SYS GPIOB - #define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_4 // PB.04 - #define KEYS_GPIO_REG_MDL GPIOE - #define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_11 // PE.11 - #define KEYS_GPIO_REG_TELE GPIOD - #define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_2 // PD.02 -#elif defined(PCBX7) - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03 - #define KEYS_GPIO_REG_MENU GPIOD - #define KEYS_GPIO_PIN_MENU LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_EXIT GPIOD - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02 - #define KEYS_GPIO_REG_ENTER GPIOE - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_10 // PE.10 -#elif defined(PCBX9LITE) - #define KEYS_GPIO_REG_PAGEDN GPIOE - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_8 // PE.08 - #define KEYS_GPIO_REG_MENU GPIOE - #define KEYS_GPIO_PIN_MENU LL_GPIO_PIN_7 // PE.07 - #define KEYS_GPIO_REG_EXIT GPIOE - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_9 // PE.09 - #define KEYS_GPIO_REG_ENTER GPIOE - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_11 // PE.11 -#elif defined(RADIO_X9DP2019) - #define KEYS_GPIO_REG_MENU GPIOD - #define KEYS_GPIO_PIN_MENU LL_GPIO_PIN_2 // PD.02 - #define KEYS_GPIO_REG_EXIT GPIOD - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03 - #define KEYS_GPIO_REG_ENTER GPIOE - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_12 // PE.12 -#else - #define KEYS_GPIO_REG_MENU GPIOD - #define KEYS_GPIO_PIN_MENU LL_GPIO_PIN_7 // PD.07 - #define KEYS_GPIO_REG_EXIT GPIOD - #define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_2 // PD.02 - #define KEYS_GPIO_REG_PAGEDN GPIOD - #define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_3 // PD.03 - #define KEYS_GPIO_REG_PLUS GPIOE - #define KEYS_GPIO_PIN_PLUS LL_GPIO_PIN_10 // PE.10 - #define KEYS_GPIO_REG_MINUS GPIOE - #define KEYS_GPIO_PIN_MINUS LL_GPIO_PIN_11 // PE.11 - #define KEYS_GPIO_REG_ENTER GPIOE - #define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_12 // PE.12 #endif // Rotary Encoder @@ -352,1032 +154,6 @@ #define ROTARY_ENCODER_TIMER_IRQHandler TIM5_IRQHandler #endif -// Trims -#if defined(PCBX9E) - #define TRIMS_GPIO_REG_LHL GPIOG - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_1 // PG.01 - #define TRIMS_GPIO_REG_LHR GPIOG - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_0 // PG.00 - #define TRIMS_GPIO_REG_LVD GPIOE - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_4 // PE.04 - #define TRIMS_GPIO_REG_LVU GPIOE - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_RVD GPIOC - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_RHL GPIOC - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_1 // PC.01 - #define TRIMS_GPIO_REG_RVU GPIOC - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_2 // PC.02 - #define TRIMS_GPIO_REG_RHR GPIOC - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_13 // PC.13 -#elif defined(PCBXLITE) - #define TRIMS_GPIO_REG_LHL GPIOC - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_4 // PC.04 - #define TRIMS_GPIO_REG_LHR GPIOC - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_5 // PC.05 - #define TRIMS_GPIO_REG_LVU GPIOB - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_0 // PB.00 - #define TRIMS_GPIO_REG_LVD GPIOB - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_1 // PB.01 - #define TRIMS_VIRTUAL_RV - #define TRIMS_VIRTUAL_RH -#elif defined(RADIO_X7ACCESS) - #define TRIMS_GPIO_REG_LHR GPIOD - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_15 // PD.15 - #define TRIMS_GPIO_REG_LHL GPIOC - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_1 // PC.01 - #define TRIMS_GPIO_REG_LVD GPIOE - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_LVU GPIOE - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_RVD GPIOC - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_RHR GPIOE - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_RVU GPIOC - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_2 // PC.02 - #define TRIMS_GPIO_REG_RHL GPIOE - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_4 // PE.04 -#elif defined(RADIO_FAMILY_T20) - #define TRIMS_GPIO_REG_LHL GPIOD - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_13 // PD.13 - #define TRIMS_GPIO_REG_LHR GPIOG - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_2 // PG.02 - #define TRIMS_GPIO_REG_LVD GPIOG - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_3 // PG.03 - #define TRIMS_GPIO_REG_LVU GPIOD - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_14 // PD.14 - #define TRIMS_GPIO_REG_RVD GPIOF - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_2 // PF.02 - #define TRIMS_GPIO_REG_RVU GPIOE - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_RHL GPIOE - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_RHR GPIOF - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_1 // PF.01 - #define TRIMS_GPIO_REG_LSD GPIOG - #define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_9 // PG.09 - #define TRIMS_GPIO_REG_LSU GPIOG - #define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_10 // PG.10 - #define TRIMS_GPIO_REG_RSD GPIOD - #define TRIMS_GPIO_PIN_RSD LL_GPIO_PIN_7 // PD.07 - #define TRIMS_GPIO_REG_RSU GPIOG - #define TRIMS_GPIO_PIN_RSU LL_GPIO_PIN_12 // PG.12 -#if defined(RADIO_T20V2) - #define TRIMS_GPIO_REG_T7L GPIOC - #define TRIMS_GPIO_PIN_T7L LL_GPIO_PIN_13 // PC.13 -#else - #define TRIMS_GPIO_REG_T7L GPIOB - #define TRIMS_GPIO_PIN_T7L LL_GPIO_PIN_3 // PB.03 -#endif - #define TRIMS_GPIO_REG_T7R GPIOG - #define TRIMS_GPIO_PIN_T7R LL_GPIO_PIN_15 // PG.15 - #define TRIMS_GPIO_REG_T8D GPIOG - #define TRIMS_GPIO_PIN_T8D LL_GPIO_PIN_13 // PG.13 - #define TRIMS_GPIO_REG_T8U GPIOB - #define TRIMS_GPIO_PIN_T8U LL_GPIO_PIN_4 // PB.04 -#elif defined(RADIO_MT12) - #define TRIMS_GPIO_REG_T1R GPIOE - #define TRIMS_GPIO_PIN_T1R LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_T1L GPIOE - #define TRIMS_GPIO_PIN_T1L LL_GPIO_PIN_4 // PE.04 - #define TRIMS_GPIO_REG_T2R GPIOC - #define TRIMS_GPIO_PIN_T2R LL_GPIO_PIN_1 // PC.01 - #define TRIMS_GPIO_REG_T2L GPIOC - #define TRIMS_GPIO_PIN_T2L LL_GPIO_PIN_2 // PC.02 - #define TRIMS_GPIO_REG_T3R GPIOE - #define TRIMS_GPIO_PIN_T3R LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_T3L GPIOE - #define TRIMS_GPIO_PIN_T3L LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_T4R GPIOE - #define TRIMS_GPIO_PIN_T4R LL_GPIO_PIN_7 // PE.07 - #define TRIMS_GPIO_REG_T4L GPIOE - #define TRIMS_GPIO_PIN_T4L LL_GPIO_PIN_8 // PE.08 - #define TRIMS_GPIO_REG_T5R GPIOE - #define TRIMS_GPIO_PIN_T5R LL_GPIO_PIN_15 // PE.15 - #define TRIMS_GPIO_REG_T5L GPIOE - #define TRIMS_GPIO_PIN_T5L LL_GPIO_PIN_14 // PE.14 -#elif defined(RADIO_GX12) - #define TRIMS_GPIO_REG_LHL GPIOD - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15 - #define TRIMS_GPIO_REG_LHR GPIOC - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_1 // PC.01 - #define TRIMS_GPIO_REG_LVD GPIOE - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_LVU GPIOE - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_RVD GPIOC - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_RHL GPIOE - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_RVU GPIOC - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_2 // PC.02 - #define TRIMS_GPIO_REG_RHR GPIOE - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_4 // PE.04 -#elif defined(RADIO_TPROS) - #define TRIMS_GPIO_REG_LHL GPIOC - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_LHR GPIOC - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_2 // PC.02 - #define TRIMS_GPIO_REG_LVD GPIOE - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_4 // PE.04 - #define TRIMS_GPIO_REG_LVU GPIOE - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_RVD GPIOC - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_1 // PC.01 - #define TRIMS_GPIO_REG_RHL GPIOE - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_RVU GPIOD - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_15 // PD.15 - #define TRIMS_GPIO_REG_RHR GPIOE - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_5 // PE.05 -#elif defined(RADIO_BUMBLEBEE) - #define TRIMS_GPIO_REG_LHR GPIOG - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_2 // PG.02 - #define TRIMS_GPIO_REG_LHL GPIOD - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_13 // PD.13 - #define TRIMS_GPIO_REG_LVD GPIOG - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_3 // PG.03 - #define TRIMS_GPIO_REG_LVU GPIOD - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_14 // PD.14 - #define TRIMS_GPIO_REG_RVD GPIOF - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_2 // PF.02 - #define TRIMS_GPIO_REG_RHL GPIOE - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_RVU GPIOE - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_RHR GPIOF - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_1 // PF.01 -#elif defined(RADIO_T14) || defined(RADIO_T12MAX) - #define TRIMS_GPIO_REG_LHL GPIOE - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_LHR GPIOE - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_4 // PE.04 - #define TRIMS_GPIO_REG_LVD GPIOC - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_LVU GPIOC - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_2 // PC.02 - #define TRIMS_GPIO_REG_RVD GPIOE - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_RHL GPIOD - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_15 // PD.15 - #define TRIMS_GPIO_REG_RVU GPIOE - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_RHR GPIOC - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_1 // PC.01 -#elif defined(RADIO_V14) || defined(RADIO_V12) - #define TRIMS_GPIO_REG_LHL GPIOD - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15 - #define TRIMS_GPIO_REG_LHR GPIOC - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_1 // PC.01 - #define TRIMS_GPIO_REG_LVD GPIOE - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_LVU GPIOE - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_RVD GPIOC - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_RHL GPIOE - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_RVU GPIOD - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_0 // PD.00 - #define TRIMS_GPIO_REG_RHR GPIOE - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_4 // PE.04 -#elif defined(PCBX7) && !defined(RADIO_COMMANDO8) - #define TRIMS_GPIO_REG_LHL GPIOD - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15 - #define TRIMS_GPIO_REG_LHR GPIOC - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_1 // PC.01 - #define TRIMS_GPIO_REG_LVD GPIOE - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_LVU GPIOE - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_RVD GPIOC - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_RHL GPIOE - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_RVU GPIOC - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_2 // PC.02 - #define TRIMS_GPIO_REG_RHR GPIOE - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_4 // PE.04 -#elif defined(RADIO_COMMANDO8) - #define TRIMS_GPIO_REG_LHL GPIOD - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_15 // PD.15 - #define TRIMS_GPIO_REG_LHR GPIOC - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_6 // PC.06 - #define TRIMS_GPIO_REG_LVD GPIOE - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_LVU GPIOE - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_1 // PE.01 - #define TRIMS_GPIO_REG_RVD GPIOC - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_RHL GPIOE - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_0 // PE.00 - #define TRIMS_GPIO_REG_RVU GPIOC - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_7 // PC.07 - #define TRIMS_GPIO_REG_RHR GPIOE - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_15 // PE.15 -#elif defined(PCBX9LITE) - #define TRIMS_GPIO_REG_LHR GPIOC - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_4 // PC.04 - #define TRIMS_GPIO_REG_LHL GPIOC - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_5 // PC.05 - #define TRIMS_GPIO_REG_LVU GPIOB - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_0 // PB.00 - #define TRIMS_GPIO_REG_LVD GPIOB - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_1 // PB.01 - #define TRIMS_GPIO_REG_RVU GPIOE - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_13 // PE.13 - #define TRIMS_GPIO_REG_RHR GPIOD - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_8 // PD.08 - #define TRIMS_GPIO_REG_RVD GPIOE - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_14 // PE.14 - #define TRIMS_GPIO_REG_RHL GPIOD - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_9 // PD.09 -#elif defined(RADIO_X9DP2019) - #define TRIMS_GPIO_REG_LHL GPIOE - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_LHR GPIOE - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_4 // PE.04 - #define TRIMS_GPIO_REG_LVD GPIOE - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_LVU GPIOE - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_RVD GPIOC - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_RVU GPIOC - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_2 // PC.02 - #define TRIMS_GPIO_REG_RHL GPIOC - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_13 // PC.13 - #define TRIMS_GPIO_REG_RHR GPIOC - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_1 // PC.01 -#else - #define TRIMS_GPIO_REG_LHL GPIOE - #define TRIMS_GPIO_PIN_LHL LL_GPIO_PIN_4 // PE.04 - #define TRIMS_GPIO_REG_LHR GPIOE - #define TRIMS_GPIO_PIN_LHR LL_GPIO_PIN_3 // PE.03 - #define TRIMS_GPIO_REG_LVD GPIOE - #define TRIMS_GPIO_PIN_LVD LL_GPIO_PIN_6 // PE.06 - #define TRIMS_GPIO_REG_LVU GPIOE - #define TRIMS_GPIO_PIN_LVU LL_GPIO_PIN_5 // PE.05 - #define TRIMS_GPIO_REG_RVD GPIOC - #define TRIMS_GPIO_PIN_RVD LL_GPIO_PIN_3 // PC.03 - #define TRIMS_GPIO_REG_RHL GPIOC - #define TRIMS_GPIO_PIN_RHL LL_GPIO_PIN_1 // PC.01 - #define TRIMS_GPIO_REG_RVU GPIOC - #define TRIMS_GPIO_PIN_RVU LL_GPIO_PIN_2 // PC.02 - #define TRIMS_GPIO_REG_RHR GPIOC - #define TRIMS_GPIO_PIN_RHR LL_GPIO_PIN_13 // PC.13 -#endif - -// Switches -#if defined(PCBX9E) - #define SWITCHES_GPIO_REG_A_H GPIOD - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_10 // PD.10 - #define SWITCHES_GPIO_REG_A_L GPIOD - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_14 // PD.14 -#elif defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_MT12) - #define SWITCHES_GPIO_REG_A_H GPIOE - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_1 // PE.01 - #define SWITCHES_GPIO_REG_A_L GPIOE - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_0 // PE.00 -#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) - #define SWITCHES_GPIO_REG_A GPIOC - #define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_13 // PC.13 -#elif defined(RADIO_GX12) - #define SWITCHES_A_2POS - #define SWITCHES_A_CFS_IDX 7 - #define SWITCHES_GPIO_REG_A - #define SWITCHES_GPIO_PIN_A PCA95XX_PIN_14 -#elif defined(RADIO_T14) || defined(RADIO_T12MAX) - #define SWITCHES_GPIO_REG_A GPIOC - #define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_5 // PC.05 -#elif defined(RADIO_T8) - #define SWITCHES_GPIO_REG_A GPIOE - #define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_14 // PE.14 -#elif defined(RADIO_COMMANDO8) - #define SWITCHES_GPIO_REG_A GPIOE - #define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_3 // PE.03 -#elif defined(RADIO_TPRO) || defined(RADIO_TPROV2) - #define SWITCHES_GPIO_REG_A_L GPIOE - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_13 // PE.13 - #define SWITCHES_GPIO_REG_A_H GPIOE - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_TPROS) - #define SWITCHES_GPIO_REG_A_H GPIOE - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_0 // PE.00 - #define SWITCHES_GPIO_REG_A_L GPIOD - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_11 // PD.11 -#elif defined(RADIO_BUMBLEBEE) - #define SWITCHES_GPIO_REG_A_L GPIOD - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_2 // PD.02 - #define SWITCHES_GPIO_REG_A_H GPIOD - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_1 // PD.01 -#elif defined(RADIO_FAMILY_T20) - #define SWITCHES_A_INVERTED - #define SWITCHES_GPIO_REG_A GPIOD - #define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_0 // PD.00 -#elif defined(RADIO_V14) || defined(RADIO_V12) - #define STORAGE_SWITCH_A - #define HARDWARE_SWITCH_A - #define SWITCHES_GPIO_REG_A GPIOC - #define SWITCHES_GPIO_PIN_A LL_GPIO_PIN_13 // PC.13 -#elif defined(PCBX7) - #define SWITCHES_GPIO_REG_A_L GPIOE - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_7 // PE.07 - #define SWITCHES_GPIO_REG_A_H GPIOE - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_13 // PE.13 -#else - #define SWITCHES_GPIO_REG_A_H GPIOB - #define SWITCHES_GPIO_PIN_A_H LL_GPIO_PIN_5 // PB.05 - #define SWITCHES_GPIO_REG_A_L GPIOE - #define SWITCHES_GPIO_PIN_A_L LL_GPIO_PIN_0 // PE.00 -#endif - -#if defined(PCBX9E) - #define SWITCHES_GPIO_REG_B_H GPIOG - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_11 // PG.11 - #define SWITCHES_GPIO_REG_B_L GPIOG - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_10 // PG.10 -#elif defined(PCBXLITE) - #define SWITCHES_GPIO_REG_B_L GPIOA - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_6 // PA.06 - #define SWITCHES_GPIO_REG_B_H GPIOA - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_5 // PA.05 -#elif defined(RADIO_T8) - #define SWITCHES_GPIO_REG_B_L GPIOE - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_7 // PE.07 - #define SWITCHES_GPIO_REG_B_H GPIOE - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_13 // PE.13 -#elif defined(RADIO_COMMANDO8) - #define SWITCHES_GPIO_REG_B_L GPIOE - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_5 // PE.05 - #define SWITCHES_GPIO_REG_B_H GPIOE - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_4 // PE.04 -#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) - #define SWITCHES_GPIO_REG_B_L GPIOE - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_1 // PE.01 - #define SWITCHES_GPIO_REG_B_H GPIOE - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_2 // PE.02 -#elif defined(RADIO_TPROS) - #define SWITCHES_GPIO_REG_B_L GPIOA - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_5 // PA.05 - #define SWITCHES_GPIO_REG_B_H GPIOE - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_15 // PE.15 -#elif defined(RADIO_BUMBLEBEE) - #define SWITCHES_GPIO_REG_B_H GPIOE - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_0 // PE.00 - #define SWITCHES_GPIO_REG_B_L GPIOE - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_1 // PE.01 -#elif defined(RADIO_FAMILY_T20) - #define SWITCHES_B_INVERTED - #define SWITCHES_GPIO_REG_B GPIOE - #define SWITCHES_GPIO_PIN_B LL_GPIO_PIN_2 // PE.02 -#elif (RADIO_LR3PRO) - #define SWITCHES_GPIO_REG_B_L GPIOE - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_15 // PE.15 - #define SWITCHES_GPIO_REG_B_H GPIOA - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_5 // PA.05 -#elif defined(RADIO_BOXER) - #define SWITCHES_GPIO_REG_B_L GPIOE - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_15 // PE.15 - #define SWITCHES_GPIO_REG_B_H GPIOE - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_T14) || defined(RADIO_T12MAX) - #define SWITCHES_GPIO_REG_B GPIOE - #define SWITCHES_GPIO_PIN_B LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_MT12) - #define SWITCHES_GPIO_REG_B GPIOD - #define SWITCHES_GPIO_PIN_B LL_GPIO_PIN_11 // PD.11 -#elif defined(RADIO_GX12) - #define SWITCHES_B_3POS - #define SWITCHES_GPIO_REG_B_H - #define SWITCHES_GPIO_PIN_B_H PCA95XX_PIN_10 - #define SWITCHES_GPIO_REG_B_L - #define SWITCHES_GPIO_PIN_B_L PCA95XX_PIN_11 -#elif defined(RADIO_V14) || defined(RADIO_V12) -// ADC based switch -#elif defined(PCBX7) - #define SWITCHES_GPIO_REG_B_L GPIOE - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_15 // PE.15 - #define SWITCHES_GPIO_REG_B_H GPIOA - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_5 // PA.05 -#elif defined(PCBX9LITE) - #define SWITCHES_GPIO_REG_B_L GPIOB - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_4 // PB.04 - #define SWITCHES_GPIO_REG_B_H GPIOB - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_5 // PB.05 -#else - #define SWITCHES_GPIO_REG_B_H GPIOE - #define SWITCHES_GPIO_PIN_B_H LL_GPIO_PIN_1 // PE.01 - #define SWITCHES_GPIO_REG_B_L GPIOE - #define SWITCHES_GPIO_PIN_B_L LL_GPIO_PIN_2 // PE.02 -#endif - -#if defined(PCBX9E) - #define SWITCHES_GPIO_REG_C_H GPIOF - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_13 // PF.13 - #define SWITCHES_GPIO_REG_C_L GPIOF - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_14 // PF.14 -#elif defined(PCBXLITE) || defined(PCBX9LITE) - #define SWITCHES_GPIO_REG_C_L GPIOE - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_2 // PE.02 - #define SWITCHES_GPIO_REG_C_H GPIOE - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_3 // PE.03 -#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) - #define SWITCHES_GPIO_REG_C_L GPIOE - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_0 // PE.00 - #define SWITCHES_GPIO_REG_C_H GPIOD - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_11 // PD.11 -#elif defined(RADIO_T14) || defined(RADIO_T12MAX) - #define SWITCHES_GPIO_REG_C_H GPIOE - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_0 // PE.00 - #define SWITCHES_GPIO_REG_C_L GPIOD - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_11 // PD.11 -#elif defined(RADIO_TX12) - #define SWITCHES_GPIO_REG_C_L GPIOD - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_11 // PD.11 - #define SWITCHES_GPIO_REG_C_H GPIOE - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_0 // PE.00 -#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) - #define SWITCHES_GPIO_REG_C_L GPIOE - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_0 // PE.00 - #define SWITCHES_GPIO_REG_C_H GPIOD - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_11 // PD.11 -#elif defined(RADIO_T8) - #define SWITCHES_GPIO_REG_C_L GPIOE - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_2 // PE.02 - #define SWITCHES_GPIO_REG_C_H GPIOE - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_1 // PE.01 -#elif defined(RADIO_COMMANDO8) - #define SWITCHES_GPIO_REG_C_L GPIOC - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_4 // PC.04 - #define SWITCHES_GPIO_REG_C_H GPIOA - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_6 // PA.06 -#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO) - #define SWITCHES_GPIO_REG_C GPIOE - #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_14 // PE.14 -#elif defined(RADIO_TPROS) - #define SWITCHES_GPIO_REG_C GPIOE - #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_8 // PE.08 -#elif defined(RADIO_BUMBLEBEE) - #define SWITCHES_GPIO_REG_C GPIOD - #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_0 // PD.00 -#elif defined(RADIO_FAMILY_T20) - #define SWITCHES_GPIO_REG_C_L GPIOD - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_2 // PD.02 - #define SWITCHES_GPIO_REG_C_H GPIOD - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_1 // PD.01 -#elif defined(RADIO_MT12) - #define SWITCHES_GPIO_REG_C GPIOC - #define SWITCHES_GPIO_PIN_C LL_GPIO_PIN_13 // PC.13 -#elif defined(RADIO_GX12) - #define SWITCHES_C_3POS - #define SWITCHES_GPIO_REG_C_H - #define SWITCHES_GPIO_PIN_C_H PCA95XX_PIN_5 - #define SWITCHES_GPIO_REG_C_L - #define SWITCHES_GPIO_PIN_C_L PCA95XX_PIN_4 -#elif defined(RADIO_V14) || defined(RADIO_V12) -// ADC based switch -#elif defined(PCBX7) - #define SWITCHES_GPIO_REG_C_L GPIOD - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_11 // PD.11 - #if defined(PCBX7ACCESS) - #define SWITCHES_GPIO_REG_C_H GPIOD - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_10 // PD.10 - #else - #define SWITCHES_GPIO_REG_C_H GPIOE - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_0 // PE.00 - #endif -#else - #define SWITCHES_GPIO_REG_C_H GPIOE - #define SWITCHES_GPIO_PIN_C_H LL_GPIO_PIN_15 // PE.15 - #define SWITCHES_GPIO_REG_C_L GPIOA - #define SWITCHES_GPIO_PIN_C_L LL_GPIO_PIN_5 // PA.05 -#endif - -#if defined(PCBX9E) - #define SWITCHES_GPIO_REG_D_H GPIOE - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_1 // PE.01 - #define SWITCHES_GPIO_REG_D_L GPIOE - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_2 // PE.02 -#elif defined(PCBX9DP) - #define SWITCHES_GPIO_REG_D_H GPIOE - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_7 // PE.07 - #define SWITCHES_GPIO_REG_D_L GPIOE - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_13 // PE.13 -#elif defined(PCBXLITE) - #define SWITCHES_GPIO_REG_D_L GPIOB - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_4 // PB.04 - #define SWITCHES_GPIO_REG_D_H GPIOB - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_5 // PB.05 -#elif defined(RADIO_T8) - #define SWITCHES_GPIO_REG_D GPIOD - #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_14 // PD.14 -#elif defined(RADIO_COMMANDO8) - #define SWITCHES_GPIO_REG_D GPIOA - #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_5 // PA.05 -#elif defined(RADIO_TX12) || defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_ZORRO) || defined(RADIO_POCKET) - #define SWITCHES_GPIO_REG_D GPIOE - #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_8 // PE.08 -#elif defined(RADIO_TLITE) || defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_LR3PRO) - #define SWITCHES_GPIO_REG_D GPIOD - #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_14 // PD.14 -#elif defined(RADIO_TPROS) - #define SWITCHES_GPIO_REG_D GPIOC - #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_13// PC.13 -#elif defined(RADIO_T14) || defined(RADIO_T12MAX) - #define SWITCHES_GPIO_REG_D_L GPIOA - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_5 // PA.05 - #define SWITCHES_GPIO_REG_D_H GPIOE - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_15 // PE.15 -#elif defined(RADIO_BUMBLEBEE) - #define SWITCHES_GPIO_REG_D GPIOE - #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_2 // PE.02 -#elif defined(RADIO_FAMILY_T20) - #define SWITCHES_GPIO_REG_D_L GPIOE - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_0 // PE.00 - #define SWITCHES_GPIO_REG_D_H GPIOE - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_1 // PE.01 -#elif defined(RADIO_MT12) - #define SWITCHES_GPIO_REG_D GPIOC - #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_3 // PC.03 -#elif defined(RADIO_GX12) - #define SWITCHES_D_2POS - #define SWITCHES_D_CFS_IDX 6 - #define SWITCHES_GPIO_REG_D - #define SWITCHES_GPIO_PIN_D PCA95XX_PIN_1 -#elif defined(RADIO_V14) || defined(RADIO_V12) - #define STORAGE_SWITCH_D - #define HARDWARE_SWITCH_D - #define SWITCHES_GPIO_REG_D GPIOE - #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_8 // PE.08 -#elif defined(PCBX7) && !defined(RADIO_COMMANDO8) - #define SWITCHES_GPIO_REG_D_L GPIOE - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_1 // PE.01 - #define SWITCHES_GPIO_REG_D_H GPIOE - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_2 // PE.02 -#elif defined(PCBX7) && defined(RADIO_COMMANDO8) - #define SWITCHES_GPIO_REG_D_L GPIOE - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_1 // PE.01 - #define SWITCHES_GPIO_REG_D_H GPIOE - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_2 // PE.02 -#elif defined(PCBX9LITE) - #define SWITCHES_GPIO_REG_D GPIOC - #define SWITCHES_GPIO_PIN_D LL_GPIO_PIN_13 // PC.13 -#else - #define SWITCHES_GPIO_REG_D_H GPIOE - #define SWITCHES_GPIO_PIN_D_H LL_GPIO_PIN_7 // PE.07 - #define SWITCHES_GPIO_REG_D_L GPIOB - #define SWITCHES_GPIO_PIN_D_L LL_GPIO_PIN_1 // PB.01 -#endif - -#if defined(PCBX9E) - #define SWITCHES_GPIO_REG_E_H GPIOE - #define SWITCHES_GPIO_PIN_E_H LL_GPIO_PIN_7 // PE.07 - #define SWITCHES_GPIO_REG_E_L GPIOE - #define SWITCHES_GPIO_PIN_E_L LL_GPIO_PIN_13 // PE.13 -#elif defined(PCBXLITES) - #define SWITCHES_GPIO_REG_E GPIOE - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_5 // PE.05 -#elif defined(PCBXLITE) - // no SWE but we want to remain compatible with XLiteS -#elif defined(PCBX9LITE) - #define SWITCHES_GPIO_REG_E GPIOA - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_5 // PA.05 -#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) - #define SWITCHES_GPIO_REG_E GPIOE - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_BOXER) - #define SWITCHES_GPIO_REG_E GPIOE - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_14 // PE.14 -#elif defined(RADIO_TX12) - #define SWITCHES_GPIO_REG_E_H GPIOE - #define SWITCHES_GPIO_PIN_E_H LL_GPIO_PIN_13 // PE.13 - #define SWITCHES_GPIO_REG_E_L GPIOE - #define SWITCHES_GPIO_PIN_E_L LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_TX12MK2) - #define SWITCHES_GPIO_REG_E_H GPIOE - #define SWITCHES_GPIO_PIN_E_H LL_GPIO_PIN_14 // PE.14 - #define SWITCHES_GPIO_REG_E_L GPIOE - #define SWITCHES_GPIO_PIN_E_L LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_TPROS) - #define SWITCHES_GPIO_REG_E GPIOC - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_5 // PC.05 -#elif defined(RADIO_TPRO) - #define SWITCHES_GPIO_REG_E GPIOG - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_10 // PG.10 -#elif defined(RADIO_TPROV2) - #define SWITCHES_GPIO_REG_E GPIOG - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_0 // PG.00 -#elif defined(RADIO_BUMBLEBEE) - #define SWITCHES_GPIO_REG_E GPIOD - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_3 // PD.03 -#elif defined(RADIO_T14) || defined(RADIO_T12MAX) - #define SWITCHES_GPIO_REG_E GPIOE - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_8 // PE.08 -#elif defined(RADIO_FAMILY_T20) - #define SWITCHES_GPIO_REG_E GPIOD - #define SWITCHES_GPIO_PIN_E LL_GPIO_PIN_3 // PD.03 -#elif defined(RADIO_MT12) - // ADC based switch/pot -#elif defined(RADIO_GX12) - #define SWITCHES_E_3POS - #define SWITCHES_GPIO_REG_E_H - #define SWITCHES_GPIO_PIN_E_H PCA95XX_PIN_12 - #define SWITCHES_GPIO_REG_E_L - #define SWITCHES_GPIO_PIN_E_L PCA95XX_PIN_13 -#elif defined(RADIO_V14) || defined(RADIO_V12) - // ADC based switch -#elif defined(PCBX7) - // no SWE -#else - #define SWITCHES_GPIO_REG_E_H GPIOB - #define SWITCHES_GPIO_PIN_E_H LL_GPIO_PIN_3 // PB.03 - #define SWITCHES_GPIO_REG_E_L GPIOB - #define SWITCHES_GPIO_PIN_E_L LL_GPIO_PIN_4 // PB.04 -#endif - -#if defined(PCBX9E) - #define SWITCHES_GPIO_REG_F GPIOE - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_11 // PE.11 -#elif defined(PCBXLITES) - #define SWITCHES_GPIO_REG_F GPIOC - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_3 // PC.03 -#elif defined(PCBXLITE) - // no SWF but we want to remain compatible with XLiteS -#elif defined(PCBX9LITES) - #define SWITCHES_GPIO_REG_F GPIOC - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_3 // PC.03 -#elif defined(PCBX9LITE) -// no SWF -#elif defined(RADIO_ZORRO) || defined(RADIO_BOXER) - #define SWITCHES_GPIO_REG_F GPIOE - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_1 // PE.01 -#elif defined(RADIO_TX12) - #define SWITCHES_GPIO_REG_F_L GPIOE - #define SWITCHES_GPIO_PIN_F_L LL_GPIO_PIN_1 // PE.01 - #define SWITCHES_GPIO_REG_F_H GPIOE - #define SWITCHES_GPIO_PIN_F_H LL_GPIO_PIN_2 // PE.02 -#elif defined(RADIO_TX12MK2) - #define SWITCHES_GPIO_REG_F_L GPIOD - #define SWITCHES_GPIO_PIN_F_L LL_GPIO_PIN_14 // PD.14 - #define SWITCHES_GPIO_REG_F_H GPIOE - #define SWITCHES_GPIO_PIN_F_H LL_GPIO_PIN_1 // PE.01 -#elif defined(RADIO_TPROS) - #define SWITCHES_GPIO_REG_F GPIOE - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_7 // PE.07 -#elif defined(RADIO_TPRO) - #define SWITCHES_GPIO_REG_F GPIOG - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_9 // PG.09 -#elif defined(RADIO_TPROV2) - #define SWITCHES_GPIO_REG_F GPIOG - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_1 // PG.01 -#elif defined(RADIO_BUMBLEBEE) - #define SWITCHES_GPIO_REG_F GPIOB - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_5 // PB.05 -#elif defined(RADIO_T14) || defined(RADIO_T12MAX) - #define SWITCHES_GPIO_REG_F GPIOC - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_13// PC.13 -#elif defined(RADIO_FAMILY_T20) - #define SWITCHES_GPIO_REG_F GPIOB - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_5 // PB.05 -#elif defined(RADIO_MT12) - // ADC based switch/pot -#elif defined(RADIO_T8) || defined(RADIO_TLITE) || defined(RADIO_COMMANDO8) || defined(RADIO_LR3PRO) || defined(RADIO_POCKET) - // no SWF -#elif defined(RADIO_T12) - // no SWF -#elif defined(RADIO_GX12) - #define SWITCHES_F_3POS - #define SWITCHES_GPIO_REG_F_H - #define SWITCHES_GPIO_PIN_F_H PCA95XX_PIN_3 - #define SWITCHES_GPIO_REG_F_L - #define SWITCHES_GPIO_PIN_F_L PCA95XX_PIN_2 -#elif defined(RADIO_V14) || defined(RADIO_V12) - // ADC based switch -#elif defined(PCBX7) - #define SWITCHES_GPIO_REG_F GPIOE - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_14 // PE.14 -#else - #define SWITCHES_GPIO_REG_F GPIOE - #define SWITCHES_GPIO_PIN_F LL_GPIO_PIN_14 // PE.14 -#endif - -#if defined(PCBX9E) - #define SWITCHES_GPIO_REG_G_H GPIOF - #define SWITCHES_GPIO_PIN_G_H LL_GPIO_PIN_3 // PF.03 - #define SWITCHES_GPIO_REG_G_L GPIOF - #define SWITCHES_GPIO_PIN_G_L LL_GPIO_PIN_4 // PF.04 -#elif defined(PCBX9LITES) - #define SWITCHES_GPIO_REG_G GPIOC - #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_2 // PC.02 -#elif defined(RADIO_T12) || defined(RADIO_ZORRO) - #define SWITCHES_GPIO_REG_G GPIOE - #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_14 // PE.14 -#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_V14) || defined(RADIO_V12) -#elif defined(RADIO_TPROV2) - #define SWITCHES_GPIO_REG_G GPIOG - #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_10 // PG.10 -#elif defined(RADIO_TPRO) - // SW1 - #define FUNCTION_SWITCH_1 SG - #define SWITCHES_GPIO_REG_G GPIOG - #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_7 // PG.07 - #define SWITCHES_G_CFS_IDX 0 -#elif defined(RADIO_BUMBLEBEE) - #define SWITCHES_GPIO_REG_G GPIOD - #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_15// PD.15 - Left trim push -#elif defined(RADIO_FAMILY_T20) - //TRIM left low - #define SWITCHES_GPIO_REG_G GPIOD - #define SWITCHES_GPIO_PIN_G LL_GPIO_PIN_15 // PD.15 -#elif defined(RADIO_GX12) - #define SWITCHES_G_2POS - #define SWITCHES_GPIO_REG_G - #define SWITCHES_GPIO_PIN_G PCA95XX_PIN_15 -#elif defined(PCBX7) || defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_T8) || defined(RADIO_COMMANDO8) || defined(RADIO_MT12) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) - // no SWG -#else - #define SWITCHES_GPIO_REG_G_H GPIOE - #define SWITCHES_GPIO_PIN_G_H LL_GPIO_PIN_9 // PE.09 - #define SWITCHES_GPIO_REG_G_L GPIOE - #define SWITCHES_GPIO_PIN_G_L LL_GPIO_PIN_8 // PE.08 -#endif - -#if defined(PCBX9E) - #define SWITCHES_GPIO_REG_H GPIOF - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_1 // PF.01 -#elif defined(PCBX9DP) - #define SWITCHES_GPIO_REG_H GPIOD - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_14 // PD.14 -#elif defined(PCBXLITE) || defined(PCBX9LITE) || defined(RADIO_POCKET) - // no SWH -#elif defined(RADIO_T8) || defined(RADIO_COMMANDO8) - // no SWH -#elif defined(RADIO_TX12) || defined(RADIO_MT12) -#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_V14) || defined(RADIO_V12) -#elif defined(RADIO_TPROV2) - #define SWITCHES_GPIO_REG_H GPIOG - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_9 // PG.09 -#elif defined(RADIO_TPRO) - // SW2 - #define FUNCTION_SWITCH_2 SH - #define SWITCHES_GPIO_REG_H GPIOG - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_6 // PG.06 - #define SWITCHES_H_CFS_IDX 1 -#elif defined(RADIO_BUMBLEBEE) - #define SWITCHES_GPIO_REG_H GPIOF - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_0 // PF.00 - Right trim push -#elif defined(RADIO_FAMILY_T20) - //TRIM right low - #define SWITCHES_GPIO_REG_H GPIOF - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_0 // PF.00 -#elif defined(RADIO_TLITE) || defined(RADIO_TPROS) || defined(RADIO_LR3PRO) - // no SWH -#elif defined(RADIO_GX12) - #define SWITCHES_H_2POS - #define SWITCHES_GPIO_REG_H - #define SWITCHES_GPIO_PIN_H PCA95XX_PIN_0 -#elif defined(PCBX7) - #define SWITCHES_GPIO_REG_H GPIOD - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_14 // PD.14 -#else - #define SWITCHES_GPIO_REG_H GPIOE - #define SWITCHES_GPIO_PIN_H LL_GPIO_PIN_13 // PE.13 -#endif - -#if defined(RADIO_X9DP2019) - #define SWITCHES_GPIO_REG_I GPIOD - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_10 // PD.10 -#elif defined(PCBX9D) || defined(PCBX9DP) -#endif - -// X7 P400 P401 headers additionnal momentary switches -#if defined(PCBX7ACCESS) - #define SWITCHES_GPIO_REG_I GPIOC - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_13 // PC.13 -#elif defined(RADIO_T8) || defined(RADIO_COMMANDO8) - // no SWI/J -#elif defined(RADIO_TX12) - #define SWITCHES_GPIO_REG_I GPIOE - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_14 // PE.14 - #define SWITCHES_GPIO_REG_J GPIOD - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_14 // PD.14 -#elif defined(RADIO_TX12MK2) || defined(RADIO_BOXER) || defined(RADIO_MT12) || defined(RADIO_V14) || defined(RADIO_V12) - // no headers -#elif defined(RADIO_TLITE) || defined(RADIO_LR3PRO) - // no SWI - // no SWJ -#elif defined(RADIO_ZORRO) || defined(RADIO_POCKET) || defined(RADIO_T14) || defined(RADIO_T12MAX) || defined(RADIO_TPROS) -// No I/J -#elif defined(RADIO_TPROV2) - // SW1 - #define FUNCTION_SWITCH_1 SI - #define SWITCHES_GPIO_REG_I GPIOG - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_7 // PG.07 - #define SWITCHES_I_CFS_IDX 0 - // SW2 - #define FUNCTION_SWITCH_2 SJ - #define SWITCHES_GPIO_REG_J GPIOG - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_6 // PG.06 - #define SWITCHES_J_CFS_IDX 1 - // SW3 - #define FUNCTION_SWITCH_3 SK - #define SWITCHES_GPIO_REG_K GPIOG - #define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_5 // PG.05 - #define SWITCHES_K_CFS_IDX 2 - // SW4 - #define FUNCTION_SWITCH_4 SL - #define SWITCHES_GPIO_REG_L GPIOG - #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_4 // PG.04 - #define SWITCHES_L_CFS_IDX 3 - // SW5 - #define FUNCTION_SWITCH_5 SM - #define SWITCHES_GPIO_REG_M GPIOG - #define SWITCHES_GPIO_PIN_M LL_GPIO_PIN_3 // PG.03 - #define SWITCHES_M_CFS_IDX 4 - // SW6 - #define FUNCTION_SWITCH_6 SN - #define SWITCHES_GPIO_REG_N GPIOG - #define SWITCHES_GPIO_PIN_N LL_GPIO_PIN_2 // PG.02 - #define SWITCHES_N_CFS_IDX 5 -#elif defined(RADIO_BUMBLEBEE) - // SW1 - #define FUNCTION_SWITCH_1 SJ - #define SWITCHES_GPIO_REG_J GPIOE - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_15 // PE.15 - #define SWITCHES_J_CFS_IDX 0 - // SW2 - #define FUNCTION_SWITCH_2 SK - #define SWITCHES_GPIO_REG_K GPIOE - #define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_14 // PE.14 - #define SWITCHES_K_CFS_IDX 1 - // SW3 - #define FUNCTION_SWITCH_3 SL - #define SWITCHES_GPIO_REG_L GPIOE - #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_13 // PE.13 - #define SWITCHES_L_CFS_IDX 2 - // SW4 - #define FUNCTION_SWITCH_4 SM - #define SWITCHES_GPIO_REG_M GPIOE - #define SWITCHES_GPIO_PIN_M LL_GPIO_PIN_10 // PE.10 - #define SWITCHES_M_CFS_IDX 3 - // SW5 - #define FUNCTION_SWITCH_5 SO - #define SWITCHES_GPIO_REG_O GPIOE - #define SWITCHES_GPIO_PIN_O LL_GPIO_PIN_8 // PE.08 - #define SWITCHES_O_CFS_IDX 4 - // SW6 - #define FUNCTION_SWITCH_6 SP - #define SWITCHES_GPIO_REG_P GPIOE - #define SWITCHES_GPIO_PIN_P LL_GPIO_PIN_12 // PE.12 - #define SWITCHES_P_CFS_IDX 5 -#elif defined(RADIO_TPRO) - // SW3 - #define FUNCTION_SWITCH_3 SI - #define SWITCHES_GPIO_REG_I GPIOG - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_5 // PG.05 - #define SWITCHES_I_CFS_IDX 2 - // SW4 - #define FUNCTION_SWITCH_4 SJ - #define SWITCHES_GPIO_REG_J GPIOG - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_4 // PG.04 - #define SWITCHES_J_CFS_IDX 3 - // SW5 - #define FUNCTION_SWITCH_5 SK - #define SWITCHES_GPIO_REG_K GPIOG - #define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_3 // PG.03 - #define SWITCHES_K_CFS_IDX 4 - // SW6 - #define FUNCTION_SWITCH_6 SL - #define SWITCHES_GPIO_REG_L GPIOG - #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_2 // PG.02 - #define SWITCHES_L_CFS_IDX 5 -#elif defined(RADIO_FAMILY_T20) - //TRIM left up - #define SWITCHES_GPIO_REG_I GPIOG - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_11 // PG.11 - //TRIM right up - #define SWITCHES_GPIO_REG_J GPIOG - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_14 // PG.14 -#elif defined(RADIO_GX12) - // I and J are part of function switches bellow -#elif defined(PCBX7) - #define SWITCHES_GPIO_REG_I GPIOC - #define SWITCHES_GPIO_PIN_I LL_GPIO_PIN_13 // PC.13 - #define SWITCHES_GPIO_REG_J GPIOD - #define SWITCHES_GPIO_PIN_J LL_GPIO_PIN_10 // PD.10 -#endif - -#if defined(RADIO_FAMILY_T20) - //SW1 - #define FUNCTION_SWITCH_1 SK - #define SWITCHES_GPIO_REG_K GPIOE - #define SWITCHES_GPIO_PIN_K LL_GPIO_PIN_10 // PE.10 - #define SWITCHES_K_CFS_IDX 0 - //SW2 - #define FUNCTION_SWITCH_2 SL - #define SWITCHES_GPIO_REG_L GPIOE - #define SWITCHES_GPIO_PIN_L LL_GPIO_PIN_8 // PE.08 - #define SWITCHES_L_CFS_IDX 1 - //SW3 - #define FUNCTION_SWITCH_3 SM - #define SWITCHES_GPIO_REG_M GPIOE - #define SWITCHES_GPIO_PIN_M LL_GPIO_PIN_12 // PE.12 - #define SWITCHES_M_CFS_IDX 2 - //SW4 - #define FUNCTION_SWITCH_4 SN - #define SWITCHES_GPIO_REG_N GPIOE - #define SWITCHES_GPIO_PIN_N LL_GPIO_PIN_13 // PE.13 - #define SWITCHES_N_CFS_IDX 3 - //SW5 - #define FUNCTION_SWITCH_5 SO - #define SWITCHES_GPIO_REG_O GPIOE - #define SWITCHES_GPIO_PIN_O LL_GPIO_PIN_14 // PE.14 - #define SWITCHES_O_CFS_IDX 4 - //SW6 - #define FUNCTION_SWITCH_6 SP - #define SWITCHES_GPIO_REG_P GPIOE - #define SWITCHES_GPIO_PIN_P LL_GPIO_PIN_15 // PE.15 - #define SWITCHES_P_CFS_IDX 5 -#endif - -#if defined(RADIO_GX12) - //SW1 - #define SWITCHES_GPIO_REG_I - #define SWITCHES_GPIO_PIN_I PCA95XX_PIN_0 - #define SWITCHES_I_CFS_IDX 0 - #define FUNCTION_SWITCH_1 SI - //SW2 - #define SWITCHES_GPIO_REG_J - #define SWITCHES_GPIO_PIN_J PCA95XX_PIN_1 - #define SWITCHES_J_CFS_IDX 1 - #define FUNCTION_SWITCH_2 SJ - //SW3 - #define SWITCHES_GPIO_REG_K - #define SWITCHES_GPIO_PIN_K PCA95XX_PIN_2 - #define SWITCHES_K_CFS_IDX 2 - #define FUNCTION_SWITCH_3 SK - //SW4 - #define SWITCHES_GPIO_REG_L - #define SWITCHES_GPIO_PIN_L PCA95XX_PIN_3 - #define SWITCHES_L_CFS_IDX 3 - #define FUNCTION_SWITCH_4 SL - //SW5 - #define SWITCHES_GPIO_REG_M - #define SWITCHES_GPIO_PIN_M PCA95XX_PIN_4 - #define SWITCHES_M_CFS_IDX 4 - #define FUNCTION_SWITCH_5 SM - //SW6 - #define SWITCHES_GPIO_REG_N - #define SWITCHES_GPIO_PIN_N PCA95XX_PIN_5 - #define SWITCHES_N_CFS_IDX 5 - #define FUNCTION_SWITCH_6 SN -#endif - -#if defined(PCBX9E) - #define SWITCHES_GPIO_REG_I_H GPIOF - #define SWITCHES_GPIO_PIN_I_H LL_GPIO_PIN_15 // PF.15 - #define SWITCHES_GPIO_REG_I_L GPIOE - #define SWITCHES_GPIO_PIN_I_L LL_GPIO_PIN_14 // PE.14 - #define SWITCHES_GPIO_REG_J_H GPIOG - #define SWITCHES_GPIO_PIN_J_H LL_GPIO_PIN_7 // PG.07 - #define SWITCHES_GPIO_REG_J_L GPIOG - #define SWITCHES_GPIO_PIN_J_L LL_GPIO_PIN_8 // PG.08 - #define SWITCHES_GPIO_REG_K_H GPIOG - #define SWITCHES_GPIO_PIN_K_H LL_GPIO_PIN_13 // PG.13 - #define SWITCHES_GPIO_REG_K_L GPIOG - #define SWITCHES_GPIO_PIN_K_L LL_GPIO_PIN_12 // PG.12 - #define SWITCHES_GPIO_REG_L_H GPIOE - #define SWITCHES_GPIO_PIN_L_H LL_GPIO_PIN_9 // PE.09 - #define SWITCHES_GPIO_REG_L_L GPIOE - #define SWITCHES_GPIO_PIN_L_L LL_GPIO_PIN_8 // PE.08 - #define SWITCHES_GPIO_REG_M_H GPIOE - #define SWITCHES_GPIO_PIN_M_H LL_GPIO_PIN_15 // PE.15 - #define SWITCHES_GPIO_REG_M_L GPIOA - #define SWITCHES_GPIO_PIN_M_L LL_GPIO_PIN_5 // PA.05 - #define SWITCHES_GPIO_REG_N_H GPIOB - #define SWITCHES_GPIO_PIN_N_H LL_GPIO_PIN_3 // PB.03 - #define SWITCHES_GPIO_REG_N_L GPIOB - #define SWITCHES_GPIO_PIN_N_L LL_GPIO_PIN_4 // PB.04 - #define SWITCHES_GPIO_REG_O_H GPIOF - #define SWITCHES_GPIO_PIN_O_H LL_GPIO_PIN_7 // PF.07 - #define SWITCHES_GPIO_REG_O_L GPIOE - #define SWITCHES_GPIO_PIN_O_L LL_GPIO_PIN_10 // PE.10 - #define SWITCHES_GPIO_REG_P_H GPIOF - #define SWITCHES_GPIO_PIN_P_H LL_GPIO_PIN_11 // PF.11 - #define SWITCHES_GPIO_REG_P_L GPIOF - #define SWITCHES_GPIO_PIN_P_L LL_GPIO_PIN_12 // PF.12 - #define SWITCHES_GPIO_REG_Q_H GPIOF - #define SWITCHES_GPIO_PIN_Q_H LL_GPIO_PIN_5 // PF.05 - #define SWITCHES_GPIO_REG_Q_L GPIOF - #define SWITCHES_GPIO_PIN_Q_L LL_GPIO_PIN_6 // PF.06 - #define SWITCHES_GPIO_REG_R_H GPIOB - #define SWITCHES_GPIO_PIN_R_H LL_GPIO_PIN_5 // PB.05 - #define SWITCHES_GPIO_REG_R_L GPIOE - #define SWITCHES_GPIO_PIN_R_L LL_GPIO_PIN_0 // PE.00 -#endif - // 6POS SW #if defined(RADIO_V14) || defined(RADIO_V12) #define SIXPOS_SWITCH_INDEX 6 @@ -1386,107 +162,15 @@ #define SIXPOS_LED_BLUE 0 #endif -// ADC -#if !defined(RADIO_FAMILY_T20) && !defined(RADIO_BUMBLEBEE) - #define ADC_MAIN ADC1 - #define ADC_DMA DMA2 - #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_0 - #define ADC_DMA_STREAM LL_DMA_STREAM_4 - #define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn - #define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler -#endif - -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_28CYCLES -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT - #if defined(PCBX9E) - #define HARDWARE_POT1 - #define HARDWARE_POT2 - #define HARDWARE_POT3 - #define HARDWARE_POT4 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_8 // PF.08 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_0 // PB.00 - #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_5 // PC.05 - #define ADC_GPIO_PIN_POT4 LL_GPIO_PIN_4 // PC.04 - #define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_10 // PF.10 - #define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_9 // PF.09 - #define ADC_GPIO_PIN_SLIDER3 LL_GPIO_PIN_6 // PA.06 - #define ADC_GPIO_PIN_SLIDER4 LL_GPIO_PIN_1 // PB.01 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_SLIDER3) - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SLIDER4) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_POT4 | ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2 | ADC_GPIO_PIN_BATT) - #define ADC_GPIOF_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2) - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_6 // ADC3_IN6 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_8 // ADC1_IN8 - #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_15 // ADC1_IN15 - #define ADC_CHANNEL_POT4 LL_ADC_CHANNEL_14 // ADC1_IN14 - #define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_8 // ADC3_IN8 - #define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_7 // ADC3_IN7 - #define ADC_CHANNEL_SLIDER3 LL_ADC_CHANNEL_6 // ADC1_IN6 - #define ADC_CHANNEL_SLIDER4 LL_ADC_CHANNEL_9 // ADC1_IN9 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 // ADC1_IN10 - #define ADC_EXT ADC3 - #define ADC_EXT_CHANNELS { ADC_CHANNEL_POT1, ADC_CHANNEL_SLIDER1, ADC_CHANNEL_SLIDER2 } - #define ADC_EXT_DMA DMA2 - #define ADC_EXT_DMA_CHANNEL LL_DMA_CHANNEL_2 - #define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 - #define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn - #define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler - #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES #define ADC_VREF_PREC2 300 #elif defined(PCBX9DP) - #define HARDWARE_POT1 - #define HARDWARE_POT2 - #define HARDWARE_POT3 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_6 // PA.06 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_0 // PB.00 #if PCBREV < 2019 - #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_1 // PB.01 - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3) - #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_9 #define ADC_VREF_PREC2 330 #else - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT2) - #define ADC_CHANNEL_POT3 0 #define ADC_VREF_PREC2 300 #endif - #define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_4 // PC.04 - #define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_5 // PC.05 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_POT1) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2 | ADC_GPIO_PIN_BATT) - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_6 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_8 - #define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_14 - #define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_15 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #elif defined(PCBXLITE) - #define HARDWARE_POT1 - #define HARDWARE_POT2 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_1 // PC.01 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_2 // PC.02 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 #define PWM_STICKS #define PWM_TIMER TIM5 #define PWM_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) @@ -1494,52 +178,12 @@ #define PWM_GPIO_AF GPIO_AF2 #define PWM_IRQHandler TIM5_IRQHandler #define PWM_IRQn TIM5_IRQn - #define PWM_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH) - #define STICK_PWM_CHANNEL_LH 0 - #define STICK_PWM_CHANNEL_LV 1 - #define STICK_PWM_CHANNEL_RV 3 - #define STICK_PWM_CHANNEL_RH 2 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_LH) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_BATT) - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_11 // ADC1_IN11 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_12 // ADC1_IN12 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 // ADC1_IN10 + #define PWM_GPIOA_PINS (LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | LL_GPIO_PIN_3) #define ADC_VREF_PREC2 330 #elif defined(RADIO_T8) - // No pots - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - #define ADC_GPIOB_PINS 0 - #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 300 #elif defined(RADIO_COMMANDO8) - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_5 // PC.05 - #define ADC_GPIOB_PINS 0 - #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_15 #define ADC_VREF_PREC2 320 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) #define PWM_STICKS #define PWM_TIMER TIM5 #define PWM_TIMER_FREQ (PERI1_FREQUENCY * TIMER_MULT_APB1) @@ -1547,380 +191,41 @@ #define PWM_GPIO_AF GPIO_AF2 #define PWM_IRQn TIM5_IRQn #define PWM_IRQHandler TIM5_IRQHandler - #define PWM_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - #define STICK_PWM_CHANNEL_LH 1 - #define STICK_PWM_CHANNEL_LV 0 - #define STICK_PWM_CHANNEL_RV 2 - #define STICK_PWM_CHANNEL_RH 3 + #define PWM_GPIOA_PINS (LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | LL_GPIO_PIN_3) #elif defined(RADIO_TLITE) || defined(RADIO_LR3PRO) - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - #define ADC_GPIOB_PINS 0 - #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 330 #elif defined(RADIO_T14) - #define HARDWARE_POT1 - #define HARDWARE_POT2 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PB.00 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PB.01 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2) - #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_8 // ADC12_IN8 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_9 // ADC12_IN9 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 300 #elif defined(RADIO_TPROS) - #define HARDWARE_POT1 - #define HARDWARE_POT2 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_2 // PA.02 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PB.00 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PB.01 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2) - #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_8 // ADC12_IN8 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_9 // ADC12_IN9 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 300 #elif defined(RADIO_T12MAX) - #define HARDWARE_POT1 - #define HARDWARE_POT2 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_2 // PA.02 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PB.00 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PB.01 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2) - #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_8 // ADC12_IN8 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_9 // ADC12_IN9 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 300 #elif defined(RADIO_TPRO) || defined(RADIO_TPROV2) - #define HARDWARE_POT1 - #define HARDWARE_POT2 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PB.00 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_6 // PA.06 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT2) - #define ADC_GPIOB_PINS ADC_GPIO_PIN_POT1 - #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_6 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_8 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 300 #elif defined(RADIO_BUMBLEBEE) - #define ADC_MAIN ADC3 - #define ADC_DMA DMA2 - #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_2 - #define ADC_DMA_STREAM LL_DMA_STREAM_0 - #define ADC_DMA_STREAM_IRQ DMA2_Stream0_IRQn - #define ADC_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC123_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC123_IN1 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_2 // ADC123_IN2 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_3 // ADC123_IN3 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_15 // ADC3_IN15 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_9 // ADC3_IN9 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_14 // ADC3_IN14 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_5 // PF.05 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_3 // PF.03 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_4 // PF.04 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - #define ADC_GPIOF_PINS (ADC_GPIO_PIN_POT1, ADC_GPIO_PIN_POT2, ADC_GPIO_PIN_BATT) - #define ADC_EXT ADC1 - #define ADC_EXT_CHANNELS { ADC_CHANNEL_RTC_BATT } - #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES #define ADC_VREF_PREC2 300 #elif defined(RADIO_FAMILY_T20) - #define ADC_MAIN ADC3 - #define ADC_DMA DMA2 - #define ADC_DMA_CHANNEL LL_DMA_CHANNEL_2 - #define ADC_DMA_STREAM LL_DMA_STREAM_0 - #define ADC_DMA_STREAM_IRQ DMA2_Stream0_IRQn - #define ADC_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_1 // ADC123_IN1 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_0 // ADC123_IN0 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC123_IN2 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC123_IN3 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_1 // PC.01 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_3 // PC.03 - #define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_2 // PC.02 - #define ADC_GPIO_PIN_SLIDER3 LL_GPIO_PIN_5 // PF.05 - #define ADC_GPIO_PIN_SLIDER4 LL_GPIO_PIN_3 // PF.03 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_4 // PF.04 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_11 // ADC123_IN11 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_10 // ADC123_IN10 - #define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_13 // ADC123_IN13 - #define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_12 // ADC123_IN12 - #define ADC_CHANNEL_SLIDER3 LL_ADC_CHANNEL_15 // ADC3_IN15 - #define ADC_CHANNEL_SLIDER4 LL_ADC_CHANNEL_9 // ADC3_IN9 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_14 // ADC3_IN14 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2) - #define ADC_GPIOF_PINS (ADC_GPIO_PIN_SLIDER3 | ADC_GPIO_PIN_SLIDER4 | ADC_GPIO_PIN_BATT) - #define ADC_EXT ADC1 - #define ADC_EXT_CHANNELS { ADC_CHANNEL_RTC_BATT } - #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES #define ADC_VREF_PREC2 300 #elif defined(RADIO_MT12) - #define ADC_GPIO_PIN_STICK_TH LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_ST LL_GPIO_PIN_1 // PA.01 - #define ADC_CHANNEL_STICK_TH LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_ST LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_5 // PA.05 - #define ADC_GPIO_PIN_POT4 LL_GPIO_PIN_6 // PA.06 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_2 // ADC123_IN2 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_3 // ADC123_IN3 - #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_5 // ADC12_IN5 - #define ADC_CHANNEL_POT4 LL_ADC_CHANNEL_6 // ADC12_IN6 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 // ADC123_IN10 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_TH | ADC_GPIO_PIN_STICK_ST | ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_POT4) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_BATT) #define ADC_VREF_PREC2 330 #elif defined(RADIO_GX12) - // Serial gimbal only - #define ADC_GPIO_PIN_STICK_LH - #define ADC_GPIO_PIN_STICK_LV - #define ADC_GPIO_PIN_STICK_RV - #define ADC_GPIO_PIN_STICK_RH - #define ADC_CHANNEL_STICK_LH - #define ADC_CHANNEL_STICK_LV - #define ADC_CHANNEL_STICK_RV - #define ADC_CHANNEL_STICK_RH - // Analogs - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_3 // PA.03 - #define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_0 // PB.00 - #define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_5 // PA.05 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_2 // ADC123_IN2 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_3 // ADC123_IN3 - #define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_8 // ADC12_IN8 - #define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_5 // ADC12_IN6 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 // ADC123_IN10 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SLIDER2) - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_SLIDER1) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_BATT) #define ADC_VREF_PREC2 330 #elif defined(RADIO_V12) || defined(RADIO_V14) - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC123_IN0 -> ADC1_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC123_IN1 -> ADC1_IN1 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC123_IN2 -> ADC1_IN2 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC123_IN3 -> ADC1_IN3 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PB.00 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_6 // PA.06 - #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_2 // PC.02 - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_8 // ADC12_IN8 -> ADC1_IN8 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_6 // ADC12_IN6 -> ADC1_IN6 - #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_12 // ADC123_IN12 -> ADC1_IN12 - #define ADC_GPIO_PIN_SWE LL_GPIO_PIN_7 // PA.07 - #define ADC_GPIO_PIN_SWB LL_GPIO_PIN_5 // PA.05 - #define ADC_GPIO_PIN_SWC LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIO_PIN_SWF LL_GPIO_PIN_5 // PC.05 - #define ADC_CHANNEL_SWE LL_ADC_CHANNEL_7 // ADC12_IN7 -> ADC1_IN7 - #define ADC_CHANNEL_SWB LL_ADC_CHANNEL_5 // ADC12_IN5 -> ADC1_IN5 - #define ADC_CHANNEL_SWC LL_ADC_CHANNEL_10 // ADC123_IN10 -> ADC1_IN10 - #define ADC_CHANNEL_SWF LL_ADC_CHANNEL_15 // ADC12_IN15 -> ADC1_IN15 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_SWE | ADC_GPIO_PIN_SWB) - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT1) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT3 | ADC_GPIO_PIN_SWC | ADC_GPIO_PIN_SWF) - #define ADC_EXT ADC3 - #define ADC_EXT_DMA DMA2 - #define ADC_EXT_DMA_CHANNEL LL_DMA_CHANNEL_2 - #define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 - #define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn - #define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler - #define ADC_EXT_CHANNELS { ADC_CHANNEL_POT3 } - #define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_56CYCLES #define ADC_VREF_PREC2 330 #elif defined(PCBX7) - #define HARDWARE_POT1 - #define HARDWARE_POT2 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_0 // PB.00 -#if !defined(RADIO_POCKET) - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_6 // PA.06 -#endif - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 -#if defined(RADIO_BOXER) || defined(RADIO_V14) || defined(RADIO_V12) - #define HARDWARE_POT3 // 6 POS - #define ADC_GPIO_PIN_POT3 LL_GPIO_PIN_5 // PA.05 - #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_5 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3) - #define ADC_GPIOA_PINS_FS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT2 | ADC_GPIO_PIN_POT3) -#else - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT2) -#endif - #define ADC_GPIOB_PINS ADC_GPIO_PIN_POT1 - #define ADC_GPIOC_PINS ADC_GPIO_PIN_BATT - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_8 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_6 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 330 #elif defined(PCBX9LITE) - #define HARDWARE_POT1 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_1 // PC.01 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_POT1 | ADC_GPIO_PIN_BATT) - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_11 // ADC1_IN11 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 // ADC1_IN10 #define ADC_VREF_PREC2 300 #else - #define HARDWARE_POT1 - #define HARDWARE_POT2 - #define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_0 // PA.00 - #define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_1 // PA.01 - #define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_2 // PA.02 - #define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PA.03 - #define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_0 // ADC1_IN0 - #define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_1 // ADC1_IN1 - #define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_2 // ADC1_IN2 - #define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_3 // ADC1_IN3 - #define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_6 // PA.06 - #define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_0 // PB.00 - #define ADC_GPIO_PIN_SLIDER1 LL_GPIO_PIN_4 // PC.04 - #define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_5 // PC.05 - #define ADC_GPIO_PIN_BATT LL_GPIO_PIN_0 // PC.00 - #define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_POT1) - #define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT2) - #define ADC_GPIOC_PINS (ADC_GPIO_PIN_SLIDER1 | ADC_GPIO_PIN_SLIDER2 | ADC_GPIO_PIN_BATT) - #define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_6 - #define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_8 - #define ADC_CHANNEL_POT3 LL_ADC_CHANNEL_9 - #define ADC_CHANNEL_SLIDER1 LL_ADC_CHANNEL_14 - #define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_15 - #define ADC_CHANNEL_BATT LL_ADC_CHANNEL_10 #define ADC_VREF_PREC2 330 #endif -#if defined(PCBX9E) - #if defined(HORUS_STICKS) - #define ADC_DIRECTION { 1,-1,1,-1,-1,-1,-1,1, -1,1,1,-1, -1,-1 } - #else - #define ADC_DIRECTION { 1,1,-1,-1,-1,-1,-1,1, -1,1,1,-1, -1,-1 } - #endif // HORUS_STICKS -#elif defined(PCBX9DP) - #define ADC_DIRECTION {1,-1,1,-1, 1,1,-1, 1,1, 1, 1} -#elif defined(PCBX9D) - #define ADC_DIRECTION {1,-1,1,-1, 1,1,0, 1,1, 1, 1} -#elif defined(RADIO_TX12) - #define ADC_DIRECTION {-1,1,-1,1, -1,-1, 1, 1} -#elif defined(RADIO_TX12MK2) - #define ADC_DIRECTION {-1,1,-1,1, 1,-1} -#elif defined(RADIO_BOXER) - #define ADC_DIRECTION {1,-1,1,-1, -1,-1, 1} -#elif defined(RADIO_ZORRO) - #define ADC_DIRECTION {-1, 1, 1, -1, -1, 1, 1, 1} -#elif defined(RADIO_POCKET) - #define ADC_DIRECTION {-1, 1, 1, -1, -1} -#elif defined(RADIO_TPRO) || defined(RADIO_TPROV2) || defined(RADIO_TPROS) - #define ADC_DIRECTION {1,-1,1,-1, 1,1, 1, 1} -#elif defined(RADIO_T14) - #define ADC_DIRECTION {1, -1, 1, -1, 1, 1, 1} -#elif defined(RADIO_T12MAX) - #define ADC_DIRECTION {-1, 1, -1, 1, 1, 1, 1} -#elif defined(RADIO_BUMBLEBEE) - #define ADC_DIRECTION {1,-1,1,-1, 1,1, 1} -#elif defined(RADIO_FAMILY_T20) - #define ADC_DIRECTION {1,-1,1,-1, -1,1,-1,-1,-1,-1} -#elif defined(RADIO_MT12) - #define ADC_DIRECTION {1,-1, -1,-1, 0, 0, 0, 0} -#elif defined(RADIO_GX12) - #define ADC_DIRECTION {1,1,1,1, -1,-1, 1,-1} -#elif defined(RADIO_V14) - #define ADC_DIRECTION {1,-1,1,-1, -1,-1,1, 0, 1,1,1,1 } -#elif defined(RADIO_V12) - #define ADC_DIRECTION {1,-1,1,-1, -1,-1,1, 0, 1,1,1,1 } -#elif defined(PCBX7) - #define ADC_DIRECTION {-1,1,-1,1, 1,1, 1, 1} -#elif defined(PCBX9LITE) - #define ADC_DIRECTION {-1,1,-1,1, 1,1, 1} -#elif defined(PCBXLITE) - #define ADC_DIRECTION {1,-1,-1,1, -1,1, 1, 1} -#endif - #if defined(RADIO_BOXER) #define DEFAULT_6POS_CALIB {5, 13, 22, 31, 40} #define DEFAULT_6POS_IDX 6 #endif // PWR and LED driver - #if defined(PCBX9LITE) #define PWR_SWITCH_GPIO GPIO_PIN(GPIOA, 7) // PA.07 #define PWR_ON_GPIO GPIO_PIN(GPIOA, 6) // PA.06 diff --git a/radio/src/targets/tx15/CMakeLists.txt b/radio/src/targets/tx15/CMakeLists.txt index 8a31b9d8559..e98c8f7221e 100644 --- a/radio/src/targets/tx15/CMakeLists.txt +++ b/radio/src/targets/tx15/CMakeLists.txt @@ -49,7 +49,6 @@ add_definitions(-DUSE_CUSTOM_EXTI_IRQ) add_definitions(-DUSB_CHARGER) set(FLAVOUR tx15) -add_definitions(-DRADIO_TX15) add_definitions(-DMANUFACTURER_RADIOMASTER) # defines existing internal modules diff --git a/radio/src/targets/tx15/hal.h b/radio/src/targets/tx15/hal.h index 83b70b7ebe3..a6da11febef 100644 --- a/radio/src/targets/tx15/hal.h +++ b/radio/src/targets/tx15/hal.h @@ -70,109 +70,6 @@ TIM17: ROTARY_ENCODER_TIMER #define TIMER_MULT_APB1 2 #define TIMER_MULT_APB2 2 -// Keys -#define KEYS_GPIO_REG_PAGEDN GPIOA -#define KEYS_GPIO_PIN_PAGEDN LL_GPIO_PIN_8 // PA.08 -#define KEYS_GPIO_REG_PAGEUP GPIOG -#define KEYS_GPIO_PIN_PAGEUP LL_GPIO_PIN_7 // PG.07 -#define KEYS_GPIO_REG_SYS GPIOB -#define KEYS_GPIO_PIN_SYS LL_GPIO_PIN_2 // PB.02 -#define KEYS_GPIO_REG_ENTER GPIOG -#define KEYS_GPIO_PIN_ENTER LL_GPIO_PIN_12 // PG.12 -#define KEYS_GPIO_REG_MDL GPIOE -#define KEYS_GPIO_PIN_MDL LL_GPIO_PIN_3 // PE.03 -#define KEYS_GPIO_REG_EXIT GPIOG -#define KEYS_GPIO_PIN_EXIT LL_GPIO_PIN_3 // PG.03 -#define KEYS_GPIO_REG_TELE GPIOG -#define KEYS_GPIO_PIN_TELE LL_GPIO_PIN_2 // PG.02 - -// Trims -#define TRIMS_GPIO_REG_LHL -#define TRIMS_GPIO_PIN_LHL - -#define TRIMS_GPIO_REG_LHR -#define TRIMS_GPIO_PIN_LHR - -#define TRIMS_GPIO_REG_LVD -#define TRIMS_GPIO_PIN_LVD - -#define TRIMS_GPIO_REG_LVU -#define TRIMS_GPIO_PIN_LVU - -#define TRIMS_GPIO_REG_RHL -#define TRIMS_GPIO_PIN_RHL - -#define TRIMS_GPIO_REG_RHR -#define TRIMS_GPIO_PIN_RHR - -#define TRIMS_GPIO_REG_RVD -#define TRIMS_GPIO_PIN_RVD - -#define TRIMS_GPIO_REG_RVU -#define TRIMS_GPIO_PIN_RVU - - -// function switches -//SW1 -#define SWITCHES_GPIO_REG_G -#define SWITCHES_GPIO_PIN_G PCA95XX_P0 -#define SWITCHES_G_CFS_IDX 0 -#define FUNCTION_SWITCH_1 SG -//SW2 -#define SWITCHES_GPIO_REG_H -#define SWITCHES_GPIO_PIN_H PCA95XX_P1 -#define SWITCHES_H_CFS_IDX 1 -#define FUNCTION_SWITCH_2 SH -//SW3 -#define SWITCHES_GPIO_REG_I -#define SWITCHES_GPIO_PIN_I PCA95XX_P2 -#define SWITCHES_I_CFS_IDX 2 -#define FUNCTION_SWITCH_3 SI -//SW4 -#define SWITCHES_GPIO_REG_J -#define SWITCHES_GPIO_PIN_J PCA95XX_P3 -#define SWITCHES_J_CFS_IDX 3 -#define FUNCTION_SWITCH_4 SJ -//SW5 -#define SWITCHES_GPIO_REG_K -#define SWITCHES_GPIO_PIN_K PCA95XX_P4 -#define SWITCHES_K_CFS_IDX 4 -#define FUNCTION_SWITCH_5 SK -//SW6 -#define SWITCHES_GPIO_REG_L -#define SWITCHES_GPIO_PIN_L PCA95XX_P5 -#define SWITCHES_L_CFS_IDX 5 -#define FUNCTION_SWITCH_6 SL - -// Extender Switches -#define SWITCHES_A_3POS -#define SWITCHES_GPIO_REG_A_H -#define SWITCHES_GPIO_PIN_A_H PCA95XX_P15 -#define SWITCHES_GPIO_REG_A_L -#define SWITCHES_GPIO_PIN_A_L PCA95XX_P14 -#define SWITCHES_B_3POS -#define SWITCHES_GPIO_REG_B_H -#define SWITCHES_GPIO_PIN_B_H PCA95XX_P13 -#define SWITCHES_GPIO_REG_B_L -#define SWITCHES_GPIO_PIN_B_L PCA95XX_P12 -#define SWITCHES_C_3POS -#define SWITCHES_GPIO_REG_C_H -#define SWITCHES_GPIO_PIN_C_H PCA95XX_P11 -#define SWITCHES_GPIO_REG_C_L -#define SWITCHES_GPIO_PIN_C_L PCA95XX_P10 -#define SWITCHES_D_3POS -#define SWITCHES_GPIO_REG_D_H -#define SWITCHES_GPIO_PIN_D_H PCA95XX_P7 -#define SWITCHES_GPIO_REG_D_L -#define SWITCHES_GPIO_PIN_D_L PCA95XX_P6 -#define SWITCHES_E_2POS -#define SWITCHES_GPIO_REG_E -#define SWITCHES_GPIO_PIN_E PCA95XX_P16 -#define SWITCHES_F_2POS -#define SWITCHES_GPIO_REG_F -#define SWITCHES_GPIO_PIN_F PCA95XX_P4 - - // Expanders #define IO_INT_GPIO GPIO_PIN(GPIOD, 3) #define IO_RESET_GPIO GPIO_PIN(GPIOG, 10) @@ -182,65 +79,8 @@ TIM17: ROTARY_ENCODER_TIMER #endif // ADC -#define ADC_GPIO_PIN_STICK_LH LL_GPIO_PIN_6 // PA.06 -#define ADC_GPIO_PIN_STICK_LV LL_GPIO_PIN_3 // PC.03 -#define ADC_GPIO_PIN_STICK_RV LL_GPIO_PIN_4 // PC.04 -#define ADC_GPIO_PIN_STICK_RH LL_GPIO_PIN_5 // PC.05 - -#define ADC_GPIO_PIN_POT1 LL_GPIO_PIN_1 // PC.01 POT1 -#define ADC_GPIO_PIN_POT2 LL_GPIO_PIN_1 // PB.01 POT2 -#define ADC_GPIO_PIN_BATT LL_GPIO_PIN_3 // PH.03 - -#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH) -#define ADC_GPIOB_PINS (ADC_GPIO_PIN_POT2) -#define ADC_GPIOC_PINS (ADC_GPIO_PIN_STICK_RV | ADC_GPIO_PIN_STICK_LV | ADC_GPIO_PIN_STICK_RH | ADC_GPIO_PIN_POT1) -#define ADC_GPIOH_PINS (ADC_GPIO_PIN_BATT) - - -#define ADC_CHANNEL_STICK_LH LL_ADC_CHANNEL_3 // ADC12_INP3 -#define ADC_CHANNEL_STICK_LV LL_ADC_CHANNEL_13 // ADC12_INP13 -#define ADC_CHANNEL_STICK_RV LL_ADC_CHANNEL_4 // ADC12_INP4 -#define ADC_CHANNEL_STICK_RH LL_ADC_CHANNEL_8 // ADC12_INP8 - -// Each ADC cannot map more than 8 channels, otherwise it will cause problems -#define ADC_CHANNEL_POT1 LL_ADC_CHANNEL_11 // ADC12_INP11 -#define ADC_CHANNEL_POT2 LL_ADC_CHANNEL_5 // ADC12_INP5 -#define ADC_CHANNEL_BATT LL_ADC_CHANNEL_14 // ADC3_INP14 -#define ADC_CHANNEL_RTC_BAT LL_ADC_CHANNEL_VBAT // ADC3_INP17 - -#define ADC_MAIN ADC1 -#define ADC_DMA DMA2 -#define ADC_DMA_CHANNEL LL_DMAMUX1_REQ_ADC1 -#define ADC_DMA_STREAM LL_DMA_STREAM_4 -#define ADC_DMA_STREAM_IRQ DMA2_Stream4_IRQn -#define ADC_DMA_STREAM_IRQHandler DMA2_Stream4_IRQHandler -#define ADC_SAMPTIME LL_ADC_SAMPLINGTIME_8CYCLES_5 - -#define ADC_EXT ADC3 -#define ADC_EXT_CHANNELS { ADC_CHANNEL_BATT , ADC_CHANNEL_RTC_BAT } -#define ADC_EXT_DMA DMA2 -#define ADC_EXT_DMA_CHANNEL LL_DMAMUX1_REQ_ADC3 -#define ADC_EXT_DMA_STREAM LL_DMA_STREAM_0 -#define ADC_EXT_DMA_STREAM_IRQ DMA2_Stream0_IRQn -#define ADC_EXT_DMA_STREAM_IRQHandler DMA2_Stream0_IRQHandler -#define ADC_EXT_SAMPTIME LL_ADC_SAMPLINGTIME_64CYCLES_5 // No hardware oversampling on ADC3 - #define ADC_VREF_PREC2 330 -#define ADC_DIRECTION { \ - 0,-1,0,-1, /* gimbals */ \ - -1,-1, /* pots */ \ - 0,0, /* sliders */ \ - 0, /* vbat */ \ - 0, /* rtc_bat */ \ - 0, /* SWA */ \ - 0, /* SWB */ \ - 0, /* SWC */ \ - 0, /* SWD */ \ - 0, /* SWE */ \ - 0 /* SWF */ \ - } - // Serial gimbal sync port #define HALL_SYNC GPIO_PIN(GPIOH, 11) @@ -261,19 +101,19 @@ TIM17: ROTARY_ENCODER_TIMER #define HAS_SPORT_UPDATE_CONNECTOR() (false) // Telemetry - #define TELEMETRY_SET_INPUT 0 - #define TELEMETRY_TX_GPIO GPIO_PIN(GPIOA, 9) - #define TELEMETRY_RX_GPIO GPIO_UNDEF - #define TELEMETRY_USART USART1 - #define TELEMETRY_USART_IRQn USART1_IRQn - #define TELEMETRY_DMA DMA1 - #define TELEMETRY_DMA_Stream_TX LL_DMA_STREAM_7 - #define TELEMETRY_DMA_Channel_TX LL_DMAMUX1_REQ_USART1_TX - #define TELEMETRY_DMA_TX_Stream_IRQ DMA1_Stream7_IRQn - #define TELEMETRY_DMA_TX_IRQHandler DMA1_Stream7_IRQHandler - #define TELEMETRY_DMA_Stream_RX LL_DMA_STREAM_3 - #define TELEMETRY_DMA_Channel_RX LL_DMAMUX1_REQ_USART1_RX - #define TELEMETRY_USART_IRQHandler USART1_IRQHandler +#define TELEMETRY_SET_INPUT 0 +#define TELEMETRY_TX_GPIO GPIO_PIN(GPIOA, 9) +#define TELEMETRY_RX_GPIO GPIO_UNDEF +#define TELEMETRY_USART USART1 +#define TELEMETRY_USART_IRQn USART1_IRQn +#define TELEMETRY_DMA DMA1 +#define TELEMETRY_DMA_Stream_TX LL_DMA_STREAM_7 +#define TELEMETRY_DMA_Channel_TX LL_DMAMUX1_REQ_USART1_TX +#define TELEMETRY_DMA_TX_Stream_IRQ DMA1_Stream7_IRQn +#define TELEMETRY_DMA_TX_IRQHandler DMA1_Stream7_IRQHandler +#define TELEMETRY_DMA_Stream_RX LL_DMA_STREAM_3 +#define TELEMETRY_DMA_Channel_RX LL_DMAMUX1_REQ_USART1_RX +#define TELEMETRY_USART_IRQHandler USART1_IRQHandler // Software IRQ (Prio 5 -> FreeRTOS compatible) #define TELEMETRY_USE_CUSTOM_EXTI diff --git a/radio/util/hw_defs/README.md b/radio/util/hw_defs/README.md index 3b34f0a38e6..016030c5049 100644 --- a/radio/util/hw_defs/README.md +++ b/radio/util/hw_defs/README.md @@ -1,43 +1,18 @@ # Hardware Definitions -The Python scripts in this directory are responsible for 2 different tasks: -- generating a JSON definition file for each target, -- and generating different include files used to describe the hardware to the software. +The Python scripts in this directory are responsible for generating different +include files used to describe the hardware to the software. -While the exact format is still moving, the goal of this file is to replace the various -hardware definitions used in EdgeTx at various places and offer a simpler way to define -new targets. +## Data model -At the end of the process, the JSON definition will be the *master copy* used by: -- radio firmware, -- radio simlator, -- and Companion. +The data model supported is described `models.py`. A script +(`json_validator.py`) is available that validates the JSON files based on this +model. -## JSON Definition +## Code generator -Currently, the JSON definition file is still generated during the build process using -the target's `hal.h` and various Python scripts: +The various include files are generated based on Jinja2 templates and `generator.py` +provided with a JSON target definition. -- `generate_hw_def.py`: command line to generate JSON file as well as process - the JSON file into include files. - -- `hal_json.py`: reads the `#define ...` definitions coming from `hal.h` into a dictionary (AVPs). - -- `hal_adc.py`: parse ADC definitions and related analog inputs. - -- `legacy_names.py`: hard-coded definitions providing additional information not present in `hal.h` - related to analog inputs (by target; mostly names and labels). - -- `pot_config.py`: provides default configuration of pots and sliders for each target. - -- `hal_keys.py`: parse keys & trims. - -- `hal_switches.py`: parse switches. - -- `switch_config.py`: default switch configuration (all targets) as well as display positions - (only `stdlcd` targets). - -Once the format is stable enough and does not require editing each target separately -to add or rename each attribute, the JSON definition for each target will be generated -and added to version control. Then the Python scripts will obsoleted and removed. The -target's `hal.h` should be cleaned-up as well with the definitions present in JSON removed. +`legacy_names.py` contains some hard-coded definitions providing additional +information related to analog inputs (by target; mostly names and labels). diff --git a/radio/util/hw_defs/generator.py b/radio/util/hw_defs/generator.py index 616ed5302c9..a9ba622bfae 100644 --- a/radio/util/hw_defs/generator.py +++ b/radio/util/hw_defs/generator.py @@ -1,101 +1,77 @@ - import json import jinja2 import legacy_names import json_index +from models import KeyEnum + MAIN_CONTROL_LUT = { # 2 Gimbal radios - "LH": { "str": "Rud", "local": "STR_STICK_NAMES0" }, - "LV": { "str": "Ele", "local": "STR_STICK_NAMES1" }, - "RV": { "str": "Thr", "local": "STR_STICK_NAMES2" }, - "RH": { "str": "Ail", "local": "STR_STICK_NAMES3" }, + "LH": {"str": "Rud", "local": "STR_STICK_NAMES0"}, + "LV": {"str": "Ele", "local": "STR_STICK_NAMES1"}, + "RV": {"str": "Thr", "local": "STR_STICK_NAMES2"}, + "RH": {"str": "Ail", "local": "STR_STICK_NAMES3"}, # Surface radios - "ST": { "str": "ST", "local": "STR_SURFACE_NAMES0" }, - "TH": { "str": "TH", "local": "STR_SURFACE_NAMES1" }, + "ST": {"str": "ST", "local": "STR_SURFACE_NAMES0"}, + "TH": {"str": "TH", "local": "STR_SURFACE_NAMES1"}, } -# MUST be the same order as 'EnumKeys' -KEYS_LUT = [ - "KEY_MENU", - "KEY_EXIT", - "KEY_ENTER", - - "KEY_PAGEUP", - "KEY_PAGEDN", - - "KEY_UP", - "KEY_DOWN", - - "KEY_LEFT", - "KEY_RIGHT", - - "KEY_PLUS", - "KEY_MINUS", - - "KEY_MODEL", - "KEY_TELE", - "KEY_SYS", - - "KEY_SHIFT", - "KEY_BIND", -] - # def eprint(*args, **kwargs): # from sys import stderr # print(*args, file=stderr, **kwargs) -def is_ext_input(input): - if input.get('type') != 'FLEX': +def is_ext_input(input): + if input.get("type") != "FLEX": return False - name = input.get('name') - if name and name.startswith('EXT'): + name = input.get("name") + if name and name.startswith("EXT"): return True return False def generate_from_template(json_filename, template_filename, target): - with open(json_filename) as json_file: with open(template_filename) as template_file: - root_obj = json.load(json_file) - adc_inputs = root_obj.get('adc_inputs') + adc_inputs = root_obj.get("adc_inputs") adc_index = json_index.build_adc_index(adc_inputs) adc_gpios = json_index.build_adc_gpio_port_index(adc_inputs) - switches = root_obj.get('switches') + switches = root_obj.get("switches") switch_gpios = json_index.build_switch_gpio_port_index(switches) - keys = root_obj.get('keys') + keys = root_obj.get("keys") key_gpios = json_index.build_key_gpio_port_index(keys) - trims = root_obj.get('trims') + trims = root_obj.get("trims") trim_gpios = json_index.build_trim_gpio_port_index(trims) - + legacy_inputs = legacy_names.inputs_by_target(target) - - env = jinja2.Environment( - lstrip_blocks=True, - trim_blocks=True - ) - env.tests['ext_input'] = is_ext_input + env = jinja2.Environment(lstrip_blocks=True, trim_blocks=True) + + env.tests["ext_input"] = is_ext_input template_str = template_file.read() template = env.from_string(template_str) - print(template.render(root_obj, - adc_index=adc_index, - adc_gpios=adc_gpios, - switch_gpios=switch_gpios, - key_gpios=key_gpios, - trim_gpios=trim_gpios, - legacy_inputs=legacy_inputs, - main_labels=MAIN_CONTROL_LUT, - key_index=KEYS_LUT)) + key_index = list([str(i) for i in KeyEnum]) + + print( + template.render( + root_obj, + adc_index=adc_index, + adc_gpios=adc_gpios, + switch_gpios=switch_gpios, + key_gpios=key_gpios, + trim_gpios=trim_gpios, + legacy_inputs=legacy_inputs, + main_labels=MAIN_CONTROL_LUT, + key_index=key_index, + ) + ) diff --git a/radio/util/hw_defs/hal_adc.py b/radio/util/hw_defs/hal_adc.py deleted file mode 100644 index 52aaef29047..00000000000 --- a/radio/util/hw_defs/hal_adc.py +++ /dev/null @@ -1,286 +0,0 @@ -from pot_config import pot_cfg_by_target - -MAX_POTS = 4 -MAX_SLIDERS = 4 -MAX_EXTS = 4 -MAX_RAWS = 4 - - -def eprint(*args, **kwargs): - from sys import stderr - print(*args, file=stderr, **kwargs) - -class ADCInput: - - TYPE_STICK = 'STICK' - TYPE_FLEX = 'FLEX' - TYPE_SWITCH = 'SWITCH' - TYPE_RAW = 'RAW' - # TYPE_BATT = 'BATT' - - def __init__(self, name, adc_input_type, adc, gpio, pin, channel): - self.name = name - self.type = adc_input_type - self.adc = adc - self.gpio = gpio - self.pin = pin - self.channel = channel - -class SPI_ADCInput: - - def __init__(self, name, adc_input_type, channel): - self.name = name - self.type = adc_input_type - self.adc = 'SPI' - self.channel = channel - -class ADC: - def __init__(self, name, adc): - self.name = name - self.adc = adc - -class MouseName: - AXIS = ['x','y'] - def format(self, idx): - axis = self.AXIS[idx - 1] - return f'JS{axis}' - -def AZ_seq(): - return [chr(i) for i in range(ord('A'), ord('Z') + 1)] - -class ADCInputParser: - - ADC_MAIN = 'MAIN' - ADC_EXT = 'EXT' - - ADC_INPUTS = [ - { - 'range': ['LH','LV','RV','RH','ST','TH'], - 'type': ADCInput.TYPE_STICK, - 'suffix': 'STICK_{}', - 'name': '{}', - }, - { - 'range': range(1, MAX_POTS + 1), - 'type': ADCInput.TYPE_FLEX, - 'suffix': 'POT{}', - 'name': 'P{}', - }, - { - 'range': range(1, MAX_SLIDERS + 1), - 'type': ADCInput.TYPE_FLEX, - 'suffix': 'SLIDER{}', - 'name': 'SL{}', - }, - { - 'range': range(1, MAX_EXTS + 1), - 'type': ADCInput.TYPE_FLEX, - 'suffix': 'EXT{}', - 'name': 'EXT{}', - }, - { - 'range': range(1, MAX_RAWS + 1), - 'type': ADCInput.TYPE_RAW, - 'suffix': 'RAW{}', - 'name': 'RAW{}', - }, - { - 'range': range(1, 2 + 1), - 'type': ADCInput.TYPE_FLEX, - 'suffix': 'MOUSE{}', - 'name': MouseName(), - }, - { - 'type': 'VBAT', - 'name': 'VBAT', - 'suffix': 'BATT', - }, - { - 'type': 'RTC_BAT', - 'name': 'RTC_BAT', - 'suffix': 'RTC_BAT', - }, - { - 'range': AZ_seq(), - 'type': ADCInput.TYPE_SWITCH, - 'suffix': 'SW{}', - 'name': 'SW{}', - }, - ] - - - def __init__(self, target, hw_defs, labels): - self.target = target - self.hw_defs = hw_defs - self.labels = labels - self.regs = self._parse_regs() - self.dirs = self._parse_dirs() - self.adcs = [] - - def _parse_regs(self): - - regs = {} - for reg in AZ_seq(): - reg = f'GPIO{reg}' - pins_def = f'ADC_{reg}_PINS' - if pins_def in self.hw_defs: - regs[reg] = self.hw_defs[pins_def] - - return regs - - def _parse_dirs(self): - - ret = [] - dirs = self.hw_defs.get('ADC_DIRECTION') or '' - if dirs: - dirs = dirs.strip('{} ').split(',') - # eprint(dirs) - for i in dirs: - ret.append(int(i)) - - return ret - - def _find_adc(self, channel_def): - - if (self.ext_list is None) or (channel_def not in self.ext_list): - return self.ADC_MAIN - else: - return self.ADC_EXT - - def _find_gpio(self, pin): - gpio = None - for reg, pins_def in self.regs.items(): - if pins_def and (pin in pins_def): - gpio = reg - - return gpio - - - def _parse_adc(self, name, periph, prefix): - - adc_periph = self.hw_defs.get(periph) - if not adc_periph: - return None - - adc = ADC(name, adc_periph) - adc.dma = self.hw_defs.get(f'{prefix}_DMA') - if adc.dma: - adc.dma_channel = self.hw_defs[f'{prefix}_DMA_CHANNEL'] - adc.dma_stream = self.hw_defs[f'{prefix}_DMA_STREAM'] - adc.dma_stream_irq = self.hw_defs[f'{prefix}_DMA_STREAM_IRQ'] - adc.dma_stream_irq_handler = self.hw_defs[f'{prefix}_DMA_STREAM_IRQHandler'] - - adc.sample_time = self.hw_defs[f'{prefix}_SAMPTIME'] - return adc - - def _parse_adcs(self): - - adcs = [] - - adc_spi = self.hw_defs.get('ADC_SPI') - if adc_spi: - #eprint('## Found SPI ADC') - adc = ADC('SPI', adc_spi) - adc.gpio_pin_miso = self.hw_defs['ADC_SPI_GPIO_PIN_MISO'] - adc.gpio_pin_mosi = self.hw_defs['ADC_SPI_GPIO_PIN_MOSI'] - adc.gpio_pin_sck = self.hw_defs['ADC_SPI_GPIO_PIN_SCK'] - adc.gpio_pin_cs = self.hw_defs['ADC_SPI_GPIO_PIN_CS'] - adcs.append(adc) - - adc_main = self._parse_adc('MAIN', 'ADC_MAIN', 'ADC') - if adc_main: - adcs.append(adc_main) - - self.ext_list = None - adc_ext = self._parse_adc('EXT', 'ADC_EXT', 'ADC_EXT') - if adc_ext: - self.ext_list = self.hw_defs['ADC_EXT_CHANNELS'] - adcs.append(adc_ext) - - return adcs - - def _parse_input_type(self, input_type, name, suffix): - - gpio = None - pin = None - d = 1 # non-inverted - - # search for SPI input first - spi_def = f'ADC_SPI_{suffix}' - if spi_def in self.hw_defs: - #eprint('## Found SPI ADC Input:', spi_def) - channel = self.hw_defs[spi_def] - return SPI_ADCInput(name, input_type, channel) - - if name != 'RTC_BAT': - pin_def = f'ADC_GPIO_PIN_{suffix}' - pin = self.hw_defs[pin_def] - gpio = self._find_gpio(pin_def) - - # check if 'pin' is maybe an alias - alias = self.hw_defs.get(pin) - if alias is not None: - alias_gpio = self._find_gpio(pin) - gpio = alias_gpio if alias_gpio else gpio - pin = alias - - channel_def = f'ADC_CHANNEL_{suffix}' - channel = self.hw_defs[channel_def] - adc = self._find_adc(channel_def) - - return ADCInput(name, input_type, adc, gpio, pin, channel) - - def _add_input(self, adc_input): - if adc_input is not None: - idx = len(self.inputs) - if adc_input.type == 'STICK': - if 'PWM_STICKS' in self.hw_defs: - ch = self.hw_defs.get(f'STICK_PWM_CHANNEL_{adc_input.name}') - adc_input.pwm_channel = idx if ch is None else ch - if adc_input.type != 'VBAT' and adc_input.type != 'RTC_BAT': - d = self.dirs[idx] - if d < 0: - adc_input.inverted = True - if adc_input.type == 'FLEX': - input_labels = self.labels[adc_input.name] - adc_input.label = input_labels.get('label') - adc_input.short_label = input_labels.get('short_label') - cfg = pot_cfg_by_target(self.target,adc_input.name) - if cfg: - adc_input.default = cfg.get('default') - - self.inputs.append(adc_input) - - def parse_inputs(self): - - self.adcs = self._parse_adcs() - self.inputs = [] - - for adc_input in self.ADC_INPUTS: - input_type = adc_input['type'] - input_range = adc_input.get('range') - - if input_range is not None: - for i in input_range: - name = adc_input['name'].format(i) - suffix = adc_input['suffix'].format(i) - try: - self._add_input(self._parse_input_type(input_type, name, suffix)) - except KeyError: - pass - else: - # type, name, suffix - name = adc_input['name'] - suffix = adc_input['suffix'] - try: - self._add_input(self._parse_input_type(input_type, name, suffix)) - except KeyError: - pass - - return { 'adcs': self.adcs, 'inputs': self.inputs } - - def find_input(self, name): - for adc_input in self.inputs: - if adc_input.name == name: - return adc_input - return None diff --git a/radio/util/hw_defs/hal_json.py b/radio/util/hw_defs/hal_json.py index b803ba4f8f1..1a43695eadc 100644 --- a/radio/util/hw_defs/hal_json.py +++ b/radio/util/hw_defs/hal_json.py @@ -1,44 +1,38 @@ - import re import sys -import json - -from hal_switches import Switch, parse_switches -from hal_adc import ADCInput, SPI_ADCInput, ADC, ADCInputParser -from hal_keys import Key, Trim, parse_trims, parse_keys -import legacy_names # # Return a file handle or STDIN # def open_file(filename): - - if filename and not filename == '-': + if filename and not filename == "-": return open(filename) else: return sys.stdin + # # Read lines of defines into a dictionary # def parse_hw_defs(filename): - hw_defs = {} with open_file(filename) as file: for line in file.readlines(): - m = re.match(r'#define ([^\s]*)\s*(.*)', line.rstrip()) - name = m.group(1) - value = m.group(2) - if value.isnumeric(): - value = int(value) - elif not value: - value = None - hw_defs[name] = value + m = re.match(r"#define ([^\s]*)\s*(.*)", line.rstrip()) + if m: + name = m.group(1) + value = m.group(2) + if value.isnumeric(): + value = int(value) + elif not value: + value = None + hw_defs[name] = value return hw_defs + def prune_dict(d): # ret = {} # for k, v in d.items(): @@ -47,47 +41,32 @@ def prune_dict(d): # return ret return d -class DictEncoder(json.JSONEncoder): - def default(self, obj): - if isinstance(obj, Switch): - return prune_dict(obj.__dict__) - if isinstance(obj, ADCInput): - return prune_dict(obj.__dict__) - if isinstance(obj, SPI_ADCInput): - return prune_dict(obj.__dict__) - if isinstance(obj, ADC): - return prune_dict(obj.__dict__) - if isinstance(obj, Trim): - return prune_dict(obj.__dict__) - if isinstance(obj, Key): - return prune_dict(obj.__dict__) +# class DictEncoder(json.JSONEncoder): +# def default(self, o): +# if isinstance(o, Switch): +# return prune_dict(o.__dict__) +# if isinstance(o, ADCInput): +# return prune_dict(o.__dict__) +# if isinstance(o, SPI_ADCInput): +# return prune_dict(o.__dict__) +# if isinstance(o, ADC): +# return prune_dict(o.__dict__) +# if isinstance(o, Trim): +# return prune_dict(o.__dict__) +# if isinstance(o, Key): +# return prune_dict(o.__dict__) + +# # Let the base class default method raise the TypeError +# return json.JSONEncoder.default(self, o) - # Let the base class default method raise the TypeError - return json.JSONEncoder.default(self, obj) # # Parse HAL defines into JSON # def parse_defines(filename, target): - - hw_defs = parse_hw_defs(filename) - out_defs = {} - - # parse ADC first, we might have switches using ADC - legacy_inputs = legacy_names.inputs_by_target(target) - adc_parser = ADCInputParser(target,hw_defs,legacy_inputs) - adc_inputs = adc_parser.parse_inputs() - out_defs["adc_inputs"] = adc_inputs - - switches = parse_switches(target, hw_defs, adc_parser) - out_defs["switches"] = switches - - keys = parse_keys(target, hw_defs) - out_defs["keys"] = keys - - trims = parse_trims(hw_defs) - out_defs["trims"] = trims - - print(json.dumps(out_defs, cls=DictEncoder, indent=2)) - + # hw_defs = LoggingDict(parse_hw_defs(filename)) + # out_defs = {} + # + # print(json.dumps(out_defs, cls=DictEncoder, indent=2)) + pass diff --git a/radio/util/hw_defs/hal_keys.py b/radio/util/hw_defs/hal_keys.py deleted file mode 100644 index 8a00b0a311a..00000000000 --- a/radio/util/hw_defs/hal_keys.py +++ /dev/null @@ -1,226 +0,0 @@ - -# Trims: -# TRIMS_GPIO_REG_[trim] -# TRIMS_GPIO_PIN_[trim] -# -# where 'trim' is one of: -# -# (-) (+) -# 'LHL', 'LHR', -# 'LVD', 'LVU', -# 'RVD', 'RVU', -# 'RHL', 'RHR', -# 'LSD', 'LSU', T4 -# 'RSD', 'RSU', T5 - -TRIMS = [ - # Air - { "name": "T1", "dec": "LHL", "inc": "LHR", "input": "LH" }, - { "name": "T2", "dec": "LVD", "inc": "LVU", "input": "LV" }, - { "name": "T3", "dec": "RVD", "inc": "RVU", "input": "RV" }, - { "name": "T4", "dec": "RHL", "inc": "RHR", "input": "RH" }, - { "name": "T5", "dec": "LSD", "inc": "LSU" }, - { "name": "T6", "dec": "RSD", "inc": "RSU" }, - { "name": "T7", "dec": "T7L", "inc": "T7R" }, - { "name": "T8", "dec": "T8D", "inc": "T8U" }, - # Surface - { "name": "T1", "dec": "T1L", "inc": "T1R", "input": "ST" }, - { "name": "T2", "dec": "T2L", "inc": "T2R", "input": "TH" }, - { "name": "T3", "dec": "T3L", "inc": "T3R"}, - { "name": "T4", "dec": "T4L", "inc": "T4R"}, - { "name": "T5", "dec": "T5L", "inc": "T5R" }, - { "name": "T6", "dec": "T6D", "inc": "T6U" }, -] - -KEYS = [ - { "name": "MENU", "key": "KEY_MENU", "label": "MENU" }, - { "name": "EXIT", "key": "KEY_EXIT", "label": "EXIT" }, - { "name": "ENTER", "key": "KEY_ENTER", "label": "Enter" }, - - { "name": "PAGEUP", "key": "KEY_PAGEUP", "label": "PAGE<" }, - { "name": "PAGEDN", "key": "KEY_PAGEDN", "label": "PAGE>" }, - - { "name": "UP", "key": "KEY_UP", "label": "Up" }, - { "name": "DOWN", "key": "KEY_DOWN", "label": "Down" }, - - { "name": "LEFT", "key": "KEY_LEFT", "label": "Left" }, - { "name": "RIGHT", "key": "KEY_RIGHT", "label": "Right" }, - - { "name": "PLUS", "key": "KEY_PLUS", "label": "(+)" }, - { "name": "MINUS", "key": "KEY_MINUS", "label": "(-)" }, - - { "name": "MDL", "key": "KEY_MODEL", "label": "MDL" }, - { "name": "TELE", "key": "KEY_TELE", "label": "TELE" }, - { "name": "SYS", "key": "KEY_SYS", "label": "SYS" }, - - { "name": "SHIFT", "key": "KEY_SHIFT", "label": "Shift" } -] - -KEY_LABELS = [ - { - "targets": {"boxer", "f16", "mt12", "gx12", "pocket", "tx12", "tx12mk2", "tx16s", "v16", "zorro"}, - "keys": { - "EXIT": { "label": "RTN" } - } - }, - { - "targets": {"bumblebee", "t12max", "t14", "t15", "t20", "t20v2", "tpro", "tpros", "tprov2"}, - "keys": { - "PAGEDN": { "label": "" }, - } - }, - { - "targets": {"x7", "x7access", "x9e"}, - "keys": { - "PAGEDN": { "label": "PAGE" }, - } - }, - { - "targets": {"t16", "t18"}, - "keys": { - "EXIT": { "label": "RTN" }, - "PAGEDN": {"label": "PAGE" } - } - }, - { - "targets": {"x9d", "x9d+", "x9d+2019"}, - "keys": { - "ENTER": { "label": "ENT" }, - "PAGEDN": { "label": "PAGE" } - } - }, - { - "targets": {"x10", "x10express"}, - "keys": { - "EXIT": { "label": "RTN" }, - "PAGEDN": { "label": "PgUp/Dn" } - } - }, - { - "targets": {"x12s"}, - "keys": { - "EXIT": { "label": "RTN" }, - "PAGEUP": { "label": "PgUp" }, - "PAGEDN": { "label": "PgDn" } - } - }, - { - "targets": {"t8"}, - "keys": { - "EXIT": { "label": "RTN" }, - "ENTER": { "label": "ENT" } - } - }, - { - "targets": {"tlite"}, - "keys": { - "EXIT": { "label": "RTN" }, - "ENTER": { "label": "ENT" }, - "LEFT": { "label": "Left/SYS" }, - "RIGHT": { "label": "Right/MDL" } - } - }, - { - "targets": {"commando8"}, - "keys": { - "EXIT": { "label": "BCK" }, - "PAGEUP": { "label": "Left" }, - "PAGEDN": { "label": "Right" }, - "PLUS": { "label": "Up" }, - "MINUS": { "label": "Down" }, - "MENU": { "label": "Menu" } - } - }, - { - "targets": {"st16"}, - "keys": { - "PAGEDN": { "label": "MENU" } - } - }, -] - -class Key: - - def __init__(self, gpio, pin): - self.gpio = gpio - self.pin = pin - self.active_low = True - -class Trim: - - def __init__(self, name, dec, inc): - self.name = name - if dec and dec.gpio and inc and inc.gpio: - self.dec = dec - self.inc = inc - self.active_low = True - -def get_trim_switch(hw_defs, tag): - - gpio = f'TRIMS_GPIO_REG_{tag}' - pin = f'TRIMS_GPIO_PIN_{tag}' - - if (gpio in hw_defs) and (pin in hw_defs): - key = Key(hw_defs[gpio], hw_defs[pin]) - if 'TRIMS_GPIO_ACTIVE_HIGH' in hw_defs: - key.active_low = False - return key - - return None - - -def parse_trims(hw_defs): - - trims = [] - for t in TRIMS: - - name = t['name'] - dec = get_trim_switch(hw_defs, t['dec']) - inc = get_trim_switch(hw_defs, t['inc']) - - if dec and inc: - trims.append(Trim(name, dec, inc)) - - elif t.get('input'): - input = t['input'] - if f'TRIMS_VIRTUAL_{input}' in hw_defs: - trims.append(Trim(name, None, None)) - - return trims - - -def key_label(target, name): - for d in KEY_LABELS: - if target in d['targets']: - keys = d.get('keys') - key = keys.get(name) - if key: - return key['label'] - - return None - - -def parse_keys(target, hw_defs): - - keys = [] - - for k in KEYS: - - name = k['name'] - gpio = f'KEYS_GPIO_REG_{name}' - pin = f'KEYS_GPIO_PIN_{name}' - - if (gpio in hw_defs) and (pin in hw_defs): - key = Key(hw_defs[gpio], hw_defs[pin]) - key.key = k['key'] - key.name = name - label = key_label(target, name) - if label: - key.label = label - else: - key.label = k['label'] - if 'KEYS_GPIO_ACTIVE_HIGH' in hw_defs: - key.active_low = False - keys.append(key) - - return keys diff --git a/radio/util/hw_defs/hal_switches.py b/radio/util/hw_defs/hal_switches.py deleted file mode 100644 index 7d1a40fb511..00000000000 --- a/radio/util/hw_defs/hal_switches.py +++ /dev/null @@ -1,140 +0,0 @@ -from switch_config import switch_cfg_by_target - -class Switch: - TYPE_2POS = "2POS" - TYPE_3POS = "3POS" - TYPE_ADC = "ADC" - - def __init__(self, name, sw_type, flags): - self.name = name - self.type = sw_type - self.flags = flags - self.inverted = False - self.default = None - self.display = None - - -class Switch2POS(Switch): - def __init__(self, name, gpio, pin, flags=0): - super(Switch2POS, self).__init__(name, Switch.TYPE_2POS, flags) - self.gpio = gpio - self.pin = pin - - -class Switch3POS(Switch): - def __init__(self, name, gpio_high, pin_high, gpio_low, pin_low, flags=0): - super(Switch3POS, self).__init__(name, Switch.TYPE_3POS, flags) - self.gpio_high = gpio_high - self.pin_high = pin_high - self.gpio_low = gpio_low - self.pin_low = pin_low - - -class SwitchADC(Switch): - def __init__(self, name, adc_input, flags=0): - super(SwitchADC, self).__init__(name, Switch.TYPE_ADC, flags) - self.adc_input = adc_input - - -class SwitchCustom(Switch): - def __init__(self, name, type, flags=0): - super(SwitchCustom, self).__init__(name, type, flags) - - -def AZ_seq(): - return [chr(i) for i in range(ord("A"), ord("Z") + 1)] - - -def eprint(*args, **kwargs): - from sys import stderr - - print(*args, file=stderr, **kwargs) - - -def prefixsearch(dictionary, prefix): - for k in dictionary.keys(): - if k.startswith(prefix): - return k[len(prefix) :] - - return None - - -# switches from A to Z -def parse_switches(target, hw_defs, adc_parser): - switches = [] - - def find_switch(name): - for sw in switches: - if name == sw.name: - return sw - return None - - for s in AZ_seq(): - name = f"S{s}" - - reg = f"SWITCHES_GPIO_REG_{s}" - reg_high = f"{reg}_H" - reg_low = f"{reg}_L" - - pin = f"SWITCHES_GPIO_PIN_{s}" - pin_high = f"{pin}_H" - pin_low = f"{pin}_L" - - inverted = f"SWITCHES_{s}_INVERTED" - - adc_input_name = f"SW{s}" - custom = f"SWITCHES_{s}_" - - cfs_idx = f"SWITCHES_{s}_CFS_IDX" - - switch = None - if reg in hw_defs: - # 2POS switch - reg = hw_defs[reg] - pin = hw_defs[pin] - switch = Switch2POS(name, reg, pin) - elif (reg_high in hw_defs) and (reg_low in hw_defs): - # 3POS switch - reg_high = hw_defs[reg_high] - pin_high = hw_defs[pin_high] - reg_low = hw_defs[reg_low] - pin_low = hw_defs[pin_low] - switch = Switch3POS(name, reg_high, pin_high, reg_low, pin_low) - elif adc_parser.find_input(adc_input_name): - # ADC switch - switch = SwitchADC(name, adc_input_name) - else: - type = prefixsearch(hw_defs, custom) - if type is not None: - switch = SwitchCustom(name, type) - - if switch: - if inverted in hw_defs: - switch.inverted = True - - if cfs_idx in hw_defs: - switch.is_cfs = True - switch.cfs_idx = hw_defs[cfs_idx] - else: - switch.is_cfs = False - - cfg = switch_cfg_by_target(target, name) - if cfg: - switch.default = cfg.get("default") - switch.display = cfg.get("display") - else: - switch.default = "NONE" - - switches.append(switch) - - for i in range(1, 6 + 1): - f_sw_marker = f"FUNCTION_SWITCH_{i}" - if f_sw_marker in hw_defs: - switch = find_switch(hw_defs[f_sw_marker]) - if switch: - switch.name = f"SW{i}" - else: - switch = SwitchCustom(f"SW{i}", Switch.TYPE_2POS) - switches.append(switch) - - return switches diff --git a/radio/util/hw_defs/json_validator.py b/radio/util/hw_defs/json_validator.py new file mode 100644 index 00000000000..4bb57e09c84 --- /dev/null +++ b/radio/util/hw_defs/json_validator.py @@ -0,0 +1,116 @@ +from json import JSONDecodeError +from pathlib import Path +from typing import List, Tuple +from typing_extensions import Type + +from pydantic import BaseModel, ValidationError + + +def validate_json_files( + directory: str, model_class: Type[BaseModel] +) -> Tuple[List[str], List[Tuple[str, str]]]: + """ + Validate all JSON files in a directory against a Pydantic model. + + Args: + directory: Path to the directory containing JSON files + model_class: Pydantic model class to validate against + + Returns: + Tuple of (valid_files, invalid_files_with_errors) + """ + directory_path = Path(directory) + + if not directory_path.exists(): + raise FileNotFoundError(f"Directory {directory} does not exist") + + valid_files = [] + invalid_files = [] + + # Find all JSON files in the directory + json_files = list(directory_path.glob("*.json")) + + if not json_files: + print(f"No JSON files found in {directory}") + return valid_files, invalid_files + + print(f"Found {len(json_files)} JSON files to validate") + + for json_file in json_files: + try: + # Read the JSON file + with open(json_file, "r", encoding="utf-8") as f: + json_data = f.read() + + # Validate against given model + model_class.model_validate_json(json_data) + + valid_files.append(str(json_file)) + print(f"✓ {json_file.name} - Valid") + + except ValidationError as e: + error_msg = str(e) + invalid_files.append((str(json_file), error_msg)) + print(f"✗ {json_file.name} - Validation Error:") + print(f" {error_msg}") + + except JSONDecodeError as e: + error_msg = f"Invalid JSON syntax: {e}" + invalid_files.append((str(json_file), error_msg)) + print(f"✗ {json_file.name} - JSON Decode Error:") + print(f" {error_msg}") + + except Exception as e: + error_msg = f"Unexpected error: {e}" + invalid_files.append((str(json_file), error_msg)) + print(f"✗ {json_file.name} - Unexpected Error:") + print(f" {error_msg}") + + return valid_files, invalid_files + + +def main(): + """Main function to run the validation""" + import argparse + + parser = argparse.ArgumentParser( + description="Validate JSON files against HardwareDefinition model" + ) + parser.add_argument( + "-v", "--verbose", action="store_true", help="Show detailed error messages" + ) + parser.add_argument( + "directory", help="Path to directory containing JSON files to validate" + ) + + args = parser.parse_args() + + try: + from models import HardwareDefinition + + valid_files, invalid_files = validate_json_files( + args.directory, HardwareDefinition + ) + + print("\n=== Validation Summary ===") + print(f"Total files processed: {len(valid_files) + len(invalid_files)}") + print(f"Valid files: {len(valid_files)}") + print(f"Invalid files: {len(invalid_files)}") + + if invalid_files: + print("\nInvalid files:") + for file_path, error in invalid_files: + if args.verbose: + print(f" - {Path(file_path).name}: {error}") + else: + print(f" - {Path(file_path).name}") + + return 0 if not invalid_files else 1 + + except Exception as e: + print(f"Error during validation: {e}") + return 1 + + +if __name__ == "__main__": + exit(main()) diff --git a/radio/util/hw_defs/legacy_names.py b/radio/util/hw_defs/legacy_names.py index d9ee464da12..04dfd2dae45 100644 --- a/radio/util/hw_defs/legacy_names.py +++ b/radio/util/hw_defs/legacy_names.py @@ -484,7 +484,7 @@ "lr3pro", "nv14", "el18", "t8", "t12", - "tlite", "tlitef4", "tpro", "tprov2", "tpros", "bumblebee", + "tlite", "tpro", "tprov2", "tpros", "bumblebee", "tx12", "tx12mk2", "x7", "x7access", "xlite", "xlites", diff --git a/radio/util/hw_defs/logging_dict.py b/radio/util/hw_defs/logging_dict.py new file mode 100644 index 00000000000..f3b0bf75aaa --- /dev/null +++ b/radio/util/hw_defs/logging_dict.py @@ -0,0 +1,98 @@ +import sys +from typing import Any, Dict, Iterator, KeysView, Optional, ValuesView, ItemsView + + +class LoggingDict: + """A dictionary wrapper that logs all lookups to stderr.""" + + def __init__(self, data: Optional[Dict[Any, Any]] = None): + self._data = data if data is not None else {} + + def __getitem__(self, key: Any) -> Any: + """Log the lookup and return the value.""" + print(f"{str(key)}", file=sys.stderr) + return self._data[key] + + def __setitem__(self, key: Any, value: Any) -> None: + """Set an item in the dictionary.""" + self._data[key] = value + + def __delitem__(self, key: Any) -> None: + """Delete an item from the dictionary.""" + del self._data[key] + + def __contains__(self, key: Any) -> bool: + """Check if key exists (this is also a lookup, so log it).""" + print(f"{str(key)}", file=sys.stderr) + return key in self._data + + def __len__(self) -> int: + """Return the length of the dictionary.""" + return len(self._data) + + def __iter__(self) -> Iterator: + """Return an iterator over the keys.""" + return iter(self._data) + + def __repr__(self) -> str: + """Return a string representation.""" + return f"LoggingDict({self._data})" + + def get(self, key: Any, default: Any = None) -> Any: + """Get a value with optional default (logs the lookup).""" + print(f"{str(key)}", file=sys.stderr) + return self._data.get(key, default) + + def keys(self) -> KeysView: + """Return dictionary keys.""" + return self._data.keys() + + def values(self) -> ValuesView: + """Return dictionary values.""" + return self._data.values() + + def items(self) -> ItemsView: + """Return dictionary items.""" + return self._data.items() + + def update(self, other: Dict[Any, Any]) -> None: + """Update the dictionary with another dictionary.""" + self._data.update(other) + + def clear(self) -> None: + """Clear all items from the dictionary.""" + self._data.clear() + + def pop(self, key: Any, default: Any = None) -> Any: + """Remove and return a value (logs the lookup).""" + print(f"{str(key)}", file=sys.stderr) + if default is None: + return self._data.pop(key) + return self._data.pop(key, default) + + def setdefault(self, key: Any, default: Any = None) -> Any: + """Get a value or set/return default (logs the lookup).""" + print(f"{str(key)}", file=sys.stderr) + return self._data.setdefault(key, default) + + +# Example usage +if __name__ == "__main__": + # Create a logging dictionary + d = LoggingDict({"a": 1, "b": 2, "c": 3}) + + # These operations will be logged to stderr + print("Value of 'a':", d["a"]) + print("Value of 'b':", d.get("b")) + print("Does 'c' exist?", "c" in d) + print("Does 'd' exist?", "d" in d) + + # Add new items + d["d"] = 4 + d["e"] = 5 + + # More logged lookups + print("Value of 'd':", d["d"]) + print("Popped 'e':", d.pop("e")) + + print("Final dictionary:", d) diff --git a/radio/util/hw_defs/models.py b/radio/util/hw_defs/models.py new file mode 100644 index 00000000000..0210bb02fc1 --- /dev/null +++ b/radio/util/hw_defs/models.py @@ -0,0 +1,297 @@ +from enum import Enum +from typing_extensions import List, Literal, Optional, Tuple, Union + +from pydantic import BaseModel, model_validator +from pydantic_core import from_json, PydanticCustomError + + +class StrEnum(str, Enum): + @staticmethod + def _generate_next_value_(name, start, count, last_values): + return name + + def __str__(self) -> str: + return self.value + + +ADCNameType = Literal["MAIN", "EXT", "SPI"] + + +class ADC(BaseModel): + name: ADCNameType + adc: str + sample_time: Optional[str] = None + dma: Optional[str] = None + dma_channel: Optional[str] = None + dma_stream: Optional[str] = None + dma_stream_irq: Optional[str] = None + dma_stream_irq_handler: Optional[str] = None + + +StickEnum = StrEnum( + "StickEnum", + ( + # 2 Gimbal radios + "LH", + "LV", + "RV", + "RH", + # Surface radios + "ST", + "TH", + ), +) + +MAX_POTS = 8 +MAX_SLIDERS = 8 +MAX_EXT = 16 +MAX_RAW = 8 + +FlexInputEnum = StrEnum( + "FlexInputEnum", + ( + [f"P{i}" for i in range(1, MAX_POTS)] + + [f"SL{i}" for i in range(1, MAX_SLIDERS)] + + [f"EXT{i}" for i in range(1, MAX_EXT)] + + ["JSx", "JSy"] + ), +) + +SwitchInputEnum = StrEnum( + "SwitchInputEnum", + list([f"SW{chr(i)}" for i in range(ord("A"), ord("Z") + 1)]), +) + +RawInputEnum = StrEnum("RawInputEnum", list([f"RAW{i}" for i in range(1, MAX_RAW)])) + +InputNameType = Union[StickEnum, FlexInputEnum, SwitchInputEnum, RawInputEnum] + +InputType = StrEnum( + "InputType", + ( + "STICK", + "FLEX", + "SWITCH", + "VBAT", + "RTC_BAT", + "RAW", + ), +) + +FlexType = StrEnum( + "FlexType", + ( + "NONE", + "POT", + "POT_CENTER", + "SLIDER", + "MULTIPOS", + "AXIS_X", + "AXIS_Y", + ), +) + + +class StickInput(BaseModel): + name: StickEnum + type: Literal["STICK"] + adc: Optional[ADCNameType] = None + gpio: Optional[str] = None + pin: Optional[str] = None + channel: Optional[Union[str, int]] = None + inverted: Optional[bool] = False + + +class FlexInput(BaseModel): + name: FlexInputEnum + type: Literal["FLEX"] + adc: ADCNameType + gpio: Optional[str] = None + pin: Optional[str] = None + channel: Optional[Union[str, int]] = None + inverted: Optional[bool] = False + default: Optional[FlexType] = FlexType.NONE + label: Optional[str] = None + short_label: Optional[str] = None + + +class SwitchInput(BaseModel): + name: SwitchInputEnum + type: Literal["SWITCH"] + adc: ADCNameType + gpio: Optional[str] = None + pin: Optional[str] = None + channel: Optional[Union[str, int]] = None + inverted: Optional[bool] = False + + +class RawInput(BaseModel): + name: RawInputEnum + type: Literal["RAW"] + adc: ADCNameType + gpio: Optional[str] = None + pin: Optional[str] = None + channel: Optional[Union[str, int]] = None + + +class VBatInput(BaseModel): + name: Literal["VBAT"] + type: Literal["VBAT"] + adc: ADCNameType + gpio: Optional[str] = None + pin: Optional[str] = None + channel: Optional[Union[str, int]] = None + + +class RTCBatInput(BaseModel): + name: Literal["RTC_BAT"] + type: Literal["RTC_BAT"] + adc: Literal["MAIN", "EXT"] + channel: str + + +Input = Union[StickInput, FlexInput, SwitchInput, RawInput, VBatInput, RTCBatInput] + + +class ADCInputs(BaseModel): + adcs: List[ADC] + inputs: List[Input] + + +# MUST be the same order as 'EnumKeys' +KeyEnum = StrEnum( + "KeyEnum", + ( + "KEY_MENU", + "KEY_EXIT", + "KEY_ENTER", + "KEY_PAGEUP", + "KEY_PAGEDN", + "KEY_UP", + "KEY_DOWN", + "KEY_LEFT", + "KEY_RIGHT", + "KEY_PLUS", + "KEY_MINUS", + "KEY_MODEL", + "KEY_TELE", + "KEY_SYS", + "KEY_SHIFT", + "KEY_BIND", + ), +) + + +class Key(BaseModel): + name: str + label: str + key: KeyEnum + active_low: Optional[bool] = False + gpio: Optional[str] = None + pin: Optional[str] = None + + @model_validator(mode="after") + def check_hardware(self: "Key") -> "Key": + if bool(self.gpio) != bool(self.pin): + raise PydanticCustomError( + "KeyHardwareError", + "Key missing either 'gpio' or 'pin'", + ) + + return self + + +SwitchHardwareTypeEnum = StrEnum( + "SwitchTypeEnum", + ( + "2POS", + "3POS", + "ADC", + "FSWITCH", + ), +) + +SwitchTypeEnum = StrEnum( + "SwitchTypeEnum", + ( + "2POS", + "3POS", + "TOGGLE", + "NONE", + ), +) + +SwitchDisplayType = Union[Tuple[int, int], Tuple] + + +class Switch(BaseModel): + name: str + type: SwitchHardwareTypeEnum + default: Optional[SwitchTypeEnum] = SwitchTypeEnum.NONE + flags: Optional[int] = 0 + inverted: Optional[bool] = False + adc_input: Optional[str] = None + gpio: Optional[str] = None + pin: Optional[str] = None + gpio_high: Optional[str] = None + pin_high: Optional[str] = None + gpio_low: Optional[str] = None + pin_low: Optional[str] = None + display: Optional[SwitchDisplayType] = None + + def _uses_single_gpio(self: "Switch") -> bool: + return bool(self.pin) + + def _uses_two_gpios(self: "Switch") -> bool: + return bool(self.pin_high or self.pin_low) + + def _uses_gpio(self: "Switch") -> bool: + return bool(self.gpio_high or self.gpio_low or self.gpio) + + @model_validator(mode="after") + def check_hardware(self: "Switch") -> "Switch": + if bool(self.adc_input) == self._uses_gpio(): + if self.adc_input: + raise PydanticCustomError( + "SwitchHardwareError", + "A switch is either using ADC or it's own GPIO pin(s)", + ) + + if self._uses_gpio() and (self._uses_single_gpio() == self._uses_two_gpios()): + raise PydanticCustomError( + "SwitchHardwareError", + "A switch based on GPIO pin(s) uses either a single or two GPIOs", + ) + + if self._uses_single_gpio(): + if str(self.type) not in ["2POS", "FSWITCH"]: + raise PydanticCustomError( + "SwitchHardwareError", + "Single GPIO switch type is either '2POS' or 'FSWITCH'", + ) + # TODO: check 'default' as well? + + if self._uses_two_gpios(): + if not self.pin_high or not self.pin_low: + raise PydanticCustomError( + "SwitchHardwareError", + "Switch missing 'pin_high' or 'pin_low'", + ) + if str(self.type) != "3POS": + raise PydanticCustomError( + "SwitchHardwareError", + "Dual GPIO switch type is always '3POS", + ) + # TODO: check 'default' as well? + + return self + + +class HardwareDefinition(BaseModel): + adc_inputs: ADCInputs + switches: List[Switch] + keys: List[Key] + + @staticmethod + def from_json(data: Union[str, bytes, bytearray]) -> "HardwareDefinition": + return HardwareDefinition.model_validate(from_json(data)) diff --git a/radio/util/hw_defs/pot_config.py b/radio/util/hw_defs/pot_config.py deleted file mode 100644 index 174a9f7cf50..00000000000 --- a/radio/util/hw_defs/pot_config.py +++ /dev/null @@ -1,280 +0,0 @@ -"""Default configuration of pots and sliders for each target.""" - -POT_CONFIG = { - "boxer": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "P3": {"default": "MULTIPOS"} - }, - "gx12": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "el18": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "nv14": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "pl18": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"}, - "P3": {"default": "POT"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "pl18ev": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"}, - "EXT1": {"default": "POT_CENTER"}, - "EXT2": {"default": "POT_CENTER"}, - "EXT3": {"default": "MULTIPOS"}, - "EXT4": {"default": "MULTIPOS"} - }, - "pl18u": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "nb4p": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"} - }, - "v12": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "P3": {"default": "MULTIPOS"}, - }, - "v14": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "P3": {"default": "MULTIPOS"}, - }, - "v16": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "MULTIPOS"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "mt12": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"}, - "P3": {"default": "NONE"}, - "P4": {"default": "NONE"} - }, - "tpro": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "tprov2": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "tpros": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "bumblebee": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "t20": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"}, - "SL3": {"default": "SLIDER"}, - "SL4": {"default": "SLIDER"}, - }, - "t20v2": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"}, - "SL3": {"default": "SLIDER"}, - "SL4": {"default": "SLIDER"}, - }, - "t12": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"} - }, - "t12max": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "t14": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "tx12": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "tx12mk2": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"} - }, - "t15": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - }, - "t16": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "MULTIPOS"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "t18": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "MULTIPOS"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "tx15": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"}, - }, - "tx16s": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "MULTIPOS"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "f16": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "MULTIPOS"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "x7": { - "P1": {"default": "POT"}, - "P2": {"default": "POT_CENTER"} - }, - "x7access": { - "P1": {"default": "POT"}, - "P2": {"default": "POT_CENTER"} - }, - "x9d": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "x9d+": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "x9d+2019": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "x9e": { - "P1": {"default": "POT_CENTER"}, - "P2": {"default": "POT_CENTER"}, - "P3": {"default": "NONE"}, - "P4": {"default": "NONE"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"}, - "SL3": {"default": "SLIDER"}, - "SL4": {"default": "SLIDER"} - }, - "x10": { - "P1": {"default": "POT"}, - "P2": {"default": "MULTIPOS"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "x10express": { - "P1": {"default": "POT"}, - "P2": {"default": "MULTIPOS"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"} - }, - "x12s": { - "P1": {"default": "POT"}, - "P2": {"default": "MULTIPOS"}, - "P3": {"default": "POT_CENTER"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"}, - "SL3": {"default": "SLIDER"}, - "SL4": {"default": "SLIDER"}, - "JSx": {"default": "AXIS_X"}, - "JSy": {"default": "AXIS_Y"} - }, - "xlite": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"} - }, - "xlites": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"} - }, - "x9lite": { - "P1": {"default": "POT_CENTER"}, - }, - "x9lites": { - "P1": {"default": "POT_CENTER"}, - }, - "zorro": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"} - }, - "pocket": { - "P1": {"default": "POT"} - }, - "st16": { - "P1": {"default": "POT"}, - "P2": {"default": "POT"}, - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"}, - }, - "pa01": { - "SL1": {"default": "SLIDER"}, - "SL2": {"default": "SLIDER"}, - }, -} - - -def pot_cfg_by_target(target, name): - """Retrieve default pot config. - - Parameters - ---------- - target: str - Name of the target - name: str - Canonical name of the pot (Px where 'x' is a number) - or slider (SLx where 'x' is a number) - - Returns - ------- - dict - a dictionary with one key for each pot or slider that mapped - to another dictionary with a single attribute ("default") containing - the default configuration for a pot or slider - """ - sw = POT_CONFIG.get(target) - if sw: - return sw.get(name) - - return None diff --git a/radio/util/hw_defs/switch_config.py b/radio/util/hw_defs/switch_config.py deleted file mode 100644 index f12011f9145..00000000000 --- a/radio/util/hw_defs/switch_config.py +++ /dev/null @@ -1,636 +0,0 @@ -"""Default switches configurations and display positions.""" - -SWITCH_CONFIG = { - "boxer": { - # left side - "SA": {"default": "2POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "3POS", "display": [0, 2]}, - "SG": {"default": "2POS", "display": [0, 3]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "2POS", "display": [1, 1]}, - "SF": {"default": "TOGGLE", "display": [1, 2]}, - "SH": {"default": "2POS", "display": [1, 3]}, - }, - "gx12": { - # left side - "SA": {"default": "TOGGLE"}, - "SB": {"default": "3POS", "display": [0, 0]}, - "SE": {"default": "3POS", "display": [0, 1]}, - "SG": {"default": "TOGGLE", "display": [0, 2]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "TOGGLE"}, - "SF": {"default": "3POS", "display": [1, 1]}, - "SH": {"default": "TOGGLE", "display": [1, 2]}, - # custom switches - "SI": {"default": "2POS"}, - "SJ": {"default": "2POS"}, - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - "SM": {"default": "2POS"}, - "SN": {"default": "2POS"}, - }, - "commando8": { - # left side - "SA": {"default": "2POS", "display": [0, 0]}, - "SC": {"default": "3POS", "display": [0, 1]}, - # right side - "SB": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "2POS", "display": [1, 1]} - }, - "el18": { - "SA": { "default": "2POS" }, - "SB": { "default": "3POS" }, - "SC": { "default": "3POS" }, - "SD": { "default": "2POS" }, - "SE": { "default": "2POS" }, - "SF": { "default": "3POS" }, - "SG": { "default": "3POS" }, - "SH": { "default": "TOGGLE" } - }, - "pl18": { - "SA": { "default": "2POS" }, - "SB": { "default": "3POS" }, - "SC": { "default": "2POS" }, - "SD": { "default": "3POS" }, - "SE": { "default": "3POS" }, - "SF": { "default": "2POS" }, - "SG": { "default": "3POS" }, - "SH": { "default": "TOGGLE" } - }, - "pl18ev": { - "SA": { "default": "2POS" }, - "SB": { "default": "3POS" }, - "SC": { "default": "2POS" }, - "SD": { "default": "3POS" }, - "SE": { "default": "3POS" }, - "SF": { "default": "2POS" }, - "SG": { "default": "3POS" }, - "SH": { "default": "3POS" }, - "SI": { "default": "3POS" }, - "SJ": { "default": "3POS" } - }, - "pl18u": { - "SA": { "default": "3POS" }, - "SB": { "default": "3POS" }, - "SC": { "default": "3POS" }, - "SD": { "default": "3POS" }, - "SE": { "default": "3POS" }, - "SF": { "default": "3POS" }, - "SG": { "default": "3POS" }, - "SH": { "default": "TOGGLE" } - }, - "nb4p": { - "SA" : { "default": "TOGGLE" }, - "SB" : { "default": "TOGGLE" } - }, - "st16": { - "SA": { "default": "2POS" }, - "SB": { "default": "3POS" }, - "SC": { "default": "3POS" }, - "SD": { "default": "2POS" }, - "SE": { "default": "2POS" }, - "SF": { "default": "2POS" }, - "SG": { "default": "TOGGLE" }, - "SH": { "default": "TOGGLE" }, - "SI": { "default": "TOGGLE" }, - "SJ": { "default": "TOGGLE" }, - # custom switches - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - "SM": {"default": "2POS"}, - "SN": {"default": "2POS"}, - "SO": {"default": "2POS"}, - "SP": {"default": "2POS"}, - }, - "pa01": { - "SA": { "default": "2POS" }, - "SB": { "default": "3POS" }, - "SC": { "default": "3POS" }, - "SD": { "default": "TOGGLE" }, - "SE": { "default": "TOGGLE" }, - "SF": { "default": "TOGGLE" }, - # custom switches - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - "SM": {"default": "2POS"}, - "SN": {"default": "2POS"}, - }, - "lr3pro": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SC": {"default": "3POS", "display": [0, 1]}, - # right side - "SB": {"default": "2POS", "display": [1, 0]}, - "SD": {"default": "2POS", "display": [1, 1]} - }, - "nv14": { - "SA": {"default": "2POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "TOGGLE"}, - "SD": {"default": "2POS"}, - "SE": {"default": "TOGGLE"}, - "SF": {"default": "3POS"}, - "SG": {"default": "3POS"}, - "SH": {"default": "TOGGLE"} - }, - "v12": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SF": {"default": "TOGGLE", "display": [1, 2]}, - }, - "v14": { - # left side - "SA": {"default": "TOGGLE", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "TOGGLE", "display": [1, 1]}, - "SF": {"default": "TOGGLE", "display": [1, 2]}, - }, - "v16": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "3POS"}, - "SF": {"default": "2POS"}, - "SG": {"default": "3POS"}, - "SH": {"default": "TOGGLE"} - }, - "mt12": { - # left side - "SA": { "default": "3POS", "display": [ 0, 0 ] }, - "SB": { "default": "TOGGLE", "display": [ 0, 1 ] }, - # right side - "SC": { "default": "TOGGLE", "display": [ 1, 0 ] }, - "SD": { "default": "TOGGLE", "display": [ 1, 1 ] }, - }, - "t8": { - # left side - "SA": {"default": "2POS", "display": [0, 0]}, - "SC": {"default": "3POS", "display": [0, 1]}, - # right side - "SB": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "2POS", "display": [1, 1]} - }, - "t12": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SG": {"default": "2POS", "display": [0, 2]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SH": {"default": "2POS", "display": [1, 2]} - }, - "t12max": { - # left side - "SA": {"default": "2POS", "display": [0, 0]}, - "SC": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - # right side - "SB": {"default": "2POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SF": {"default": "2POS", "display": [1, 2]} - }, - "t14": { - # left side - "SA": {"default": "2POS", "display": [0, 0]}, - "SC": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - # right side - "SB": {"default": "2POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SF": {"default": "TOGGLE", "display": [1, 2]} - }, - "t15": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "2POS"}, - "SF": {"default": "2POS"}, - # custom switches - "SG": {"default": "2POS"}, - "SH": {"default": "2POS"}, - "SI": {"default": "2POS"}, - "SJ": {"default": "2POS"}, - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - }, - "t16": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "3POS"}, - "SF": {"default": "2POS"}, - "SG": {"default": "3POS"}, - "SH": {"default": "TOGGLE"} - }, - "t18": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "3POS"}, - "SF": {"default": "2POS"}, - "SG": {"default": "3POS"}, - "SH": {"default": "TOGGLE"} - }, - "tlite": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SC": {"default": "2POS", "display": [0, 1]}, - # right side - "SB": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "2POS", "display": [1, 1]} - }, - "tlitef4": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SC": {"default": "2POS", "display": [0, 1]}, - # right side - "SB": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "2POS", "display": [1, 1]} - }, - "tpro": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SC": {"default": "TOGGLE", "display": [0, 1]}, - "SE": {"default": "NONE", "display": [0, 2]}, - # right side - "SB": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "TOGGLE", "display": [1, 1]}, - "SF": {"default": "NONE", "display": [1, 2]}, - # custom switches - "SG": {"default": "2POS"}, - "SH": {"default": "2POS"}, - "SI": {"default": "2POS"}, - "SJ": {"default": "2POS"}, - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - }, - "tprov2": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SC": {"default": "TOGGLE", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - "SG": {"default": "NONE", "display": [0, 3]}, - # right side - "SB": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "TOGGLE", "display": [1, 1]}, - "SF": {"default": "2POS", "display": [1, 2]}, - "SH": {"default": "NONE", "display": [1, 3]}, - # custom switches - "SI": {"default": "2POS"}, - "SJ": {"default": "2POS"}, - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - "SM": {"default": "2POS"}, - "SN": {"default": "2POS"}, - }, - "tpros": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SC": {"default": "TOGGLE", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - # right side - "SB": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "TOGGLE", "display": [1, 1]}, - "SF": {"default": "2POS", "display": [1, 2]}, - }, - "bumblebee": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SC": {"default": "TOGGLE", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - "SG": {"default": "TOGGLE", "display": [0, 3]}, - # right side - "SB": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "TOGGLE", "display": [1, 1]}, - "SF": {"default": "2POS", "display": [1, 2]}, - "SH": {"default": "TOGGLE", "display": [1, 3]}, - # custom switches - "SJ": {"default": "2POS"}, - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - "SM": {"default": "2POS"}, - "SO": {"default": "2POS"}, - "SP": {"default": "2POS"}, - }, - "t20": { - # left side - "SA": {"default": "2POS", "display": [0, 0]}, - "SC": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - "SG": {"default": "TOGGLE", "display": [0, 3]}, - "SI": {"default": "TOGGLE", "display": [0, 4]}, - # right side - "SB": {"default": "2POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SF": {"default": "2POS", "display": [1, 2]}, - "SH": {"default": "TOGGLE", "display": [1, 3]}, - "SJ": {"default": "TOGGLE", "display": [1, 4]}, - # custom switches - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - "SM": {"default": "2POS"}, - "SN": {"default": "2POS"}, - "SO": {"default": "2POS"}, - "SP": {"default": "2POS"}, - }, - "t20v2": { - # left side - "SA": {"default": "2POS", "display": [0, 0]}, - "SC": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - "SG": {"default": "TOGGLE", "display": [0, 3]}, - "SI": {"default": "TOGGLE", "display": [0, 4]}, - # right side - "SB": {"default": "2POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SF": {"default": "2POS", "display": [1, 2]}, - "SH": {"default": "TOGGLE", "display": [1, 3]}, - "SJ": {"default": "TOGGLE", "display": [1, 4]}, - # custom switches - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - "SM": {"default": "2POS"}, - "SN": {"default": "2POS"}, - "SO": {"default": "2POS"}, - "SP": {"default": "2POS"}, - }, - "tx12": { - # left side - "SA": {"default": "TOGGLE", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "3POS", "display": [0, 2]}, - "SG": {"default": "NONE", "display": [0, 3]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "TOGGLE", "display": [1, 1]}, - "SF": {"default": "3POS", "display": [1, 2]}, - "SH": {"default": "NONE", "display": [1, 3]} - }, - "tx15": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "2POS"}, - "SF": {"default": "TOGGLE"}, - # custom switches - "SG": {"default": "2POS"}, - "SH": {"default": "2POS"}, - "SI": {"default": "2POS"}, - "SJ": {"default": "2POS"}, - "SK": {"default": "2POS"}, - "SL": {"default": "2POS"}, - }, - "tx16s": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "3POS"}, - "SF": {"default": "2POS"}, - "SG": {"default": "3POS"}, - "SH": {"default": "TOGGLE"} - }, - "f16": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "3POS"}, - "SF": {"default": "2POS"}, - "SG": {"default": "3POS"}, - "SH": {"default": "TOGGLE"} - }, - "tx12mk2": { - # left side - "SA": {"default": "TOGGLE", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "3POS", "display": [0, 2]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "TOGGLE", "display": [1, 1]}, - "SF": {"default": "3POS", "display": [1, 2]}, - }, - "x7": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SF": {"default": "2POS", "display": [0, 2]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SH": {"default": "TOGGLE", "display": [1, 2]}, - # optional - "SI": {"default": "NONE", "display": [0, 3]}, - "SJ": {"default": "NONE", "display": [0, 3]}, - }, - "x7access": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SF": {"default": "2POS", "display": [0, 2]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SH": {"default": "TOGGLE", "display": [1, 2]}, - # optional - "SI": {"default": "NONE", "display": [0, 3]}, - "SJ": {"default": "NONE", "display": [0, 3]}, - }, - "x9d": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "3POS", "display": [0, 2]}, - "SF": {"default": "2POS", "display": [0, 3]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SG": {"default": "3POS", "display": [1, 2]}, - "SH": {"default": "TOGGLE", "display": [1, 3]} - }, - "x9d+": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "3POS", "display": [0, 2]}, - "SF": {"default": "2POS", "display": [0, 3]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SG": {"default": "3POS", "display": [1, 2]}, - "SH": {"default": "TOGGLE", "display": [1, 3]} - }, - "x9d+2019": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "3POS", "display": [0, 2]}, - "SF": {"default": "2POS", "display": [0, 3]}, - "SI": {"default": "TOGGLE", "display": [0, 4]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SG": {"default": "3POS", "display": [1, 2]}, - "SH": {"default": "TOGGLE", "display": [1, 3]} - }, - "x9e": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "3POS", "display": [0, 2]}, - "SF": {"default": "2POS", "display": [0, 3]}, - # extra - "SI": {"default": "NONE", "display": [0, 4]}, - "SK": {"default": "NONE", "display": [0, 5]}, - "SM": {"default": "NONE", "display": [0, 6]}, - "SO": {"default": "NONE", "display": [0, 7]}, - "SQ": {"default": "NONE", "display": [0, 8]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "3POS", "display": [1, 1]}, - "SH": {"default": "3POS", "display": [1, 2]}, - "SG": {"default": "TOGGLE", "display": [1, 3]}, - # extra - "SJ": {"default": "NONE", "display": [1, 4]}, - "SL": {"default": "NONE", "display": [1, 5]}, - "SN": {"default": "NONE", "display": [1, 6]}, - "SP": {"default": "NONE", "display": [1, 7]}, - "SR": {"default": "NONE", "display": [1, 8]} - }, - "xlite": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SC": {"default": "3POS", "display": [0, 1]}, - # right side - "SB": {"default": "2POS", "display": [1, 0]}, - "SD": {"default": "2POS", "display": [1, 1]} - }, - "xlites": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SC": {"default": "3POS", "display": [0, 1]}, - "SE": {"default": "TOGGLE", "display": [0, 2]}, - # right side - "SB": {"default": "2POS", "display": [1, 0]}, - "SD": {"default": "2POS", "display": [1, 1]}, - "SF": {"default": "TOGGLE", "display": [1, 2]} - }, - "x9lite": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SD": {"default": "2POS", "display": [0, 2]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SE": {"default": "TOGGLE", "display": [1, 1]} - }, - "x9lites": { - # left side - "SA": {"default": "3POS", "display": [0, 0]}, - "SB": {"default": "3POS", "display": [0, 1]}, - "SD": {"default": "2POS", "display": [0, 2]}, - "SF": {"default": "TOGGLE", "display": [0, 3]}, - # right side - "SC": {"default": "3POS", "display": [1, 1]}, - "SE": {"default": "TOGGLE", "display": [1, 2]}, - "SG": {"default": "TOGGLE", "display": [1, 3]} - }, - "x10": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "3POS"}, - "SF": {"default": "2POS"}, - "SG": {"default": "3POS"}, - "SH": {"default": "TOGGLE"}, - "SI": {"default": "NONE"}, - "SJ": {"default": "NONE"} - }, - "x12s": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "3POS"}, - "SF": {"default": "2POS"}, - "SG": {"default": "3POS"}, - "SH": {"default": "TOGGLE"}, - "SI": {"default": "NONE"}, - "SJ": {"default": "NONE"} - }, - "x10express": { - "SA": {"default": "3POS"}, - "SB": {"default": "3POS"}, - "SC": {"default": "3POS"}, - "SD": {"default": "3POS"}, - "SE": {"default": "3POS"}, - "SF": {"default": "2POS"}, - "SG": {"default": "3POS"}, - "SH": {"default": "TOGGLE"} - }, - "zorro": { - # left side - "SB": {"default": "3POS", "display": [0, 0]}, - "SA": {"default": "TOGGLE", "display": [0, 1]}, - "SE": {"default": "2POS", "display": [0, 2]}, - "SG": {"default": "TOGGLE", "display": [0, 3]}, - # right side - "SC": {"default": "3POS", "display": [1, 0]}, - "SD": {"default": "TOGGLE", "display": [1, 1]}, - "SF": {"default": "2POS", "display": [1, 2]}, - "SH": {"default": "TOGGLE", "display": [1, 3]}, - }, - "pocket": { - # left side - "SA": { "default": "2POS", "display": [ 0, 0 ] }, - "SB": { "default": "3POS", "display": [ 0, 1 ] }, - "SE": { "default": "TOGGLE", "display": [ 0, 2 ] }, - # right side - "SD": { "default": "2POS", "display": [ 1, 0 ] }, - "SC": { "default": "3POS", "display": [ 1, 1 ] }, - }, -} - - -def switch_cfg_by_target(target, name): - """Retrieve default switches config. - - Parameters - ---------- - target: str - Name of the target - name: str - Canonical switch name (Sx where 'x' is a capital letter) - - Returns - ------- - dict - a dictionary with one key for each pot or slider that mapped - to another dictionary with a "default" attribute containing - the default switches configuration. On 'stdlcd' targets, a - 'display' 2 dimensional array defining the switch's position - on screen. - """ - sw = SWITCH_CONFIG.get(target) - if sw: - return sw.get(name) - - return None diff --git a/tools/build-common.sh b/tools/build-common.sh index 40d2d088ea6..1039405e10f 100644 --- a/tools/build-common.sh +++ b/tools/build-common.sh @@ -44,9 +44,6 @@ get_target_build_options() { tlite) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TLITE" ;; - tlitef4) - BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TLITEF4" - ;; tpro) BUILD_OPTIONS+="-DPCB=X7 -DPCBREV=TPRO" ;; diff --git a/tools/build-jumper.py b/tools/build-jumper.py index fa6c0bd05bd..9801b8e055b 100755 --- a/tools/build-jumper.py +++ b/tools/build-jumper.py @@ -14,11 +14,6 @@ "PCBREV": "TLITE", "DEFAULT_MODE": "2", }, - "TLITEF4": { - "PCB": "X7", - "PCBREV": "TLITEF4", - "DEFAULT_MODE": "2", - }, "TPRO": { "PCB": "X7", "PCBREV": "TPRO", diff --git a/tools/define_remover.py b/tools/define_remover.py new file mode 100644 index 00000000000..1ffd0c4fe09 --- /dev/null +++ b/tools/define_remover.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python3 +""" +Program to remove #define statements from C/C++ files based on a list of names. +""" + +import re +import argparse +import sys +from pathlib import Path + +def load_names_to_remove(names_file): + """Load the list of names to remove from the specified file.""" + try: + with open(names_file, 'r', encoding='utf-8') as f: + names = [line.strip() for line in f if line.strip()] + return set(names) # Use set for faster lookup + except FileNotFoundError: + print(f"Error: Names file '{names_file}' not found.") + sys.exit(1) + except Exception as e: + print(f"Error reading names file: {e}") + sys.exit(1) + +def remove_defines_from_file(file_path, names_to_remove, dry_run=False): + """Remove #define statements from a file based on the names list.""" + try: + with open(file_path, 'r', encoding='utf-8') as f: + lines = f.readlines() + except Exception as e: + print(f"Error reading file '{file_path}': {e}") + return False + + modified_lines = [] + removed_count = 0 + i = 0 + + # Pattern to match #define statements + # Matches: #define NAME or #define NAME value + define_pattern = re.compile(r'^\s*#define\s+(\w+)') + + while i < len(lines): + line = lines[i] + line_num = i + 1 + + match = define_pattern.match(line) + if match: + define_name = match.group(1) + if define_name in names_to_remove: + # Found a #define to remove, collect all continuation lines + lines_to_remove = [] + current_line = line + current_line_num = line_num + + # Keep collecting lines while they end with backslash + while current_line.rstrip().endswith('\\'): + lines_to_remove.append((current_line_num, current_line)) + i += 1 + if i < len(lines): + current_line = lines[i] + current_line_num = i + 1 + else: + break + + # Add the final line (without backslash or last line of file) + lines_to_remove.append((current_line_num, current_line)) + + # Print what we're removing + if not dry_run: + print(f"Removing multi-line #define from {file_path}:") + for ln, l in lines_to_remove: + print(f" Line {ln}: {l.rstrip()}") + else: + print(f"Would remove multi-line #define from {file_path}:") + for ln, l in lines_to_remove: + print(f" Line {ln}: {l.rstrip()}") + + removed_count += 1 + i += 1 # Move to next line after the #define block + continue + + # Line is not a #define to remove, keep it + modified_lines.append(line) + i += 1 + + # Write back to file if not dry run and changes were made + if not dry_run and removed_count > 0: + try: + with open(file_path, 'w', encoding='utf-8') as f: + f.writelines(modified_lines) + print(f"Successfully processed '{file_path}' - removed {removed_count} #define(s)") + except Exception as e: + print(f"Error writing file '{file_path}': {e}") + return False + elif dry_run and removed_count > 0: + print(f"Would process '{file_path}' - {removed_count} #define(s) to remove") + elif removed_count == 0: + print(f"No matching #define statements found in '{file_path}'") + + return True + +def main(): + parser = argparse.ArgumentParser( + description="Remove #define statements from C/C++ files based on a list of names" + ) + parser.add_argument( + "names_file", + help="File containing names to remove (one name per line)" + ) + parser.add_argument( + "source_files", + nargs="+", + help="Source files to process" + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Show what would be removed without actually modifying files" + ) + + args = parser.parse_args() + + # Load names to remove + names_to_remove = load_names_to_remove(args.names_file) + print(f"Loaded {len(names_to_remove)} names to remove") + + if args.dry_run: + print("DRY RUN MODE - No files will be modified") + + # Process each source file + success_count = 0 + for source_file in args.source_files: + file_path = Path(source_file) + if not file_path.exists(): + print(f"Warning: File '{source_file}' not found, skipping") + continue + + if remove_defines_from_file(file_path, names_to_remove, args.dry_run): + success_count += 1 + + print(f"\nProcessed {success_count} out of {len(args.source_files)} files successfully") + +if __name__ == "__main__": + main() diff --git a/tools/define_usage_checker.py b/tools/define_usage_checker.py new file mode 100644 index 00000000000..002cb76e573 --- /dev/null +++ b/tools/define_usage_checker.py @@ -0,0 +1,196 @@ +#!/usr/bin/env python3 +""" +Program to check if #define names are used anywhere in C++ code files. +Use this to verify that defines are safe to remove. +""" + +import re +import argparse +import sys +from pathlib import Path +from collections import defaultdict + +def load_names_to_check(names_file): + """Load the list of names to check from the specified file.""" + try: + with open(names_file, 'r', encoding='utf-8') as f: + names = [line.strip() for line in f if line.strip()] + return names + except FileNotFoundError: + print(f"Error: Names file '{names_file}' not found.") + sys.exit(1) + except Exception as e: + print(f"Error reading names file: {e}") + sys.exit(1) + +def check_usage_in_file(file_path, names_to_check, exclude_defines=True): + """Check if any of the names are used in the given file.""" + try: + with open(file_path, 'r', encoding='utf-8', errors='ignore') as f: + content = f.read() + except Exception as e: + print(f"Error reading file '{file_path}': {e}") + return {} + + lines = content.splitlines() + usage_found = defaultdict(list) + + # Pattern to match #define statements (to potentially exclude them) + define_pattern = re.compile(r'^\s*#define\s+(\w+)') + + # Pre-compile regex patterns for better performance + name_patterns = {name: re.compile(r'\b' + re.escape(name) + r'\b') for name in names_to_check} + + for line_num, line in enumerate(lines, 1): + # Skip #define lines if exclude_defines is True + if exclude_defines and define_pattern.match(line): + continue + + # Skip comments (basic comment detection) + # Remove single-line comments + if '//' in line: + line = line.split('//')[0] + + # Skip lines that are mostly comments (basic /* */ detection) + if line.strip().startswith('/*') or line.strip().startswith('*'): + continue + + # Check each name using pre-compiled patterns + for name, pattern in name_patterns.items(): + if pattern.search(line): + usage_found[name].append({ + 'line_num': line_num, + 'line': line.strip(), + 'file': str(file_path) + }) + + return usage_found + +def find_cpp_files(directories, extensions=None): + """Find all C++ files in the given directories.""" + if extensions is None: + extensions = {'.cpp', '.cxx', '.cc', '.c', '.hpp', '.hxx', '.h', '.hh'} + + cpp_files = [] + for directory in directories: + dir_path = Path(directory) + if dir_path.is_file(): + if dir_path.suffix.lower() in extensions: + cpp_files.append(dir_path) + elif dir_path.is_dir(): + for ext in extensions: + cpp_files.extend(dir_path.rglob(f'*{ext}')) + else: + print(f"Warning: '{directory}' is not a valid file or directory") + + return cpp_files + +def main(): + parser = argparse.ArgumentParser( + description="Check if #define names are used anywhere in C++ code" + ) + parser.add_argument( + "names_file", + help="File containing names to check (one name per line)" + ) + parser.add_argument( + "paths", + nargs="+", + help="Files or directories to search (directories are searched recursively)" + ) + parser.add_argument( + "--include-defines", + action="store_true", + help="Include #define statements in the search (default: exclude them)" + ) + parser.add_argument( + "--extensions", + default=".cpp,.cxx,.cc,.c,.hpp,.hxx,.h,.hh", + help="Comma-separated list of file extensions to search (default: .cpp,.cxx,.cc,.c,.hpp,.hxx,.h,.hh)" + ) + parser.add_argument( + "--summary-only", + action="store_true", + help="Show only summary of used/unused names" + ) + + args = parser.parse_args() + + # Parse extensions + extensions = {ext.strip() for ext in args.extensions.split(',') if ext.strip()} + + # Load names to check + names_to_check = load_names_to_check(args.names_file) + print(f"Checking usage of {len(names_to_check)} names") + + # Find C++ files + cpp_files = find_cpp_files(args.paths, extensions) + print(f"Found {len(cpp_files)} C++ files to search") + + if not cpp_files: + print("No C++ files found to search!") + sys.exit(1) + + # Check usage in all files + all_usage = defaultdict(list) + files_processed = 0 + + for cpp_file in cpp_files: + usage = check_usage_in_file(cpp_file, names_to_check, exclude_defines=not args.include_defines) + files_processed += 1 + + for name, occurrences in usage.items(): + all_usage[name].extend(occurrences) + + # Progress indicator for large codebases + if files_processed % 100 == 0: + print(f"Processed {files_processed} files...") + + # Analyze results + used_names = set() + unused_names = set() + + for name in names_to_check: + if name in all_usage: + used_names.add(name) + else: + unused_names.add(name) + + # Display results + print(f"\n{'='*60}") + print("USAGE ANALYSIS RESULTS") + print(f"{'='*60}") + + if used_names: + print(f"\n❌ USED NAMES ({len(used_names)}) - DO NOT REMOVE:") + for name in sorted(used_names): + print(f" • {name}") + if not args.summary_only: + print(f" Used in {len(set(occ['file'] for occ in all_usage[name]))} file(s):") + for occurrence in all_usage[name][:5]: # Show first 5 occurrences + print(f" {occurrence['file']}:{occurrence['line_num']}: {occurrence['line']}") + if len(all_usage[name]) > 5: + print(f" ... and {len(all_usage[name]) - 5} more occurrences") + print() + + if unused_names: + print(f"\n✅ UNUSED NAMES ({len(unused_names)}) - SAFE TO REMOVE:") + for name in sorted(unused_names): + print(f" • {name}") + + # Summary + print(f"\n{'='*60}") + print("SUMMARY:") + print(f" Total names checked: {len(names_to_check)}") + print(f" Names in use: {len(used_names)}") + print(f" Names unused: {len(unused_names)}") + print(f" Files searched: {files_processed}") + + if used_names: + print(f"\n⚠️ WARNING: {len(used_names)} names are still in use!") + print(" Review the usage before removing these #define statements.") + else: + print(f"\n✅ All {len(names_to_check)} names appear to be unused and safe to remove.") + +if __name__ == "__main__": + main() diff --git a/tools/generate-hw-defs.sh b/tools/generate-hw-defs.sh index 9fc027acfbf..65d4dd7af1f 100755 --- a/tools/generate-hw-defs.sh +++ b/tools/generate-hw-defs.sh @@ -9,7 +9,7 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" : "${SRCDIR:=$(dirname "$(pwd)/$0")/..}" -: ${FLAVOR:="nv14;el18;pl18;pl18ev;nb4p;st16;t12;t12max;t15;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;bumblebee;t20;t20v2;t14;lr3pro;mt12;gx12;tx12;tx12mk2;boxer;tx16s;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v14;v12;tx15"} +: ${FLAVOR:="nv14;el18;pl18;pl18ev;pl18u;nb4p;st16;t12;t12max;t15;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;bumblebee;t20;t20v2;t14;lr3pro;mt12;gx12;tx12;tx12mk2;boxer;tx16s;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v16;v14;v12;pa01;tx15"} : ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"} # wipe build directory clean @@ -17,8 +17,6 @@ rm -rf build && mkdir -p build && cd build target_names=$(echo "$FLAVOR" | tr '[:upper:]' '[:lower:]' | tr ';' '\n') -TARGET_DIR="${SRCDIR}/radio/src/targets/hw_defs" - for target_name in $target_names do BUILD_OPTIONS=${COMMON_OPTIONS} @@ -35,8 +33,5 @@ do cmake --build . --target arm-none-eabi-configure cmake --build arm-none-eabi --target hardware_defs - mkdir -p ${TARGET_DIR} - mv arm-none-eabi/radio/src/*.json* ${TARGET_DIR} - rm -f CMakeCache.txt arm-none-eabi/CMakeCache.txt done