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