All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pi4j.wiringpi.GpioUtil Maven / Gradle / Ivy

Go to download

This bundle wraps Pi4j (http://pi4j.com) that wraps the native code Wiring Pi (http://wiringpi.com). It wraps these libraries to make them OSGi friendly and allow them to work together with the OSGi enRoute IoT circuit library (osgi.enroute.iot.circuit). The bundle will first use Pi4J to detect on what hardware it runs. If it runs on an appropriate type, it will register a component that can be configured with Metatype. The Metatype defines a full blown configuration template for all the Pi's functions. The GPIO's are registered as components for the circuit. Regardless of the success of the configuration, this bundle will also register a GpioController service, which is the main Pi4J class.

The newest version!
package com.pi4j.wiringpi;

/*
 * #%L
 * **********************************************************************
 * ORGANIZATION  :  Pi4J
 * PROJECT       :  Pi4J :: Java Library (Core)
 * FILENAME      :  GpioUtil.java  
 * 
 * This file is part of the Pi4J project. More information about 
 * this project can be found here:  http://www.pi4j.com/
 * **********************************************************************
 * %%
 * Copyright (C) 2012 - 2015 Pi4J
 * %%
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Lesser Public License for more details.
 * 
 * You should have received a copy of the GNU General Lesser Public
 * License along with this program.  If not, see
 * .
 * #L%
 */


import com.pi4j.util.NativeLibraryLoader;

/**
 * 

This utility class is provided to export, unexport, and manipulate pin direction.

* *

* Before using the Pi4J library, you need to ensure that the Java VM in configured with access to * the following system libraries: *

    *
  • pi4j
  • *
  • wiringPi
  • *
*
This library depends on the wiringPi native system library.
(developed by * Gordon Henderson @ http://wiringpi.com/) *
*

* * @see http://www.pi4j.com/ * @see http://wiringpi.com/ * @author Robert Savage (http://www.savagehomeautomation.com) */ public class GpioUtil { // private constructor private GpioUtil() { // forbid object construction } static { // Load the platform library NativeLibraryLoader.load("libpi4j.so"); } /** *

GPIO PIN DIRECTION

*

* GPIO pin constant for IN direction for reading pin states *

* * @see #export(int,int) * @see #setDirection(int,int) * @see #getDirection(int) */ public static final int DIRECTION_IN = 0; /** *

GPIO PIN DIRECTION

*

* GPIO pin constant for OUT direction for writing digital pin states (0/1). *

* * @see #export(int,int) * @see #setDirection(int,int) * @see #getDirection(int) */ public static final int DIRECTION_OUT = 1; /** *

GPIO PIN DIRECTION

*

* GPIO pin constant for OUT direction with an initial default HIGH value for writing digital pin states (0/1). *

* * @see #export(int,int) * @see #setDirection(int,int) * @see #getDirection(int) */ public static final int DIRECTION_HIGH = 2; /** *

GPIO PIN DIRECTION

*

* GPIO pin constant for OUT direction with an initial default LOW value for writing digital pin states (0/1). *

* * @see #export(int,int) * @see #setDirection(int,int) * @see #getDirection(int) */ public static final int DIRECTION_LOW= 3; /** *

GPIO PIN EDGE DETECTION

*

* This constant is provided as an edge detection mode for use with the 'edge' method. This * constants instructs the edge detection to be disabled. *

* * @see #setEdgeDetection(int,int) */ public static final int EDGE_NONE = 0; /** *

GPIO PIN EDGE DETECTION

*

* This constant is provided as an edge detection mode for use with the 'edge' method. This * constants instructs the edge detection to only look for rising and falling pins states; pins * changing from LOW to HIGH or HIGH to LOW. *

* * @see #setEdgeDetection(int,int) */ public static final int EDGE_BOTH = 1; /** *

GPIO PIN EDGE DETECTION

*

* This constant is provided as an edge detection mode for use with the 'edge' method. This * constants instructs the edge detection to only look for rising pins states; pins changing * from LOW to HIGH. *

* * @see #setEdgeDetection(int,int) */ public static final int EDGE_RISING = 2; /** *

GPIO PIN EDGE DETECTION

*

* This constant is provided as an edge detection mode for use with the 'edge' method. This * constants instructs the edge detection to only look for falling pins states; pins changing * from HIGH to LOW. *

* * @see #setEdgeDetection(int,int) */ public static final int EDGE_FALLING = 3; /** *

* This method will export the selected GPIO pin. *

*

* This method required root permissions access. *

* * @see #DIRECTION_IN * @see #DIRECTION_OUT * * @param pin GPIO pin number (not header pin number; not wiringPi pin number) * @param direction pin direction */ public static native void export(int pin, int direction) throws RuntimeException; /** *

This method will unexport the selected GPIO pin.

*

This method required root permissions access.

* * @param pin GPIO pin number (not header pin number; not wiringPi pin number) */ public static native void unexport(int pin) throws RuntimeException; /** *

This method determines if the requested GPIO pin is already exported.

* * @param pin GPIO pin number (not header pin number; not wiringPi pin number) * @return A return value of '0' represents that the pin is not exported.
A return value * of '1' represents that the pin is exported. */ public static native boolean isExported(int pin) throws RuntimeException; /** *

This method will set the selected GPIO pin's edge detection. Edge detection instructs when * the hardware GPIO changes raise interrupts on the system.

*

* NOTE: Calling this method will automatically export the pin and set the pin direction to * INPUT.
This method required root permissions access. *

* * @see #EDGE_NONE * @see #EDGE_BOTH * @see #EDGE_RISING * @see #EDGE_FALLING * * @param pin GPIO pin number (not header pin number; not wiringPi pin number) * @param edge The edge condition to detect: none, rising, falling, or both.
The following * constants are provided for use with this parameter: *
    *
  • EDGE_NONE
  • *
  • EDGE_BOTH
  • *
  • EDGE_RISING
  • *
  • EDGE_FALLING
  • *
* @return A return value of '0' represents success. Errors are returned as negative numbers. */ public static native boolean setEdgeDetection(int pin, int edge) throws RuntimeException; /** *

This method will get the selected GPIO pin's edge detection setting. Edge detection instructs * when the hardware GPIO changes raise interrupts on the system. *

* * @see #EDGE_NONE * @see #EDGE_BOTH * @see #EDGE_RISING * @see #EDGE_FALLING * * @param pin GPIO pin number (not header pin number; not wiringPi pin number) * @return The edge condition detected on the selected pin: none, rising, falling, or both. *
The following constants are provided for use with this parameter: *
    *
  • EDGE_NONE
  • *
  • EDGE_BOTH
  • *
  • EDGE_RISING
  • *
  • EDGE_FALLING
  • *
*/ public static native int getEdgeDetection(int pin) throws RuntimeException; /** *

This method will set the selected GPIO pin's export direction.

* * @see #DIRECTION_IN * @see #DIRECTION_OUT * * @param pin GPIO pin number (not header pin number; not wiringPi pin number) * @param direction * The export direction to apply: IN, OUT.
The following constants are provided * for use with this parameter: *
    *
  • DIRECTION_IN
  • *
  • DIRECTION_OUT
  • *
* @return A return value of '0' represents success. Errors are returned as negative numbers. */ public static native boolean setDirection(int pin, int direction) throws RuntimeException; /** *

* This method will get the selected GPIO pin's export direction. *

* * @see #DIRECTION_IN * @see #DIRECTION_OUT * * @param pin GPIO pin number (not header pin number; not wiringPi pin number) * @return The GPIO pin's configured export direction is returned: IN (0), OUT (1).
The * following constants are provided for use with this parameter: *
    *
  • DIRECTION_IN
  • *
  • DIRECTION_OUT
  • *
*/ public static native int getDirection(int pin) throws RuntimeException; /** *

* This method will return a value of '1' if the pin is supported *

* * @param pin pin number * @return '1' is the pin is supported, else '0' */ public static native int isPinSupported(int pin) throws RuntimeException; }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy