mirror of
https://github.com/alexhopeoconnor/firmware.git
synced 2026-10-04 03:18:10 +10:00
* refactor(graphics): select Arduino_GFX panels with a capability flag TFTDisplay tested `defined(HACKADAY_COMMUNICATOR)` in a dozen places to mean "this panel is driven by Arduino_GFX rather than LovyanGFX". Every new Arduino_GFX board had to be appended to all of them. Move the decision into the variant as USE_ARDUINO_GFX so the display code stops naming individual boards. No behaviour change: the Hackaday Communicator is still the only board that sets it. * feat(boards): add Heltec RC32, RC52 and RCC6 Three boards around the same 128x220 NV3001B panel: RC32 (ESP32-S3), RCC6 (ESP32-C6) and RC52 (nRF52840). They differ only in how the panel bus is wired, so they share one branch in TFTDisplay behind TFT_NV3001B. RC32 and RC52 also carry a rotary encoder on a TCA6408 I2C expander. That lands as its own input source rather than as board conditionals inside i2cButton, which is the M5Stack UnitC6L button driver and stays untouched. On RC52 and RCC6 the panel is an add-on module, so probe it before reporting a screen. The probe reuses the bit-banged SPI helper that already backs the T114 ST7789 check. Arduino_GFX is pinned to the upstream commit that added the NV3001B driver; it has not shipped in a tagged release yet. Co-Authored-By: Quency-D <55523105+Quency-D@users.noreply.github.com> * feat(gps): detect and configure the LC760CA GNSS module The LC760CA is another Unicore part, so it joins the $PDTINFO probe family and reuses the CM121 message-rate setup. It answers with CC1161W. GNSS_MODEL_LC760CA goes immediately before GNSS_MODEL_GENERIC_NMEA: the sentinel has to stay last because isValidGnssModel() uses it as the exclusive upper bound on values the probe cache may hold. Placing the new model after it would leave LC760CA permanently uncacheable. Co-Authored-By: Quency-D <55523105+Quency-D@users.noreply.github.com> * fix(graphics): re-init the NV3001B after the panel rail comes back DISPLAYOFF de-asserts VTFT_CTRL, which cuts power to the panel, so the controller loses MADCTL, COLMOD and gamma. displayOn() only sends sleep-out and cannot restore them, leaving the panel dark or in the wrong format after wake. Re-run begin() once the rail has settled, and repaint in full since the re-init leaves display RAM undefined. Also stop the TCA6408 rotary polling from two threads at once. Registering as an InputPollable meant InputBroker's pollSoon task could call pollOnce() while runOnce() was mid-transfer on the main thread, with nothing serialising Wire or the decoder state. Drop InputPollable and have the interrupt wake the thread instead, the way ButtonThread does, so the bus and the decode stay on one thread. * fix(graphics): skip the NV3001B wake when re-init fails begin() reports whether the bus came up. Ignoring it meant a failed re-init still lit the backlight and drove a full-screen repaint at a panel that was never initialised. * chore(boards): ship the Heltec RC boards at release level release is the normal level for a variant; the matrix generator still builds each of these in this PR because they add a new platformio.ini. --------- Co-authored-by: Quency-D <55523105+Quency-D@users.noreply.github.com>
61 lines
1.5 KiB
C
61 lines
1.5 KiB
C
#ifndef Pins_Arduino_h
|
|
#define Pins_Arduino_h
|
|
|
|
#include <stdint.h>
|
|
|
|
#define USB_VID 0x303a
|
|
#define USB_PID 0x1001
|
|
|
|
static const uint8_t TX = 43;
|
|
static const uint8_t RX = 44;
|
|
|
|
static const uint8_t SDA = 21;
|
|
static const uint8_t SCL = 18;
|
|
|
|
static const uint8_t SS = 10;
|
|
static const uint8_t MOSI = 12;
|
|
static const uint8_t MISO = 13;
|
|
static const uint8_t SCK = 11;
|
|
|
|
static const uint8_t A0 = 1;
|
|
static const uint8_t A1 = 2;
|
|
static const uint8_t A2 = 3;
|
|
static const uint8_t A3 = 4;
|
|
static const uint8_t A4 = 5;
|
|
static const uint8_t A5 = 6;
|
|
static const uint8_t A6 = 7;
|
|
static const uint8_t A7 = 8;
|
|
static const uint8_t A8 = 9;
|
|
static const uint8_t A9 = 10;
|
|
static const uint8_t A10 = 11;
|
|
static const uint8_t A11 = 12;
|
|
static const uint8_t A12 = 13;
|
|
static const uint8_t A13 = 14;
|
|
static const uint8_t A14 = 15;
|
|
static const uint8_t A15 = 16;
|
|
static const uint8_t A16 = 17;
|
|
static const uint8_t A17 = 18;
|
|
static const uint8_t A18 = 19;
|
|
static const uint8_t A19 = 20;
|
|
|
|
static const uint8_t T1 = 1;
|
|
static const uint8_t T2 = 2;
|
|
static const uint8_t T3 = 3;
|
|
static const uint8_t T4 = 4;
|
|
static const uint8_t T5 = 5;
|
|
static const uint8_t T6 = 6;
|
|
static const uint8_t T7 = 7;
|
|
static const uint8_t T8 = 8;
|
|
static const uint8_t T9 = 9;
|
|
static const uint8_t T10 = 10;
|
|
static const uint8_t T11 = 11;
|
|
static const uint8_t T12 = 12;
|
|
static const uint8_t T13 = 13;
|
|
static const uint8_t T14 = 14;
|
|
|
|
static const uint8_t RST_LoRa = 9;
|
|
static const uint8_t BUSY_LoRa = 1;
|
|
static const uint8_t DIO1_LoRa = 14;
|
|
|
|
#endif /* Pins_Arduino_h */
|