From 7a604cca5307f3772a3af1788a521f4768ee4214 Mon Sep 17 00:00:00 2001 From: 3djc Date: Sun, 14 Sep 2025 03:47:32 +0200 Subject: [PATCH] fix(tx15): 3POS not working for SE/SF (#6572) --- radio/src/boards/rm-h750/bsp_io.cpp | 8 +++++++- radio/src/targets/tx15/hal.h | 17 ++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/radio/src/boards/rm-h750/bsp_io.cpp b/radio/src/boards/rm-h750/bsp_io.cpp index 763b4ad6f..6830bc964 100644 --- a/radio/src/boards/rm-h750/bsp_io.cpp +++ b/radio/src/boards/rm-h750/bsp_io.cpp @@ -189,7 +189,13 @@ static SwitchHwPos _get_switch_pos(uint8_t idx) bool hi = state & def->Pin_high; bool lo = state & def->Pin_low; - if (hi && lo) { + if(!isSwitch3Pos(idx)) + { + // Switch not declared as 3POS installed in a 3POS HW + if (!(hi && lo)) { + pos = SWITCH_HW_DOWN; + } + } else if (hi && lo) { pos = SWITCH_HW_MID; } else if (!hi && lo) { pos = SWITCH_HW_DOWN; diff --git a/radio/src/targets/tx15/hal.h b/radio/src/targets/tx15/hal.h index f6650bce5..de2a36c86 100644 --- a/radio/src/targets/tx15/hal.h +++ b/radio/src/targets/tx15/hal.h @@ -165,13 +165,16 @@ TIM17: ROTARY_ENCODER_TIMER #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 - +#define SWITCHES_E_3POS +#define SWITCHES_GPIO_REG_E_H +#define SWITCHES_GPIO_PIN_E_H PCA95XX_P17 +#define SWITCHES_GPIO_REG_E_L +#define SWITCHES_GPIO_PIN_E_L PCA95XX_P16 +#define SWITCHES_F_3POS +#define SWITCHES_GPIO_REG_F_H +#define SWITCHES_GPIO_PIN_F_H PCA95XX_P4 +#define SWITCHES_GPIO_REG_F_L +#define SWITCHES_GPIO_PIN_F_L PCA95XX_P5 // Expanders #define IO_INT_GPIO GPIO_PIN(GPIOD, 3)