From 1aed367d3e53aacfbaac178db43afa978d95d7b0 Mon Sep 17 00:00:00 2001 From: 3djc <3djc@gh.com> Date: Sat, 1 Jun 2024 15:27:36 +0200 Subject: [PATCH 1/6] feat: Jumper T15 PCBREV support --- radio/src/gui/colorlcd/radio_version.cpp | 6 ++++++ radio/src/targets/horus/board.h | 4 ++++ radio/src/targets/horus/hal.h | 6 +++++- radio/src/targets/horus/lcd_st7796s_driver.cpp | 6 ++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/radio/src/gui/colorlcd/radio_version.cpp b/radio/src/gui/colorlcd/radio_version.cpp index 7d38e02b685..9c737d34896 100644 --- a/radio/src/gui/colorlcd/radio_version.cpp +++ b/radio/src/gui/colorlcd/radio_version.cpp @@ -360,6 +360,12 @@ void RadioVersionPage::build(FormWindow * window) version += options[i]; } +#if defined(RADIO_T15) + version += nl; + version += "PCBREV: "; + version += '0' + hardwareOptions.pcbrev; +#endif + #if (defined(PCBNV14) || defined(PCBPL18)) && !defined(SIMU) version += nl; version += "LCD: "; diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index fad9138271d..103879b124f 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -72,6 +72,10 @@ enum { // X10 PCBREV_X10_STD = 0, PCBREV_X10_EXPRESS = 3, + + //T15 + PCBREV_T15_STD = 0, + PCBREV_T15_IPS = 1, }; #if defined(SIMU) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 21af641644e..d627ee746d2 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -556,7 +556,11 @@ // PCBREV #if defined(MANUFACTURER_FRSKY) -#if defined(PCBX10) +#if defined(RADIO_T15) + #define PCBREV_GPIO_1 GPIO_PIN(GPIOH, 7) // PH.07 + #define PCBREV_GPIO_2 GPIO_PIN(GPIOH, 8) // PH.08 + #define PCBREV_VALUE() ((gpio_read(PCBREV_GPIO_1) | gpio_read(PCBREV_GPIO_2)) >> 7) +#elif defined(PCBX10) #define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_GPIOA #define PCBREV_GPIO GPIOH #define PCBREV_GPIO_PIN (GPIO_Pin_7 | GPIO_Pin_8) // PH.07 | PH.08 diff --git a/radio/src/targets/horus/lcd_st7796s_driver.cpp b/radio/src/targets/horus/lcd_st7796s_driver.cpp index 3fb71d3093e..93b1ebfd780 100644 --- a/radio/src/targets/horus/lcd_st7796s_driver.cpp +++ b/radio/src/targets/horus/lcd_st7796s_driver.cpp @@ -28,6 +28,7 @@ #include "debug.h" #include "lcd.h" #include "lcd_st7796s_driver.h" +#include "board.h" static LTDC_HandleTypeDef hltdc; static void* initialFrameBuffer = nullptr; @@ -302,6 +303,11 @@ void LCD_ST7796S_Init(void) { delay_ms(120); +#if defined(RADIO_T15) + if (hardwareOptions.pcbrev == PCBREV_T15_IPS) + lcdWriteCommand( 0x21 ); +#endif + LCD_ST7796S_On(); } From 09a80c765371ca1e120f8107475dc714d6c19450 Mon Sep 17 00:00:00 2001 From: 3djc <3djc@gh.com> Date: Mon, 3 Jun 2024 11:03:42 +0200 Subject: [PATCH 2/6] fix: compilation --- radio/src/gui/colorlcd/radio_version.cpp | 3 ++- radio/src/targets/horus/hal.h | 13 ++++++------- radio/src/targets/horus/lcd_st7796s_driver.cpp | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/radio/src/gui/colorlcd/radio_version.cpp b/radio/src/gui/colorlcd/radio_version.cpp index 9c737d34896..56ff5eaaec5 100644 --- a/radio/src/gui/colorlcd/radio_version.cpp +++ b/radio/src/gui/colorlcd/radio_version.cpp @@ -25,6 +25,7 @@ #include "libopenui.h" #include "fw_version.h" #include "hal/module_port.h" +#include "hal.h" #if defined(CROSSFIRE) #include "mixer_scheduler.h" @@ -363,7 +364,7 @@ void RadioVersionPage::build(FormWindow * window) #if defined(RADIO_T15) version += nl; version += "PCBREV: "; - version += '0' + hardwareOptions.pcbrev; + version += '0' + PCBREV_VALUE(); #endif #if (defined(PCBNV14) || defined(PCBPL18)) && !defined(SIMU) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index d627ee746d2..ff745c53fa6 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -555,12 +555,12 @@ #endif // PCBREV -#if defined(MANUFACTURER_FRSKY) #if defined(RADIO_T15) - #define PCBREV_GPIO_1 GPIO_PIN(GPIOH, 7) // PH.07 - #define PCBREV_GPIO_2 GPIO_PIN(GPIOH, 8) // PH.08 - #define PCBREV_VALUE() ((gpio_read(PCBREV_GPIO_1) | gpio_read(PCBREV_GPIO_2)) >> 7) -#elif defined(PCBX10) + #define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_GPIOA + #define PCBREV_GPIO GPIOH + #define PCBREV_GPIO_PIN (GPIO_Pin_7 | GPIO_Pin_8) // PH.07 | PH.08 + #define PCBREV_VALUE() (GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_7) + (GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_8) << 1)) +#elif defined(PCBX10) && defined(MANUFACTURER_FRSKY) #define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_GPIOA #define PCBREV_GPIO GPIOH #define PCBREV_GPIO_PIN (GPIO_Pin_7 | GPIO_Pin_8) // PH.07 | PH.08 @@ -568,12 +568,11 @@ #define PCBREV_TOUCH_GPIO_PIN GPIO_Pin_6 // PA.06 #define PCBREV_TOUCH_GPIO_PULL_UP #define PCBREV_VALUE() ((GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_7) + (GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_8) << 1)) * GPIO_ReadInputDataBit(PCBREV_TOUCH_GPIO, GPIO_Pin_6)) -#else +#elif defined(MANUFACTURER_FRSKY) #define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOI #define PCBREV_GPIO GPIOI #define PCBREV_GPIO_PIN GPIO_Pin_11 // PI.11 #define PCBREV_VALUE() GPIO_ReadInputDataBit(PCBREV_GPIO, PCBREV_GPIO_PIN) -#endif #else #define PCBREV_RCC_AHB1Periph 0 #endif diff --git a/radio/src/targets/horus/lcd_st7796s_driver.cpp b/radio/src/targets/horus/lcd_st7796s_driver.cpp index 93b1ebfd780..79fe76e0a6d 100644 --- a/radio/src/targets/horus/lcd_st7796s_driver.cpp +++ b/radio/src/targets/horus/lcd_st7796s_driver.cpp @@ -28,7 +28,7 @@ #include "debug.h" #include "lcd.h" #include "lcd_st7796s_driver.h" -#include "board.h" +#include "hal.h" static LTDC_HandleTypeDef hltdc; static void* initialFrameBuffer = nullptr; @@ -304,7 +304,7 @@ void LCD_ST7796S_Init(void) { delay_ms(120); #if defined(RADIO_T15) - if (hardwareOptions.pcbrev == PCBREV_T15_IPS) + if (!LL_GPIO_IsInputPinSet(GPIOH, LL_GPIO_PIN_7) && LL_GPIO_IsInputPinSet(GPIOH, LL_GPIO_PIN_8)) lcdWriteCommand( 0x21 ); #endif From ed3ed08969bcfd4803991e04e11c93092d1df0bc Mon Sep 17 00:00:00 2001 From: 3djc <3djc@gh.com> Date: Mon, 3 Jun 2024 12:05:38 +0200 Subject: [PATCH 3/6] fix: compilation --- radio/src/gui/colorlcd/radio_version.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/colorlcd/radio_version.cpp b/radio/src/gui/colorlcd/radio_version.cpp index 56ff5eaaec5..43a57f0a6fb 100644 --- a/radio/src/gui/colorlcd/radio_version.cpp +++ b/radio/src/gui/colorlcd/radio_version.cpp @@ -361,7 +361,7 @@ void RadioVersionPage::build(FormWindow * window) version += options[i]; } -#if defined(RADIO_T15) +#if defined(RADIO_T15) && !defined(SIMU) version += nl; version += "PCBREV: "; version += '0' + PCBREV_VALUE(); From 1c501c9a2675fdeb6f898aed846579d7bed99e0b Mon Sep 17 00:00:00 2001 From: 3djc <3djc@gh.com> Date: Mon, 3 Jun 2024 12:22:44 +0200 Subject: [PATCH 4/6] chore: make it nicer --- radio/src/targets/horus/hal.h | 1 + radio/src/targets/horus/lcd_st7796s_driver.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index ff745c53fa6..721a9dedff7 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -560,6 +560,7 @@ #define PCBREV_GPIO GPIOH #define PCBREV_GPIO_PIN (GPIO_Pin_7 | GPIO_Pin_8) // PH.07 | PH.08 #define PCBREV_VALUE() (GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_7) + (GPIO_ReadInputDataBit(PCBREV_GPIO, GPIO_Pin_8) << 1)) + #define LL_PCBREV_VALUE() (LL_GPIO_IsInputPinSet(PCBREV_GPIO, GPIO_PIN_7) + (LL_GPIO_IsInputPinSet(PCBREV_GPIO, GPIO_PIN_8) << 1)) #elif defined(PCBX10) && defined(MANUFACTURER_FRSKY) #define PCBREV_RCC_AHB1Periph RCC_AHB1Periph_GPIOH | RCC_AHB1Periph_GPIOA #define PCBREV_GPIO GPIOH diff --git a/radio/src/targets/horus/lcd_st7796s_driver.cpp b/radio/src/targets/horus/lcd_st7796s_driver.cpp index 79fe76e0a6d..19a867ea439 100644 --- a/radio/src/targets/horus/lcd_st7796s_driver.cpp +++ b/radio/src/targets/horus/lcd_st7796s_driver.cpp @@ -304,7 +304,7 @@ void LCD_ST7796S_Init(void) { delay_ms(120); #if defined(RADIO_T15) - if (!LL_GPIO_IsInputPinSet(GPIOH, LL_GPIO_PIN_7) && LL_GPIO_IsInputPinSet(GPIOH, LL_GPIO_PIN_8)) + if (LL_PCBREV_VALUE() == 1) // 0: TFT, 1: IPS lcdWriteCommand( 0x21 ); #endif From 08349a820bf29bdd146671c3b2c4a0daa33b12b6 Mon Sep 17 00:00:00 2001 From: 3djc <3djc@gh.com> Date: Wed, 5 Jun 2024 08:06:03 +0200 Subject: [PATCH 5/6] chore --- radio/src/gui/colorlcd/radio_version.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/radio/src/gui/colorlcd/radio_version.cpp b/radio/src/gui/colorlcd/radio_version.cpp index 43a57f0a6fb..05e5a5bec05 100644 --- a/radio/src/gui/colorlcd/radio_version.cpp +++ b/radio/src/gui/colorlcd/radio_version.cpp @@ -364,7 +364,7 @@ void RadioVersionPage::build(FormWindow * window) #if defined(RADIO_T15) && !defined(SIMU) version += nl; version += "PCBREV: "; - version += '0' + PCBREV_VALUE(); + version += version += '0' + static_cast(hardwareOptions.pcbrev); #endif #if (defined(PCBNV14) || defined(PCBPL18)) && !defined(SIMU) From bd65afc5d14e9d4c94908413fa56c9ccce09c340 Mon Sep 17 00:00:00 2001 From: 3djc <3djc@gh.com> Date: Wed, 5 Jun 2024 11:10:40 +0200 Subject: [PATCH 6/6] chore: remove unneeded include --- radio/src/gui/colorlcd/radio_version.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/radio/src/gui/colorlcd/radio_version.cpp b/radio/src/gui/colorlcd/radio_version.cpp index 05e5a5bec05..52dfaa1f731 100644 --- a/radio/src/gui/colorlcd/radio_version.cpp +++ b/radio/src/gui/colorlcd/radio_version.cpp @@ -24,8 +24,6 @@ #include "options.h" #include "libopenui.h" #include "fw_version.h" -#include "hal/module_port.h" -#include "hal.h" #if defined(CROSSFIRE) #include "mixer_scheduler.h"