<?php

require_once __DIR__."/../vendor/autoload.php";

/* 
 * This example demonstrates using a 4-button wireless remote control with the
 * GPIO, in this case with the pins mapped against WiringPi for a Rev2 board.
 * If you are using this code with any other hardware, please update the mapper
 * below.
 *
 * It is assumed that Pin 0 is the interrupt pin (VT) to signal when a button
 * press has been received, and Pin 1-4 are connected to the pins for button
 * A to D on the remote control.
 *
 * Note that the Raspberry Pi GPIO is not 5V tolerant, so use an optoisolator
 * or transistors to ensure that you don't zap your preciouos hardware.
 *
 */

use NoccyLabs\Gpio\Gpio;
use NoccyLabs\Gpio\GpioMapper\WiringPiMapper;

try {
    $gpio = new Gpio(true);
} catch (Gpio\Exception $e) {
    error_log("Error: {$e}");
}

// The mapper translates GPIO to logical pins and vice versa
$gpio->setMapper( new WiringPiMapper(2) );

// Access logical pin 0, since we got a mapper assigned. Otherwise this would
// be the actual GPIO0 pin.
$led = $gpio[0]
    ->export()
    ->setDirection("input")
    ->setEdge("rising")
    ->setHandler(function($e) use($gpio) {
            if ($gpio[1]->getValue()) { echo "A"; }
        elseif ($gpio[2]->getValue()) { echo "B"; }
        elseif ($gpio[3]->getValue()) { echo "C"; }
        elseif ($gpio[4]->getValue()) { echo "D"; }
        else { echo "None"; }
        echo "\n";
    })
    ->setLabel("rfint")
    ->dumpStatus(true);

for($n = 1; $n < 5; $n++) {
    $gpio[$n]
        ->setDirection("input")
        ->setLabel("rfbt{$n}")
        ->dumpStatus(true);
}

while(true) {
    $gpio->refresh();
    usleep(10000);
}