docs | ||
examples | ||
lib | ||
.gitignore | ||
composer.json | ||
composer.lock | ||
LICENSE | ||
README.md |
Linux Userspace GPIO Library
- Export and Unexport GPIO pins
- Interrupt support (*)
- Hardware-neutral rewrite of NoccyLabs RaspIO
- Compatible with psr/logs LoggerInterface for logging
Interrupts
NOTE: Not implemented!
For interrupts to work, you need to first bind the interrupt handler, and then
make sure to call on Gpio#refresh()
every cycle to poll the interrupt flag on
the selected pins. This is because the select()
function is used.
$gpio = new Gpio();
// Set the handler on the Gpio object
$gpio->setInterruptHandler($gpio[4], function() { ... });
// Or like this on the GpioPin.
$gpio[4]
->setEdge("rising")
->setHandler(function() { ... });
while (..) {
..
$gpio->refresh();
}
You can also be risky and use php ticks and timerfuncs (although that might not be portable/supported/efficient/a good idea):
declare(ticks=5);
$gpio = new Gpio();
$gpiotick = new GpioTickHandler();
$gpiotick->registerGpio($gpio);
// The interrupts will now be polled approx every 5th php vm "tick"