Răsfoiți Sursa

docs: refresh panel table for the 750/579 status; finish row_interleave->line_order

- CONTRIBUTING.md supported-panels table regenerated: GDEY075T7 added,
  GDEY0579F51 now verified (7 of 10 hardware-verified).
- Rename the last row_interleave references (now line_order) in the harness
  help text, emitted candidate header, check_descriptors, and capture.py.
- Repoint the two stale DESIGN.md references (deleted; moved to
  CONTRIBUTING.md) in panel_table.py and the F52 descriptor comment.
Comments/docs only, no behavior change.
ZiB 3 săptămâni în urmă
părinte
comite
00bd4e3be7

+ 2 - 1
CONTRIBUTING.md

@@ -202,8 +202,9 @@ from it, and a non-verified panel logs a warning in its boot `dump_config`.
 | `GxEPD2_213c_GDEY0213F52` | GDEY0213F52 | JD79676 | 4-color | ✅ verified |
 | `GxEPD2_426_GDEQ0426T82` | GDEQ0426T82 | SSD1677 | mono | ✅ verified |
 | `GxEPD2_583_GDEQ0583T31` | GDEQ0583T31 | UC8179 | mono | ✅ verified |
+| `GxEPD2_750_GDEY075T7` | GDEY075T7 | UC8179 | mono | ✅ verified |
 | `GxEPD2_290c_GDEY029F51` | GDEY029F51 | JD79667 | 4-color | ⚪ structural |
-| `GxEPD2_579c_GDEY0579F51` | GDEY0579F51 | HX8717 | 4-color | ⚪ structural |
+| `GxEPD2_579c_GDEY0579F51` | GDEY0579F51 | HX8717 | 4-color | ✅ verified |
 | `GxEPD2_579c_GDEY0579F51_MASTER_ONLY` | GDEY0579F51 | HX8717 | 4-color | 🔧 diagnostic |
 
 ✅ rendered correctly on real hardware · ⚪ captured, not yet bench-confirmed · 🔧 diagnostic variant.

+ 1 - 1
components/gxepd2/panel_213c_gdey0213f52.h

@@ -17,7 +17,7 @@
 //
 // Packed 4-color: bits_per_pixel=2, GXEPD2_PALETTE_4C (the vendor's own
 // color4() black0/white1/yellow2/red3, validated by the diag Pattern-B pass -
-// see DESIGN.md §12; the F52 uses the same GxEPD2_4C wrapper). blank_code=0x01
+// see CONTRIBUTING.md "Limits"; the F52 uses the same GxEPD2_4C wrapper). blank_code=0x01
 // matches the observed 0x55 white clear (code 01 x4). If colors come out wrong
 // on hardware the palette/codes are the thing to re-check for JD79676.
 //

+ 1 - 1
tools/capture.py

@@ -12,7 +12,7 @@ just a host C++ compiler. See tools/gxepd2_harness/README.md and CONTRIBUTING.md
     tools/capture.py GxEPD2_154_Z90c --debug     # also dump the capture structure
 
 The output is a *candidate*: review it, fill any TODO fields the diag passes
-own (bits_per_pixel/palette for packed panels; plane_width/row_interleave for
+own (bits_per_pixel/palette for packed panels; plane_width/line_order for
 dual-region), save it as components/gxepd2/panel_<model>.h, add it to
 display.py's MODELS, compile, and bench-verify before marking it verified.
 """

+ 1 - 1
tools/check_descriptors.py

@@ -5,7 +5,7 @@ the result against the committed components/gxepd2/panel_*.h.
 Compares only the structure the emitter authoritatively produces - the INIT /
 WINDOW / REFRESH command sequences, plane count, plane-write command(s),
 window_per_plane, and plane_invert - not the hand/diag-filled fields
-(bits_per_pixel/palette/blank_code/plane_width/row_interleave), which carry
+(bits_per_pixel/palette/blank_code/plane_width/line_order), which carry
 comments and names the emitter doesn't reproduce.
 
 Catches two things: an emitter regression (reproduction breaks), and GxEPD2

+ 1 - 1
tools/gxepd2_harness/README.md

@@ -36,7 +36,7 @@ init / window / refresh sequences + plane-write command(s), reads
 resolution / busy-polarity / timeout from the driver, and derives
 `plane_invert` and 1bpp-vs-packed from a fill probe. Review the result, add any
 packed-format fields the diag passes own (`bits_per_pixel` / `palette` for
-packed panels; `plane_width` / `row_interleave` for dual-region), then save it
+packed panels; `plane_width` / `line_order` for dual-region), then save it
 as `components/gxepd2/panel_<panel>.h` and wire it into `display.py`'s `MODELS`.
 
 `EMIT_DEBUG=1 /tmp/emit_<panel>` dumps the image-stage command/burst structure.

+ 3 - 3
tools/gxepd2_harness/emit_descriptor.h

@@ -18,7 +18,7 @@
 //                           duplicate window command leaves the REFRESH seq.
 //
 // Out of scope here (comes from the diag Pattern A/B passes, not one capture):
-// bits_per_pixel / palette / plane_invert / row_interleave. Those are emitted
+// bits_per_pixel / palette / plane_invert / line_order. Those are emitted
 // as TODO placeholders so the diff against the hand file is about segmentation.
 
 #include <cstdint>
@@ -371,7 +371,7 @@ template<typename Driver> void emit_descriptor(const char *class_name, const cha
 
   // --- emit ---
   printf("// GENERATED by emit_descriptor from %s - candidate, segmentation only.\n", class_name);
-  printf("// bits_per_pixel/palette/plane_invert/plane_width/row_interleave still\n");
+  printf("// bits_per_pixel/palette/plane_invert/plane_width/line_order still\n");
   printf("// come from the diag passes.\n");
   printf("#pragma once\n#include \"epd_command.h\"\n\nnamespace esphome::gxepd2 {\n\n");
 
@@ -422,7 +422,7 @@ template<typename Driver> void emit_descriptor(const char *class_name, const cha
   printf("    .plane_count = %zu,\n", nplanes);
   printf("    .plane_write_cmd = {0x%02X, 0x%02X},\n", p0cmd, p1cmd);
   // Fields below are emitted in struct-declaration order (plane_invert,
-  // plane_width, row_interleave, bits_per_pixel, palette, palette_len,
+  // plane_width, line_order, bits_per_pixel, palette, palette_len,
   // blank_code) so the designated initializer stays well-formed.
   if (pv.is_1bpp) {
     const bool i1 = (nplanes > 1 && pv.plane1_valid) ? pv.inv1 : false;

+ 1 - 1
tools/gxepd2_harness/run_diag_harness.h

@@ -4,7 +4,7 @@
 // gxepd2-diag-fill-spec memory. Instead of the uniform 0xA5 fill, it fills
 // the 1bpp plane buffer with a positional TAG, records the exact wire-byte
 // stream (trace.h recording), and inverts the tag to recover the driver's
-// buffer->wire row permutation (identity / reversed / row_interleave /
+// buffer->wire row permutation (identity / reversed / line_order /
 // unknown). Host-only, no hardware.
 //
 // Scope: 1bpp byte-preserving writeImage path (mono, and the per-plane

+ 1 - 1
tools/panel_table.py

@@ -3,7 +3,7 @@
 
 PANELS (in components/gxepd2/display.py) is the single source of truth for
 which panels ship and their status. This reads it by AST (no esphome import)
-and prints a Markdown table for the README / DESIGN.md.
+and prints a Markdown table for the README / CONTRIBUTING.md.
 
     tools/panel_table.py
 """