diff --git a/changelog.md b/changelog.md index 7a854e7d..d659f22a 100644 --- a/changelog.md +++ b/changelog.md @@ -16,7 +16,7 @@ provenance. - A UF2 application copy marks `bank_0` invalid when its first application block arrives, so a cable pulled mid-copy leaves the device with no application instead of an old `bank_0` marked valid over a half-written image. The completion path records the real application size as before. - A bootloader self-update whose staged image would overwrite the tail of the installed application (one larger than 744 KB on S140 6.1.1 or 740 KB on 7.3.0) marks `bank_0` invalid first, so the device comes up in DFU with no application instead of booting a corrupted one. - A central that disconnects mid-transfer can start a fresh BLE DFU without the board being reset. -- DFU screens on I2C mono OLEDs (SSD1306 and SH1106), with a four-line layout: title, mode, version, and banner. A board opts in by defining `DISPLAY_PIN_SDA` in its `board.h`; `boards.h` rejects a board that also defines `DISPLAY_PIN_SCK`, since TWIM0 and SPIM0 share a peripheral. The bootloader probes 0x3C and 0x3D and reads the controller type off the panel, and a board with no panel shows nothing and otherwise behaves as before. Enabled on `wiscore_rak4631_board`, `wiscore_rak3401`, `wio_tracker_l1`, `promicro_nrf52840`, `xiao_nrf52840_ble`, and `xiao_nrf52840_ble_sense`, for about 2 KB of bootloader flash each. Verified on the RAK4631 and the Wio Tracker L1; the other four follow their firmware variants' pins. On the RAK4631 and RAK3401, DFU raises the switched 3V3_S rail (WB_IO2) that feeds the WisBlock slots, and lowers it again when no panel answers. +- DFU screens on I2C mono OLEDs (SSD1306 and SH1106), with a four-line layout: title, mode, version, and banner. A board opts in by defining `DISPLAY_PIN_SDA` in its `board.h`; `boards.h` rejects a board that also defines `DISPLAY_PIN_SCK`, since TWIM0 and SPIM0 share a peripheral. The bootloader probes 0x3C and 0x3D and reads the controller type off the panel, and a board with no panel shows nothing and otherwise behaves as before. Enabled on `wiscore_rak4631_board`, `wiscore_rak3401`, `wio_tracker_l1`, `wio_tracker_l1_pro_1w`, `promicro_nrf52840`, `xiao_nrf52840_ble`, and `xiao_nrf52840_ble_sense`, for about 2 KB of bootloader flash each. Verified on the RAK4631 and the Wio Tracker L1; the other five follow their firmware variants' pins. On the RAK4631 and RAK3401, DFU raises the switched 3V3_S rail (WB_IO2) that feeds the WisBlock slots, and lowers it again when no panel answers. - Fixed an out-of-bounds write in `printicon()` on the 160x80 `heltec_t096` and `heltec_t1`, where the third drag icon ran past the end of `frame_buf`. Those boards place it inside the panel, and `printicon()` skips any icon that would land outside. - Fixed BLE OTA started from an application's buttonless DFU falling back to the application after about 10 s. The 0xB1 entry now restarts through the 0xA8 path, so the bootloader initializes the SoftDevice itself; the peer data for reconnection survives the reset. - The DFU screen shows upload progress during UF2, serial, and BLE transfers, as a bar in place of the banner. The title reads BOOTLOADER during a bootloader update, ERASE during a factory erase, WRONG FILE for a UF2 this board cannot take, and NO FIRMWARE when DFU starts without a valid application. diff --git a/src/boards/wio_tracker_l1_pro_1w/board.h b/src/boards/wio_tracker_l1_pro_1w/board.h index b215441c..03e175b2 100644 --- a/src/boards/wio_tracker_l1_pro_1w/board.h +++ b/src/boards/wio_tracker_l1_pro_1w/board.h @@ -44,6 +44,21 @@ #define BUTTON_2 _PINNUM(0, 8) #define BUTTON_PULL NRF_GPIO_PIN_PULLUP +/*------------------------------------------------------------------*/ +/* DISPLAY - SH1106 OLED at 0x3D on the firmware's Wire bus (D14/D15) + *------------------------------------------------------------------*/ +#define DISPLAY_CONTROLLER_SH1106 +#define DISPLAY_I2C_ADDR 0x3D + +#define DISPLAY_PIN_SDA _PINNUM(0, 6) +#define DISPLAY_PIN_SCL _PINNUM(0, 5) + +#define DISPLAY_WIDTH 128 +#define DISPLAY_HEIGHT 64 +#define DISPLAY_COL_OFFSET 2 + +#define DISPLAY_TITLE "L1 PRO 1W" + //--------------------------------------------------------------------+ // BLE OTA //--------------------------------------------------------------------+