diff --git a/src/main.cpp b/src/main.cpp index 0c045ec89..796341b9b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -398,88 +398,6 @@ void setup() #endif #endif -#if defined(T_DECK) - // GPIO10 manages all peripheral power supplies - // Turn on peripheral power immediately after MUC starts. - // If some boards are turned on late, ESP32 will reset due to low voltage. - // ESP32-C3(Keyboard) , MAX98357A(Audio Power Amplifier) , - // TF Card , Display backlight(AW9364DNR) , AN48841B(Trackball) , ES7210(Decoder) - pinMode(KB_POWERON, OUTPUT); - digitalWrite(KB_POWERON, HIGH); - // T-Deck has all three SPI peripherals (TFT, SD, LoRa) attached to the same SPI bus - // We need to initialize all CS pins in advance otherwise there will be SPI communication issues - // e.g. when detecting the SD card - pinMode(LORA_CS, OUTPUT); - digitalWrite(LORA_CS, HIGH); - pinMode(SDCARD_CS, OUTPUT); - digitalWrite(SDCARD_CS, HIGH); - pinMode(TFT_CS, OUTPUT); - digitalWrite(TFT_CS, HIGH); - delay(100); -#elif defined(T_DECK_PRO) - pinMode(LORA_EN, OUTPUT); - digitalWrite(LORA_EN, HIGH); - pinMode(LORA_CS, OUTPUT); - digitalWrite(LORA_CS, HIGH); - pinMode(SDCARD_CS, OUTPUT); - digitalWrite(SDCARD_CS, HIGH); - pinMode(PIN_EINK_CS, OUTPUT); - digitalWrite(PIN_EINK_CS, HIGH); -#elif defined(T_LORA_PAGER) - pinMode(LORA_CS, OUTPUT); - digitalWrite(LORA_CS, HIGH); - pinMode(SDCARD_CS, OUTPUT); - digitalWrite(SDCARD_CS, HIGH); - pinMode(TFT_CS, OUTPUT); - digitalWrite(TFT_CS, HIGH); - pinMode(KB_INT, INPUT_PULLUP); - // io expander - io.begin(Wire, XL9555_SLAVE_ADDRESS0, SDA, SCL); - io.pinMode(EXPANDS_DRV_EN, OUTPUT); - io.digitalWrite(EXPANDS_DRV_EN, HIGH); - io.pinMode(EXPANDS_AMP_EN, OUTPUT); - io.digitalWrite(EXPANDS_AMP_EN, LOW); - io.pinMode(EXPANDS_LORA_EN, OUTPUT); - io.digitalWrite(EXPANDS_LORA_EN, HIGH); - io.pinMode(EXPANDS_GPS_EN, OUTPUT); - io.digitalWrite(EXPANDS_GPS_EN, HIGH); - io.pinMode(EXPANDS_KB_EN, OUTPUT); - io.digitalWrite(EXPANDS_KB_EN, HIGH); - io.pinMode(EXPANDS_SD_EN, OUTPUT); - io.digitalWrite(EXPANDS_SD_EN, HIGH); - io.pinMode(EXPANDS_GPIO_EN, OUTPUT); - io.digitalWrite(EXPANDS_GPIO_EN, HIGH); - io.pinMode(EXPANDS_SD_PULLEN, INPUT); -#elif defined(T_WATCH_ULTRA) - pinMode(LORA_CS, OUTPUT); - digitalWrite(LORA_CS, HIGH); - pinMode(DISP_CS, OUTPUT); - digitalWrite(DISP_CS, HIGH); - pinMode(SDCARD_CS, OUTPUT); - digitalWrite(SDCARD_CS, HIGH); - - if (io.begin(Wire, XL9555_SLAVE_ADDRESS0)) { - io.pinMode(EXPANDS_DRV_EN, OUTPUT); - io.digitalWrite(EXPANDS_DRV_EN, HIGH); - delay(1); - io.pinMode(EXPANDS_DISP_EN, OUTPUT); - io.digitalWrite(EXPANDS_DISP_EN, HIGH); - delay(1); - io.pinMode(EXPANDS_TOUCH_RST, OUTPUT); - io.digitalWrite(EXPANDS_TOUCH_RST, LOW); - delay(20); - io.digitalWrite(EXPANDS_TOUCH_RST, HIGH); - delay(60); - io.pinMode(EXPANDS_LORA_RF_SW, OUTPUT); - io.digitalWrite(EXPANDS_LORA_RF_SW, HIGH); // set RF switch to built-in LoRa antenna - // io.pinMode(EXPANDS_SD_DET, INPUT); - } else { - LOG_ERROR("io expander initialisation failed!"); - } -#elif defined(HACKADAY_COMMUNICATOR) - pinMode(KB_INT, INPUT); -#endif - concurrency::hasBeenSetup = true; meshtastic_Config_DisplayConfig_OledType screen_model = diff --git a/src/platform/extra_variants/t_watch_ultra/variant.cpp b/src/platform/extra_variants/t_watch_ultra/variant.cpp deleted file mode 100644 index 6dd62ef49..000000000 --- a/src/platform/extra_variants/t_watch_ultra/variant.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "configuration.h" - -#ifdef T_WATCH_ULTRA - -#include "Arduino.h" -#include "TouchDrvCSTXXX.hpp" -#include "input/TouchScreenImpl1.h" -#include - -static TouchDrvCST92xx touchDrv; - -static bool readTouch(int16_t *x, int16_t *y) -{ - return touchDrv.isPressed() && touchDrv.getPoint(x, y, 1); -} - -// T-Watch Ultra specific init -void lateInitVariant() -{ - if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) { - pinMode(SCREEN_TOUCH_INT, INPUT_PULLUP); - touchDrv.setPins(-1, SCREEN_TOUCH_INT); - if (touchDrv.begin(Wire, TOUCH_SLAVE_ADDRESS, I2C_SDA, I2C_SCL)) { - touchScreenImpl1 = new TouchScreenImpl1(TFT_WIDTH, TFT_HEIGHT, readTouch); - touchScreenImpl1->init(); - } else { - LOG_ERROR("failed to initialize CST92xx"); - } - } -} -#endif \ No newline at end of file diff --git a/variants/esp32s3/t-watch-ultra/platformio.ini b/variants/esp32s3/t-watch-ultra/platformio.ini index a4a916c1a..06c2ade3e 100644 --- a/variants/esp32s3/t-watch-ultra/platformio.ini +++ b/variants/esp32s3/t-watch-ultra/platformio.ini @@ -15,6 +15,10 @@ build_flags = ${esp32_base.build_flags} -Ivariants/esp32s3/t-watch-ultra -D SDCARD_CS=21 ; -DHAS_BMA423=1 +build_src_filter = + ${esp32s3_base.build_src_filter} + +<../variants/esp32s3/t-watch-ultra> + lib_deps = ${esp32s3_base.lib_deps} https://github.com/lovyan03/LovyanGFX/archive/tags/1.2.19.zip adafruit/Adafruit DRV2605 Library@^1.2.4 diff --git a/variants/esp32s3/t-watch-ultra/variant.cpp b/variants/esp32s3/t-watch-ultra/variant.cpp new file mode 100644 index 000000000..7f884684d --- /dev/null +++ b/variants/esp32s3/t-watch-ultra/variant.cpp @@ -0,0 +1,57 @@ +#include "variant.h" +#include "Arduino.h" +#include "TouchDrvCSTXXX.hpp" +#include "input/TouchScreenImpl1.h" +#include +#include + +static ExtensionIOXL9555 io; +static TouchDrvCST92xx touchDrv; + +void earlyInitVariant() +{ + pinMode(LORA_CS, OUTPUT); + digitalWrite(LORA_CS, HIGH); + pinMode(DISP_CS, OUTPUT); + digitalWrite(DISP_CS, HIGH); + pinMode(SDCARD_CS, OUTPUT); + digitalWrite(SDCARD_CS, HIGH); + + if (io.begin(Wire, XL9555_SLAVE_ADDRESS0)) { + io.pinMode(EXPANDS_DRV_EN, OUTPUT); + io.digitalWrite(EXPANDS_DRV_EN, HIGH); + delay(1); + io.pinMode(EXPANDS_DISP_EN, OUTPUT); + io.digitalWrite(EXPANDS_DISP_EN, HIGH); + delay(1); + io.pinMode(EXPANDS_TOUCH_RST, OUTPUT); + io.digitalWrite(EXPANDS_TOUCH_RST, LOW); + delay(20); + io.digitalWrite(EXPANDS_TOUCH_RST, HIGH); + delay(60); + io.pinMode(EXPANDS_LORA_RF_SW, OUTPUT); + io.digitalWrite(EXPANDS_LORA_RF_SW, HIGH); // set RF switch to built-in LoRa antenna + // io.pinMode(EXPANDS_SD_DET, INPUT); + } else { + LOG_ERROR("io expander initialisation failed!"); + } +} + +static bool readTouch(int16_t *x, int16_t *y) +{ + return touchDrv.isPressed() && touchDrv.getPoint(x, y, 1); +} + +void lateInitVariant() +{ + if (config.display.displaymode != meshtastic_Config_DisplayConfig_DisplayMode_COLOR) { + pinMode(SCREEN_TOUCH_INT, INPUT_PULLUP); + touchDrv.setPins(-1, SCREEN_TOUCH_INT); + if (touchDrv.begin(Wire, TOUCH_SLAVE_ADDRESS, I2C_SDA, I2C_SCL)) { + touchScreenImpl1 = new TouchScreenImpl1(TFT_WIDTH, TFT_HEIGHT, readTouch); + touchScreenImpl1->init(); + } else { + LOG_ERROR("failed to initialize CST92xx"); + } + } +}