package com.beowulfe.hap.accessories; import java.util.concurrent.CompletableFuture; import com.beowulfe.hap.HomekitCharacteristicChangeCallback; /** * Extends WindowCovering with the ability to control vertical tilt angles * * @author Andy Lintner */ public interface VerticalTiltingWindowCovering extends WindowCovering { /** * Retrieves the current vertical tilt angle * @return a future that will contain the position as a value between -90 and 90 */ CompletableFuture<Integer> getCurrentVerticalTiltAngle(); /** * Retrieves the target vertical tilt angle * @return a future that will contain the target position as a value between -90 and 90 */ CompletableFuture<Integer> getTargetVerticalTiltAngle(); /** * Sets the target position * @param angle the target angle to set, as a value between -90 and 90 * @return a future that completes when the change is made * @throws Exception when the change cannot be made */ CompletableFuture<Void> setTargetVerticalTiltAngle(int angle) throws Exception; /** * Subscribes to changes in the current vertical tilt angle. * @param callback the function to call when the state changes. */ void subscribeCurrentVerticalTiltAngle(HomekitCharacteristicChangeCallback callback); /** * Subscribes to changes in the target vertical tilt angle. * @param callback the function to call when the state changes. */ void subscribeTargetVerticalTiltAngle(HomekitCharacteristicChangeCallback callback); /** * Unsubscribes from changes in the current vertical tilt angle */ void unsubscribeCurrentVerticalTiltAngle(); /** * Unsubscribes from changes in the target vertical tilt angle */ void unsubscribeTargetVerticalTiltAngle(); }