1 package org.rpi.plugin.custombutton;
2
3 import net.xeoh.plugins.base.annotations.PluginImplementation;
4
5 import org.apache.log4j.Logger;
6
7 import com.pi4j.io.gpio.GpioController;
8 import com.pi4j.io.gpio.GpioFactory;
9 import com.pi4j.io.gpio.GpioPinDigitalInput;
10 import com.pi4j.io.gpio.PinPullResistance;
11 import com.pi4j.io.gpio.RaspiPin;
12 import com.pi4j.io.gpio.event.GpioPinDigitalStateChangeEvent;
13 import com.pi4j.io.gpio.event.GpioPinListenerDigital;
14
15 @PluginImplementation
16 public class CustomButtonImpl implements CustomButtonInterface {
17
18 private static Logger log = Logger.getLogger(CustomButtonImpl.class);
19
20 private GpioController gpio = null;
21
22
23 private GpioPinDigitalInput myButton = null;
24
25 public CustomButtonImpl()
26 {
27 log.info("CustomButtonImpl initialization");
28 initPi4J();
29 }
30
31 private void initPi4J() {
32 try {
33
34 gpio = GpioFactory.getInstance();
35 myButton = gpio.provisionDigitalInputPin(RaspiPin.GPIO_02, PinPullResistance.PULL_DOWN);
36 addButtons();
37 } catch (Exception e) {
38 log.error("Error Initializing Pi4J" + e.getMessage());
39 }
40
41 }
42
43 public void addButtons() {
44 try {
45
46 myButton.addListener(new GpioPinListenerDigital() {
47 @Override
48 public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) {
49
50 log.info(" --> GPIO PIN STATE CHANGE: " + event.getPin() + " = " + event.getState());
51 }
52 });
53 } catch (Exception e) {
54
55 }
56 }
57
58 }