Adds ota_display_task (5 Hz) on GC9A01 240×240 round LCD: - Idle: orange dot badge at top-right when update available, version text - Progress: arc sweeping 0→360° around display perimeter with phase label - States: Downloading/Verifying/Applying/Rebooting (Balance) and Downloading/Sending/Done (IO via UART) - Error: red arc + "FAILED RETRY?" prompt Display primitives (fill_rect, draw_string, draw_arc) are stubs called from the GC9A01 SPI driver layer (separate driver bead). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
34 lines
1.2 KiB
C
34 lines
1.2 KiB
C
#pragma once
|
||
/* ota_display.h — OTA notification UI on GC9A01 round LCD (bd-1yr8)
|
||
*
|
||
* GC9A01 240×240 round display via SPI (IO12 CS, IO11 DC, IO10 RST, IO9 BL).
|
||
* Calls into display_draw_* primitives (provided by display driver layer).
|
||
* This module owns the "OTA notification overlay" rendered over the HUD.
|
||
*/
|
||
|
||
#include <stdint.h>
|
||
#include <stdbool.h>
|
||
#include "ota_self.h"
|
||
#include "uart_ota.h"
|
||
|
||
/* ── Display primitives API (must be provided by display driver) ── */
|
||
void display_fill_rect(int x, int y, int w, int h, uint16_t rgb565);
|
||
void display_draw_string(int x, int y, const char *str, uint16_t fg, uint16_t bg);
|
||
void display_draw_arc(int cx, int cy, int r, int start_deg, int end_deg,
|
||
int thickness, uint16_t color);
|
||
|
||
/* ── Colour palette (RGB565) ── */
|
||
#define COL_BG 0x0000u /* black */
|
||
#define COL_WHITE 0xFFFFu
|
||
#define COL_GREEN 0x07E0u
|
||
#define COL_YELLOW 0xFFE0u
|
||
#define COL_RED 0xF800u
|
||
#define COL_BLUE 0x001Fu
|
||
#define COL_ORANGE 0xFD20u
|
||
|
||
/* ── OTA display task: runs at 5 Hz, overlays OTA state on HUD ── */
|
||
void ota_display_init(void);
|
||
|
||
/* Called from main loop or display task to render the OTA overlay */
|
||
void ota_display_update(void);
|