Changes for version 2.3633_02 - 2019-09-21

  • TRIAL RELEASE: may not install properly, and there's a potential for shared memory corruption in certain circumstances
  • all methods that use GPIO pins now supply an appropriate comment for each pin for identification in shared memory (closes #110)
  • all the OLED tests now get the display object through a Pi object, as opposed to through the class (closes #124)
  • UUID in shared memory now has a href value, containing proc and label (closes #131)
  • when setting a new object in shared storage, we ensure there are no duplicate UUIDs present before assignment (closes #130)
  • all calls through WiringPi::API now use the C function directly as opposed to the Perl functions (closes #128)
  • multi-object, multi-script/proc tests are now automated within the test suite (as t/112 (good) and t/113 (die)) (closes #132)
  • added SIGINT multi test files
  • added meta_locks(). Manages shared memory lock section
  • serial Arduino OLED display now displays the current test file number (closes #106)
  • items that used environment variables to store data are now located within the shared memory storage (closes #129)
  • most modules are now only loaded if they are used (closes #135)
  • add blurb in FAQ that if running scripts from crontab, the RemoveIPC flag in logind.conf must be set to "no" so shared memory semaphores don't get removed upon user logoff (closes #138)
  • renamed bin/pimetadata to bin/pimeta and bin/pi-erase-metadata to bin/pimetaerase
  • bumped RPi::Serial prereq to 3.00 as it no longer relies on wiringPi (closes #136)
  • bump prereq of RPi::LCD to 2.3604 due to it relying on the old RPi::WiringPi::Constant (closes #147)

Changes for version 2.3633_01 - 2019-07-05

  • added the test platform I2C address map listing (closes #103)
  • EEPROM: add the new RPi::EEPROM::AT24C32 distribution for EEPROM access (closes #104), and tests pull the EEPROM object from a $pi object (closes #105)
  • implemented IPC::Shareable so we can read and write object and other various information (pins, test info etc) between separate processes and objects (closes #107)
  • updated RPi::Pin (and subsequently register_pin()) with the ability to store a comment/description with each pin. This will allow all objects across all processes to identify which pin is being used for what purpose (closes #108)
  • added new metadata() in Core, returns a copy of the meta data stored within the shared memory space
  • added clean_shared() in Core, (with binary 'pi-erase-metadata'). Used to wipe out the shared metadata in the event of power loss while Pi is running
  • added pimetadata and pi-erase-metadata scripts
  • cleanup() no longer tries to set pin_mode(). pin_mode() gets its data from mode_alt() which has values of 0-7, so if we're higher than mode 3, everything fails, because pin_mode() accepts only values 0-3. We just glean the mode from the 'alt' status instead
  • added checksum(), generates a random 32-byte hexidecimal string
  • added uuid(), returns the generated string set as the Pi object's UUID in the new() method
  • added dump_object(), simply dumps the object out using Data::Dumper
  • shared memory now stores the checksum of each Pi object created on the system (specifically used for cleanup identification)
  • if multiple Pi objects are being used simultaneously on the same system, we now keep track of pins, and only the pins associated with a specific object are reset back to default status; all other Pi object's pins are left registered and in tact (closes #118)
  • added new t/multi directory with a manual test setup for testing multi processes, and pin cleanups
  • completely re-wrote all signal handlers to properly house all objects within a class variable for cleanup() use
  • added dump_metadata(), uses Data::Dumper to dump the contents of the meta data within the shared memory storage
  • added installed script information to FAQ (closes #114)
  • created RPi::WiringPi::Util, and put all methods not related to Pi hardware functionality within. This includes metadata functionality etc. Also moved a bunch of methods from Core into here (closes #120)
  • added signal_handlers() and dump_signal_handlers() to Util. (closes #121)
  • added further subs to t/RPiTest
  • in t/RPiTest library, changed all exports to have an "rpi_" prefix, made it so that all subs are exported by default (as opposed to using @EXPORT_OK), and rewrote all test files to do base meta/pin checks on all files

Documentation

FAQ and Tutorial for RPi::WiringPi

Modules

Perl interface to Raspberry Pi's board, GPIO, LCDs and other various items
Core methods for RPi::WiringPi Raspberry Pi interface
Shared memory meta data management for RPI::WiringPi
Utility methods outside of Pi hardware functionality