Revision history for RPi-OLED-SSD1306-128_64 3.1802 2026-07-16 - Makefile.PL's minimum wiringPi version now comes from RPi::Const's WIRINGPI_MIN_VERSION (literal 3.18 fallback when RPi::Const isn't installed at configure time), replacing the stale hardcoded 2.36; RPi::Const 1.07 added to PREREQ_PM; DESCRIPTION POD updated to 3.18+ and points at the canonical constant - Added TECHNICAL INFORMATION POD (DEVICE SPECIFICS, COMMAND SET, ON THE WIRE, DATASHEET): panel capabilities, wiring, the control/data byte framing with the full init command sequence, and the exact I2C frames the bundled C layer produces, verified against the SSD1306 datasheet - Bundled the datasheet as docs/datasheet/SSD1306.pdf and repointed the DATASHEET POD section at it instead of the web URL - Optimised ssd1306_display() (ssd1306_i2c.c): the framebuffer now streams out in ONE I2C transaction (a single 0x40 control byte then all 1024 data bytes) instead of a control+data pair per byte (~1024 transactions). Measured on a 128x64 panel at 100kHz: ~325ms -> ~94ms per refresh (3.4x; now bus-bound). Falls back to the byte-by-byte path if an adapter caps the single transfer. ON THE WIRE POD updated to match - Replaced the inline wiringPi presence/version guard in Makefile.PL with the family-canonical RPi::Const::BuildCheck::wiringpi_build_check() (via CONFIGURE_REQUIRES); the minimum still resolves to RPi::Const's WIRINGPI_MIN_VERSION, now enforced from that single source - new() no longer silently ignores its arguments when the singleton already exists: a second new() with a different i2c address or splash setting now warns (it still returns the live display, since those can't be re-applied) - Added t/05-unit.t: HW-free coverage of the text_size/rect/pixel/dim/ invert_display bounds and integer croaks, plus the singleton behaviour - Added t/10-live.t: an on-device smoke test (new/clear/text/string/rect/ pixel/display/invert/dim) gated on RPI_OLED, for a real SSD1306 panel - Fixed a typo in pixel()'s Y-bound croak ("betwen" -> "between") - Added clear_buffer(): zeroes the framebuffer and homes the cursor without pushing to the panel (unlike clear(), which also calls display()), so a caller can rebuild a whole frame and push it once with display() - a flicker-free redraw for continuously-updating screens - Added a SYNOPSIS to the POD (instantiation, text, drawing primitives, and the flicker-free clear_buffer/string/display refresh loop) 3.1801 2026-06-12 - Makefile.PL's wiringPi presence/version checks can now be bypassed with RPI_DIST_RELEASE=1 so release tarballs can be cut on non-Pi machines; without it the checks still exit before WriteMakefile (CPAN testers report NA, not FAIL) 2.3603 2019-06-06 - MANIFEST.SKIP was preventing us from including a core C file, breaking cpan installs with "undefined symbol" error 2.3602 2019-06-05 - added wiringPi checks in Makefile.PL, so CPAN testers don't go crazy 2.3601 2019-06-05 First version, released on an unsuspecting world.