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.