• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rm-hull / luma.oled / 26428423378
100%
master: 99%

Build:
Build:
LAST BUILD BRANCH: codex/sh1122-driver-258
DEFAULT BRANCH: master
Ran 26 May 2026 02:16AM UTC
Jobs 1
Files 6
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

26 May 2026 02:15AM UTC coverage: 99.499% (+0.04%) from 99.46%
26428423378

push

github

web-flow
Add SSD1363 256x128 greyscale OLED driver (#421)

* Add SSD1363 256x128 greyscale OLED driver

The SSD1363 has two non-obvious hardware differences from SSD1362/SSD1306
that required reverse-engineering against the manufacturer's example:

1. DC-pin protocol: the SSD1363 treats DC as a per-byte signal, not a
   mode signal.  Only the command opcode byte uses DC-LOW; all parameter
   bytes and pixel data use DC-HIGH.  Without this, parameter bytes land
   as command opcodes — for example, a row-end value of 0x2F activates
   hardware scroll, preventing the row window from ever being set.
   Overriding command() to route parameter bytes through data() fixes this
   (same pattern as ssd1322).

2. Byte-pair swap: within each 2-byte column address the pair must arrive
   in reverse order due to the panel's column-remap wiring.  display() is
   overridden to swap adjacent byte pairs in the output buffer before
   writing.  This matches the manufacturer's er_oled_bitmap_gray()
   reference implementation for the ZJY270S0700XG21 2.7" module.

Other differences from SSD1362:
  - SETCONTRAST = 0xC1 (not 0x81)
  - 0xCA for mux ratio (not 0xA8)
  - 0xAD for IREF (not 0xAB)
  - Column addresses: pixel_x // 4 + 8  (panel has a +8 hardware offset)
  - 0x5C Write-RAM required before each pixel burst

Tested on Raspberry Pi 4 + ZJY270S0700XG21 via SPI0.  Gradient, greyscale
bars, anti-aliased text, and contrast sweep all render correctly across the
full 256x128 pixel area.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix E221 alignment violations in ssd1363 class

Remove extra spaces used for visual alignment of assignment operators
in the ssd1363 constants and _set_position method, per PEP8 E221.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Optimise byte-pair swap using slice assignment

Replace the explicit Python loop with bytearray slice assignment.
buf[0::2], buf[1::2] = buf[1::2], buf[0::2] produces the same
byte-pair swap in a ... (continued)

43 of 43 new or added lines in 2 files covered. (100.0%)

596 of 599 relevant lines covered (99.5%)

5.97 hits per line

Jobs
ID Job ID Ran Files Coverage
1 26428423378.1 26 May 2026 02:16AM UTC 6
99.5
GitHub Action Run
Source Files on build 26428423378
  • Tree
  • List 6
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 15004f7b on github
  • Prev Build on main (#22821590185)
  • Next Build on main (#26495495347)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc