001package com.pi4j.io.gpio;
002
003import java.util.concurrent.Callable;
004import java.util.concurrent.Future;
005
006/*
007 * #%L
008 * **********************************************************************
009 * ORGANIZATION  :  Pi4J
010 * PROJECT       :  Pi4J :: Java Library (Core)
011 * FILENAME      :  GpioPinDigitalOutput.java  
012 * 
013 * This file is part of the Pi4J project. More information about 
014 * this project can be found here:  http://www.pi4j.com/
015 * **********************************************************************
016 * %%
017 * Copyright (C) 2012 - 2015 Pi4J
018 * %%
019 * This program is free software: you can redistribute it and/or modify
020 * it under the terms of the GNU Lesser General Public License as
021 * published by the Free Software Foundation, either version 3 of the
022 * License, or (at your option) any later version.
023 * 
024 * This program is distributed in the hope that it will be useful,
025 * but WITHOUT ANY WARRANTY; without even the implied warranty of
026 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
027 * GNU General Lesser Public License for more details.
028 * 
029 * You should have received a copy of the GNU General Lesser Public
030 * License along with this program.  If not, see
031 * <http://www.gnu.org/licenses/lgpl-3.0.html>.
032 * #L%
033 */
034
035/**
036 * Gpio digital output pin interface.
037 *
038 * @author Robert Savage (<a
039 *         href="http://www.savagehomeautomation.com">http://www.savagehomeautomation.com</a>)
040 */
041@SuppressWarnings("unused")
042public interface GpioPinDigitalOutput extends GpioPinDigital, GpioPinOutput {
043
044    void high();
045    void low();    
046    void toggle();
047    Future<?> blink(long delay);
048    Future<?> blink(long delay, PinState blinkState);
049    Future<?> blink(long delay, long duration);
050    Future<?> blink(long delay, long duration, PinState blinkState);
051    Future<?> pulse(long duration);
052    Future<?> pulse(long duration, Callable<Void> callback);
053    Future<?> pulse(long duration, boolean blocking);
054    Future<?> pulse(long duration, boolean blocking, Callable<Void> callback);
055    Future<?> pulse(long duration, PinState pulseState);
056    Future<?> pulse(long duration, PinState pulseState, Callable<Void> callback);
057    Future<?> pulse(long duration, PinState pulseState, boolean blocking);
058    Future<?> pulse(long duration, PinState pulseState, boolean blocking, Callable<Void> callback);
059    void setState(PinState state);
060    void setState(boolean state);
061
062}