diff --git a/README.md b/README.md index f356bfc5c..f1d47fcd4 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ Boards supported out of the box: - [Waveshare ESP32-S3-Touch-AMOLED-1.8](https://www.waveshare.com/esp32-s3-touch-amoled-1.8.htm?&aff_id=149786) - [Waveshare ESP32-C6-Touch-AMOLED-1.8](https://www.waveshare.com/esp32-c6-touch-amoled-1.8.htm?&aff_id=149786) - [Waveshare ESP32-S3-Touch-AMOLED-2.06](https://www.waveshare.com/esp32-s3-touch-amoled-2.06.htm?&aff_id=149786) +- [Waveshare ESP32-S3-Touch-LCD-1.54](https://www.waveshare.com/esp32-s3-lcd-1.54.htm?sku=33869) (240x240 SPI TFT, not AMOLED) > Please check if a pull request exists for your alternative hardware port before opening a new one, providing QA feedback and testing on the same hardware is more valuable than duplicate pull requests. diff --git a/assets/icon_battery-charging_24.png b/assets/icon_battery-charging_24.png new file mode 100644 index 000000000..4925adda8 Binary files /dev/null and b/assets/icon_battery-charging_24.png differ diff --git a/assets/icon_battery-full_24.png b/assets/icon_battery-full_24.png new file mode 100644 index 000000000..835d9af2c Binary files /dev/null and b/assets/icon_battery-full_24.png differ diff --git a/assets/icon_battery-low_24.png b/assets/icon_battery-low_24.png new file mode 100644 index 000000000..08ab73c9d Binary files /dev/null and b/assets/icon_battery-low_24.png differ diff --git a/assets/icon_battery-medium_24.png b/assets/icon_battery-medium_24.png new file mode 100644 index 000000000..fad5d8335 Binary files /dev/null and b/assets/icon_battery-medium_24.png differ diff --git a/assets/icon_battery_24.png b/assets/icon_battery_24.png new file mode 100644 index 000000000..62ec9a668 Binary files /dev/null and b/assets/icon_battery_24.png differ diff --git a/assets/logo_40.png b/assets/logo_40.png new file mode 100644 index 000000000..202e7f6a7 Binary files /dev/null and b/assets/logo_40.png differ diff --git a/firmware/platformio.ini b/firmware/platformio.ini index ed44dae2f..93e4c3d09 100644 --- a/firmware/platformio.ini +++ b/firmware/platformio.ini @@ -65,6 +65,62 @@ lib_deps = h2zero/NimBLE-Arduino@^2.1.1 +[env:waveshare_lcd_154] +; Waveshare ESP32-S3-Touch-LCD-1.54 — 240x240 ST7789 over plain 4-wire SPI +; (first non-QSPI/TFT port), CST816T touch, battery ADC (no PMU), ES8311 +; speaker. Module is ESP32-S3R8: 16 MB quad flash + 8 MB octal PSRAM +; (esptool-verified: "Embedded PSRAM 8MB (AP_3v3)", eFuse flash type quad), +; hence qio_opi and the 16 MB partition layout. +platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.38-1/platform-espressif32.zip +board = esp32-s3-devkitc-1 +framework = arduino +board_build.arduino.memory_type = qio_opi +board_upload.flash_size = 16MB +board_upload.maximum_size = 16777216 +board_build.partitions = default_16MB.csv +upload_speed = 921600 +monitor_speed = 115200 + +build_src_filter = + +<*> + - + + + +build_flags = + -DBOARD_LCD_154 + -DARDUINO_USB_CDC_ON_BOOT=1 + -DBOARD_HAS_PSRAM + ; NimBLE config — peripheral, 2 simultaneous connections so the OS can + ; hold the HID link (Space key from BOOT button) while the daemon holds + ; its own connection for the custom data service. + -DCONFIG_BT_NIMBLE_ROLE_BROADCASTER=1 + -DCONFIG_BT_NIMBLE_ROLE_PERIPHERAL=1 + -DCONFIG_BT_NIMBLE_ROLE_CENTRAL=0 + -DCONFIG_BT_NIMBLE_ROLE_OBSERVER=0 + -DCONFIG_BT_NIMBLE_MAX_CONNECTIONS=2 + ; LVGL config via build flags + -DLV_CONF_SKIP + -DLV_COLOR_DEPTH=16 + -DLV_USE_LOG=0 + -DLV_USE_BAR=1 + -DLV_USE_LABEL=1 + -DLV_USE_ARC=1 + -DLV_USE_BTN=1 + -DLV_USE_LINE=1 + -DLV_USE_OBJ=1 + -DLV_USE_IMG=1 + -DLV_USE_IMAGE=1 + -DLV_USE_ANIMIMG=0 + -DLV_TICK_CUSTOM=1 + -DLV_USE_SNAPSHOT=1 + +lib_deps = + moononournation/GFX Library for Arduino@^1.6.4 + lvgl/lvgl@^9.2.0 + bblanchon/ArduinoJson@^7.0.0 + h2zero/NimBLE-Arduino@^2.1.1 + + [env:waveshare_amoled_18] platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.38-1/platform-espressif32.zip board = esp32-s3-devkitc-1 diff --git a/firmware/src/boards/waveshare_lcd_154/board.h b/firmware/src/boards/waveshare_lcd_154/board.h new file mode 100644 index 000000000..43954ed4b --- /dev/null +++ b/firmware/src/boards/waveshare_lcd_154/board.h @@ -0,0 +1,66 @@ +#pragma once + +// Waveshare ESP32-S3-Touch-LCD-1.54 — 1.54" square TFT kit. +// 240x240 ST7789 (plain 4-wire SPI, not QSPI) + CST816T touch + battery ADC +// (no PMU — the ETA6098 charger is standalone) + ES8311 codec + speaker. +// QMI8658 IMU is populated but unused (fixed enclosure orientation). +// +// Pin map taken from the BambuHelper project's ws_lcd_154 configuration, +// which is hardware-tested on this exact kit (display, touch, buttons, +// battery ADC and ES8311 all exercised there). + +#define BOARD_NAME "Waveshare LCD 1.54" + +// ---- Display geometry ---- +#define LCD_WIDTH 240 +#define LCD_HEIGHT 240 + +// ---- SPI display pins (ST7789, 4-wire SPI) ---- +#define LCD_CS 21 +#define LCD_SCLK 38 +#define LCD_MOSI 39 +#define LCD_DC 45 +#define LCD_RST 40 +#define LCD_BL 46 // backlight, LEDC PWM (TFT has no brightness cmd) + +// ---- I2C bus (touch + codec + IMU share one bus) ---- +#define IIC_SDA 42 +#define IIC_SCL 41 + +// ---- Touch (CST816T, minimal inline I2C reader) ---- +#define TP_INT 48 +#define TP_RST 47 +#define CST816_ADDR 0x15 + +// ---- Battery (ADC divider, no I2C-readable PMU) ---- +// VBAT → 3.0x divider → GPIO1. BAT_EN (GPIO2) is the power-hold line: must be +// driven HIGH early in board_init() or the board browns out on battery power. +#define BAT_EN 2 +#define BAT_ADC_PIN 1 +#define BAT_VOLT_DIVIDER 3.0f + +// ---- Audio (ES8311 mono codec + speaker, I2S) ---- +// Pins from Waveshare's factory ES8311 example. No mic path wired (the ES7210 +// mic ADC is a separate chip) — DIN unused. +#define SND_I2S_MCLK 8 +#define SND_I2S_BCLK 9 +#define SND_I2S_WS 10 // LRCK +#define SND_I2S_DOUT 12 // ESP → ES8311 (speaker) +#define SND_I2S_DIN -1 // unused +#define SND_PA_PIN 7 // power-amp enable (HIGH = on) +#define SND_SAMPLE_RATE 44100 // must match the embedded PCM (bell_pcm.h) +#define SND_ES8311_ADDR 0x18 + +// ---- Buttons (active-LOW GPIOs, from the Waveshare button example) ---- +#define BTN_BACK_GPIO 0 // BOOT — primary, Space (PTT) +#define BTN_FWD_GPIO 5 // secondary, Shift+Tab (mode toggle) +#define BTN_PWR_GPIO 4 // PWR-role button — screens/brightness/pairing; + // hold 8s = power off (see power.cpp) + +// ---- Capability flags ---- +#define BOARD_HAS_SECONDARY_BUTTON 1 +#define BOARD_HAS_ROTATION 0 +#define BOARD_HAS_IMU 0 // QMI8658 present but unused +#define BOARD_HAS_BATTERY 1 +#define BOARD_HAS_IO_EXPANDER 0 +#define BOARD_HAS_SOUND 1 diff --git a/firmware/src/boards/waveshare_lcd_154/board_init.cpp b/firmware/src/boards/waveshare_lcd_154/board_init.cpp new file mode 100644 index 000000000..b01d14c1b --- /dev/null +++ b/firmware/src/boards/waveshare_lcd_154/board_init.cpp @@ -0,0 +1,19 @@ +#include "board.h" +#include +#include +#include + +// Bring up the shared I2C bus and assert the battery power-hold line. BAT_EN +// must go HIGH before anything power-hungry runs or the board browns out when +// running from battery (it is harmless on USB power). No IO expander on this +// kit; the touch reset GPIO is pulsed in touch_hal_init(). +extern "C" void board_init(void) { + // Release the pad hold a power-off left behind (power.cpp latches BAT_EN + // low with gpio_hold_en before deep sleep) — without this the HIGH write + // below would not reach the pin after a USB pseudo-off wake. + gpio_hold_dis((gpio_num_t)BAT_EN); + pinMode(BAT_EN, OUTPUT); + digitalWrite(BAT_EN, HIGH); + + Wire.begin(IIC_SDA, IIC_SCL); +} diff --git a/firmware/src/boards/waveshare_lcd_154/caps.cpp b/firmware/src/boards/waveshare_lcd_154/caps.cpp new file mode 100644 index 000000000..256befedb --- /dev/null +++ b/firmware/src/boards/waveshare_lcd_154/caps.cpp @@ -0,0 +1,16 @@ +#include "../../hal/board_caps.h" +#include "board.h" + +static const BoardCaps caps = { + .name = BOARD_NAME, + .width = LCD_WIDTH, + .height = LCD_HEIGHT, + // BOOT (primary) + GPIO5 (secondary). The PWR-role button on GPIO4 is + // handled in power.cpp and not counted here. + .button_count = (uint8_t)(1 + BOARD_HAS_SECONDARY_BUTTON), + .has_rotation = (bool)BOARD_HAS_ROTATION, + .has_battery = (bool)BOARD_HAS_BATTERY, + .has_imu = (bool)BOARD_HAS_IMU, +}; + +const BoardCaps& board_caps(void) { return caps; } diff --git a/firmware/src/boards/waveshare_lcd_154/display.cpp b/firmware/src/boards/waveshare_lcd_154/display.cpp new file mode 100644 index 000000000..6b1da1d44 --- /dev/null +++ b/firmware/src/boards/waveshare_lcd_154/display.cpp @@ -0,0 +1,52 @@ +#include "../../hal/display_hal.h" +#include "board.h" +#include +#include + +// ST7789 over plain 4-wire SPI — the first non-QSPI panel in the tree, but +// Arduino_GFX abstracts the bus so the HAL surface is identical. The ST7789 +// has no in-panel brightness command; brightness is a LEDC PWM duty on the +// backlight GPIO instead, which keeps the idle fade working unchanged. + +static Arduino_DataBus* bus = nullptr; +static Arduino_ST7789* gfx = nullptr; + +void display_hal_init(void) { + bus = new Arduino_ESP32SPI(LCD_DC, LCD_CS, LCD_SCLK, LCD_MOSI, + GFX_NOT_DEFINED /* no MISO */); + // 240x240 window of the 240x320 GRAM: rows 0-239 at rotation 0, so + // offsets are 0,0 (the 80-row offset only matters for rotations 2/3). + // ips=true — this module needs color inversion (matches the + // hardware-tested BambuHelper config's USE_ST7789_INVERT). + gfx = new Arduino_ST7789(bus, LCD_RST, 0 /* rotation */, true /* ips */, + LCD_WIDTH, LCD_HEIGHT, 0, 0, 0, 80); +} + +void display_hal_begin(void) { + gfx->begin(80000000); // 80 MHz write clock, hardware-tested on this panel + gfx->fillScreen(0x0000); + ledcAttach(LCD_BL, 5000 /* Hz */, 8 /* bits */); + ledcWrite(LCD_BL, 200); +} + +void display_hal_set_brightness(uint8_t level) { + ledcWrite(LCD_BL, level); +} + +void display_hal_fill_screen(uint16_t color) { + if (gfx) gfx->fillScreen(color); +} + +void display_hal_draw_bitmap(int32_t x, int32_t y, int32_t w, int32_t h, + const uint16_t* pixels) { + if (gfx) gfx->draw16bitRGBBitmap(x, y, (uint16_t*)pixels, w, h); +} + +void display_hal_tick(void) { + // No rotation cycle on this board. +} + +// ST7789 over SPI has no flush-region alignment requirement. +void display_hal_round_area(int32_t* x1, int32_t* y1, int32_t* x2, int32_t* y2) { + (void)x1; (void)y1; (void)x2; (void)y2; +} diff --git a/firmware/src/boards/waveshare_lcd_154/imu.cpp b/firmware/src/boards/waveshare_lcd_154/imu.cpp new file mode 100644 index 000000000..546b693c8 --- /dev/null +++ b/firmware/src/boards/waveshare_lcd_154/imu.cpp @@ -0,0 +1,9 @@ +#include "../../hal/imu_hal.h" + +// QMI8658 is populated on the kit (I2C 0x6B) but the enclosure mounts the +// panel at a fixed orientation, so rotation is off and the IMU stays +// uninitialized. + +void imu_hal_init(void) {} +void imu_hal_tick(void) {} +uint8_t imu_hal_rotation_quadrant(void) { return 0; } diff --git a/firmware/src/boards/waveshare_lcd_154/input.cpp b/firmware/src/boards/waveshare_lcd_154/input.cpp new file mode 100644 index 000000000..f35f13b16 --- /dev/null +++ b/firmware/src/boards/waveshare_lcd_154/input.cpp @@ -0,0 +1,24 @@ +#include "../../hal/input_hal.h" +#include "board.h" +#include + +void input_hal_init(void) { + pinMode(BTN_BACK_GPIO, INPUT_PULLUP); +#if BOARD_HAS_SECONDARY_BUTTON + pinMode(BTN_FWD_GPIO, INPUT_PULLUP); +#endif +} + +bool input_hal_is_held(InputButton btn) { + switch (btn) { + case INPUT_BTN_PRIMARY: + return digitalRead(BTN_BACK_GPIO) == LOW; + case INPUT_BTN_SECONDARY: +#if BOARD_HAS_SECONDARY_BUTTON + return digitalRead(BTN_FWD_GPIO) == LOW; +#else + return false; +#endif + } + return false; +} diff --git a/firmware/src/boards/waveshare_lcd_154/power.cpp b/firmware/src/boards/waveshare_lcd_154/power.cpp new file mode 100644 index 000000000..f779b5ed6 --- /dev/null +++ b/firmware/src/boards/waveshare_lcd_154/power.cpp @@ -0,0 +1,130 @@ +#include "../../hal/power_hal.h" +#include "../../hal/display_hal.h" +#include "board.h" +#include +#include +#include + +// No PMU on this kit — the ETA6098 charger is standalone and exposes nothing +// over I2C. Battery percentage comes from the VBAT divider on BAT_ADC_PIN; +// charging / VBUS state is unknowable, so both report false. +// +// The PWR-role button is a plain active-LOW GPIO. Same software edge +// synthesis as the AMOLED-1.8 port (which polls an IO expander instead): +// short — fired on release if the hold was shorter than PWR_LONG_MS +// long — fired once when a hold crosses PWR_LONG_MS +// release — fired on every release edge +// This keeps the hold-to-pair gesture logic in main.cpp board-agnostic. +// +// Power OFF mirrors the AXP boards' 8-second hardware shutdown, synthesized +// in software since there is no PMU: holding the PWR button to 8 s drops the +// BAT_EN latch (hard power cut on battery) and deep-sleeps (pseudo-off on +// USB, where the rail can't be cut). The pairing gesture in main.cpp already +// disarms at 6 s precisely to leave this window free, so the timings compose +// without any shared-code change. Power back ON: center PWR button (battery, +// re-raises the latched rail) or BOOT press / reset (USB deep sleep, via the +// ext0 wake armed below). + +#define BATTERY_POLL_MS 2000 +#define PWR_POLL_MS 50 +#define PWR_LONG_MS 1500 +#define PWR_OFF_HOLD_MS 8000 // mirrors the AXP2101 PKEY 8s shutdown + +static int cached_pct = -1; +static bool pwr_pressed_flag = false; +static bool pwr_long_flag = false; +static bool pwr_released_flag = false; +static bool last_pwr_state = false; +static uint32_t pwr_press_started_ms = 0; +static bool pwr_long_fired = false; +static uint32_t last_battery_ms = 0; +static uint32_t last_pwr_ms = 0; + +static void sample_battery(void) { + // Average a few reads — the divider is high-impedance and single ADC + // samples on the S3 are noisy. + uint32_t mv = 0; + for (int i = 0; i < 4; i++) mv += analogReadMilliVolts(BAT_ADC_PIN); + float vbat = (mv / 4) * BAT_VOLT_DIVIDER / 1000.0f; + + if (vbat < 3.0f) { // divider floating — no battery connected + cached_pct = -1; + return; + } + // Linear 3.3 V → 0%, 4.2 V → 100%. Crude but serviceable for a + // four-state indicator icon. + int pct = (int)((vbat - 3.3f) * (100.0f / 0.9f) + 0.5f); + cached_pct = pct < 0 ? 0 : pct > 100 ? 100 : pct; +} + +static void power_off(void) { + Serial.println("PWR held 8s — powering off"); + Serial.flush(); + display_hal_set_brightness(0); + delay(50); + + // Drop the battery power-hold latch and keep it low through deep sleep. + // On battery this cuts the rail outright; on USB the chip deep-sleeps. + digitalWrite(BAT_EN, LOW); + gpio_hold_en((gpio_num_t)BAT_EN); + esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); + // On USB power, let a BOOT press wake the pseudo-off state (GPIO0 is + // RTC-capable on the S3). Irrelevant on battery — the rail is gone. + esp_sleep_enable_ext0_wakeup(GPIO_NUM_0, 0); + delay(200); + esp_deep_sleep_start(); +} + +void power_hal_init(void) { + pinMode(BTN_PWR_GPIO, INPUT_PULLUP); + analogReadResolution(12); + sample_battery(); +} + +void power_hal_tick(void) { + uint32_t now = millis(); + + if (now - last_battery_ms >= BATTERY_POLL_MS) { + last_battery_ms = now; + sample_battery(); + } + if (now - last_pwr_ms >= PWR_POLL_MS) { + last_pwr_ms = now; + bool pwr_now = (digitalRead(BTN_PWR_GPIO) == LOW); // active LOW + if (pwr_now && !last_pwr_state) { // press edge — hold begins + pwr_press_started_ms = now; + pwr_long_fired = false; + } else if (pwr_now && last_pwr_state) { // held + if (!pwr_long_fired && (now - pwr_press_started_ms >= PWR_LONG_MS)) { + pwr_long_flag = true; + pwr_long_fired = true; + } + if (now - pwr_press_started_ms >= PWR_OFF_HOLD_MS) { + power_off(); // does not return + } + } else if (!pwr_now && last_pwr_state) { // release edge + pwr_released_flag = true; + if (!pwr_long_fired) pwr_pressed_flag = true; // short press + } + last_pwr_state = pwr_now; + } +} + +int power_hal_battery_pct(void) { return cached_pct; } +bool power_hal_is_charging(void) { return false; } +bool power_hal_is_vbus_in(void) { return false; } + +bool power_hal_pwr_pressed(void) { + if (pwr_pressed_flag) { pwr_pressed_flag = false; return true; } + return false; +} + +bool power_hal_pwr_long_pressed(void) { + if (pwr_long_flag) { pwr_long_flag = false; return true; } + return false; +} + +bool power_hal_pwr_released(void) { + if (pwr_released_flag) { pwr_released_flag = false; return true; } + return false; +} diff --git a/firmware/src/boards/waveshare_lcd_154/sound.cpp b/firmware/src/boards/waveshare_lcd_154/sound.cpp new file mode 100644 index 000000000..cee352e42 --- /dev/null +++ b/firmware/src/boards/waveshare_lcd_154/sound.cpp @@ -0,0 +1,28 @@ +#include "../../hal/sound_hal.h" +#include "board.h" + +#if BOARD_HAS_SOUND + +#include +#include "../../chime.h" + +// LCD-1.54: ES8311 codec + speaker, same shared chime engine as the AMOLED +// boards. The power amp is a plain GPIO. No mic path (DIN = -1). + +static void amp_enable(bool on) { + digitalWrite(SND_PA_PIN, on ? HIGH : LOW); +} + +void sound_hal_init(void) { + pinMode(SND_PA_PIN, OUTPUT); + const ChimeConfig cfg = { + SND_I2S_MCLK, SND_I2S_BCLK, SND_I2S_WS, SND_I2S_DOUT, SND_I2S_DIN, + SND_SAMPLE_RATE, SND_ES8311_ADDR, 65, amp_enable + }; + chime_init(cfg); +} + +void sound_hal_play_reset(void) { chime_play(); } +void sound_hal_tick(void) { chime_tick(); } + +#endif // BOARD_HAS_SOUND diff --git a/firmware/src/boards/waveshare_lcd_154/touch.cpp b/firmware/src/boards/waveshare_lcd_154/touch.cpp new file mode 100644 index 000000000..3d166a9b8 --- /dev/null +++ b/firmware/src/boards/waveshare_lcd_154/touch.cpp @@ -0,0 +1,88 @@ +#include "../../hal/touch_hal.h" +#include "board.h" +#include +#include + +// Minimal CST816T reader — same FocalTech-style register layout as the +// AMOLED-1.8 port's inline reader (regs 0x02..0x06), vendored to keep the +// dependency tree copyleft-free: +// reg 0x02: low nibble = active finger count +// reg 0x03 / 0x04: X high (low nibble) + X low +// reg 0x05 / 0x06: Y high (low nibble) + Y low +// The CST816T reports in panel-native orientation on this kit — no axis swap +// or mirror at rotation 0 (matches BambuHelper's hardware-tested config for +// the same board, which applies no swap flags). + +static volatile bool touch_data_ready = false; +static volatile bool touch_pressed = false; +static volatile uint16_t touch_x = 0; +static volatile uint16_t touch_y = 0; + +static void IRAM_ATTR touch_isr(void) { + touch_data_ready = true; +} + +static void touch_read_into_shared_state(void) { + Wire.beginTransmission(CST816_ADDR); + Wire.write(0x02); + if (Wire.endTransmission(false) != 0) { touch_pressed = false; return; } + if (Wire.requestFrom((uint8_t)CST816_ADDR, (uint8_t)5) != 5) { touch_pressed = false; return; } + uint8_t fingers = Wire.read() & 0x0F; + uint8_t xH = Wire.read(); + uint8_t xL = Wire.read(); + uint8_t yH = Wire.read(); + uint8_t yL = Wire.read(); + if (fingers == 0 || fingers > 5) { + touch_pressed = false; + return; + } + touch_x = ((uint16_t)(xH & 0x0F) << 8) | xL; + touch_y = ((uint16_t)(yH & 0x0F) << 8) | yL; + touch_pressed = true; +} + +void touch_hal_init(void) { + // Hardware reset — the CST816T needs a clean reset pulse before it + // responds on I2C (it powers up in a low-power state otherwise). + pinMode(TP_RST, OUTPUT); + digitalWrite(TP_RST, LOW); + delay(10); + digitalWrite(TP_RST, HIGH); + delay(100); + + // Verify the controller answers. CST816 chip-id lives at reg 0xA7. + Wire.beginTransmission(CST816_ADDR); + Wire.write(0xA7); + if (Wire.endTransmission(false) == 0 && + Wire.requestFrom((uint8_t)CST816_ADDR, (uint8_t)1) == 1) { + Serial.printf("Touch CST816 ID=0x%02X (addr 0x%02X)\n", Wire.read(), CST816_ADDR); + } else { + Serial.printf("Touch ID read failed (addr 0x%02X)\n", CST816_ADDR); + } + + // Disable the controller's auto-sleep — asleep it stops raising INT and + // the first tap after idle would be swallowed. Reg 0xFE nonzero = stay on. + Wire.beginTransmission(CST816_ADDR); + Wire.write(0xFE); + Wire.write(0x01); + Wire.endTransmission(); + + pinMode(TP_INT, INPUT_PULLUP); + attachInterrupt(TP_INT, touch_isr, FALLING); + Serial.println("Touch attached on INT pin"); +} + +void touch_hal_read(uint16_t* x, uint16_t* y, bool* pressed) { + if (touch_data_ready) { + touch_data_ready = false; + touch_read_into_shared_state(); + } else if (touch_pressed) { + // CST816 raises INT per report while a finger is down, but the release + // (finger-up) report can be missed if it lands between polls — re-read + // while we think we're pressed so a stuck "pressed" state clears. + touch_read_into_shared_state(); + } + *x = touch_x; + *y = touch_y; + *pressed = touch_pressed; +} diff --git a/firmware/src/icons.h b/firmware/src/icons.h index 33b3612b7..d8948577c 100644 --- a/firmware/src/icons.h +++ b/firmware/src/icons.h @@ -2298,3 +2298,573 @@ static const uint8_t icon_battery_charging_data[6912] = { }; + +#define ICON_BATTERY_SMALL_W 24 +#define ICON_BATTERY_SMALL_H 24 +// RGB565A8: 576 RGB565 pixels (little-endian) followed by 576 alpha bytes +static const uint8_t icon_battery_small_data[1728] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x89, 0xD6, 0xE7, 0xE7, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE6, 0xD6, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x81, 0xFF, 0xFC, 0xE4, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE4, + 0xFC, 0xFF, 0x87, 0x00, 0x03, 0x00, 0x00, 0x00, 0x16, 0xD2, 0xFE, 0x4B, 0x18, 0x1D, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x17, 0x55, 0xF5, 0xDD, 0x0A, 0x01, 0x00, 0x00, 0x00, + 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, 0x20, 0xE1, 0xFC, 0x0A, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x1E, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, + 0x20, 0xE1, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, 0x20, 0xE1, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, + 0x20, 0xE1, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, 0x20, 0xE1, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, + 0x20, 0xE1, 0xFC, 0x0A, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, + 0x1E, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, + 0x15, 0xD1, 0xFE, 0x4C, 0x18, 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x17, + 0x56, 0xF5, 0xDC, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x01, 0x80, 0xFF, 0xFC, 0xE4, 0xE7, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE4, 0xFC, 0xFF, 0x86, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x89, 0xD6, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE6, + 0xD6, 0x87, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1D, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#define ICON_BATTERY_LOW_SMALL_W 24 +#define ICON_BATTERY_LOW_SMALL_H 24 +// RGB565A8: 576 RGB565 pixels (little-endian) followed by 576 alpha bytes +static const uint8_t icon_battery_low_small_data[1728] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x89, 0xD6, 0xE7, 0xE7, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE6, 0xD6, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x81, 0xFF, 0xFC, 0xE4, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE4, + 0xFC, 0xFF, 0x87, 0x00, 0x03, 0x00, 0x00, 0x00, 0x16, 0xD2, 0xFE, 0x4B, 0x19, 0x1B, 0x1A, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x17, 0x55, 0xF5, 0xDD, 0x0A, 0x01, 0x00, 0x00, 0x00, + 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, 0x20, 0xE1, 0xFC, 0x09, 0x07, 0xBE, 0xBE, 0x08, + 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, 0x1E, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, + 0x20, 0xE1, 0xFE, 0x02, 0x1A, 0xEC, 0xEC, 0x1D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, 0x20, 0xE1, 0xFE, 0x02, 0x19, 0xE6, 0xE6, 0x1C, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, + 0x20, 0xE1, 0xFE, 0x02, 0x19, 0xE6, 0xE6, 0x1C, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, 0x20, 0xE1, 0xFE, 0x02, 0x1A, 0xEC, 0xEC, 0x1D, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, + 0x20, 0xE1, 0xFC, 0x09, 0x07, 0xBE, 0xBE, 0x08, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, 0x04, 0x02, + 0x1E, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, + 0x15, 0xD1, 0xFE, 0x4C, 0x19, 0x1B, 0x1A, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1E, 0x17, + 0x56, 0xF5, 0xDC, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x01, 0x80, 0xFF, 0xFC, 0xE4, 0xE7, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE4, 0xFC, 0xFF, 0x86, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x89, 0xD6, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE6, + 0xD6, 0x87, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1D, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#define ICON_BATTERY_MEDIUM_SMALL_W 24 +#define ICON_BATTERY_MEDIUM_SMALL_H 24 +// RGB565A8: 576 RGB565 pixels (little-endian) followed by 576 alpha bytes +static const uint8_t icon_battery_medium_small_data[1728] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x89, 0xD6, 0xE7, 0xE7, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE6, 0xD6, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x81, 0xFF, 0xFC, 0xE4, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE4, + 0xFC, 0xFF, 0x87, 0x00, 0x03, 0x00, 0x00, 0x00, 0x16, 0xD2, 0xFE, 0x4B, 0x19, 0x1B, 0x1A, 0x1C, + 0x1C, 0x1A, 0x1A, 0x1C, 0x1C, 0x1C, 0x1E, 0x17, 0x55, 0xF5, 0xDD, 0x0A, 0x01, 0x00, 0x00, 0x00, + 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, 0x20, 0xE1, 0xFC, 0x09, 0x07, 0xBE, 0xBE, 0x07, + 0x02, 0xC5, 0xB8, 0x0B, 0x02, 0x03, 0x04, 0x02, 0x1E, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, + 0x20, 0xE1, 0xFE, 0x02, 0x1A, 0xEC, 0xEC, 0x1A, 0x02, 0xFF, 0xE9, 0x21, 0x00, 0x02, 0x02, 0x00, + 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, 0x20, 0xE1, 0xFE, 0x02, 0x19, 0xE6, 0xE6, 0x19, + 0x02, 0xFC, 0xE3, 0x1F, 0x00, 0x02, 0x02, 0x00, 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, + 0x20, 0xE1, 0xFE, 0x02, 0x19, 0xE6, 0xE6, 0x19, 0x02, 0xFC, 0xE3, 0x1F, 0x00, 0x02, 0x02, 0x00, + 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, 0x20, 0xE1, 0xFE, 0x02, 0x1A, 0xEC, 0xEC, 0x1A, + 0x02, 0xFF, 0xE9, 0x21, 0x00, 0x02, 0x02, 0x00, 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, + 0x20, 0xE1, 0xFC, 0x09, 0x07, 0xBE, 0xBE, 0x07, 0x02, 0xC5, 0xB8, 0x0B, 0x02, 0x03, 0x04, 0x02, + 0x1E, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, + 0x15, 0xD1, 0xFE, 0x4C, 0x19, 0x1B, 0x1A, 0x1C, 0x1C, 0x1A, 0x1A, 0x1C, 0x1C, 0x1C, 0x1E, 0x17, + 0x56, 0xF5, 0xDC, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x01, 0x80, 0xFF, 0xFC, 0xE4, 0xE7, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE4, 0xFC, 0xFF, 0x86, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x89, 0xD6, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE6, + 0xD6, 0x87, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1D, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#define ICON_BATTERY_FULL_SMALL_W 24 +#define ICON_BATTERY_FULL_SMALL_H 24 +// RGB565A8: 576 RGB565 pixels (little-endian) followed by 576 alpha bytes +static const uint8_t icon_battery_full_small_data[1728] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x1D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x89, 0xD6, 0xE7, 0xE7, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE6, 0xD6, 0x88, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x81, 0xFF, 0xFC, 0xE4, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE4, + 0xFC, 0xFF, 0x87, 0x00, 0x03, 0x00, 0x00, 0x00, 0x16, 0xD2, 0xFE, 0x4B, 0x19, 0x1B, 0x1A, 0x1C, + 0x1C, 0x1A, 0x1A, 0x1C, 0x1C, 0x1A, 0x1D, 0x17, 0x55, 0xF5, 0xDD, 0x0A, 0x01, 0x00, 0x00, 0x00, + 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, 0x20, 0xE1, 0xFC, 0x09, 0x07, 0xBE, 0xBE, 0x07, + 0x02, 0xC5, 0xB9, 0x08, 0x08, 0xB9, 0xC6, 0x02, 0x1D, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, + 0x20, 0xE1, 0xFE, 0x02, 0x1A, 0xEC, 0xEC, 0x1A, 0x02, 0xFF, 0xEB, 0x19, 0x19, 0xEB, 0xFF, 0x02, + 0x19, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, 0x20, 0xE1, 0xFE, 0x02, 0x19, 0xE6, 0xE6, 0x19, + 0x02, 0xFC, 0xE5, 0x18, 0x18, 0xE5, 0xFC, 0x02, 0x19, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, + 0x20, 0xE1, 0xFE, 0x02, 0x19, 0xE6, 0xE6, 0x19, 0x02, 0xFC, 0xE5, 0x18, 0x18, 0xE5, 0xFC, 0x02, + 0x19, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, 0x20, 0xE1, 0xFE, 0x02, 0x1A, 0xEC, 0xEC, 0x1A, + 0x02, 0xFF, 0xEB, 0x19, 0x19, 0xEB, 0xFF, 0x02, 0x19, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, + 0x20, 0xE1, 0xFC, 0x09, 0x07, 0xBE, 0xBE, 0x07, 0x02, 0xC5, 0xB9, 0x08, 0x08, 0xB9, 0xC6, 0x02, + 0x1D, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, + 0x15, 0xD1, 0xFE, 0x4C, 0x19, 0x1B, 0x1A, 0x1C, 0x1C, 0x1A, 0x1A, 0x1C, 0x1C, 0x1A, 0x1D, 0x17, + 0x56, 0xF5, 0xDC, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x01, 0x80, 0xFF, 0xFC, 0xE4, 0xE7, 0xE7, 0xE7, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE4, 0xFC, 0xFF, 0x86, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x89, 0xD6, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0xE6, + 0xD6, 0x87, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1D, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +#define ICON_BATTERY_CHARGING_SMALL_W 24 +#define ICON_BATTERY_CHARGING_SMALL_H 24 +// RGB565A8: 576 RGB565 pixels (little-endian) followed by 576 alpha bytes +static const uint8_t icon_battery_charging_small_data[1728] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x1D, 0x1B, 0x1D, 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x0A, 0x1E, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x89, 0xD6, 0xE7, 0xE4, 0xE7, 0xA4, + 0x0A, 0x00, 0x03, 0x03, 0x00, 0x1D, 0xC6, 0xE8, 0xD6, 0x87, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x80, 0xFF, 0xFC, 0xE4, 0xE5, 0xE7, 0xA6, 0x09, 0x08, 0xBF, 0xC6, 0x03, 0x1C, 0xC7, 0xE5, + 0xFB, 0xFF, 0x86, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0xD1, 0xFE, 0x4B, 0x18, 0x1D, 0x1D, 0x05, + 0x00, 0x74, 0xFF, 0xD0, 0x05, 0x00, 0x0D, 0x19, 0x56, 0xF5, 0xDC, 0x0A, 0x01, 0x00, 0x00, 0x00, + 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xED, 0xFF, 0x49, 0x00, 0x02, 0x00, 0x00, + 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, 0x20, 0xE1, 0xFC, 0x0A, 0x02, 0x02, 0x05, 0x03, + 0xA5, 0xFF, 0x9D, 0x00, 0x01, 0x01, 0x03, 0x02, 0x1E, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, + 0x20, 0xE1, 0xFC, 0x07, 0x00, 0x04, 0x00, 0x4D, 0xF6, 0xEB, 0x46, 0x1E, 0x09, 0x00, 0x03, 0x00, + 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, 0x20, 0xE1, 0xFC, 0x07, 0x00, 0x01, 0x10, 0xC9, + 0xFF, 0xFB, 0xDC, 0xDF, 0xAF, 0x08, 0x01, 0x00, 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, + 0x20, 0xE1, 0xFC, 0x07, 0x00, 0x00, 0x10, 0xAA, 0xDE, 0xDF, 0xFC, 0xFF, 0xD3, 0x08, 0x02, 0x00, + 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFD, 0xE0, 0x1F, 0x20, 0xE1, 0xFC, 0x07, 0x00, 0x01, 0x00, 0x08, + 0x1E, 0x41, 0xEA, 0xFC, 0x48, 0x00, 0x04, 0x00, 0x1C, 0xE7, 0xE7, 0x19, 0x02, 0xFF, 0xE6, 0x22, + 0x20, 0xE1, 0xFC, 0x0A, 0x02, 0x01, 0x00, 0x00, 0x00, 0x9D, 0xFF, 0xA3, 0x00, 0x02, 0x04, 0x02, + 0x1E, 0xE7, 0xE7, 0x1A, 0x00, 0xC4, 0xB4, 0x09, 0x21, 0xE1, 0xFC, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x48, 0xFF, 0xED, 0x25, 0x01, 0x00, 0x00, 0x00, 0x14, 0xE6, 0xE7, 0x1C, 0x00, 0x05, 0x03, 0x00, + 0x15, 0xD1, 0xFE, 0x4B, 0x1B, 0x09, 0x00, 0x0C, 0xCB, 0xFF, 0x77, 0x00, 0x04, 0x1F, 0x1D, 0x17, + 0x56, 0xF5, 0xDC, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x01, 0x80, 0xFF, 0xFB, 0xE6, 0xD2, 0x12, 0x07, + 0xBE, 0xC3, 0x0B, 0x04, 0xAF, 0xE8, 0xE6, 0xE4, 0xFD, 0xFF, 0x85, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x88, 0xD5, 0xE9, 0xD1, 0x12, 0x00, 0x04, 0x02, 0x00, 0x03, 0xAD, 0xE8, 0xE6, 0xE6, + 0xD6, 0x86, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x1F, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x01, 0x1E, 0x1B, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/firmware/src/logo.h b/firmware/src/logo.h index 863ceaa27..c8b2c6b05 100644 --- a/firmware/src/logo.h +++ b/firmware/src/logo.h @@ -1206,3 +1206,309 @@ static const uint8_t logo_data[19200] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + +#define LOGO_SMALL_WIDTH 40 +#define LOGO_SMALL_HEIGHT 40 +// RGB565A8: 1600 RGB565 pixels (little-endian) followed by 1600 alpha bytes +static const uint8_t logo_small_data[4800] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, + 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, + 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, + 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, + 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xD3, 0xAA, 0xDB, 0xCB, 0xDB, 0xCA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0x8B, 0xDB, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xA9, 0xD3, 0xAA, 0xDB, 0x0B, 0xEC, 0xEB, 0xE3, + 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, + 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, + 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, + 0xEB, 0xE3, 0x0B, 0xEC, 0xAA, 0xDB, 0xAA, 0xCB, 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xCB, 0xDB, 0xAA, 0xDB, 0x8B, 0xDB, 0x00, 0x00, 0xAA, 0xD3, 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0x00, 0x00, 0x4A, 0xD3, 0xAA, 0xDB, 0xCB, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0x4A, 0xFD, 0xAA, 0xD3, 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0x4A, 0xFD, 0x8A, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, + 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xC9, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xCB, 0xDB, 0xAA, 0xDB, 0xCA, 0xDB, 0xEF, 0x7B, 0xAA, 0xD3, 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0xEF, 0x7B, 0xA9, 0xD3, 0xAA, 0xDB, 0xCB, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xCA, 0xD3, 0xFF, 0xFF, 0x4A, 0xAD, 0xE0, 0xFF, 0xE0, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xCB, 0xDB, 0xAA, 0xDB, 0xAB, 0xD3, 0x00, 0x00, 0xAA, 0xD3, 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0x00, 0x00, 0x8A, 0xD3, 0xAA, 0xDB, 0xCB, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0xAA, 0xDB, 0xCB, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xEB, 0xE3, 0xEB, 0xE3, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xEB, 0xE3, 0xEB, 0xE3, 0xCB, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, 0xEB, 0xE3, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xCA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0x8A, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4A, 0xFD, 0x4A, 0xFD, 0xE7, 0xFB, 0xAA, 0xFA, 0x8A, 0xD3, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0x8A, 0xD3, 0xAA, 0xFA, 0x2C, 0xCB, 0x4A, 0xFD, 0x4A, 0xFD, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xD3, 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x89, 0xDB, 0xAA, 0xDB, 0xEB, 0xE3, 0xCA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, + 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, + 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xCA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0x8A, 0xD3, 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xE3, 0xAA, 0xDB, 0xAA, 0xD3, 0xAA, 0xDB, + 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xD3, 0xAA, 0xDB, 0xAA, 0xD3, 0xEB, 0xE3, 0xAA, 0xDB, 0xCA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, + 0xAA, 0xDB, 0xAA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xAA, 0xDB, 0xEB, 0xE3, + 0xAA, 0xDB, 0xAA, 0xD3, 0xAA, 0xDB, 0x29, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xDB, + 0xEB, 0xEB, 0xAA, 0xDB, 0x8B, 0xDB, 0x00, 0x00, 0xCA, 0xDB, 0xEB, 0xEB, 0xAA, 0xDB, 0xEB, 0xDB, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAA, 0xDB, 0xAA, 0xDB, 0xEB, 0xEB, 0xAA, 0xDB, 0x00, 0x00, 0x4A, 0xCB, 0xAA, 0xD3, 0xEB, 0xEB, + 0xCA, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xCB, 0x4A, 0xFD, 0xAA, 0xDB, + 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xD3, 0xAA, 0xFA, 0xCA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xD3, + 0xAA, 0xFA, 0x2C, 0xCB, 0x4A, 0xFD, 0x4A, 0xFD, 0x4A, 0xFD, 0x4A, 0xFD, 0xE7, 0xFB, 0xAA, 0xFA, + 0x8A, 0xD3, 0xAA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xFA, 0x8A, 0xD3, 0xAA, 0xDB, 0xEB, 0xE3, + 0xCA, 0xDB, 0x4A, 0xFD, 0x2C, 0xCB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0xFB, 0x00, 0x00, 0xAA, 0xD3, + 0xEB, 0xE3, 0xAA, 0xDB, 0xAA, 0xD3, 0x00, 0x00, 0xCA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0xCA, 0xDB, + 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, + 0xAA, 0xDB, 0xAA, 0xDB, 0xEB, 0xE3, 0xAA, 0xDB, 0x00, 0x00, 0x8A, 0xD3, 0xAA, 0xD3, 0xEB, 0xE3, + 0xCA, 0xDB, 0x00, 0x00, 0xEF, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0xFB, 0x00, 0x00, 0xAA, 0xDB, + 0x0B, 0xEC, 0xAA, 0xDB, 0x8A, 0xDB, 0x00, 0x00, 0xAA, 0xD3, 0x0B, 0xEC, 0xAA, 0xDB, 0xAA, 0xDB, + 0x00, 0x00, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, + 0x89, 0xDB, 0xAA, 0xDB, 0x0B, 0xEC, 0xAA, 0xDB, 0x00, 0x00, 0x69, 0xD3, 0xAA, 0xDB, 0x0B, 0xEC, + 0xAA, 0xDB, 0x00, 0x00, 0xEF, 0xFB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xCA, 0xDB, + 0xCB, 0xDB, 0xAB, 0xDB, 0xE9, 0xE3, 0x00, 0x00, 0xAA, 0xDB, 0xCB, 0xDB, 0xAB, 0xDB, 0x29, 0xCB, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8A, 0xE3, 0xAA, 0xDB, 0xCB, 0xDB, 0xAA, 0xDB, 0x00, 0x00, 0x29, 0xE3, 0xAA, 0xDB, 0xCB, 0xDB, + 0xAA, 0xDB, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x7B, + 0x4A, 0xFD, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x7B, 0x4A, 0xFD, 0xAA, 0xAA, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xAA, 0xAA, 0x4A, 0xFD, 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x4A, 0xFD, + 0xEF, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x13, 0x97, 0xAD, 0xAA, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, + 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, 0xAC, + 0xAB, 0xAD, 0x98, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1E, 0xED, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x20, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x1C, 0xDE, 0xFC, 0xFA, 0xFC, 0xFC, 0xFB, 0xFB, 0xFC, 0xFC, 0xFC, 0xFC, + 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFB, 0xFB, 0xFC, 0xFC, + 0xFA, 0xFC, 0xDF, 0x1E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0xE1, 0xFF, 0xFD, + 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFD, 0xFF, 0xE2, 0x1E, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x1C, 0xE1, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xE2, 0x1E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0xE1, 0xFF, 0xFC, + 0xFF, 0xEC, 0x68, 0x4F, 0xA9, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xAA, 0x4F, 0x67, 0xEB, 0xFF, 0xFC, 0xFF, 0xE2, 0x1E, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x1C, 0xE1, 0xFF, 0xFC, 0xFF, 0xE0, 0x14, 0x00, 0x79, 0xFF, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x7A, 0x00, 0x13, 0xDF, 0xFF, + 0xFC, 0xFF, 0xE2, 0x1E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1C, 0xE1, 0xFF, 0xFC, + 0xFF, 0xE2, 0x23, 0x03, 0x82, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFD, 0xFF, 0x83, 0x03, 0x22, 0xE1, 0xFF, 0xFC, 0xFF, 0xE2, 0x1E, 0x00, 0x02, 0x00, 0x00, + 0x01, 0x01, 0x02, 0x01, 0x1D, 0xE1, 0xFF, 0xFC, 0xFF, 0xE2, 0x21, 0x02, 0x81, 0xFF, 0xFD, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x82, 0x02, 0x20, 0xE1, 0xFF, + 0xFC, 0xFF, 0xE2, 0x1F, 0x01, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x16, 0xE0, 0xFF, 0xFC, + 0xFF, 0xE1, 0x1A, 0x00, 0x7C, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFD, 0xFF, 0x7D, 0x00, 0x19, 0xE0, 0xFF, 0xFC, 0xFF, 0xE1, 0x18, 0x00, 0x00, 0x00, 0x00, + 0xAD, 0xAD, 0xAD, 0xAB, 0xB6, 0xF5, 0xFF, 0xFE, 0xFF, 0xF6, 0xB7, 0xA8, 0xD6, 0xFF, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xD6, 0xA8, 0xB7, 0xF5, 0xFF, + 0xFE, 0xFF, 0xF6, 0xB6, 0xAB, 0xAD, 0xAD, 0xAD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFB, 0xFB, 0xFB, 0xFB, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0xFC, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xFB, 0xFB, 0xFB, 0xFB, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x52, 0x53, 0x51, 0x65, 0xEB, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xEB, 0x66, 0x51, 0x53, 0x52, 0x52, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xDF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xE0, 0x12, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x04, 0x03, 0x1F, 0xE1, 0xFF, 0xFD, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xE2, 0x21, 0x03, 0x05, 0x03, 0x03, + 0x00, 0x00, 0x01, 0x00, 0x1C, 0xE0, 0xFE, 0xFC, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, + 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, + 0xFC, 0xFE, 0xE1, 0x1E, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0xE7, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE8, 0x1F, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x4A, 0x52, 0xA6, 0xFF, 0xEA, 0x68, 0x4F, 0xA8, 0xFF, 0xEA, 0x66, + 0x51, 0x53, 0x52, 0x52, 0x52, 0x52, 0x53, 0x51, 0x65, 0xE9, 0xFF, 0xA9, 0x4F, 0x67, 0xE9, 0xFF, + 0xA7, 0x52, 0x4A, 0x0A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, + 0xFF, 0xDE, 0x14, 0x00, 0x77, 0xFF, 0xDE, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0xDC, 0xFF, 0x79, 0x00, 0x13, 0xDD, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x03, 0x7E, 0xFF, 0xE0, 0x23, 0x03, 0x7F, 0xFF, 0xE0, 0x20, + 0x03, 0x05, 0x03, 0x03, 0x03, 0x03, 0x04, 0x03, 0x1F, 0xDE, 0xFF, 0x81, 0x03, 0x22, 0xDF, 0xFF, + 0x7F, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7C, + 0xFD, 0xDF, 0x20, 0x00, 0x7D, 0xFD, 0xDF, 0x1D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x1C, 0xDD, 0xFD, 0x7F, 0x00, 0x1F, 0xDE, 0xFD, 0x7D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0xFF, 0xE6, 0x21, 0x00, 0x82, 0xFF, 0xE6, 0x1E, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1D, 0xE4, 0xFF, 0x84, 0x00, 0x20, 0xE5, 0xFF, + 0x82, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, + 0x56, 0x48, 0x0A, 0x00, 0x29, 0x56, 0x48, 0x0A, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x09, 0x48, 0x56, 0x29, 0x00, 0x0A, 0x48, 0x56, 0x29, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x03, 0x03, 0x00, 0x00, 0x02, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; diff --git a/firmware/src/ui.cpp b/firmware/src/ui.cpp index d711b4c7a..c811d3a1c 100644 --- a/firmware/src/ui.cpp +++ b/firmware/src/ui.cpp @@ -15,7 +15,9 @@ LV_FONT_DECLARE(font_styrene_24); LV_FONT_DECLARE(font_styrene_20); LV_FONT_DECLARE(font_styrene_16); LV_FONT_DECLARE(font_styrene_14); +LV_FONT_DECLARE(font_styrene_12); LV_FONT_DECLARE(font_mono_32); +LV_FONT_DECLARE(font_mono_18); // Layout values computed from the active board's geometry. Populated once // in ui_init() and treated as const for the rest of the program. Adding a @@ -33,6 +35,26 @@ struct Layout { int16_t usage_panel_gap; int16_t usage_bar_y; int16_t usage_reset_y; + int16_t bar_h; + int16_t panel_pad_x, panel_pad_y; + int16_t pill_pad_x, pill_pad_y; + const lv_font_t* title_font; // screen title / clock + const lv_font_t* pct_font; // big percentage number + const lv_font_t* ent_pct_font; // enterprise spending number + const lv_font_t* pill_font; // "Current" / "Weekly" pill + const lv_font_t* reset_font; // "Resets in ..." line + const lv_font_t* pace_font; // enterprise "Under/On/Over pace" line + const lv_font_t* anim_font; // animated status line + int16_t anim_y; // status line offset from bottom + bool small_icons; // 40px logo + 24px battery (vs 80/48) on small screens + int16_t title_nudge; // title x-shift balancing the corner logo + int16_t logo_y; // logo top edge + int16_t batt_y; // battery icon top edge + int16_t batt_w; // battery icon width, for position math + + // Pairing hint / idle screen + int16_t pair_y1, pair_y2, pair_y3; + int16_t idle_px; // sleeping-creature size on the idle screen // Bluetooth screen int16_t bt_info_panel_h; @@ -55,6 +77,31 @@ static void compute_layout(const BoardCaps& c) { L.margin = 20; L.title_y = 30; + // Values shared by the two original breakpoints; the small branch below + // overrides them wholesale. + L.bar_h = 24; + L.panel_pad_x = 16; + L.panel_pad_y = 12; + L.pill_pad_x = 18; + L.pill_pad_y = 6; + L.title_font = &font_tiempos_56; + L.pct_font = &font_styrene_48; + L.ent_pct_font = &font_tiempos_56; + L.pill_font = &font_styrene_28; + L.reset_font = &font_styrene_28; + L.pace_font = &font_styrene_16; + L.anim_font = &font_mono_32; + L.anim_y = -15; + L.small_icons = false; + L.title_nudge = 16; + L.logo_y = L.title_y - 10; + L.batt_y = L.title_y; + L.batt_w = ICON_BATTERY_W; + L.pair_y1 = 40; + L.pair_y2 = 120; + L.pair_y3 = 160; + L.idle_px = 160; + if (c.height >= 460) { // Large layout — tuned for 480x480 (AMOLED-2.16). L.content_y = 100; @@ -69,7 +116,7 @@ static void compute_layout(const BoardCaps& c) { L.bt_device_font = &font_styrene_28; L.bt_credit_1_font = &font_styrene_24; L.bt_credit_2_font = &font_styrene_20; - } else { + } else if (c.height >= 300) { // Compact layout — tuned for 368x448 (AMOLED-1.8). L.content_y = 85; L.usage_panel_h = 130; @@ -83,6 +130,48 @@ static void compute_layout(const BoardCaps& c) { L.bt_device_font = &font_styrene_20; L.bt_credit_1_font = &font_styrene_16; L.bt_credit_2_font = &font_styrene_14; + } else { + // Small layout — tuned for 240x240 (LCD-1.54 and similar square TFTs). + // Everything shrinks: fonts two steps down, panels ~half height, and + // the corner logo/battery switch to the 40px/24px small assets. + L.margin = 8; + L.title_y = 4; + L.content_y = 44; + L.usage_panel_h = 74; + L.usage_panel_gap = 6; + L.usage_bar_y = 30; + L.usage_reset_y = 46; + L.bar_h = 12; + L.panel_pad_x = 10; + L.panel_pad_y = 6; + L.pill_pad_x = 8; + L.pill_pad_y = 2; + L.title_font = &font_tiempos_34; + L.pct_font = &font_styrene_24; + L.ent_pct_font = &font_tiempos_34; + L.pill_font = &font_styrene_14; + L.reset_font = &font_styrene_14; + L.pace_font = &font_styrene_12; + L.anim_font = &font_mono_18; + // Center the status line in the strip below the weekly panel; flush + // against the bottom edge it reads as unevenly spaced. + L.anim_y = -10; + L.small_icons = true; + L.title_nudge = 8; + L.logo_y = 2; + L.batt_y = 10; + L.batt_w = ICON_BATTERY_SMALL_W; + L.pair_y1 = 12; + L.pair_y2 = 56; + L.pair_y3 = 80; + L.idle_px = 96; + L.bt_info_panel_h = 90; + L.bt_reset_zone_h = 60; + L.bt_title_font = &font_tiempos_34; + L.bt_status_font = &font_styrene_20; + L.bt_device_font = &font_styrene_14; + L.bt_credit_1_font = &font_styrene_12; + L.bt_credit_2_font = &font_styrene_12; } L.content_w = L.scr_w - 2 * L.margin; @@ -231,10 +320,10 @@ static lv_obj_t* make_panel(lv_obj_t* parent, int x, int y, int w, int h) { lv_obj_set_style_bg_opa(panel, LV_OPA_COVER, 0); lv_obj_set_style_radius(panel, 8, 0); lv_obj_set_style_border_width(panel, 0, 0); - lv_obj_set_style_pad_left(panel, 16, 0); - lv_obj_set_style_pad_right(panel, 16, 0); - lv_obj_set_style_pad_top(panel, 12, 0); - lv_obj_set_style_pad_bottom(panel, 12, 0); + lv_obj_set_style_pad_left(panel, L.panel_pad_x, 0); + lv_obj_set_style_pad_right(panel, L.panel_pad_x, 0); + lv_obj_set_style_pad_top(panel, L.panel_pad_y, 0); + lv_obj_set_style_pad_bottom(panel, L.panel_pad_y, 0); lv_obj_clear_flag(panel, LV_OBJ_FLAG_SCROLLABLE); lv_obj_add_flag(panel, LV_OBJ_FLAG_EVENT_BUBBLE); return panel; @@ -267,19 +356,27 @@ static void init_icon_dsc_rgb565a8(lv_image_dsc_t* dsc, int w, int h, const uint static lv_obj_t* make_pill(lv_obj_t* parent, const char* text) { lv_obj_t* lbl = lv_label_create(parent); lv_label_set_text(lbl, text); - lv_obj_set_style_text_font(lbl, &font_styrene_28, 0); + lv_obj_set_style_text_font(lbl, L.pill_font, 0); lv_obj_set_style_text_color(lbl, COL_TEXT, 0); lv_obj_set_style_bg_color(lbl, COL_BAR_BG, 0); lv_obj_set_style_bg_opa(lbl, LV_OPA_COVER, 0); lv_obj_set_style_radius(lbl, LV_RADIUS_CIRCLE, 0); - lv_obj_set_style_pad_left(lbl, 18, 0); - lv_obj_set_style_pad_right(lbl, 18, 0); - lv_obj_set_style_pad_top(lbl, 6, 0); - lv_obj_set_style_pad_bottom(lbl, 6, 0); + lv_obj_set_style_pad_left(lbl, L.pill_pad_x, 0); + lv_obj_set_style_pad_right(lbl, L.pill_pad_x, 0); + lv_obj_set_style_pad_top(lbl, L.pill_pad_y, 0); + lv_obj_set_style_pad_bottom(lbl, L.pill_pad_y, 0); return lbl; } static void init_battery_icons(void) { + if (L.small_icons) { + init_icon_dsc_rgb565a8(&battery_dscs[0], ICON_BATTERY_SMALL_W, ICON_BATTERY_SMALL_H, icon_battery_small_data); + init_icon_dsc_rgb565a8(&battery_dscs[1], ICON_BATTERY_LOW_SMALL_W, ICON_BATTERY_LOW_SMALL_H, icon_battery_low_small_data); + init_icon_dsc_rgb565a8(&battery_dscs[2], ICON_BATTERY_MEDIUM_SMALL_W, ICON_BATTERY_MEDIUM_SMALL_H, icon_battery_medium_small_data); + init_icon_dsc_rgb565a8(&battery_dscs[3], ICON_BATTERY_FULL_SMALL_W, ICON_BATTERY_FULL_SMALL_H, icon_battery_full_small_data); + init_icon_dsc_rgb565a8(&battery_dscs[4], ICON_BATTERY_CHARGING_SMALL_W, ICON_BATTERY_CHARGING_SMALL_H, icon_battery_charging_small_data); + return; + } init_icon_dsc_rgb565a8(&battery_dscs[0], ICON_BATTERY_W, ICON_BATTERY_H, icon_battery_data); init_icon_dsc_rgb565a8(&battery_dscs[1], ICON_BATTERY_LOW_W, ICON_BATTERY_LOW_H, icon_battery_low_data); init_icon_dsc_rgb565a8(&battery_dscs[2], ICON_BATTERY_MEDIUM_W, ICON_BATTERY_MEDIUM_H, icon_battery_medium_data); @@ -296,18 +393,19 @@ static lv_obj_t* make_usage_panel(lv_obj_t* parent, int y, const char* pill_text *out_pct = lv_label_create(panel); lv_label_set_text(*out_pct, "---%"); - lv_obj_set_style_text_font(*out_pct, &font_styrene_48, 0); + lv_obj_set_style_text_font(*out_pct, L.pct_font, 0); lv_obj_set_style_text_color(*out_pct, COL_TEXT, 0); lv_obj_set_pos(*out_pct, 0, 0); *out_pill = make_pill(panel, pill_text); lv_obj_align(*out_pill, LV_ALIGN_TOP_RIGHT, 0, 1); - *out_bar = make_bar(panel, 0, L.usage_bar_y, L.content_w - 32, 24); + *out_bar = make_bar(panel, 0, L.usage_bar_y, + L.content_w - 2 * L.panel_pad_x, L.bar_h); *out_reset = lv_label_create(panel); lv_label_set_text(*out_reset, "---"); - lv_obj_set_style_text_font(*out_reset, &font_styrene_28, 0); + lv_obj_set_style_text_font(*out_reset, L.reset_font, 0); lv_obj_set_style_text_color(*out_reset, COL_DIM, 0); lv_obj_set_pos(*out_reset, 0, L.usage_reset_y); @@ -330,19 +428,19 @@ static void build_pair_group(lv_obj_t* parent) { lv_label_set_text(l1, "To pair"); lv_obj_set_style_text_font(l1, L.bt_status_font, 0); lv_obj_set_style_text_color(l1, COL_TEXT, 0); - lv_obj_align(l1, LV_ALIGN_TOP_MID, 0, 40); + lv_obj_align(l1, LV_ALIGN_TOP_MID, 0, L.pair_y1); lv_obj_t* l2 = lv_label_create(pair_group); lv_label_set_text(l2, "hold the power button"); lv_obj_set_style_text_font(l2, L.bt_device_font, 0); lv_obj_set_style_text_color(l2, COL_DIM, 0); - lv_obj_align(l2, LV_ALIGN_TOP_MID, 0, 120); + lv_obj_align(l2, LV_ALIGN_TOP_MID, 0, L.pair_y2); lv_obj_t* l3 = lv_label_create(pair_group); lv_label_set_text(l3, "for 3 seconds, then release"); lv_obj_set_style_text_font(l3, L.bt_device_font, 0); lv_obj_set_style_text_color(l3, COL_DIM, 0); - lv_obj_align(l3, LV_ALIGN_TOP_MID, 0, 160); + lv_obj_align(l3, LV_ALIGN_TOP_MID, 0, L.pair_y3); lv_obj_add_flag(pair_group, LV_OBJ_FLAG_HIDDEN); // ui_update_ble_status decides } @@ -363,7 +461,7 @@ static void build_idle_group(lv_obj_t* parent) { // A shrunk-down sleeping creature (reused claudepix "expression sleep" art) // sits between the header and the status line; the animated "Listening…" // status line carries the words, so no extra text is needed here. - lv_obj_t* creature = splash_mini_create(idle_group, "expression sleep", 160); + lv_obj_t* creature = splash_mini_create(idle_group, "expression sleep", L.idle_px); if (creature) lv_obj_align(creature, LV_ALIGN_CENTER, 0, -20); lv_obj_add_flag(idle_group, LV_OBJ_FLAG_HIDDEN); // update_view_state decides @@ -381,9 +479,11 @@ static void init_usage_screen(lv_obj_t* scr) { lbl_title = lv_label_create(usage_container); lv_label_set_text(lbl_title, "Usage"); - lv_obj_set_style_text_font(lbl_title, &font_tiempos_56, 0); + lv_obj_set_style_text_font(lbl_title, L.title_font, 0); lv_obj_set_style_text_color(lbl_title, COL_TEXT, 0); - lv_obj_align(lbl_title, LV_ALIGN_TOP_MID, 16, L.title_y); + // The nudge balances the corner logo on the left; smaller on small + // screens where the logo is 40px and the battery icon sits closer. + lv_obj_align(lbl_title, LV_ALIGN_TOP_MID, L.title_nudge, L.title_y); // Usage panels (shown when connected) live in a transparent full-size group // so they can be toggled against the pairing hint as one unit. @@ -403,20 +503,20 @@ static void init_usage_screen(lv_obj_t* scr) { // Enterprise-only overlays inside panel_session — hidden until enterprise data arrives lbl_session_pct_sym = lv_label_create(panel_session); lv_label_set_text(lbl_session_pct_sym, "%"); - lv_obj_set_style_text_font(lbl_session_pct_sym, &font_styrene_28, 0); + lv_obj_set_style_text_font(lbl_session_pct_sym, L.reset_font, 0); lv_obj_set_style_text_color(lbl_session_pct_sym, COL_TEXT, 0); lv_obj_add_flag(lbl_session_pct_sym, LV_OBJ_FLAG_HIDDEN); lbl_spending_desc = lv_label_create(panel_session); lv_label_set_text(lbl_spending_desc, "of your monthly budget"); - lv_obj_set_style_text_font(lbl_spending_desc, &font_styrene_28, 0); + lv_obj_set_style_text_font(lbl_spending_desc, L.reset_font, 0); lv_obj_set_style_text_color(lbl_spending_desc, COL_DIM, 0); lv_obj_set_pos(lbl_spending_desc, 0, L.usage_reset_y); lv_obj_add_flag(lbl_spending_desc, LV_OBJ_FLAG_HIDDEN); lbl_spending_status = lv_label_create(panel_session); lv_label_set_text(lbl_spending_status, ""); - lv_obj_set_style_text_font(lbl_spending_status, &font_styrene_16, 0); + lv_obj_set_style_text_font(lbl_spending_status, L.pace_font, 0); lv_obj_set_pos(lbl_spending_status, 0, L.usage_reset_y + 20); lv_obj_add_flag(lbl_spending_status, LV_OBJ_FLAG_HIDDEN); @@ -433,9 +533,9 @@ static void init_usage_screen(lv_obj_t* scr) { // Status line — always visible on the usage view. Driven by ui_tick_anim(). lbl_anim = lv_label_create(usage_container); lv_label_set_text(lbl_anim, ""); - lv_obj_set_style_text_font(lbl_anim, &font_mono_32, 0); + lv_obj_set_style_text_font(lbl_anim, L.anim_font, 0); lv_obj_set_style_text_color(lbl_anim, COL_ACCENT, 0); - lv_obj_align(lbl_anim, LV_ALIGN_BOTTOM_MID, 0, -15); + lv_obj_align(lbl_anim, LV_ALIGN_BOTTOM_MID, 0, L.anim_y); } // ======== Public API ======== @@ -447,7 +547,8 @@ void ui_init(void) { lv_obj_set_style_bg_color(scr, COL_BG, 0); lv_obj_set_style_bg_opa(scr, LV_OPA_COVER, 0); - init_icon_dsc_rgb565a8(&logo_dsc, LOGO_WIDTH, LOGO_HEIGHT, logo_data); + if (L.small_icons) init_icon_dsc_rgb565a8(&logo_dsc, LOGO_SMALL_WIDTH, LOGO_SMALL_HEIGHT, logo_small_data); + else init_icon_dsc_rgb565a8(&logo_dsc, LOGO_WIDTH, LOGO_HEIGHT, logo_data); init_battery_icons(); init_usage_screen(scr); @@ -459,12 +560,17 @@ void ui_init(void) { logo_img = lv_image_create(scr); lv_image_set_src(logo_img, &logo_dsc); - lv_obj_set_pos(logo_img, L.margin, L.title_y - 10); + lv_obj_set_pos(logo_img, L.margin, L.logo_y); battery_img = lv_image_create(scr); lv_image_set_src(battery_img, &battery_dscs[0]); - lv_obj_set_pos(battery_img, L.scr_w - 48 - L.margin, L.title_y); - + lv_obj_set_pos(battery_img, L.scr_w - L.batt_w - L.margin, L.batt_y); + // Boards without battery telemetry never show the indicator (per the HAL + // contract; previously every board drew the empty-battery glyph). + if (!board_caps().has_battery) { + lv_obj_del(battery_img); + battery_img = nullptr; + } } void ui_update(const UsageData* data) { @@ -486,7 +592,7 @@ void ui_update(const UsageData* data) { if (data->enterprise) { // Spending box: big number-only label + small "%" symbol + desc + pace - lv_obj_set_style_text_font(lbl_session_pct, &font_tiempos_56, 0); + lv_obj_set_style_text_font(lbl_session_pct, L.ent_pct_font, 0); lv_label_set_text(lbl_session_label, "Spending"); lv_obj_add_flag(lbl_session_reset, LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(lbl_session_pct_sym, LV_OBJ_FLAG_HIDDEN); @@ -494,7 +600,7 @@ void ui_update(const UsageData* data) { lv_obj_add_flag(lbl_spending_status, LV_OBJ_FLAG_HIDDEN); if (panel_weekly) lv_obj_clear_flag(panel_weekly, LV_OBJ_FLAG_HIDDEN); } else { - lv_obj_set_style_text_font(lbl_session_pct, &font_styrene_48, 0); + lv_obj_set_style_text_font(lbl_session_pct, L.pct_font, 0); lv_label_set_text(lbl_session_label, "Current"); lv_obj_clear_flag(lbl_session_reset, LV_OBJ_FLAG_HIDDEN); lv_obj_add_flag(lbl_session_pct_sym, LV_OBJ_FLAG_HIDDEN); @@ -684,6 +790,7 @@ void ui_update_ble_status(ble_state_t state, const char* name, const char* mac) } void ui_update_battery(int percent, bool charging) { + if (!battery_img) return; int idx; if (charging) { idx = 4;