
io.github.hapjava.services.impl.DoorService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hap Show documentation
Show all versions of hap Show documentation
Homekit Accessory Protocol for Java
package io.github.hapjava.services.impl;
import io.github.hapjava.accessories.DoorAccessory;
import io.github.hapjava.accessories.optionalcharacteristic.AccessoryWithHoldPosition;
import io.github.hapjava.accessories.optionalcharacteristic.AccessoryWithMute;
import io.github.hapjava.accessories.optionalcharacteristic.AccessoryWithName;
import io.github.hapjava.accessories.optionalcharacteristic.AccessoryWithObstructionDetection;
import io.github.hapjava.characteristics.impl.audio.MuteCharacteristic;
import io.github.hapjava.characteristics.impl.common.NameCharacteristic;
import io.github.hapjava.characteristics.impl.common.ObstructionDetectedCharacteristic;
import io.github.hapjava.characteristics.impl.windowcovering.CurrentPositionCharacteristic;
import io.github.hapjava.characteristics.impl.windowcovering.HoldPositionCharacteristic;
import io.github.hapjava.characteristics.impl.windowcovering.PositionStateCharacteristic;
import io.github.hapjava.characteristics.impl.windowcovering.TargetPositionCharacteristic;
/** This service describes a motorized door. */
public class DoorService extends AbstractServiceImpl {
public DoorService(
CurrentPositionCharacteristic currentPositionCharacteristic,
TargetPositionCharacteristic targetPositionCharacteristic,
PositionStateCharacteristic positionStateCharacteristic) {
super("00000081-0000-1000-8000-0026BB765291");
addCharacteristic(currentPositionCharacteristic);
addCharacteristic(targetPositionCharacteristic);
addCharacteristic(positionStateCharacteristic);
}
public DoorService(DoorAccessory accessory) {
this(
new CurrentPositionCharacteristic(
accessory::getCurrentPosition,
accessory::subscribeCurrentPosition,
accessory::unsubscribeCurrentPosition),
new TargetPositionCharacteristic(
accessory::getTargetPosition,
accessory::setTargetPosition,
accessory::subscribeTargetPosition,
accessory::unsubscribeTargetPosition),
new PositionStateCharacteristic(
accessory::getPositionState,
accessory::subscribePositionState,
accessory::unsubscribePositionState));
if (accessory instanceof AccessoryWithName) {
addOptionalCharacteristic(new NameCharacteristic(((AccessoryWithName) accessory)::getName));
}
if (accessory instanceof AccessoryWithHoldPosition) {
addOptionalCharacteristic(
new HoldPositionCharacteristic(((AccessoryWithHoldPosition) accessory)::setHoldPosition));
}
if (accessory instanceof AccessoryWithObstructionDetection) {
addOptionalCharacteristic(
new ObstructionDetectedCharacteristic(
((AccessoryWithObstructionDetection) accessory)::getObstructionDetected,
((AccessoryWithObstructionDetection) accessory)::subscribeObstructionDetected,
((AccessoryWithObstructionDetection) accessory)::unsubscribeObstructionDetected));
}
if (accessory instanceof AccessoryWithMute) {
addOptionalCharacteristic(
new MuteCharacteristic(
((AccessoryWithMute) accessory)::isMuted,
((AccessoryWithMute) accessory)::setMute,
((AccessoryWithMute) accessory)::subscribeMuteState,
((AccessoryWithMute) accessory)::unsubscribeMuteState));
}
}
public void addOptionalCharacteristic(NameCharacteristic name) {
addCharacteristic(name);
}
public void addOptionalCharacteristic(HoldPositionCharacteristic holdPositionCharacteristic) {
addCharacteristic(holdPositionCharacteristic);
}
public void addOptionalCharacteristic(
ObstructionDetectedCharacteristic obstructionDetectedCharacteristic) {
addCharacteristic(obstructionDetectedCharacteristic);
}
public void addOptionalCharacteristic(MuteCharacteristic muteCharacteristic) {
addCharacteristic(muteCharacteristic);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy