Commit graph

90 commits

Author SHA1 Message Date
GlassOnTin
2831ac0885 Reset to watch face on display blank timeout
Navigate tileview to the watch face tile before blanking so the
time is always visible when the display wakes. Without this, the
display would wake to whatever screen was last active.
2026-04-07 00:21:53 +01:00
GlassOnTin
2c0c9f3d5a Add LVGL watch GUI with tileview navigation and serial screenshot
LVGL 9.5.0 integration replacing direct framebuffer rendering.
Watch face with time, date, status bar (mode/battery), and three
complications (LoRa/GPS/Steps). Tileview swipe navigation between
five screens: watch face, radio status, GPS, messages, settings.
Haptic feedback on screen transitions via DRV2605.

Radio status screen shows frequency, LoRa params, RSSI bar gauge,
channel utilization, BLE state, and packet counts. GPS screen shows
coordinates, fix quality, altitude/speed, and beacon status.

Serial screenshot tool (scripts/screenshot.py) captures display
contents over USB CDC by sending trigger bytes and receiving the
shadow framebuffer as raw RGB565.

Build changes:
- FlashSize=16M in FQBN (bootloader embeds flash size, defaults 4MB)
- PSRAM=enabled for LVGL draw buffers and screenshot shadow buffer
- Custom 8MB app partition (partition_twatch.csv) for 16MB flash
- flash-twatch_ultra-full make target for full bootloader+partition+app flash

Architecture notes in code:
- display_init() must run BEFORE xl9555_init() (display power gate
  defaults high at power-on, reordering causes black screen)
- LVGL draw buffers use separate swap buffer for RGB565 byte-order
  conversion to avoid corrupting LVGL's internal buffer state
- Touch input registered via function pointer to decouple Gui.h from
  touch library include order
2026-03-28 11:41:45 +00:00
GlassOnTin
deb061943a Add CST9217 touch panel with touch-to-wake display blanking
Touch driver via SensorLib TouchDrvCST92xx on I2C 0x1A with interrupt
on GPIO 12. Touch events unblank the display and reset the blanking
timer. Display blanks after 10 seconds of inactivity.

XL9555 TOUCH_RST now explicitly released at boot. Touch init runs
with explicit I2C_SDA/I2C_SCL pins (same fix as XPowersLib).
2026-03-27 18:48:07 +00:00
GlassOnTin
504fb08fdc Enable CO5300 AMOLED display with live watch face
Display now shows time (00:00 from reset RTC) and status line with
radio state, battery percentage, GPS satellites, and uptime counter.
Display blanking disabled until button input is implemented.
QSPI display driver confirmed working after I2C pin fix.
2026-03-27 16:56:30 +00:00
GlassOnTin
09d1f6409f Add R-Watch (T-Watch Ultra) board support with LoRa, GPS, PMU, RTC, and deep sleep
Board definition (BOARD_TWATCH_ULT = 0x45) for LilyGo T-Watch Ultra
with verified pin mapping from LilyGoLib hardware docs.

Working subsystems:
- SX1262 LoRa radio: online at 868 MHz, tested with rnsd/Reticulum
- AXP2101 PMU: all power rails configured, battery monitoring, charging
- MIA-M10Q GPS: UART at 38400 baud, TinyGPSPlus NMEA parsing
- PCF85063A RTC: time read/write, GPS sync infrastructure
- XL9555 GPIO expander: I2C driver, LoRa antenna switch
- BLE: initialized, KISS protocol responsive
- Deep sleep: button wake (PMU IRQ GPIO 7), timer wake for beacon
- Beacon sleep cycle: periodic wake for GPS beacon TX in standalone mode

New files:
- VISION.md: R-Watch product vision document
- XL9555.h: minimal I2C GPIO expander driver
- CO5300.h: QSPI AMOLED display driver (not yet functional)

Display driver (CO5300.h) is written but disabled (HAS_DISPLAY=false).
QSPI init succeeds but pixel writes don't reach the display controller.
Suspected XL9555/BHI260AP GPIO expander pin mapping issue under investigation.
2026-03-27 12:18:46 +00:00
GlassOnTin
033ddd6757 Add GPS beacon and LXMF telemetry for T-Beam Supreme and Heltec V4
Standalone GPS beacon mode: when no KISS host is connected for 15s,
the RNode transmits position and battery telemetry over LoRa.

Two beacon paths:
- LXMF (recommended): encrypted per-packet messages with announces,
  compatible with Sideband and any LXMF application. Supports IFAC
  network authentication.
- Legacy JSON: plaintext or encrypted raw packets for simple collectors.

