View Javadoc

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  	// provision gpio pin #02 as an input pin with its internal pull down resistor enabled
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  			// create and register gpio pin listener
46  			myButton.addListener(new GpioPinListenerDigital() {
47  				@Override
48  				public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) {
49  					// display pin state on console
50  					log.info(" --> GPIO PIN STATE CHANGE: " + event.getPin() + " = " + event.getState());
51  				}
52  			});
53  		} catch (Exception e) {
54  
55  		}
56  	}
57  
58  }