Revision history for Perl extension RPi::ADC::ADS

1.03    2026-06-22
        - Added conversion averaging. volts(), percent() and raw() take an
          optional trailing $samples count, and new(samples => N) / samples()
          set a per-object default (default 1 = unchanged single-read
          behaviour). The mean of N conversions is computed in the XS over a
          single i2c bus session, which recovers a stable reading from a noisy
          or ripple-laden input (e.g. an RC-filtered PWM feedback signal) far
          more cheaply than N separate reads
        - Fix unused read() calls warning
        - fetch() now retries a conversion on a transient i2c error (e.g. the
          Pi's intermittent EREMOTEIO) instead of aborting, bailing only if the
          bus stays unresponsive past MAX_I2C_ATTEMPTS. Without this, the new
          read-return checks turned an occasional bus glitch into a hard exit,
          which averaging (many conversions per call) made likely
        - Fixed new() ignoring the gain => argument: it passed $args{mode} to
          gain() instead of $args{gain}, so a gain => in the constructor was
          dropped and a mode => corrupted the gain. Added t/02-new_gain.t
        - volts() and percent() now scale by the programmed PGA full-scale
          range instead of a constant 4.096V, so they are correct at any gain
          (previously every non-default gain was mis-scaled). The PGA is read
          from the config register; default-gain (1, +/-4.096V) output is
          unchanged. Added t/41-volts_gain.t
        - Doc fixes: corrected the GAIN AMPLIFIER table (gain 3 is +/-1.024V,
          was +/-2.024V) and the differential-MUX binary comment for channel 5
          (0x1000 is 00010000, was 00100000)

1.02    2017-07-20
        - if in single-ended mode, we now return 0 for all fetch methods, as
          sometimes a single-ended check can result in a negative number
        - small fixes in comments in XS file
        - POD corrections, specifically in bits(), amongst others
        - added check for FreeBSD and bail if we're on that platform, as it
          doesn't include the I2C linux header file. This was causing CPAN
          Testers failures on that platform

1.01    2017-01-11
        - removed _lsb() and _msb() as they were no longer needed or referenced
        - slight POD corrections

1.00    2017-01-11
        - combined all the config register subs into a BEGIN block, we now auto
          generate them all and put them into the symbol table. This reduces a
          lot of code copy/paste

0.07    2017-01-10
        - POD fixes
        - added _bit_set(), and consolodated a lot of repetitive config
          register bit switching
        - removed _register_default(). We now set this in the new() call to
          0x80 (MSB) and 0x00 (LSB)

0.06    2017-01-10
        - all configuration register options are now available (less bits 4 and
          2)
        - complete overhaul on setting the config register
        - we now unset and set the config register using bitwise operators
          instead of math hackery
        - nearly everything has tests
        - added extensive documentation for the software, along with all the
          specifications of the configuration register settings

0.05    2017-01-09
        - major POD cleanup
        - layout fixes in XS file
        - removed parameters from pod method headings
        - SYNOPSIS fixes
        - typo fixes

0.04    2017-01-09
        - POD fix
        - cleaned up parameter listing in pod (removed =head3 tags)
        - added clarifications in POD
        - added optional parameters and defaults in SYNOPSIS
        - added parameter checking in all methods
        - added tests for all functionality
        - reworked the write_buf parameter to accept the two elements in proper
          order, and modified calls that send them in
        - added POD for missing methods and the C functions
        - added Travis-CI and Coveralls.io integration

0.03    2017-01-08
        - remove comments from C code
        - layout/cleanup of XS code
        - lowercase vars in XS
        - changed to OO format
        - C fetch() now accessible to library only
        - added config register details in POD
        - renamed distribution from RPi::ADS1x15
        - added raw(), percent() and volts()
        - we now properly bit-shift when we're on 16-bit resolution ADC models

0.02    2017-01-07
        - POD additions/cleanup

0.01    2017-01-07
        - initial version