Key changes:
- GPS support for T-Beam Supreme S3 (L76K) and Heltec V4 (external)
- SX1262 radio fixes: IQ polarity, DCD preamble lockup, RX reliability
- LXMF identity management with NVS-backed Ed25519/X25519 keys
- IFAC authentication (CMD_IFAC_KEY 0x89) for private networks
- Per-channel serial isolation (USB, BLE, WiFi)
- GPS status page in OLED display rotation
- Provisioning via rnlog: provision-lxmf, provision-ifac
- Documentation in Documentation/BEACON.md
2026-03-12 17:01:29 +00:00
Mark Qvist
7f868c6c28 Added interference display to waterfall. Improved Heltec V4 false interference rejection. 2025-11-22 14:19:23 +01:00
Mark Qvist
99481f751c Cleanup 2025-11-19 15:01:43 +01:00
Mark Qvist
2319813a65 Added support for connecting ESP32S3 RNodes over WiFi 2025-11-17 16:41:25 +01:00
Mark Qvist
aa852f4aed Fixed device name offset in display 2025-11-14 01:16:38 +01:00
Mark Qvist
6d4a48af1f Fixed incorrect display drawing offset 2025-11-10 18:34:23 +01:00
Mark Qvist
c8bb7490a2 Build fixes 2025-11-10 18:19:55 +01:00
Mark Qvist
3cc2041516 Added device ID to display 2025-11-10 17:27:56 +01:00
Mark Qvist
59c0a60b33 Reworked battery charge state detection for boards with only ADC-based PMU. Improved battery charge status info on display. 2025-11-10 15:49:52 +01:00
Mark Qvist
2947df3349 Added Heltec v4 board defines and scaffold 2025-11-01 15:33:24 +01:00
Mark Qvist
7d868b4db6 Support for XIAO ESP32S3 2025-04-13 00:11:21 +02:00
Mark Qvist
33dedb202f Cleanup 2025-04-12 20:59:00 +02:00
Mark Qvist
3df940c791 Fixed typo 2025-04-10 13:02:10 +02:00
Mark Qvist
48bce4ea15 Actually, use SPIM3 for SX1262 on T-Echo 2025-01-16 12:19:38 +01:00
Mark Qvist
9b792862b9 Improved T-Echo e-ink sleep 2025-01-16 11:00:39 +01:00
Mark Qvist
3fab6d4cdb Blank T-Echo display on sleep 2025-01-15 21:43:13 +01:00
Mark Qvist
4e627d6e6b Implemented backlight control and display blanking for T-Echo 2025-01-15 21:19:58 +01:00
Mark Qvist
2d2d90847a Initial T-Echo support 2025-01-15 18:38:14 +01:00
Mark Qvist
32fc5afee2 Added missing config graphic 2025-01-15 12:41:15 +01:00
Mark Qvist
cbe95b10d6 Fixed incorrect display initialisation on T114 causing display noise on startup 2025-01-15 10:20:25 +01:00
Mark Qvist
becc3d0e3d Implemented display rotation on Heltec T114 2025-01-13 11:37:46 +01:00
Mark Qvist
c5ed792280 Scale waterfall dynamic range depending on band 2025-01-09 14:44:49 +01:00
Mark Qvist
2b93b1b9e7 SX1280 parameter modifications 2025-01-08 20:58:12 +01:00
Mark Qvist
01fcaadea5 Heltec T114 build config 2025-01-05 15:50:29 +01:00
Mark Qvist
a663707a69 Waterfall TX width on SX1280 2025-01-03 21:21:11 +01:00
Mark Qvist
52fbe558d4 Only scale bitmaps if scaling factor != 1 2025-01-03 12:10:09 +01:00
liamcottle
f9234733e2 add support for heltec t114 2025-01-02 15:14:18 +13:00
Mark Qvist
571e7d7105 Added display reconditioning function 2024-12-31 14:13:52 +01:00
Mark Qvist
2604b44d64 Added ability to configure display rotation 2024-12-31 13:23:48 +01:00
Mark Qvist
76eaae8554 Cleanup 2024-10-11 16:39:38 +02:00
Mark Qvist
5807cfdb96 Fixed display sleep on T3S3 2024-10-07 18:25:08 +02:00
Mark Qvist
e8dd7dbc93 Added TX packet display to waterfall 2024-10-05 16:44:44 +02:00
liamcottle
940262e2c6 set display mode to landscape 2024-10-05 19:09:57 +13:00
liamcottle
49a524e8d5 add support for rak1921 oled display on rak4631 boards 2024-10-05 16:07:22 +13:00
Mark Qvist
6974a50d10 Added T-Beam Supreme support 2024-10-05 00:42:19 +02:00
Mark Qvist
fef27b194c Basic T-Deck display support 2024-10-03 02:51:54 +02:00
Mark Qvist
423098ff30 Updated display blanking/unblanking 2024-10-01 17:40:18 +02:00
Mark Qvist
0b9f19916e Improved battery calculations for devices without dedicated PMU 2024-10-01 15:33:03 +02:00
Mark Qvist
e5028c88d6 Clear signal bars on BLE device disconnect 2024-10-01 14:58:43 +02:00
Mark Qvist
a4ecc0d6f3 Added display blanking timeout 2024-09-29 02:33:02 +02:00
Mark Qvist
a739d6f3ab Fixed display intensity EEPROM configuration regression 2024-09-29 00:03:14 +02:00
Mark Qvist
f19ccf7078 Added deep sleep support on T3S3 2024-05-18 01:07:38 +02:00
jacob.eva
29e8406437
Fix display on NRF52 2024-05-05 17:15:55 +01:00
Mark Qvist
93ed701f1f Changed default Heltec v3 display orientation 2024-04-20 21:21:03 +02:00
Kevin Brosius
56a51fdafe Update to add product and model codes for Heltec V3, swap to
HELTEC32_V3 name for board ID.  Bluetooth still disabled.
2024-04-11 01:38:06 -04:00