Merge remote-tracking branch 'origin/master' into develop
This commit is contained in:
@@ -75,11 +75,11 @@ body:
|
|||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
id: mui
|
id: mui
|
||||||
attributes:
|
attributes:
|
||||||
label: Is this bug report about any UI component firmware like InkHUD or Meshtatic UI (MUI)?
|
label: Is this bug report about any UI (https://meshtastic.org/docs/configuration/device-uis/) component firmware?
|
||||||
options:
|
options:
|
||||||
- label: Meshtastic UI aka MUI colorTFT
|
- label: Meshtastic UI aka MUI
|
||||||
- label: InkHUD ePaper
|
- label: InkHUD
|
||||||
- label: OLED slide UI on any display
|
- label: BaseUI
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: version
|
id: version
|
||||||
|
|||||||
+6
-6
@@ -8,15 +8,15 @@ plugins:
|
|||||||
uri: https://github.com/trunk-io/plugins
|
uri: https://github.com/trunk-io/plugins
|
||||||
lint:
|
lint:
|
||||||
enabled:
|
enabled:
|
||||||
- checkov@3.2.517
|
- checkov@3.2.524
|
||||||
- renovate@43.110.9
|
- renovate@43.139.2
|
||||||
- prettier@3.8.1
|
- prettier@3.8.3
|
||||||
- trufflehog@3.94.3
|
- trufflehog@3.95.2
|
||||||
- yamllint@1.38.0
|
- yamllint@1.38.0
|
||||||
- bandit@1.9.4
|
- bandit@1.9.4
|
||||||
- trivy@0.69.3
|
- trivy@0.70.0
|
||||||
- taplo@0.10.0
|
- taplo@0.10.0
|
||||||
- ruff@0.15.9
|
- ruff@0.15.11
|
||||||
- isort@8.0.1
|
- isort@8.0.1
|
||||||
- markdownlint@0.48.0
|
- markdownlint@0.48.0
|
||||||
- oxipng@10.1.0
|
- oxipng@10.1.0
|
||||||
|
|||||||
-129
@@ -340,138 +340,9 @@ void setup()
|
|||||||
|
|
||||||
#ifdef BLE_LED
|
#ifdef BLE_LED
|
||||||
pinMode(BLE_LED, OUTPUT);
|
pinMode(BLE_LED, OUTPUT);
|
||||||
#ifdef BLE_LED_INVERTED
|
|
||||||
digitalWrite(BLE_LED, HIGH);
|
|
||||||
#else
|
|
||||||
digitalWrite(BLE_LED, LOW);
|
|
||||||
#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);
|
|
||||||
#if PIN_EINK_RES >= 0
|
|
||||||
pinMode(PIN_EINK_RES, OUTPUT);
|
|
||||||
digitalWrite(PIN_EINK_RES, HIGH);
|
|
||||||
#endif
|
|
||||||
pinMode(CST328_PIN_RST, OUTPUT);
|
|
||||||
digitalWrite(CST328_PIN_RST, 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(HACKADAY_COMMUNICATOR)
|
|
||||||
pinMode(KB_INT, INPUT);
|
|
||||||
digitalWrite(BLE_LED, LED_STATE_OFF);
|
digitalWrite(BLE_LED, LED_STATE_OFF);
|
||||||
#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);
|
|
||||||
#if PIN_EINK_RES >= 0
|
|
||||||
pinMode(PIN_EINK_RES, OUTPUT);
|
|
||||||
digitalWrite(PIN_EINK_RES, HIGH);
|
|
||||||
#endif
|
|
||||||
pinMode(CST328_PIN_RST, OUTPUT);
|
|
||||||
digitalWrite(CST328_PIN_RST, 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(HACKADAY_COMMUNICATOR)
|
|
||||||
pinMode(KB_INT, INPUT);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
concurrency::hasBeenSetup = true;
|
concurrency::hasBeenSetup = true;
|
||||||
#if HAS_SCREEN
|
#if HAS_SCREEN
|
||||||
meshtastic_Config_DisplayConfig_OledType screen_model =
|
meshtastic_Config_DisplayConfig_OledType screen_model =
|
||||||
|
|||||||
@@ -12,4 +12,4 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32_base.lib_deps}
|
${esp32_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|||||||
@@ -35,4 +35,4 @@ lib_ignore =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32_base.lib_deps}
|
${esp32_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32_base.lib_deps}
|
${esp32_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
|
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
|
||||||
lewisxhe/SensorLib@0.3.4
|
lewisxhe/SensorLib@0.3.4
|
||||||
lib_ignore =
|
lib_ignore =
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32_base.lib_deps}
|
${esp32_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
# renovate: datasource=custom.pio depName=SX1509 IO Expander packageName=sparkfun/library/SX1509 IO Expander
|
# renovate: datasource=custom.pio depName=SX1509 IO Expander packageName=sparkfun/library/SX1509 IO Expander
|
||||||
sparkfun/SX1509 IO Expander@3.0.6
|
sparkfun/SX1509 IO Expander@3.0.6
|
||||||
# renovate: datasource=custom.pio depName=APA102 packageName=pololu/library/APA102
|
# renovate: datasource=custom.pio depName=APA102 packageName=pololu/library/APA102
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ upload_speed = 921600
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
build_unflags =
|
build_unflags =
|
||||||
${esp32s3_base.build_unflags}
|
${esp32s3_base.build_unflags}
|
||||||
-DARDUINO_USB_MODE=1
|
-DARDUINO_USB_MODE=1
|
||||||
|
|||||||
@@ -23,4 +23,4 @@ build_flags = ${esp32s3_base.build_flags}
|
|||||||
|
|
||||||
lib_deps = ${esp32s3_base.lib_deps}
|
lib_deps = ${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
|
|||||||
@@ -131,6 +131,6 @@ build_flags =
|
|||||||
lib_deps = ${heltec_v4_base.lib_deps}
|
lib_deps = ${heltec_v4_base.lib_deps}
|
||||||
${device-ui_base.lib_deps}
|
${device-ui_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
# renovate: datasource=git-refs depName=Quency-D_chsc6x packageName=https://github.com/Quency-D/chsc6x gitBranch=master
|
# renovate: datasource=git-refs depName=Quency-D_chsc6x packageName=https://github.com/Quency-D/chsc6x gitBranch=master
|
||||||
https://github.com/Quency-D/chsc6x/archive/5cbead829d6b432a8d621ed1aafd4eb474fd4f27.zip
|
https://github.com/Quency-D/chsc6x/archive/5cbead829d6b432a8d621ed1aafd4eb474fd4f27.zip
|
||||||
@@ -24,4 +24,4 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|||||||
@@ -22,4 +22,4 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|||||||
@@ -21,4 +21,4 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ lib_deps =
|
|||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
${device-ui_base.lib_deps}
|
${device-ui_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|
||||||
[mesh_tab_xpt2046]
|
[mesh_tab_xpt2046]
|
||||||
extends = mesh_tab_base
|
extends = mesh_tab_base
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|
||||||
build_src_filter =
|
build_src_filter =
|
||||||
${esp32s3_base.build_src_filter}
|
${esp32s3_base.build_src_filter}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|
||||||
[env:rak_wismesh_tap_v2-tft]
|
[env:rak_wismesh_tap_v2-tft]
|
||||||
extends = env:rak_wismesh_tap_v2
|
extends = env:rak_wismesh_tap_v2
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
# renovate: datasource=git-refs depName=CSE_Touch packageName=https://github.com/CIRCUITSTATE/CSE_Touch gitBranch=main
|
# renovate: datasource=git-refs depName=CSE_Touch packageName=https://github.com/CIRCUITSTATE/CSE_Touch gitBranch=main
|
||||||
https://github.com/CIRCUITSTATE/CSE_Touch/archive/b44f23b6f870b848f1fbe453c190879bc6cfaafa.zip
|
https://github.com/CIRCUITSTATE/CSE_Touch/archive/b44f23b6f870b848f1fbe453c190879bc6cfaafa.zip
|
||||||
# renovate: datasource=github-tags depName=CSE_CST328 packageName=CIRCUITSTATE/CSE_CST328
|
# renovate: datasource=github-tags depName=CSE_CST328 packageName=CIRCUITSTATE/CSE_CST328
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
# renovate: datasource=git-refs depName=CSE_Touch packageName=https://github.com/CIRCUITSTATE/CSE_Touch gitBranch=main
|
# renovate: datasource=git-refs depName=CSE_Touch packageName=https://github.com/CIRCUITSTATE/CSE_Touch gitBranch=main
|
||||||
https://github.com/CIRCUITSTATE/CSE_Touch/archive/b44f23b6f870b848f1fbe453c190879bc6cfaafa.zip
|
https://github.com/CIRCUITSTATE/CSE_Touch/archive/b44f23b6f870b848f1fbe453c190879bc6cfaafa.zip
|
||||||
# renovate: datasource=github-tags depName=CSE_CST328 packageName=CIRCUITSTATE/CSE_CST328
|
# renovate: datasource=github-tags depName=CSE_CST328 packageName=CIRCUITSTATE/CSE_CST328
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ build_flags = ${esp32s3_base.build_flags}
|
|||||||
|
|
||||||
lib_deps = ${esp32s3_base.lib_deps}
|
lib_deps = ${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
# renovate: datasource=git-refs depName=ESP8266Audio packageName=https://github.com/meshtastic/ESP8266Audio gitBranch=meshtastic-2.0.0-dacfix
|
# renovate: datasource=git-refs depName=ESP8266Audio packageName=https://github.com/meshtastic/ESP8266Audio gitBranch=meshtastic-2.0.0-dacfix
|
||||||
https://github.com/meshtastic/ESP8266Audio/archive/343024632ee78d6216907b2353fc943a62422d80.zip
|
https://github.com/meshtastic/ESP8266Audio/archive/343024632ee78d6216907b2353fc943a62422d80.zip
|
||||||
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
|
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ build_flags = ${esp32s3_base.build_flags}
|
|||||||
|
|
||||||
lib_deps = ${esp32s3_base.lib_deps}
|
lib_deps = ${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
|
# renovate: datasource=custom.pio depName=SensorLib packageName=lewisxhe/library/SensorLib
|
||||||
lewisxhe/SensorLib@0.3.4
|
lewisxhe/SensorLib@0.3.4
|
||||||
# renovate: datasource=custom.pio depName=Adafruit DRV2605 packageName=adafruit/library/Adafruit DRV2605 Library
|
# renovate: datasource=custom.pio depName=Adafruit DRV2605 packageName=adafruit/library/Adafruit DRV2605 Library
|
||||||
|
|||||||
@@ -1,6 +1,130 @@
|
|||||||
#include "variant.h"
|
#include "configuration.h"
|
||||||
#include "Arduino.h"
|
|
||||||
#include "pins_arduino.h"
|
#ifdef T5_S3_EPAPER_PRO
|
||||||
|
|
||||||
|
#include "Observer.h"
|
||||||
|
#include "TouchDrvGT911.hpp"
|
||||||
|
#include "Wire.h"
|
||||||
|
#include "input/InputBroker.h"
|
||||||
|
#include "input/TouchScreenImpl1.h"
|
||||||
|
#include "sleep.h"
|
||||||
|
|
||||||
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
#include "graphics/niche/InkHUD/InkHUD.h"
|
||||||
|
#include "graphics/niche/InkHUD/SystemApplet.h"
|
||||||
|
|
||||||
|
// Bridges touch events from TouchScreenImpl1 directly into InkHUD,
|
||||||
|
// bypassing the InputBroker (which is excluded in InkHUD builds).
|
||||||
|
// Routing mirrors the mini-epaper-s3 two-way rocker pattern:
|
||||||
|
// - Nav left/right: prevApplet/nextApplet when idle, navUp/Down when a system applet has focus (e.g. menu)
|
||||||
|
// - Nav up/down: navUp/navDown always (menu scroll)
|
||||||
|
// - Tap: shortpress (cycle applets / confirm in menu)
|
||||||
|
// - Long press: longpress (open menu / back)
|
||||||
|
class TouchInkHUDBridge : public Observer<const InputEvent *>
|
||||||
|
{
|
||||||
|
int onNotify(const InputEvent *e) override
|
||||||
|
{
|
||||||
|
auto *inkhud = NicheGraphics::InkHUD::InkHUD::getInstance();
|
||||||
|
|
||||||
|
// Keep alignment in sync with the current rotation so that visual-frame gestures
|
||||||
|
// always pass through nav functions without remapping: (rotation + alignment) % 4 == 0.
|
||||||
|
inkhud->persistence->settings.joystick.alignment = (4 - inkhud->persistence->settings.rotation) % 4;
|
||||||
|
|
||||||
|
// Check whether a system applet (e.g. menu) is currently handling input
|
||||||
|
bool systemHandlingInput = false;
|
||||||
|
for (NicheGraphics::InkHUD::SystemApplet *sa : inkhud->systemApplets) {
|
||||||
|
if (sa->handleInput) {
|
||||||
|
systemHandlingInput = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (e->inputEvent) {
|
||||||
|
case INPUT_BROKER_USER_PRESS:
|
||||||
|
inkhud->shortpress();
|
||||||
|
break;
|
||||||
|
case INPUT_BROKER_SELECT:
|
||||||
|
inkhud->longpress();
|
||||||
|
break;
|
||||||
|
case INPUT_BROKER_LEFT:
|
||||||
|
if (systemHandlingInput)
|
||||||
|
inkhud->navUp();
|
||||||
|
else
|
||||||
|
inkhud->prevApplet();
|
||||||
|
break;
|
||||||
|
case INPUT_BROKER_RIGHT:
|
||||||
|
if (systemHandlingInput)
|
||||||
|
inkhud->navDown();
|
||||||
|
else
|
||||||
|
inkhud->nextApplet();
|
||||||
|
break;
|
||||||
|
case INPUT_BROKER_UP:
|
||||||
|
inkhud->navUp();
|
||||||
|
break;
|
||||||
|
case INPUT_BROKER_DOWN:
|
||||||
|
inkhud->navDown();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static TouchInkHUDBridge touchBridge;
|
||||||
|
#endif // MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
|
||||||
|
TouchDrvGT911 touch;
|
||||||
|
|
||||||
|
// Commands the GT911 into standby before the Wire bus is torn down.
|
||||||
|
// notifyDeepSleep fires before Wire.end() in doDeepSleep(), so I2C is still available here.
|
||||||
|
struct TouchDeepSleepObserver {
|
||||||
|
int onDeepSleep(void *)
|
||||||
|
{
|
||||||
|
touch.sleep();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
CallbackObserver<TouchDeepSleepObserver, void *> observer{this, &TouchDeepSleepObserver::onDeepSleep};
|
||||||
|
} static touchDeepSleepObserver;
|
||||||
|
|
||||||
|
bool readTouch(int16_t *x, int16_t *y)
|
||||||
|
{
|
||||||
|
if (!digitalRead(GT911_PIN_INT)) {
|
||||||
|
int16_t raw_x;
|
||||||
|
int16_t raw_y;
|
||||||
|
if (touch.getPoint(&raw_x, &raw_y)) {
|
||||||
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
// Transform raw GT911 axes to visual-frame coordinates for the current display rotation.
|
||||||
|
// rotation=3 is the physical identity (device's default orientation).
|
||||||
|
switch (NicheGraphics::InkHUD::InkHUD::getInstance()->persistence->settings.rotation) {
|
||||||
|
default:
|
||||||
|
case 3:
|
||||||
|
*x = raw_x;
|
||||||
|
*y = raw_y;
|
||||||
|
break; // identity
|
||||||
|
case 2:
|
||||||
|
*x = (EPD_WIDTH - 1) - raw_y;
|
||||||
|
*y = raw_x;
|
||||||
|
break; // 90° CW tilt
|
||||||
|
case 1:
|
||||||
|
*x = (EPD_HEIGHT - 1) - raw_x;
|
||||||
|
*y = (EPD_WIDTH - 1) - raw_y;
|
||||||
|
break; // 180° flip
|
||||||
|
case 0:
|
||||||
|
*x = raw_y;
|
||||||
|
*y = (EPD_HEIGHT - 1) - raw_x;
|
||||||
|
break; // 90° CCW tilt
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
*x = raw_x;
|
||||||
|
*y = raw_y;
|
||||||
|
#endif
|
||||||
|
LOG_DEBUG("touched(%d/%d)", *x, *y);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void earlyInitVariant()
|
void earlyInitVariant()
|
||||||
{
|
{
|
||||||
@@ -37,3 +161,19 @@ void variant_shutdown()
|
|||||||
// Ensure frontlight is off during deep sleep
|
// Ensure frontlight is off during deep sleep
|
||||||
digitalWrite(BOARD_BL_EN, LOW);
|
digitalWrite(BOARD_BL_EN, LOW);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lateInitVariant()
|
||||||
|
{
|
||||||
|
touch.setPins(GT911_PIN_RST, GT911_PIN_INT);
|
||||||
|
if (touch.begin(Wire, GT911_SLAVE_ADDRESS_H, GT911_PIN_SDA, GT911_PIN_SCL)) {
|
||||||
|
touchDeepSleepObserver.observer.observe(¬ifyDeepSleep);
|
||||||
|
touchScreenImpl1 = new TouchScreenImpl1(EPD_WIDTH, EPD_HEIGHT, readTouch);
|
||||||
|
touchScreenImpl1->init();
|
||||||
|
#ifdef MESHTASTIC_INCLUDE_NICHE_GRAPHICS
|
||||||
|
touchBridge.observe(touchScreenImpl1);
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
LOG_ERROR("Failed to find touch controller!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ build_flags = ${esp32s3_base.build_flags}
|
|||||||
|
|
||||||
lib_deps = ${esp32s3_base.lib_deps}
|
lib_deps = ${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
# renovate: datasource=git-refs depName=ESP8266Audio packageName=https://github.com/meshtastic/ESP8266Audio gitBranch=meshtastic-2.0.0-dacfix
|
# renovate: datasource=git-refs depName=ESP8266Audio packageName=https://github.com/meshtastic/ESP8266Audio gitBranch=meshtastic-2.0.0-dacfix
|
||||||
https://github.com/meshtastic/ESP8266Audio/archive/343024632ee78d6216907b2353fc943a62422d80.zip
|
https://github.com/meshtastic/ESP8266Audio/archive/343024632ee78d6216907b2353fc943a62422d80.zip
|
||||||
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
|
# renovate: datasource=custom.pio depName=ESP8266SAM packageName=earlephilhower/library/ESP8266SAM
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|
||||||
[env:tracksenger-lcd]
|
[env:tracksenger-lcd]
|
||||||
custom_meshtastic_hw_model = 48
|
custom_meshtastic_hw_model = 48
|
||||||
@@ -48,7 +48,7 @@ build_flags =
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${esp32s3_base.lib_deps}
|
${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
|
|
||||||
[env:tracksenger-oled]
|
[env:tracksenger-oled]
|
||||||
custom_meshtastic_hw_model = 48
|
custom_meshtastic_hw_model = 48
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ build_src_filter =
|
|||||||
|
|
||||||
lib_deps = ${esp32s3_base.lib_deps}
|
lib_deps = ${esp32s3_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
# TODO renovate https://gitlab.com/hamishcunningham/unphonelibrary#meshtastic@9.0.0
|
# TODO renovate https://gitlab.com/hamishcunningham/unphonelibrary#meshtastic@9.0.0
|
||||||
https://gitlab.com/hamishcunningham/unphonelibrary/-/archive/meshtastic/unphonelibrary-meshtastic.zip
|
https://gitlab.com/hamishcunningham/unphonelibrary/-/archive/meshtastic/unphonelibrary-meshtastic.zip
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ lib_deps =
|
|||||||
# renovate: datasource=custom.pio depName=rweather/Crypto packageName=rweather/library/Crypto
|
# renovate: datasource=custom.pio depName=rweather/Crypto packageName=rweather/library/Crypto
|
||||||
rweather/Crypto@0.4.0
|
rweather/Crypto@0.4.0
|
||||||
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
# renovate: datasource=custom.pio depName=LovyanGFX packageName=lovyan03/library/LovyanGFX
|
||||||
lovyan03/LovyanGFX@1.2.19
|
lovyan03/LovyanGFX@1.2.20
|
||||||
; # renovate: datasource=git-refs depName=libch341-spi-userspace packageName=https://github.com/pine64/libch341-spi-userspace gitBranch=main
|
; # renovate: datasource=git-refs depName=libch341-spi-userspace packageName=https://github.com/pine64/libch341-spi-userspace gitBranch=main
|
||||||
https://github.com/pine64/libch341-spi-userspace/archive/23c42319a69cffcb65868e3c72e6bed83974a393.zip
|
https://github.com/pine64/libch341-spi-userspace/archive/23c42319a69cffcb65868e3c72e6bed83974a393.zip
|
||||||
# renovate: datasource=custom.pio depName=adafruit/Adafruit seesaw Library packageName=adafruit/library/Adafruit seesaw Library
|
# renovate: datasource=custom.pio depName=adafruit/Adafruit seesaw Library packageName=adafruit/library/Adafruit seesaw Library
|
||||||
|
|||||||
@@ -12,5 +12,5 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/Dongle_
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/ME25LS0
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
; If not set we will default to uploading over serial (first it forces bootloader entry by talking 1200bps to cdcacm)
|
||||||
upload_protocol = nrfutil
|
upload_protocol = nrfutil
|
||||||
;upload_port = /dev/ttyACM1
|
;upload_port = /dev/ttyACM1
|
||||||
|
|||||||
@@ -15,6 +15,6 @@ lib_deps =
|
|||||||
# renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master
|
# renovate: datasource=git-refs depName=meshtastic-ESP32_Codec2 packageName=https://github.com/meshtastic/ESP32_Codec2 gitBranch=master
|
||||||
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
|
https://github.com/meshtastic/ESP32_Codec2/archive/633326c78ac251c059ab3a8c430fcdf25b41672f.zip
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
;upload_port = /dev/ttyACM4
|
;upload_port = /dev/ttyACM4
|
||||||
@@ -9,5 +9,5 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/TWC_mes
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
debug_tool = jlink
|
debug_tool = jlink
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak4631
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
# renovate: datasource=custom.pio depName=Melopero RV3028 packageName=melopero/library/Melopero RV3028
|
# renovate: datasource=custom.pio depName=Melopero RV3028 packageName=melopero/library/Melopero RV3028
|
||||||
melopero/Melopero RV3028@1.2.0
|
melopero/Melopero RV3028@1.2.0
|
||||||
# renovate: datasource=custom.pio depName=RAK NCP5623 RGB LED packageName=rakwireless/library/RAKwireless NCP5623 RGB LED library
|
# renovate: datasource=custom.pio depName=RAK NCP5623 RGB LED packageName=rakwireless/library/RAKwireless NCP5623 RGB LED library
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ build_src_filter = ${nrf52_base.build_src_filter} +<../variants/nrf52840/rak4631
|
|||||||
lib_deps =
|
lib_deps =
|
||||||
${nrf52840_base.lib_deps}
|
${nrf52840_base.lib_deps}
|
||||||
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
# renovate: datasource=custom.pio depName=GxEPD2 packageName=zinggjm/library/GxEPD2
|
||||||
zinggjm/GxEPD2@1.6.8
|
zinggjm/GxEPD2@1.6.9
|
||||||
# renovate: datasource=custom.pio depName=Melopero RV3028 packageName=melopero/library/Melopero RV3028
|
# renovate: datasource=custom.pio depName=Melopero RV3028 packageName=melopero/library/Melopero RV3028
|
||||||
melopero/Melopero RV3028@1.2.0
|
melopero/Melopero RV3028@1.2.0
|
||||||
# renovate: datasource=custom.pio depName=RAK NCP5623 RGB LED packageName=rakwireless/library/RAKwireless NCP5623 RGB LED library
|
# renovate: datasource=custom.pio depName=RAK NCP5623 RGB LED packageName=rakwireless/library/RAKwireless NCP5623 RGB LED library
|
||||||
|
|||||||
Reference in New Issue
Block a user