feat: Radiomaster GX15 support (#7643)

Co-authored-by: 3djc <3djc@gh.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: philmoz <phil.a.mitchell@gmail.com>
Co-authored-by: Peter Feerick <pfeerick@users.noreply.github.com>
This commit is contained in:
3djc
2026-08-19 09:51:59 +10:00
committed by GitHub
co-authored by 3djc Claude Opus 5 philmoz Peter Feerick
parent 423876b10b
commit 62ed67a462
28 changed files with 2601 additions and 15 deletions
+1
View File
@@ -134,6 +134,7 @@ body:
- RadioMaster T8
- RadioMaster TX12 / TX12MK2
- RadioMaster TX15
- RadioMaster GX15
- RadioMaster TX16S / TX16SMK2
- RadioMaster TX16S MK3
- RadioMaster Zorro
+2 -1
View File
@@ -87,7 +87,8 @@ jobs:
- tprov2;tpros;bumblebee
- mt12;gx12;t20;t20v2
- t12max;tx12mk2;boxer
- tx15;tx16s
- tx16s
- tx15;gx15
- x12s;f16
- v14;v14lcd;v16
- x10;x10express
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
- id: color-4
target: [nb4p, st16, pa01, c14]
- id: color-5
target: [t15pro, tx16smk3]
target: [t15pro, tx16smk3, gx15]
steps:
- name: Check out the repo
+1 -1
View File
@@ -38,7 +38,7 @@ jobs:
- nb4p
- st16
- c14
- tx15
- tx15;gx15
- t15pro
- v12
container:
+1 -1
View File
@@ -177,7 +177,7 @@ jobs:
> If you are using a STM32 F2 based radio, *stop right now*, this release is not for you! EdgeTX v2.11 is the last release series to support these radios. Check [this list](https://hackmd.io/@edgetx/B12oQyQKye) if you are unsure if this affects you. Because of this, EdgeTX v2.11 will continue to be supported alongside 2.12, 3.0, etc., with a focus on bug fixes.
> [!WARNING]
> Radios based on STM32H7 MCUs update differently to older radios. Do **not** use the "Flash via USB" option in EdgeTX Buddy with them (yet). To update radios such as the Flysky PA01 & ST16, Jumper T15 Pro, RM TX15 and RM TX16S MK3, please follow the instructions in the [EdgeTX Manual](https://manual.edgetx.org/installing-and-updating-edgetx/updating-your-stm32h7-radio).
> Radios based on STM32H7 MCUs update differently to older radios. Do **not** use the "Flash via USB" option in EdgeTX Buddy with them (yet). To update radios such as the Flysky PA01 & ST16, Jumper T15 Pro, RM TX15, RM GX15 and RM TX16S MK3, please follow the instructions in the [EdgeTX Manual](https://manual.edgetx.org/installing-and-updating-edgetx/updating-your-stm32h7-radio).
> [!NOTE]
> For MacOS users, Companion is now only compiled for MacOS 12 and above. Stay with v2.10.5 or earlier if you need support for an older version of MacOS.
+2 -2
View File
@@ -93,8 +93,8 @@ void BoardJson::afterLoadFixups(Board::Type board, InputsTable * inputs, Switche
// TODO json files do not contain gyro defs
// Radio cmake directive IMU is currently used
if (IS_TARANIS_XLITES(board) || IS_FAMILY_HORUS_OR_T16(board) ||
IS_RADIOMASTER_TX15(board) || IS_RADIOMASTER_TX16SMK3(board) ||
IS_FLYSKY_PA01(board)) {
IS_RADIOMASTER_TX15(board) || IS_RADIOMASTER_GX15(board) ||
IS_RADIOMASTER_TX16SMK3(board) || IS_FLYSKY_PA01(board)) {
if (getInputIndex(inputs, "TILT_X", Board::LVT_TAG) < 0) {
InputDefn defn;
defn.type = AIT_FLEX;
+9 -2
View File
@@ -137,6 +137,8 @@ uint32_t Boards::getFourCC(Type board)
return 0x3878746F;
case BOARD_RADIOMASTER_TX15:
return 0x4978746F;
case BOARD_RADIOMASTER_GX15:
return 0x4978746F;
case BOARD_RADIOMASTER_TX16SMK3:
return 0x4978746F;
case BOARD_RADIOMASTER_TX12:
@@ -293,6 +295,7 @@ int Boards::getFlashSize(Type board)
case BOARD_RADIOMASTER_TX16S:
case BOARD_RADIOMASTER_TX16SMK3:
case BOARD_RADIOMASTER_TX15:
case BOARD_RADIOMASTER_GX15:
case BOARD_FLYSKY_NV14:
case BOARD_FLYSKY_EL18:
case BOARD_FLYSKY_PA01: // 8MB SDRAM
@@ -355,7 +358,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
case HasIMU:
return (IS_FAMILY_HORUS_OR_T16(board) || IS_TARANIS(board) ||
IS_RADIOMASTER_TX15(board));
IS_RADIOMASTER_TX15(board) || IS_RADIOMASTER_GX15(board) || IS_RADIOMASTER_TX16SMK3(board));
case HasInternalGPS:
return ((IS_FAMILY_HORUS_OR_T16(board) && getCapability(board, HasAuxSerialMode)) ||
@@ -422,7 +425,7 @@ int Boards::getCapability(Board::Type board, Board::Capability capability)
IS_RADIOMASTER_ZORRO(board) || IS_RADIOMASTER_TX15(board) ||
IS_JUMPER_T15PRO(board) || IS_FLYSKY_PA01(board) ||
IS_FLYSKY_ST16(board) || IS_RADIOMASTER_TX16SMK3(board) ||
IS_IFLIGHT_C14(board));
IS_IFLIGHT_C14(board) || IS_RADIOMASTER_GX15(board));
default:
return getBoardJson(board)->getCapability(capability);
@@ -660,6 +663,8 @@ QString Boards::getBoardName(Board::Type board)
return "Radiomaster TX16 SMK3";
case BOARD_RADIOMASTER_TX15:
return "Radiomaster TX15";
case BOARD_RADIOMASTER_GX15:
return "Radiomaster GX15";
case BOARD_RADIOMASTER_ZORRO:
return "Radiomaster Zorro";
case BOARD_RADIOMASTER_GX12:
@@ -806,6 +811,7 @@ int Boards::getDefaultInternalModules(Board::Type board)
case BOARD_HELLORADIOSKY_V14LCD:
case BOARD_HELLORADIOSKY_V16:
case BOARD_RADIOMASTER_TX15:
case BOARD_RADIOMASTER_GX15:
case BOARD_RADIOMASTER_TX16SMK3:
case BOARD_IFLIGHT_COMMANDO8:
case BOARD_IFLIGHT_COMMANDO14:
@@ -881,6 +887,7 @@ void Boards::getBattRange(Board::Type board, int& vmin, int& vmax, unsigned int&
case BOARD_RADIOMASTER_TX16S:
case BOARD_RADIOMASTER_TX16SMK3:
case BOARD_RADIOMASTER_TX15:
case BOARD_RADIOMASTER_GX15:
case BOARD_JUMPER_T16:
case BOARD_JUMPER_T18:
case BOARD_JUMPER_T20:
+7
View File
@@ -68,6 +68,7 @@ namespace Board {
BOARD_RADIOMASTER_TX16S,
BOARD_RADIOMASTER_TX16SMK3,
BOARD_RADIOMASTER_TX15,
BOARD_RADIOMASTER_GX15,
BOARD_JUMPER_T18,
BOARD_JUMPER_T20,
BOARD_RADIOMASTER_TX12,
@@ -614,6 +615,11 @@ inline bool IS_RADIOMASTER_TX15(Board::Type board)
return board == Board::BOARD_RADIOMASTER_TX15;
}
inline bool IS_RADIOMASTER_GX15(Board::Type board)
{
return board == Board::BOARD_RADIOMASTER_GX15;
}
inline bool IS_RADIOMASTER_TX12(Board::Type board)
{
return board == Board::BOARD_RADIOMASTER_TX12;
@@ -689,6 +695,7 @@ inline bool IS_FAMILY_T16(Board::Type board)
board == Board::BOARD_JUMPER_T16 ||
board == Board::BOARD_JUMPER_T18 ||
board == Board::BOARD_RADIOMASTER_TX15 ||
board == Board::BOARD_RADIOMASTER_GX15 ||
board == Board::BOARD_RADIOMASTER_TX16S ||
board == Board::BOARD_RADIOMASTER_TX16SMK3;
}
@@ -215,6 +215,8 @@ void GeneralSettings::init()
strcpy(bluetoothName, "st16");
else if (IS_RADIOMASTER_TX15(board))
strcpy(bluetoothName, "tx15");
else if (IS_RADIOMASTER_GX15(board))
strcpy(bluetoothName, "gx15");
else if (IS_RADIOMASTER_TX16SMK3(board))
strcpy(bluetoothName, "tx16smk3");
else if (IS_FAMILY_HORUS_OR_T16(board))
@@ -93,7 +93,7 @@ int OpenTxFirmware::getCapability(::Capability capability)
return id.contains("internalelrs") || IS_RADIOMASTER_TX12_MK2(board) ||
IS_IFLIGHT_COMMANDO8(board) || IS_RADIOMASTER_BOXER(board) ||
IS_RADIOMASTER_POCKET(board) || IS_JUMPER_T20(board) ||
IS_RADIOMASTER_MT12(board) || IS_RADIOMASTER_TX15(board) || IS_JUMPER_T15PRO(board) || IS_JUMPER_T22(board);
IS_RADIOMASTER_MT12(board) || IS_RADIOMASTER_TX15(board) || IS_RADIOMASTER_GX15(board) || IS_JUMPER_T15PRO(board) || IS_JUMPER_T22(board);
case HasIntModuleFlySky:
return id.contains("afhds2a") || id.contains("afhds3") ||
IS_FLYSKY_NV14(board) || IS_FLYSKY_EL18(board) || IS_FAMILY_PL18(board);
@@ -735,6 +735,13 @@ void registerOpenTxFirmwares()
firmware->addOptionsGroup({opt_bt, opt_internal_gps});
registerOpenTxFirmware(firmware);
/* Radiomaster GX15 board */
firmware = new OpenTxFirmware(FIRMWAREID("gx15"), Firmware::tr("Radiomaster GX15"), BOARD_RADIOMASTER_GX15);
addOpenTxFrskyOptions(firmware);
addOpenTxRfOptions(firmware, FLEX);
firmware->addOptionsGroup({opt_bt, opt_internal_gps});
registerOpenTxFirmware(firmware);
/* Radiomaster TX16S board */
firmware = new OpenTxFirmware(FIRMWAREID("tx16s"), Firmware::tr("Radiomaster TX16S / SE / Hall / Masterfire"), BOARD_RADIOMASTER_TX16S);
addOpenTxFrskyOptions(firmware);
+1
View File
@@ -36,6 +36,7 @@
["Jumper T-Pro V2", "tprov2-"],
["RadioMaster Boxer", "boxer-"],
["RadioMaster GX12", "gx12-"],
["RadioMaster GX15", "gx15-"],
["RadioMaster MT12","mt12-"],
["RadioMaster Pocket", "pocket-"],
["RadioMaster TX12MK2", "tx12mk2-"],
+3 -1
View File
@@ -1,7 +1,7 @@
include(CMakeForceCompiler)
include(Bitmaps)
set(PCB_TYPES X9LITE X9LITES X7 XLITE XLITES X9D X9D+ X9E X10 X12S PL18 T15PRO ST16 PA01 TX15 TX16SMK3 T22 V12)
set(PCB_TYPES X9LITE X9LITES X7 XLITE XLITES X9D X9D+ X9E X10 X12S PL18 T15PRO ST16 PA01 TX15 GX15 TX16SMK3 T22 V12)
set(RADIO_LANGUAGES CN CZ DA DE EN ES FI FR HE HU IT JP KO NL PL PT RU SE SK TW UA)
set(TTS_LANGUAGES CN CZ DA DE EN ES FI FR HE HU IT JP KO NL PL PT RU SE SK TW UA)
@@ -103,6 +103,8 @@ elseif(PCB STREQUAL V12)
include(targets/v12/CMakeLists.txt)
elseif(PCB STREQUAL TX15)
include(targets/tx15/CMakeLists.txt)
elseif(PCB STREQUAL GX15)
include(targets/gx15/CMakeLists.txt)
elseif(PCB STREQUAL TX16SMK3)
include(targets/tx16smk3/CMakeLists.txt)
elseif(PCB STREQUAL T22)
+541
View File
@@ -0,0 +1,541 @@
{
"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_8CYCLES_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_CENTER"
},
{
"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_CENTER"
},
{
"name": "SL1",
"type": "FLEX",
"adc": "EXT",
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_2",
"channel": "LL_ADC_CHANNEL_13",
"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_19",
"label": "EXT1",
"short_label": "E1"
},
{
"name": "EXT2",
"type": "FLEX",
"adc": "EXT",
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_5",
"channel": "LL_ADC_CHANNEL_16",
"label": "EXT2",
"short_label": "E2"
},
{
"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": "3POS",
"flags": 0,
"inverted": false,
"default": "3POS",
"display": null,
"gpio_high": null,
"pin_high": "PCA95XX_P16",
"gpio_low": null,
"pin_low": "PCA95XX_P17",
"is_cfs": false
},
{
"name": "SF",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "2POS",
"display": null,
"gpio": null,
"pin": "PCA95XX_P1",
"is_cfs": false
},
{
"name": "SG",
"type": "3POS",
"flags": 0,
"inverted": false,
"default": "3POS",
"display": null,
"gpio_high": null,
"pin_high": "PCA95XX_P4",
"gpio_low": null,
"pin_low": "PCA95XX_P5",
"is_cfs": false
},
{
"name": "SH",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "TOGGLE",
"display": null,
"gpio": null,
"pin": "PCA95XX_P0",
"is_cfs": false
},
{
"name": "SI",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "NONE",
"display": null,
"gpio": null,
"pin": "PCA95XX_P2",
"is_cfs": false
},
{
"name": "SJ",
"type": "2POS",
"flags": 0,
"inverted": false,
"default": "NONE",
"display": null,
"gpio": null,
"pin": "PCA95XX_P3",
"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": "RTN"
},
{
"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"
},
{
"name": "T5",
"dec": {
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_15",
"active_low": true
},
"inc": {
"gpio": "GPIOH",
"pin": "LL_GPIO_PIN_13",
"active_low": true
},
"active_low": true
},
{
"name": "T6"
}
],
"display": {
"lcd_w": 480,
"lcd_h": 320,
"lcd_phys_w": 320,
"lcd_phys_h": 480,
"lcd_depth": 16,
"ltdc_irq_prio": 4,
"dma_screen_irq_prio": 6
},
"backlight": {
"backlight_gpio": "GPIO_PIN(GPIOA, 10)",
"backlight_timer": "TIM1",
"backlight_timer_channel": "LL_TIM_CHANNEL_CH3",
"backlight_gpio_af": "GPIO_AF1",
"backlight_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)"
},
"leds": {
"led_strip_length": 26,
"bling_led_strip_start": 6,
"bling_led_strip_length": 20,
"cfs_led_strip_start": 0,
"cfs_led_strip_length": 6,
"cfs_leds_per_switch": 1,
"led_strip_gpio": "GPIO_PIN(GPIOA, 0)",
"led_strip_gpio_af": "LL_GPIO_AF_1",
"led_strip_timer": "TIM2",
"led_strip_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)",
"led_strip_timer_channel": "LL_TIM_CHANNEL_CH1",
"led_strip_timer_dma": "DMA1",
"led_strip_timer_dma_channel": "LL_DMAMUX1_REQ_TIM2_UP",
"led_strip_timer_dma_stream": "LL_DMA_STREAM_0",
"led_strip_timer_dma_irqn": "DMA1_Stream0_IRQn",
"led_strip_timer_dma_irqhandler": "DMA1_Stream0_IRQHandler",
"led_strip_refresh_period": 50,
"status_leds": true,
"led_red_gpio": "GPIO_PIN(GPIOI, 8)",
"led_green_gpio": "GPIO_PIN(GPIOI, 11)",
"led_blue_gpio": "GPIO_PIN(GPIOI, 10)"
},
"hardware": {
"has_ext_module_support": true,
"has_int_module_support": true,
"cpu": "STM32H750xB",
"cpu_type": "STM32H7"
},
"timers": {
"cpu_freq": 480000000,
"peri1_frequency": 120000000,
"peri2_frequency": 120000000,
"timer_mult_apb1": 2,
"timer_mult_apb2": 2,
"ms_timer": "TIM14",
"ms_timer_irqn": "TIM8_TRG_COM_TIM14_IRQn",
"ms_timer_irqhandler": "TIM8_TRG_COM_TIM14_IRQHandler",
"mixer_scheduler_timer": "TIM12",
"mixer_scheduler_timer_freq": "(PERI1_FREQUENCY * TIMER_MULT_APB1)",
"mixer_scheduler_timer_irqn": "TIM8_BRK_TIM12_IRQn",
"mixer_scheduler_timer_irqhandler": "TIM8_BRK_TIM12_IRQHandler"
},
"imu": {
"imu_i2c_bus": "I2C_Bus_1",
"imu_i2c_address": "0x6A",
"imu_int_gpio": "GPIO_PIN(GPIOG, 13)",
"imu_invert_x": true,
"imu_invert_y": true,
"exti": [
{
"irq": "EXTI15_10_IRQ",
"priority": 6
}
]
},
"rotenc": {
"rotary_encoder_gpio_a": "GPIOI",
"rotary_encoder_gpio_pin_a": "LL_GPIO_PIN_7",
"rotary_encoder_gpio_b": "GPIOJ",
"rotary_encoder_gpio_pin_b": "LL_GPIO_PIN_8",
"rotary_encoder_position": "(((ROTARY_ENCODER_GPIO_A->IDR >> 7) & 0x01)|((ROTARY_ENCODER_GPIO_B->IDR >> 7) & 0x02))",
"rotary_encoder_exti_line1": "LL_EXTI_LINE_7",
"rotary_encoder_exti_line2": "LL_EXTI_LINE_8",
"exti": [
{
"irq": "EXTI7_IRQ",
"priority": 5
},
{
"irq": "EXTI8_IRQ",
"priority": 5
}
],
"rotary_encoder_exti_port_a": "LL_SYSCFG_EXTI_PORTI",
"rotary_encoder_exti_port_b": "LL_SYSCFG_EXTI_PORTJ",
"rotary_encoder_exti_sys_line1": "LL_SYSCFG_EXTI_LINE7",
"rotary_encoder_exti_sys_line2": "LL_SYSCFG_EXTI_LINE8",
"rotary_encoder_timer": "TIM17",
"rotary_encoder_timer_irqn": "TIM17_IRQn",
"rotary_encoder_timer_irqhandler": "TIM17_IRQHandler"
},
"haptic": {
"haptic_pwm": true,
"haptic_gpio": "GPIO_PIN(GPIOC, 7)",
"haptic_gpio_timer": "TIM3",
"haptic_gpio_af": "GPIO_AF2",
"haptic_timer_output_enable": "TIM_CCER_CC2E | TIM_CCER_CC2NE",
"haptic_timer_mode": "TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE",
"haptic_timer_compare_value": "HAPTIC_GPIO_TIMER->CCR2"
},
"key_lock_combo": [
"KEY_SYS",
"KEY_MODEL"
]
}
@@ -36,5 +36,9 @@ void usbChargerInit()
bool usbChargerLed()
{
#if defined UCHARGER_INVERTED
return (!gpio_read(UCHARGER_GPIO) && usbPlugged());
#else
return (gpio_read(UCHARGER_GPIO) && usbPlugged());
#endif
}
+2 -2
View File
@@ -78,7 +78,7 @@ static inline void check_struct()
#if defined(PCBXLITES)
CHKSIZE(RadioData, 951);
#elif defined(RADIO_ST16) || defined(PCBPA01) || defined(RADIO_TX15) || defined(RADIO_T15PRO) || defined(RADIO_TX16SMK3) || defined(RADIO_T22)
#elif defined(RADIO_ST16) || defined(PCBPA01) || defined(RADIO_TX15) || defined(RADIO_GX15) || defined(RADIO_T15PRO) || defined(RADIO_TX16SMK3) || defined(RADIO_T22)
CHKSIZE(RadioData, 1183);
#elif defined(RADIO_V12)
CHKSIZE(RadioData, 1180);
@@ -112,7 +112,7 @@ static inline void check_struct()
#else
CHKSIZE(ModelData, 6877);
#endif
#elif defined(PCBST16) || defined(RADIO_T15PRO) || defined(RADIO_TX15)
#elif defined(PCBST16) || defined(RADIO_T15PRO) || defined(RADIO_TX15) || defined(RADIO_GX15)
CHKSIZE(ModelData, 7641);
#elif defined(RADIO_V12)
CHKSIZE(ModelData, 7640);
+1 -1
View File
@@ -422,7 +422,7 @@ void generalDefault()
#if defined(MANUFACTURER_RADIOMASTER)
g_eeGeneral.audioMuteEnable = 1;
#if defined(RADIO_TX15)
#if defined(RADIO_TX15) || defined(RADIO_GX15)
g_eeGeneral.backlightBright = 50; // Screen looks off if not set high enough
#endif
#endif
+2
View File
@@ -46,6 +46,8 @@ elseif(PCB STREQUAL PA01)
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_pa01.cpp)
elseif(PCB STREQUAL TX15)
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_tx15.cpp)
elseif(PCB STREQUAL GX15)
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_gx15.cpp)
elseif(PCB STREQUAL TX16SMK3)
set(YAML_GEN_OUTPUT storage/yaml/yaml_datastructs_tx16smk3.cpp)
elseif(PCB STREQUAL X7)
@@ -38,6 +38,8 @@
#endif
#elif defined(PCBTX15)
#include "yaml_datastructs_tx15.cpp"
#elif defined(PCBGX15)
#include "yaml_datastructs_gx15.cpp"
#elif defined(PCBT15)
#include "yaml_datastructs_t15pro.cpp"
#elif defined(PCBTX16SMK3)
File diff suppressed because it is too large Load Diff
+199
View File
@@ -0,0 +1,199 @@
option(UNEXPECTED_SHUTDOWN "Enable the Unexpected Shutdown screen" ON)
option(PXX1 "PXX1 protocol support" ON)
option(PXX2 "PXX2 protocol support" OFF)
option(AFHDS3 "AFHDS3 TX Module" ON)
option(MULTIMODULE "DIY Multiprotocol TX Module (https://github.com/pascallanger/DIY-Multiprotocol-TX-Module)" ON)
option(GHOST "Ghost TX Module" ON)
option(MODULE_SIZE_STD "Standard size TX Module" ON)
option(LUA_MIXER "Enable LUA mixer/model scripts support" ON)
option(DISK_CACHE "Enable SD card disk cache" ON)
set(FIRMWARE_QSPI YES)
set(FIRMWARE_FORMAT_UF2 YES)
set(PWR_BUTTON "PRESS" CACHE STRING "Pwr button type (PRESS/SWITCH)")
set(CPU_TYPE STM32H7)
set(HSE_VALUE 48000000)
set(SDCARD YES)
set(STORAGE_MODELSLIST YES)
set(HAPTIC YES)
set(GUI_DIR colorlcd)
set(BITMAPS_DIR 480x272)
set(TARGET_DIR gx15)
set(RTC_BACKUP_RAM YES)
set(PPM_LIMITS_SYMETRICAL YES)
set(USB_SERIAL ON CACHE BOOL "Enable USB serial (CDC)")
set(HARDWARE_EXTERNAL_MODULE YES)
set(INTERNAL_MODULE_AFHDS3 NO)
set(ROTARY_ENCODER YES)
set(FUNCTION_SWITCHES_WITH_RGB YES)
#option(STICKS_DEAD_ZONE "Enable sticks dead zone" YES)
# IMU support
set(IMU ON)
add_definitions(-DIMU_ICM4207C)
add_definitions(-DIMU_SC7U22)
# for size report script
set(CPU_TYPE_FULL STM32H750xB)
set(TARGET_LINKER_DIR stm32h750_sdram)
set(TARGET_EXTRAM_START 0xD0000000)
set(SIZE_TARGET_MEM_DEFINE "MEM_SIZE_SDRAM1=8192")
set(FIRMWARE_STRIP_BOOTLOADER YES)
add_definitions(-DPCBGX15 -DPCBHORUS)
add_definitions(-DBATTERY_CHARGE)
add_definitions(-DSTM32_SUPPORT_32BIT_TIMERS)
add_definitions(-DFIRMWARE_QSPI)
add_definitions(-DFIRMWARE_FORMAT_UF2)
add_definitions(-DUSE_CUSTOM_EXTI_IRQ)
add_definitions(-DUSB_CHARGER)
set(FLAVOUR gx15)
add_definitions(-DRADIO_GX15)
add_definitions(-DMANUFACTURER_RADIOMASTER)
# defines existing internal modules
set(INTERNAL_MODULES CRSF CACHE STRING "Internal modules")
set(DEFAULT_INTERNAL_MODULE CROSSFIRE CACHE STRING "Default internal module")
set(BITMAPS_TARGET bm480_bitmaps)
set(FONTS_TARGET x12_fonts)
set(LCD_DRIVER lcd_driver.cpp)
set(HARDWARE_TOUCH YES)
set(RADIO_DEPENDENCIES ${RADIO_DEPENDENCIES} ${BITMAPS_TARGET})
set(FIRMWARE_DEPENDENCIES datacopy)
set(SOFTWARE_KEYBOARD ON)
set(FUNCTION_SWITCHES ON)
set(USB_CHARGER YES)
set(AUX_SERIAL YES)
set(AUX2_SERIAL YES)
add_definitions(
-DSTM32H750XBTx -DSTM32H750xx
-DSDRAM -DCCMRAM
-DHARDWARE_TOUCH -DHARDWARE_KEYS -DSOFTWARE_KEYBOARD
-DWS2812_MAX_LEDS=26
)
set(SDRAM ON)
add_definitions(-DRTCLOCK)
add_definitions(-DPWR_BUTTON_${PWR_BUTTON})
add_definitions(-DGPS_USART_BAUDRATE=${INTERNAL_GPS_BAUDRATE})
if(STICKS_DEAD_ZONE)
add_definitions(-DSTICK_DEAD_ZONE)
endif()
if(NOT UNEXPECTED_SHUTDOWN)
add_definitions(-DNO_UNEXPECTED_SHUTDOWN)
endif()
if(DISK_CACHE)
set(SRC ${SRC} disk_cache.cpp)
add_definitions(-DDISK_CACHE)
endif()
if(FUNCTION_SWITCHES_WITH_RGB)
set(FUNCTION_SWITCHES YES)
add_definitions(-DFUNCTION_SWITCHES)
add_definitions(-DFUNCTION_SWITCHES_RGB_LEDS)
endif()
if(FUNCTION_SWITCHES)
add_definitions(-DFUNCTION_SWITCHES)
endif()
set(AFHDS3 ON)
# VCP CLI
set(ENABLE_SERIAL_PASSTHROUGH ON CACHE BOOL "Enable serial passthrough")
set(CLI ON CACHE BOOL "Enable CLI")
set(BOARD rm-h750)
include_directories(boards/${BOARD})
set(TARGET_SRC_DIR targets/${TARGET_DIR})
set(BOARD_SRC_DIR boards/${BOARD})
set(BOARD_COMMON_SRC
${BOARD_SRC_DIR}/board.cpp
${BOARD_SRC_DIR}/bsp_io.cpp
${BOARD_SRC_DIR}/lcd_driver_480.cpp
${BOARD_SRC_DIR}/backlight_driver.cpp
${BOARD_SRC_DIR}/haptic_driver.cpp
${BOARD_SRC_DIR}/extflash_driver.cpp
${BOARD_SRC_DIR}/usb_charger_driver.cpp
${TARGET_SRC_DIR}/key_driver.cpp
targets/common/arm/stm32/abnormal_reboot.cpp
targets/common/arm/stm32/delays_driver.cpp
targets/common/arm/stm32/dma2d.cpp
targets/common/arm/stm32/flash_driver.cpp
targets/common/arm/stm32/pwr_driver.cpp
targets/common/arm/stm32/rotary_encoder_driver.cpp
targets/common/arm/stm32/rtc_driver.cpp
targets/common/arm/stm32/watchdog_driver.cpp
drivers/pca95xx.cpp
)
# Bootloader board library
add_library(board_bl OBJECT EXCLUDE_FROM_ALL
${BOARD_COMMON_SRC}
${BOARD_SRC_DIR}/sdram_driver.cpp
${RADIO_SRC_DIR}/gui/colorlcd/boot_menu.cpp
targets/common/arm/stm32/stm32_qspi.cpp
targets/common/arm/stm32/stm32_pulse_driver.cpp
)
add_dependencies(board_bl minimal_board_lib)
set(BOOTLOADER_SRC ${BOOTLOADER_SRC} $<TARGET_OBJECTS:board_bl>)
set(CMSIS_SRC ${BOARD_SRC_DIR}/system_clock.c)
# Firmware board library
add_library(board OBJECT EXCLUDE_FROM_ALL
${BOARD_COMMON_SRC}
${BOARD_SRC_DIR}/tp_gt911.cpp
${BOARD_SRC_DIR}/audio_driver.cpp
drivers/icm42607C.cpp
drivers/sc7u22.cpp
drivers/tas2505.cpp
targets/common/arm/stm32/heartbeat_driver.cpp
targets/common/arm/stm32/mixer_scheduler_driver.cpp
targets/common/arm/stm32/module_timer_driver.cpp
targets/common/arm/stm32/stm32_pulse_driver.cpp
targets/common/arm/stm32/stm32_softserial_driver.cpp
targets/common/arm/stm32/stm32_qspi.cpp
targets/common/arm/stm32/stm32_i2s.cpp
targets/common/arm/stm32/stm32_switch_driver.cpp
targets/common/arm/stm32/stm32_rgbleds.cpp
targets/common/arm/stm32/trainer_driver.cpp
)
add_dependencies(board board_lib)
set(FIRMWARE_SRC ${FIRMWARE_SRC} $<TARGET_OBJECTS:board>)
include_directories(${RADIO_SRC_DIR}/fonts/colorlcd gui/${GUI_DIR} gui/${GUI_DIR}/layouts)
if(BOOTLOADER)
set(FIRMWARE_TARGET_SRC
${FIRMWARE_TARGET_SRC}
../../bootloader/loadboot.cpp
)
endif()
set(SRC
${SRC}
io/frsky_firmware_update.cpp
io/multi_firmware_update.cpp
)
if (MULTIMODULE)
add_definitions(-DMULTI_PROTOLIST)
set(SRC ${SRC}
io/multi_protolist.cpp
)
endif()
# Make malloc() thread-safe
add_definitions(-DTHREADSAFE_MALLOC)
+54
View File
@@ -0,0 +1,54 @@
/*
* Copyright (C) EdgeTx
*
* Based on code named
* opentx - https://github.com/opentx/opentx
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#pragma once
#include "drivers/pca95xx.h"
#include "hal/switch_driver.h"
#define IO_EXPANDER_I2C_BUS I2C_Bus_2
#define IO_EXPANDER1_I2C_ADDR 0x74
#define IO_EXPANDER2_I2C_ADDR 0x75
// Port expander 2
#define BSP_TR6U PCA95XX_PIN_7
#define BSP_TR6D PCA95XX_PIN_6
#define BSP_TR4R PCA95XX_PIN_8
#define BSP_TR4L PCA95XX_PIN_9
#define BSP_TR2D PCA95XX_PIN_10
#define BSP_TR2U PCA95XX_PIN_11
#define BSP_TR1D PCA95XX_PIN_12
#define BSP_TR1U PCA95XX_PIN_13
#define BSP_TR3R PCA95XX_PIN_14
#define BSP_TR3L PCA95XX_PIN_15
extern uint8_t isSwitch3Pos(uint8_t idx);
int bsp_io_init();
uint32_t bsp_io_read_switches();
uint32_t bsp_io_read_fs_switches();
uint32_t bsp_get_fs_switches();
uint16_t bsp_input_get();
struct stm32_switch_t;
constexpr uint32_t IO_EXPANDER1_MASK = 0xFFFF;
constexpr uint32_t IO_EXPANDER2_MASK = 0xFFFF;
+511
View File
@@ -0,0 +1,511 @@
/*
* Copyright (C) EdgeTX
*
* Based on code named
* opentx - https://github.com/opentx/opentx
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
/*
STM32H750
SDMMC uses own DMA controler
DMA1
Stream0: LED_STRIP_TIMER_DMA_STREAM
Stream1: INTMODULE_DMA_STREAM
Stream2: FLYSKY_HALL_DMA_Stream_RX
Stream3: TELEMETRY_DMA_Stream_RX
Stream4: I2S_DMA_Stream
Stream5: INTMODULE_RX_DMA_STREAM
Stream6: AUX2_SERIAL_DMA_RX_STREAM
Stream7: TELEMETRY_DMA_Stream_TX
DMA2
Stream0: ADC_EXT_DMA_STREAM (do not move)
Stream1: AUX_SERIAL_DMA_TX_STREAM
Stream2: AUX_SERIAL_DMA_RX_STREAM
Stream3: EXTMODULE_TIMER_DMA_STREAM
Stream4: ADC_DMA_STREAM (do not move)
Stream5: EXTMODULE_USART_RX_DMA_STREAM
Stream6: EXTMODULE_USART_TX_DMA_STREAM
Stream7: AUX2_SERIAL_DMA_TX_STREAM
TIM1: BACKLIGHT_TIMER
TIM2: LED_STRIP_TIMER
TIM3: HAPTIC_GPIO_TIMER
TIM4:
TIM5: EXTMODULE_TIMER
TIM7:
TIM8: TRAINER_TIMER
TIM12: MIXER_SCHEDULER_TIMER
TIM14: MS_TIMER
TIM15: PDM
TIM16:
TIM17: ROTARY_ENCODER_TIMER
*/
#ifndef _HAL_H_
#define _HAL_H_
#include "hal_settings.h"
// 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
#define TRIMS_GPIO_REG_RSD
#define TRIMS_GPIO_PIN_RSD
#define TRIMS_GPIO_REG_RSU
#define TRIMS_GPIO_PIN_RSU
#define TRIMS_GPIO_REG_LSD GPIOH
#define TRIMS_GPIO_PIN_LSD LL_GPIO_PIN_15
#define TRIMS_GPIO_REG_LSU GPIOH
#define TRIMS_GPIO_PIN_LSU LL_GPIO_PIN_13
// function switches
//SW1
#define SWITCHES_GPIO_REG_K
#define SWITCHES_GPIO_PIN_K PCA95XX_P0
#define SWITCHES_K_CFS_IDX 0
#define FUNCTION_SWITCH_1 SK
//SW2
#define SWITCHES_GPIO_REG_L
#define SWITCHES_GPIO_PIN_L PCA95XX_P1
#define SWITCHES_L_CFS_IDX 1
#define FUNCTION_SWITCH_2 SL
//SW3
#define SWITCHES_GPIO_REG_M
#define SWITCHES_GPIO_PIN_M PCA95XX_P2
#define SWITCHES_M_CFS_IDX 2
#define FUNCTION_SWITCH_3 SM
//SW4
#define SWITCHES_GPIO_REG_N
#define SWITCHES_GPIO_PIN_N PCA95XX_P3
#define SWITCHES_N_CFS_IDX 3
#define FUNCTION_SWITCH_4 SN
//SW5
#define SWITCHES_GPIO_REG_O
#define SWITCHES_GPIO_PIN_O PCA95XX_P4
#define SWITCHES_O_CFS_IDX 4
#define FUNCTION_SWITCH_5 SO
//SW6
#define SWITCHES_GPIO_REG_P
#define SWITCHES_GPIO_PIN_P PCA95XX_P5
#define SWITCHES_P_CFS_IDX 5
#define FUNCTION_SWITCH_6 SP
// 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_3POS
#define SWITCHES_GPIO_REG_E_H
#define SWITCHES_GPIO_PIN_E_H PCA95XX_P16
#define SWITCHES_GPIO_REG_E_L
#define SWITCHES_GPIO_PIN_E_L PCA95XX_P17
#define SWITCHES_F_2POS
#define SWITCHES_GPIO_REG_F
#define SWITCHES_GPIO_PIN_F PCA95XX_P1
#define SWITCHES_G_3POS
#define SWITCHES_GPIO_REG_G_H
#define SWITCHES_GPIO_PIN_G_H PCA95XX_P4
#define SWITCHES_GPIO_REG_G_L
#define SWITCHES_GPIO_PIN_G_L PCA95XX_P5
#define SWITCHES_H_2POS
#define SWITCHES_GPIO_REG_H
#define SWITCHES_GPIO_PIN_H PCA95XX_P0
#define SWITCHES_I_2POS
#define SWITCHES_GPIO_REG_I
#define SWITCHES_GPIO_PIN_I PCA95XX_P2
#define SWITCHES_J_2POS
#define SWITCHES_GPIO_REG_J
#define SWITCHES_GPIO_PIN_J PCA95XX_P3
//MEMS
#define PDM_DATA GPIO_PIN(GPIOD,4)
#define PDM_CLK GPIO_PIN(GPIOD, 13)
// Expanders
#define IO_INT_GPIO GPIO_PIN(GPIOB, 3)
#define IO_RESET_GPIO GPIO_PIN(GPIOG, 10)
#if !defined(USE_EXTI3_IRQ)
#define USE_EXTI3_IRQ
#define EXTI3_IRQ_Priority 9
#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_GPIO_PIN_SLIDER1 LL_GPIO_PIN_2 // PH.02 VRC/LS
#define ADC_GPIO_PIN_SLIDER2 LL_GPIO_PIN_5 // PA.05 VRD/RS
#define ADC_GPIO_PIN_EXT1 LL_GPIO_PIN_5 // PA.05,ADC1_CH19
#define ADC_GPIO_PIN_EXT2 LL_GPIO_PIN_5 // PH.05,ADC3_CH16
#define ADC_GPIOA_PINS (ADC_GPIO_PIN_STICK_LH | ADC_GPIO_PIN_SLIDER2|ADC_GPIO_PIN_EXT1)
#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 | ADC_GPIO_PIN_SLIDER1|ADC_GPIO_PIN_EXT2)
#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_CHANNEL_SLIDER1 LL_ADC_CHANNEL_13 // ADC3_INP13
#define ADC_CHANNEL_SLIDER2 LL_ADC_CHANNEL_19 // ADC12_INP19
#define ADC_CHANNEL_EXT1 LL_ADC_CHANNEL_19 // ADC1_IN19
#define ADC_CHANNEL_EXT2 LL_ADC_CHANNEL_16 // ADC3_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_SLIDER1, ADC_CHANNEL_BATT , ADC_CHANNEL_RTC_BAT,ADC_CHANNEL_EXT2 }
#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_8CYCLES_5
#define ADC_VREF_PREC2 330
#define ADC_DIRECTION { \
0,-1,0,-1, /* gimbals */ \
-1,-1, /* pots */ \
0,-1, /* sliders */ \
0,0, /* ext */ \
0, /* vbat */ \
0, /* rtc_bat */ \
0 /* lux sensor */ \
}
#define USE_EXTI9_5_IRQ // used for I2C port extender interrupt
#define EXTI9_5_IRQ_Priority 5
// Power
#define PWR_SWITCH_GPIO GPIO_PIN(GPIOA, 4)
#define PWR_ON_GPIO GPIO_PIN(GPIOH, 12)
// Chargers (USB and wireless)
#define UCHARGER_GPIO GPIO_PIN(GPIOD, 11)
#define UCHARGER_EN_GPIO GPIO_PIN(GPIOB, 12)
#define UCHARGER_INVERTED (true)
// S.Port update connector
#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
// Software IRQ (Prio 5 -> FreeRTOS compatible)
#define TELEMETRY_USE_CUSTOM_EXTI
#define CUSTOM_EXTI_IRQ_NAME ETH_WKUP_IRQ
#define ETH_WKUP_IRQ_Priority 5
#define CUSTOM_EXTI_IRQ_LINE 86
#define TELEMETRY_RX_FRAME_EXTI_LINE CUSTOM_EXTI_IRQ_LINE
// USB
#define USB_GPIO GPIOA
#define USB_GPIO_VBUS GPIO_PIN(GPIOH, 11)
#define USB_GPIO_DM GPIO_PIN(GPIOA, 11)
#define USB_GPIO_DP GPIO_PIN(GPIOA, 12)
#define USB_GPIO_AF GPIO_AF10
// LCD
#define LCD_SPI_CS_GPIO GPIOD
#define LCD_SPI_CS_GPIO_PIN LL_GPIO_PIN_5
#define LCD_SPI_SCK_GPIO GPIOB
#define LCD_SPI_SCK_GPIO_PIN LL_GPIO_PIN_0
#define LCD_SPI_MOSI_GPIO GPIOI
#define LCD_SPI_MOSI_GPIO_PIN LL_GPIO_PIN_9
#define LCD_RESET_GPIO GPIOJ
#define LCD_RESET_GPIO_PIN LL_GPIO_PIN_12
#define LCD_TE_GPIO GPIOI
#define LCD_TE_GPIO_PIN LL_GPIO_PIN_4
// QSPI Flash
#define QSPI_CLK_GPIO GPIO_PIN(GPIOF, 10)
#define QSPI_CLK_GPIO_AF GPIO_AF9
#define QSPI_CS_GPIO GPIO_PIN(GPIOG, 6)
#define QSPI_CS_GPIO_AF GPIO_AF10
#define QSPI_MISO_GPIO GPIO_PIN(GPIOF, 9)
#define QSPI_MISO_GPIO_AF GPIO_AF10
#define QSPI_MOSI_GPIO GPIO_PIN(GPIOF, 8)
#define QSPI_MOSI_GPIO_AF GPIO_AF10
#define QSPI_WP_GPIO GPIO_PIN(GPIOF, 7)
#define QSPI_WP_GPIO_AF GPIO_AF9
#define QSPI_HOLD_GPIO GPIO_PIN(GPIOF, 6)
#define QSPI_HOLD_GPIO_AF GPIO_AF9
#define QSPI_FLASH_SIZE 0x1000000
// SD
#define SD_SDIO SDMMC1
#define SD_SDIO_CLK_DIV(fq) (HAL_RCCEx_GetPeriphCLKFreq(RCC_PERIPHCLK_SDMMC) / (2 * fq))
#define SD_SDIO_TRANSFER_CLK_DIV SD_SDIO_CLK_DIV(24000000) // Hz
#define SD2_PRESENT_GPIO GPIO_PIN(GPIOH, 8) // PH.08
#define SD2_SDIO SDMMC2
#define SD2_SDIO_PIN_D0 GPIO_PIN(GPIOB, 14)
#define SD2_SDIO_AF_D0 GPIO_AF9
#define SD2_SDIO_PIN_D1 GPIO_PIN(GPIOB, 15)
#define SD2_SDIO_AF_D1 GPIO_AF9
#define SD2_SDIO_PIN_D2 GPIO_PIN(GPIOG, 11)
#define SD2_SDIO_AF_D2 GPIO_AF10
#define SD2_SDIO_PIN_D3 GPIO_PIN(GPIOB, 4)
#define SD2_SDIO_AF_D3 GPIO_AF9
#define SD2_SDIO_PIN_CLK GPIO_PIN(GPIOD, 6)
#define SD2_SDIO_AF_CLK GPIO_AF11
#define SD2_SDIO_PIN_CMD GPIO_PIN(GPIOD, 7)
#define SD2_SDIO_AF_CMD GPIO_AF11
#define SD2_SDIO_TRANSFER_CLK_DIV SD_SDIO_CLK_DIV(24000000) // Hz
#define STORAGE_USE_SDIO
// AUDIO
#define AUDIO_I2C I2C_Bus_1
#define AUDIO_SPI SPI2
#define AUDIO_RESET_PIN GPIO_PIN(GPIOH, 10)
#define AUDIO_HP_DETECT_PIN GPIO_PIN(GPIOH, 14)
#undef VOLUME_LEVEL_MAX
#define VOLUME_LEVEL_MAX 20
#define I2S_DMA DMA1
#define I2S_DMA_Stream LL_DMA_STREAM_4
#define I2S_DMA_Stream_Request LL_DMAMUX1_REQ_SPI2_TX
#define I2S_DMA_Stream_IRQn DMA1_Stream4_IRQn
#define I2S_DMA_Stream_IRQHandler DMA1_Stream4_IRQHandler
// I2C Bus
#define I2C_B1 I2C4
#define I2C_B1_SDA_GPIO GPIO_PIN(GPIOD, 13) // PD.13
#define I2C_B1_SCL_GPIO GPIO_PIN(GPIOD, 12) // PD.12
#define I2C_B1_GPIO_AF LL_GPIO_AF_4
#define I2C_B1_CLK_RATE 400000
#define I2C_B2 I2C1
#define I2C_B2_SDA_GPIO GPIO_PIN(GPIOB, 9) // PB.09
#define I2C_B2_SCL_GPIO GPIO_PIN(GPIOB, 8) // PB.08
#define I2C_B2_GPIO_AF LL_GPIO_AF_4
#define I2C_B2_CLK_RATE 400000
#define GPIO_LED_GPIO_ON gpio_set
#define GPIO_LED_GPIO_OFF gpio_clear
// Internal Module
#define INTMODULE_PWR_GPIO GPIO_PIN(GPIOB, 13) // PB.13
#define INTMODULE_BOOTCMD_GPIO GPIO_PIN(GPIOH, 9) // PH.09
#define INTMODULE_BOOTCMD_DEFAULT 0
#define INTMODULE_TX_GPIO GPIO_PIN(GPIOG, 14)
#define INTMODULE_RX_GPIO GPIO_PIN(GPIOG, 9)
#define INTMODULE_USART USART6
#define INTMODULE_GPIO_AF LL_GPIO_AF_7
#define INTMODULE_USART_IRQn USART6_IRQn
#define INTMODULE_USART_IRQHandler USART6_IRQHandler
#define INTMODULE_DMA DMA1
#define INTMODULE_DMA_STREAM LL_DMA_STREAM_1
#define INTMODULE_DMA_STREAM_IRQ DMA1_Stream1_IRQn
#define INTMODULE_DMA_FLAG_TC DMA_FLAG_TCIF1
#define INTMODULE_DMA_CHANNEL LL_DMAMUX1_REQ_USART6_TX
#define INTMODULE_RX_DMA DMA1
#define INTMODULE_RX_DMA_STREAM LL_DMA_STREAM_5
#define INTMODULE_RX_DMA_CHANNEL LL_DMAMUX1_REQ_USART6_RX
#define INTMODULE_RX_DMA_Stream_IRQn DMA1_Stream5_IRQn
#define INTMODULE_RX_DMA_Stream_IRQHandler DMA1_Stream5_IRQHandler
// External Module
#define EXTMODULE
#define EXTMODULE_PULSES
#define EXTMODULE_PWR_GPIO GPIO_PIN(GPIOD, 4) // PD.04
#define EXTMODULE_TX_GPIO GPIO_PIN(GPIOA, 2) // TIM2_CH3, TIM5_CH3,TIM15_CH1,
#define EXTMODULE_RX_GPIO GPIO_PIN(GPIOA, 3)
#define EXTMODULE_TX_GPIO_AF LL_GPIO_AF_3 // TIM5_CH3
#define EXTMODULE_TIMER TIM5
#define EXTMODULE_TIMER_32BITS
#define EXTMODULE_TIMER_Channel LL_TIM_CHANNEL_CH3
#define EXTMODULE_TIMER_IRQn TIM5_IRQn
#define EXTMODULE_TIMER_IRQHandler TIM5_IRQHandler
#define EXTMODULE_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
#define EXTMODULE_TIMER_TX_GPIO_AF LL_GPIO_AF_2
//USART
#define EXTMODULE_USART USART2
#define EXTMODULE_USART_TX_DMA DMA2
#define EXTMODULE_USART_TX_DMA_CHANNEL LL_DMAMUX1_REQ_USART2_TX
#define EXTMODULE_USART_TX_DMA_STREAM LL_DMA_STREAM_6
#define EXTMODULE_USART_RX_DMA_CHANNEL LL_DMAMUX1_REQ_USART2_RX
#define EXTMODULE_USART_RX_DMA_STREAM LL_DMA_STREAM_5
#define EXTMODULE_USART_IRQHandler USART2_IRQHandler
#define EXTMODULE_USART_IRQn USART2_IRQn
//TIMER
#define EXTMODULE_TIMER_DMA_CHANNEL LL_DMAMUX1_REQ_TIM5_UP
#define EXTMODULE_TIMER_DMA DMA2
#define EXTMODULE_TIMER_DMA_STREAM LL_DMA_STREAM_6
#define EXTMODULE_TIMER_DMA_STREAM_IRQn DMA2_Stream6_IRQn
#define EXTMODULE_TIMER_DMA_IRQHandler DMA2_Stream6_IRQHandler
// Trainer Port
#define TRAINER_RCC_AHB1Periph (RCC_AHB1Periph_GPIOA)
#define TRAINER_IN_GPIO GPIO_PIN(GPIOI, 6)
#define TRAINER_IN_TIMER_Channel LL_TIM_CHANNEL_CH2
#define TRAINER_OUT_GPIO GPIO_PIN(GPIOI, 5)
#define TRAINER_OUT_TIMER_Channel LL_TIM_CHANNEL_CH1
#define TRAINER_TIMER TIM8
#define TRAINER_TIMER_IRQn TIM8_CC_IRQn
#define TRAINER_TIMER_IRQHandler TIM8_CC_IRQHandler
#define TRAINER_GPIO_AF LL_GPIO_AF_3
#define TRAINER_TIMER_FREQ (PERI2_FREQUENCY * TIMER_MULT_APB2)
#define TRAINER_DETECT_GPIO GPIO_PIN(GPIOH, 4)
// AUX ports
#define AUX_SERIAL_TX_GPIO GPIO_PIN(GPIOB, 6) // PB.06
#define AUX_SERIAL_RX_GPIO GPIO_PIN(GPIOB, 5) // PB.05
#define AUX_SERIAL_USART UART5
#define AUX_SERIAL_USART_IRQHandler UART5_IRQHandler
#define AUX_SERIAL_USART_IRQn UART5_IRQn
#define AUX_SERIAL_DMA_TX DMA2
#define AUX_SERIAL_DMA_TX_STREAM LL_DMA_STREAM_1
#define AUX_SERIAL_DMA_TX_CHANNEL LL_DMAMUX1_REQ_UART5_TX
#define AUX_SERIAL_DMA_RX DMA2
#define AUX_SERIAL_DMA_RX_STREAM LL_DMA_STREAM_2
#define AUX_SERIAL_DMA_RX_CHANNEL LL_DMAMUX1_REQ_UART5_RX
#define AUX_SERIAL_PWR_GPIO GPIO_PIN(GPIOB, 7) // PB.07
#define AUX2_SERIAL_TX_GPIO GPIO_PIN(GPIOB, 10) // PB.10
#define AUX2_SERIAL_RX_GPIO GPIO_PIN(GPIOB, 11) // PB.11
#define AUX2_SERIAL_USART USART3
#define AUX2_SERIAL_USART_IRQHandler USART3_IRQHandler
#define AUX2_SERIAL_USART_IRQn USART3_IRQn
#define AUX2_SERIAL_DMA_TX DMA2
#define AUX2_SERIAL_DMA_TX_STREAM LL_DMA_STREAM_7
#define AUX2_SERIAL_DMA_TX_CHANNEL LL_DMAMUX1_REQ_USART3_TX
#define AUX2_SERIAL_DMA_RX DMA1
#define AUX2_SERIAL_DMA_RX_STREAM LL_DMA_STREAM_6
#define AUX2_SERIAL_DMA_RX_CHANNEL LL_DMAMUX1_REQ_USART3_RX
#define AUX2_SERIAL_PWR_GPIO GPIO_PIN(GPIOC, 13) // PC.13
// Touch
#define TOUCH_I2C_BUS I2C_Bus_2
#define TOUCH_INT_GPIO GPIO_PIN(GPIOE, 2) // PE.02
#define TOUCH_RST_GPIO GPIO_PIN(GPIOJ, 13) // PJ.13
// TOUCH_INT_EXTI IRQ
#if !defined(USE_EXTI2_IRQ)
#define USE_EXTI2_IRQ
#define EXTI2_IRQ_Priority 9
#endif
#define LSE_DRIVE_STRENGTH RCC_LSEDRIVE_HIGH
#endif // _HAL_H_
+94
View File
@@ -0,0 +1,94 @@
/*
* Copyright (C) EdgeTX
*
* Based on code named
* opentx - https://github.com/opentx/opentx
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "hal/key_driver.h"
#include "bsp_io.h"
#include "stm32_hal_ll.h"
#include "stm32_gpio_driver.h"
#include "stm32_i2c_driver.h"
#include "hal.h"
#include "delays_driver.h"
#include "keys.h"
#include "stm32_keys.inc"
#include "debug.h"
void keysInit() {
_init_keys();
_init_trims();
}
uint32_t readKeys() { return _read_keys(); }
/* The output bit-order has to be:
0 LHL TR3L (Left equals down)
1 LHR TR3R
2 LVD TR1D
3 LVU TR1U
4 RVD TR2D
5 RVU TR2U
6 RHL TR4L
7 RHR TR4R
*/
enum PhysicalTrims {
TR3L = 0,
TR3R,
TR1D = 2,
TR1U,
TR2D = 4,
TR2U,
TR4L = 6,
TR4R,
TR5U = 8,
TR5D,
TR6U = 10,
TR6D
};
uint32_t readTrims()
{
uint32_t result = 0;
uint32_t keys = bsp_get_fs_switches();
#define _TRIM(t) \
if ((keys & BSP_##t) == 0) result |= 1 << t;
_TRIM(TR1U);
_TRIM(TR1D);
_TRIM(TR3L);
_TRIM(TR3R);
_TRIM(TR2U);
_TRIM(TR2D);
_TRIM(TR4L);
_TRIM(TR4R);
if (!LL_GPIO_IsInputPinSet(GPIOH, LL_GPIO_PIN_15)) result |= (1 << TR5U);
if (!LL_GPIO_IsInputPinSet(GPIOH, LL_GPIO_PIN_13)) result |= (1 << TR5D);
_TRIM(TR6U);
_TRIM(TR6D);
#undef _TRIM
return result;
}
+29
View File
@@ -0,0 +1,29 @@
/*
* Copyright (C) EdgeTX
*
* Based on code named
* opentx - https://github.com/opentx/opentx
* th9x - http://code.google.com/p/th9x
* er9x - http://code.google.com/p/er9x
* gruvin9x - http://code.google.com/p/gruvin9x
*
* License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#ifndef _USB_DESCRIPTOR_H_
#define _USB_DESCRIPTOR_H_
#define USB_NAME "Radiomaster GX15"
#define USB_MANUFACTURER 'R', 'M', ' ', ' ', ' ', ' ', ' ', ' ' /* 8 bytes */
#define USB_PRODUCT 'G', 'X', '1', '5', ' ', ' ', ' ', ' ' /* 8 Bytes */
#endif // _USB_DESCRIPTOR_H_
+67
View File
@@ -195,6 +195,73 @@ LEGACY_NAMES = [
}
}
},
{
"targets": {"gx15"},
"inputs": {
"LH": {
"yaml": "Rud",
"lua": "rud",
"description": "Rudder"
},
"LV": {
"yaml": "Ele",
"lua": "ele",
"description": "Elevator"
},
"RV": {
"yaml": "Thr",
"lua": "thr",
"description": "Throttle"
},
"RH": {
"yaml": "Ail",
"lua": "ail",
"description": "Aileron"
},
"P1": {
"yaml": "S1",
"lua": "s1",
"label": "S1",
"short_label": "1",
"description": "Potentiometer S1"
},
"P2": {
"yaml": "S2",
"lua": "s2",
"label": "S2",
"short_label": "2",
"description": "Potentiometer S2"
},
"SL1": {
"yaml": "LS",
"lua": "ls",
"label": "LS",
"short_label": "L",
"description": "Left slider"
},
"SL2": {
"yaml": "RS",
"lua": "rs",
"label": "RS",
"short_label": "R",
"description": "Right slider"
},
"EXT1": {
"yaml": "EXT1",
"lua": "ext1",
"label": "EXT1",
"short_label": "E1",
"description": "Ext 1"
},
"EXT2": {
"yaml": "EXT2",
"lua": "ext2",
"label": "EXT2",
"short_label": "E2",
"description": "Ext 2"
}
}
},
{
"targets": {"x12s"},
"inputs": {
+3
View File
@@ -122,6 +122,9 @@ get_target_build_options() {
tx15)
BUILD_OPTIONS+="-DPCB=TX15"
;;
gx15)
BUILD_OPTIONS+="-DPCB=GX15"
;;
tx16s)
BUILD_OPTIONS+="-DPCB=X10 -DPCBREV=TX16S"
;;
+1 -1
View File
@@ -9,7 +9,7 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
: "${SRCDIR:=$(dirname "$(pwd)/$0")/..}"
: ${FLAVOR:="nv14;el18;pl18;pl18ev;pl18u;nb4p;st16;c14;pa01;t12;t12max;t15;t15pro;t22;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;bumblebee;t20;t20v2;t14;lr3pro;mt12;gx12;tx12;tx12mk2;boxer;tx16s;tx16smk3;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v16;v14;v14lcd;v12;tx15"}
: ${FLAVOR:="nv14;el18;pl18;pl18ev;pl18u;nb4p;st16;c14;pa01;t12;t12max;t15;t15pro;t22;t16;t18;t8;zorro;pocket;commando8;tlite;tpro;tprov2;tpros;bumblebee;t20;t20v2;t14;lr3pro;mt12;gx12;tx12;tx12mk2;boxer;tx16s;tx16smk3;x10;x10express;x12s;x7;x7access;x9d;x9dp;x9dp2019;x9e;x9lite;x9lites;xlite;xlites;f16;v16;v14;v14lcd;v12;tx15;gx15"}
: ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"}
# wipe build directory clean
+1 -1
View File
@@ -11,7 +11,7 @@ if [[ -n ${GCC_ARM} ]] ; then
export PATH=${GCC_ARM}:$PATH
fi
: ${FLAVOR:="x10;t15;pl18;nv14;pl18u;nb4p;x9d;x9dp2019;x9e;xlite;xlites;x7;tpro;t20;f16;gx12;st16;c14;pa01;tx15;t15pro;tx16smk3;t22;v12"}
: ${FLAVOR:="x10;t15;pl18;nv14;pl18u;nb4p;x9d;x9dp2019;x9e;xlite;xlites;x7;tpro;t20;f16;gx12;st16;c14;pa01;tx15;gx15;t15pro;tx16smk3;t22;v12"}
: ${SRCDIR:="$(dirname "$SCRIPT_DIR")"}
: ${COMMON_OPTIONS:="-DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_RULE_MESSAGES=OFF -Wno-dev -DDISABLE_COMPANION=YES -DCMAKE_MESSAGE_LOG_LEVEL=WARNING"}