diff --git a/CHANGES.md b/CHANGES.md index 402d3fcec..ab4bc7e4f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,8 @@ +# HAP-Java 2.0.6 +* Several methods allowing library users to manipulate characteristics themselves +* Allow library users to provider their own implementation of AccessoryInformationService +* Fix ProgrammableSwitchEventEnum that has an incorrect value + # HAP-Java 2.0.5 * Implement List-Pairings method. Compatibility with new Home infrastructure from iOS 16.2? diff --git a/src/main/java/io/github/hapjava/characteristics/impl/base/EnumCharacteristic.java b/src/main/java/io/github/hapjava/characteristics/impl/base/EnumCharacteristic.java index 65e82747f..0032b4301 100644 --- a/src/main/java/io/github/hapjava/characteristics/impl/base/EnumCharacteristic.java +++ b/src/main/java/io/github/hapjava/characteristics/impl/base/EnumCharacteristic.java @@ -26,7 +26,7 @@ public abstract class EnumCharacteristic extends BaseCharacteristic { private final T[] validValues; - Optional>> getter; + protected Optional>> getter; protected Optional> setter; /** @@ -100,7 +100,16 @@ public CompletableFuture getValue() { if (!getter.isPresent()) { return null; } - return getter.get().get().thenApply(T::getCode); + return getter + .get() + .get() + .thenApply( + e -> { + if (e == null) { + return null; + } + return e.getCode(); + }); } public void setValue(T value) throws Exception { diff --git a/src/main/java/io/github/hapjava/characteristics/impl/common/ProgrammableSwitchEnum.java b/src/main/java/io/github/hapjava/characteristics/impl/common/ProgrammableSwitchEnum.java index 12f600f92..988472a0c 100644 --- a/src/main/java/io/github/hapjava/characteristics/impl/common/ProgrammableSwitchEnum.java +++ b/src/main/java/io/github/hapjava/characteristics/impl/common/ProgrammableSwitchEnum.java @@ -9,7 +9,7 @@ public enum ProgrammableSwitchEnum implements CharacteristicEnum { SINGLE_PRESS(0), DOUBLE_PRESS(1), - LONG_PRESS(3); + LONG_PRESS(2); private static final Map reverse; diff --git a/src/main/java/io/github/hapjava/characteristics/impl/common/ProgrammableSwitchEventCharacteristic.java b/src/main/java/io/github/hapjava/characteristics/impl/common/ProgrammableSwitchEventCharacteristic.java index 83dcbb2dc..b19430100 100644 --- a/src/main/java/io/github/hapjava/characteristics/impl/common/ProgrammableSwitchEventCharacteristic.java +++ b/src/main/java/io/github/hapjava/characteristics/impl/common/ProgrammableSwitchEventCharacteristic.java @@ -21,10 +21,18 @@ public ProgrammableSwitchEventCharacteristic( Supplier> getter, Consumer subscriber, Runnable unsubscriber) { + this(ProgrammableSwitchEnum.values(), getter, subscriber, unsubscriber); + } + + public ProgrammableSwitchEventCharacteristic( + ProgrammableSwitchEnum[] validValues, + Supplier> getter, + Consumer subscriber, + Runnable unsubscriber) { super( "00000073-0000-1000-8000-0026BB765291", "Switch Event", - ProgrammableSwitchEnum.values(), + validValues, Optional.of(getter), Optional.empty(), Optional.of(subscriber),