Revision history for Perl extension WiringPi::API. 2.3616 2018-03-27 - merged PR#34; Ensure that one test always runs if PI_BOARD (Thanks for the pull request James Keenan!) - added check in Makefile.PL to ensure that we're on version 2.36+ of wiringPi 2.3615 2018-03-23 - added graceful exit from Makefile.PL if wiringPi header file is not found (closes #33)(Thanks James Keenan for the report) - EXPORT_TAGS POD did not include all tags (fixes #32) 2.3614 2017-07-08 - added t/15-wpi_to_gpio.t to test #12 - exposed pwm_set_range(), had missed that one previously - exposed pwm_set_clock(), maps to pwmSetClock(int divisor) (closes #30) - implemented/exposed pwm_set_mode() to set the PWM mode - added "PROTOTYPES: DISABLE" to XS file to quell warning (closes #31) - added test/sg_servo.pl as an example of the new PWM capabilities (full tests will be run via RPi::WiringPi auto test platform) 2.3613 2017-07-01 - integrated wiringSerial, providing basic serial interface support 2.3612 2017-06-24 - added pin_mode_alt() due to an issue found in RPi::WiringPi. Upon that module's cleanup() routine, we need to ensure all pins are back to real default - in relation to stevieb9/rpi-lcd#6, added a warning in lcd_init() POD to always check the return value of the function for a -1 error, else if you continue on, the code will segfault 2.3611 2017-06-23 - fix i2c_read_word(). It had the same issue with not sending $data in as i2c_write_word() did in the last releases Changes entry - the issue in the last release regarding Arduino I2C comms has been solved. See the forum post update in the last entry 2.3610_02 2017-06-22 - updated Changes with proper date - removed all traces of Software PWM from code and documentation, as even Gordon himself advises not to use it - added file information and copyright to the .h and .xs files - fix bug in i2c_write_word(), $data param wasn't being sent in, which resulted in an argument error being thrown from the wiringPi library - putting out as a trial. There are issues with RPi to Arduino I2C comms... (see https://www.raspberrypi.org/forums/viewtopic.php?f=33&t=186661) 2.3609 2017-03-26 - fix unicode POD error - fix declaration issue for digitalReadByte2() - add a 0.02 second delay in pull_up_down(), as it wasn't returning fast enough to re-init the pin (this broke interrupts) 2.3608 2017-03-13 - clarified POD for lcd_put_char() and lcd_char_def() - clean up test XS code - remove all code related to creating threads. That's out of scope for this project (closes #2) - moved all XS/C declarations into a separate API.h file from API.xs - changed versioning scheme from 2.36.x to 2.360x 2.36.7 2017-03-09 - disable tests when not on a Pi board (within a BEGIN block) - added INLINE.h to MANIFEST file (re-closes #8) - fix bug in lcd_init(), where we weren't extracting the values from the argument hash, thereby too many args were being passed into lcdInit() C function (closes #27) - added a workaround for lcd_char_def(). For some reason, we need to print a zero-width char before calling the C function lcdCharDef(). One day I'll need to sort out why (closes #26) - in lcd_char_def(), changed from "V0C*" to "C[8]" for pack() - removed duplicate test declaration in t/00-load.t - removed the :wiringPi and :perl export tags from POD, we only advertise :all now, which only exports the Perl functions (all are still available in code though) 2.36.6 2017-02-22 - added in I2C support (work on #22) - fix a boatload of C warnings due to functions not being pre-declared (work on #25) - added -lrt to LIBS in Makefile.PL to correct a "shm_open() undefined symbol" error when testing with "make test" (closes #25) - removed taint from tests - added $state param for lcd_cursor_blink() in POD (closes #24) - fix miniscule POD error (closes #17) - added "barometric" to the POD's bmp180 section (closes #16) - POD typo fix (closes #15) - replaced BCM with GPIO in POD (closes #14) - fix output constant in get_alt() in POD (PWM_OUT) (closes #13) 2.36.5 2017-02-13 - lower-cased Inline functions in XS file 2.36.4 2017-01-26 - modified spiDataRW(). It now returns a Perl array containing the same number of elements as was sent in. A write aref is sent in (with dummy bytes in each element) for the size of array you want back that contains the read data (fixes #23) 2.36.3 2017-01-22 - changed TOC to "TABLE OF CONTENTS" in POD (closes #18) - modified dist description in POD - added blurb in softpwm section that this functionality is quite unreliable - removed the code that skipped over the first interrupt in XS, as the new wiringPi corrected the issue internally - added POD for ads1115_setup() - added test file for wiringPi's representation of the ADS1115 ADC - added support for communicating on the SPI bus (spi_setup() and spi_data() - added spiDataRW() (C), which wraps wiringPiSPIDataRW() so that we can accept an AV* (aref) before transforming it into the proper unsigned char* before sending it to wiringPiSPIDataRW() 2.36.2 2017-01-19 - added function table of contents to POD - added declaration of custom wiringPiVersion() in XS, but left it commented out as it will break CPAN installs at this time - added version.patch file in patches/, patch sent to Gordon - all four setup routines added to test/setup.pl - added in wiringPi's support for the Adafruit ADS1115 analog to digital converter (I'm going to do a rewrite of this code to support 1015, as well as allowing all ADC options to be configurable, and hope it gets included in the next wiringPi cut) - added docs/, which includes Fritzing diagrams and schematics - added DEVELOPER FUNCTIONS section in POD for dev testing of private, unpublished or unreleased functions - added pseudoPinsSetup() for testing purposes - reworded POD for setup() routines, as we no longer require root level access to run our scripts (yay!) - wrote test/pwm.pl, fully tests the hardware PWM functionality - added test/pud.pl, testing for pull up/down internal resistors - changed board_rev() references in POD to gpio_layout() (fixes #9) - added test/pin_translations.pl, test all pin translation functions - added pinModeAlt() as a developer function (allows setting any pin to any valid mode) - added digitalReadByte(), digitalReadByte2(), digitalWriteByte() and digitalWriteByte2() as developer functions. Reads and writes an 8-bit byte to/from the first and second bank of eight GPIO pins respectively - added setup tests, since an issue was found that causes some calls to crash the system (journal, RO), added root checks. Notes taken on sourcing the issue(s) 2.36.1 2017-01-15 - changed version numbering scheme. x.yy.z: x.yy represents the version of wiringPi we fully support, and z represents updates to this Perl distribution - renamed examples/ to samples/ so they don't show up on the CPAN's front page for the distribution - added exports for physPinToWpi() and phys_to_wpi() to correct a test breakage 2.36 2017-01-14 - major updates, we now require wiringPi v2.36+ - changed version numbering scheme. We now match the wiringPi version number that we fully support - changed piBoardRev() to piGpioLayout(), and board_rev() to gpio_laout() per changes in wiringPi.c/h - added analogRead()/analog_read() and analogWrite()/analog_write() to support the BMP180 sensor - added bmp180_setup()/bmp180Setup() - added bmp180_temp() and bmp180_pressure() - added POD for all the new functionality 1.05 2017-01-13 - added support for the SR74HC595 shift register (shift_reg_setup() for Perl, and the original sr595Setup()) - added examples/sr.pl for the shift register code 1.04 2016-08-22 - implemented softPwmCreate(), softPwmWrite() and softPwmStop(), perl: soft_pwm_create(), soft_pwm_write(), soft_pwm_stop() - interrupts now work; added code to stop the erroneous extra call to the handler on first interrupt 1.03 2016-08-18 - fixed call to SetupGpio(), case was wrong - renamed gpio_scheme() call to pin_scheme() - removed erroneous call to external module (pin_scheme()) - POD cleanup, re-worded $pin descriptions, and fixed up setup*() routine explanations 1.02 2016-08-16 - removed references to wiringPi pin numbering scheme being the default - added clarification in setup*() routine POD 1.00 2016-08-16 - new export tags, :wiringPi exports the originally named wiringPi functions directly from XS. :perl exports the Perl representation of the functions, and :all exports them all - setup_sys() now exports all BCM pins with a system call with sudo, which alleviates the need to run as user root - interrupt code now implemented and working - renamed to WiringPi::API 0.06 2016-08-13 - moved arg validation out of Core and into upper-layer client software. The idea is to keep this module as close to the C code as possible, so if this module is used directly, C will handle the problem - wrote custom physPinToWpi() C function, and added a phys_to_wpi() caller - we now shift off the object or class name if it is present in all sub calls - all parameter error handling out, and put it into the upper layers... we now pretty much call the C functions directly with little overhead 0.05 2016-08-11 - added all of the wiringPiDev shared library LCD functions, and mapped them in ::Core 0.04 2016-08-10 - wiringPiSetupPhys() has been implemented - added piBoardRev(), wpiPinToGpio(), physPinToGpio() and pwmSetRange() functions - added Perl->C mappings in POD 0.03 2016-08-10 - added repo info to Makefile.PL - added get_alt(), maps to C getAlt(). This returns the current mode of a pin. Why it's not called getMode() is beyond me ;) 0.02 2016-08-10 - added notices to POD - added POD for pwm_write() 0.01 2016-08-10 - separated out from RPi::WiringPi - most core and system functions implemented