Skip to content

structs: add OD_PANEL_IC_M5PAPERS3_960X540 = 3004 (M5Stack PaperS3) + restore firmware parity - #14

Merged
davelee98 merged 3 commits into
OpenDisplay:mainfrom
AsLY4:reconcile/firmware-parity
Sep 3, 2026
Merged

structs: add OD_PANEL_IC_M5PAPERS3_960X540 = 3004 (M5Stack PaperS3) + restore firmware parity#14
davelee98 merged 3 commits into
OpenDisplay:mainfrom
AsLY4:reconcile/firmware-parity

Conversation

@AsLY4

@AsLY4 AsLY4 commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

This adds canonical support for the M5Stack PaperS3 panel and reconciles a two-way drift found between this repo and the Firmware's vendored copy.

Commit 1 — parity restore: the Firmware's vendored opendisplay_structs.h shipped Inkplate enum values 3002/3003 that never landed here. This restores them canonically (no wire change; mirrors regenerated with the repo tooling).

Commit 2 — PaperS3 enum: OD_PANEL_IC_M5PAPERS3_960X540 = 3004 (ED047TC1-class 960x540 parallel panel, 16-gray capable, FastEPD native parallel path). Backward-compatible enum addition (@since 1.5); OD_CONFIG_MINOR_VERSION bumps 4 -> 5, OD_STRUCTS_VERSION 2.0 -> 2.1, changelog updated, mirrors regenerated via the repo tooling.

Commit 3 — second parity restore: Firmware PR #157 added three bit definitions in the vendored header only (OD_LED_FLAG_BUTTON_PRESS LedFlags bit4, OD_BUZZER_FLAG_BUTTON_PRESS BuzzerFlags bit1, OD_MSD_STATUS_ENCRYPTION_ENABLED MsdStatusBits bit3 replacing RESERVED_3). Folded back verbatim, with the RESERVED_3 legacy alias rewritten literal-form so the codegen classifies it; mirrors regenerated and validated. OD_STRUCTS_VERSION stays 2.1 (the additions remain under Unreleased).

Validated end-to-end on hardware: the companion Firmware PR OpenDisplay/Firmware#159 drives a physical PaperS3 through 24 acceptance scenarios (display MONO/GRAY16, GT911 touch telemetry, buzzer, battery, deep-sleep/timer-wake lifecycle), all green on the current mains, vendored headers byte-identical to this branch (sync_protocol_header.py --check: 2 in sync).

The Firmware repo's vendored opendisplay_structs.h had advanced past
this canonical source: OD_IC_TYPE_ESP32=9, OD_MANUFACTURER_SOLDERED=5,
FastEPD wording for the 3000+ PanelIC range, and the FastEPD native
parallel entries OD_PANEL_IC_INKPLATE5V2_1280X720=3002 /
OD_PANEL_IC_INKPLATE10_1200X825=3003. Restore byte parity by adopting
the shipped content and regenerating the py/js/d.ts/swift mirrors.

Local reconciliation only (workspace decision
20260830-PanelIcEnumCanonicalPath); upstreaming is a separate decision.
FastEPD native parallel path, 960x540, 16-gray capable. Backward-
compatible enum addition: OD_STRUCTS_VERSION 2.0 -> 2.1 (changelog
rolled), OD_CONFIG_MINOR_VERSION 4 -> 5, @SInCE 1.5. Mirrors
regenerated (py/js/d.ts/swift), validate_mirrors green.
…(parity restore)

Firmware PR #157 added three bit definitions to the VENDORED header
only: OD_LED_FLAG_BUTTON_PRESS (LedFlags bit4), OD_BUZZER_FLAG_BUTTON_PRESS
(BuzzerFlags bit1), and OD_MSD_STATUS_ENCRYPTION_ENABLED (MsdStatusBits
bit3, replacing RESERVED_3 with a legacy alias). Restored here verbatim
with matching Unreleased changelog entries; mirrors regenerated and
validated. No wire-layout change; OD_STRUCTS_VERSION stays 2.1.
@davelee98
davelee98 merged commit 1080d79 into OpenDisplay:main Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants