Skip to content

Commit bb67256

Browse files
author
udaw
committed
Add custom valid values constructors to remaining enum characteristics (#163)
Add a constructor taking the valid values as first parameter to 35 enum characteristics, following ProgrammableSwitchEventCharacteristic. The existing constructors delegate with all enum values, so their serialized output is unchanged. Two-value sensor and status flags are left as is.
1 parent 7c7678a commit bb67256

37 files changed

Lines changed: 931 additions & 35 deletions

File tree

‎CHANGES.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# HAP-Java 2.0.10
2+
* Add constructors with a custom list of valid values to the remaining enum characteristics (except two-value sensor and status flags) [#163](https://github.com/hap-java/HAP-Java/issues/163)
3+
14
# HAP-Java 2.0.9
25
* Fix Set Duration and Remaining Duration characteristics to advertise format `uint32` instead of `int` [#202](https://github.com/hap-java/HAP-Java/issues/202)
36
* Stop logging the SRP shared secret, derived key and M5 message data during pairing at DEBUG level

‎src/main/java/io/github/hapjava/characteristics/impl/airpurifier/CurrentAirPurifierCharacteristic.java‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,18 @@ public CurrentAirPurifierCharacteristic(
1818
Supplier<CompletableFuture<CurrentAirPurifierStateEnum>> getter,
1919
Consumer<HomekitCharacteristicChangeCallback> subscriber,
2020
Runnable unsubscriber) {
21+
this(CurrentAirPurifierStateEnum.values(), getter, subscriber, unsubscriber);
22+
}
23+
24+
public CurrentAirPurifierCharacteristic(
25+
CurrentAirPurifierStateEnum[] validValues,
26+
Supplier<CompletableFuture<CurrentAirPurifierStateEnum>> getter,
27+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
28+
Runnable unsubscriber) {
2129
super(
2230
"000000A9-0000-1000-8000-0026BB765291",
2331
"current air purifier state",
24-
CurrentAirPurifierStateEnum.values(),
32+
validValues,
2533
Optional.of(getter),
2634
Optional.empty(),
2735
Optional.of(subscriber),

‎src/main/java/io/github/hapjava/characteristics/impl/airpurifier/TargetAirPurifierStateCharacteristic.java‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,19 @@ public TargetAirPurifierStateCharacteristic(
2020
ExceptionalConsumer<TargetAirPurifierStateEnum> setter,
2121
Consumer<HomekitCharacteristicChangeCallback> subscriber,
2222
Runnable unsubscriber) {
23+
this(TargetAirPurifierStateEnum.values(), getter, setter, subscriber, unsubscriber);
24+
}
25+
26+
public TargetAirPurifierStateCharacteristic(
27+
TargetAirPurifierStateEnum[] validValues,
28+
Supplier<CompletableFuture<TargetAirPurifierStateEnum>> getter,
29+
ExceptionalConsumer<TargetAirPurifierStateEnum> setter,
30+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
31+
Runnable unsubscriber) {
2332
super(
2433
"000000A8-0000-1000-8000-0026BB765291",
2534
"Air purifier state",
26-
TargetAirPurifierStateEnum.values(),
35+
validValues,
2736
Optional.of(getter),
2837
Optional.of(setter),
2938
Optional.of(subscriber),

‎src/main/java/io/github/hapjava/characteristics/impl/airquality/AirQualityCharacteristic.java‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,18 @@ public AirQualityCharacteristic(
1616
Supplier<CompletableFuture<AirQualityEnum>> getter,
1717
Consumer<HomekitCharacteristicChangeCallback> subscriber,
1818
Runnable unsubscriber) {
19+
this(AirQualityEnum.values(), getter, subscriber, unsubscriber);
20+
}
21+
22+
public AirQualityCharacteristic(
23+
AirQualityEnum[] validValues,
24+
Supplier<CompletableFuture<AirQualityEnum>> getter,
25+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
26+
Runnable unsubscriber) {
1927
super(
2028
"00000095-0000-1000-8000-0026BB765291",
2129
"air quality",
22-
AirQualityEnum.values(),
30+
validValues,
2331
Optional.of(getter),
2432
Optional.empty(),
2533
Optional.of(subscriber),

‎src/main/java/io/github/hapjava/characteristics/impl/battery/ChargingStateCharacteristic.java‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,18 @@ public ChargingStateCharacteristic(
1717
Supplier<CompletableFuture<ChargingStateEnum>> getter,
1818
Consumer<HomekitCharacteristicChangeCallback> subscriber,
1919
Runnable unsubscriber) {
20+
this(ChargingStateEnum.values(), getter, subscriber, unsubscriber);
21+
}
22+
23+
public ChargingStateCharacteristic(
24+
ChargingStateEnum[] validValues,
25+
Supplier<CompletableFuture<ChargingStateEnum>> getter,
26+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
27+
Runnable unsubscriber) {
2028
super(
2129
"0000008F-0000-1000-8000-0026BB765291",
2230
"Charging state",
23-
ChargingStateEnum.values(),
31+
validValues,
2432
Optional.of(getter),
2533
Optional.empty(),
2634
Optional.of(subscriber),

‎src/main/java/io/github/hapjava/characteristics/impl/common/ActiveCharacteristic.java‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,19 @@ public ActiveCharacteristic(
1919
ExceptionalConsumer<ActiveEnum> setter,
2020
Consumer<HomekitCharacteristicChangeCallback> subscriber,
2121
Runnable unsubscriber) {
22+
this(ActiveEnum.values(), getter, setter, subscriber, unsubscriber);
23+
}
24+
25+
public ActiveCharacteristic(
26+
ActiveEnum[] validValues,
27+
Supplier<CompletableFuture<ActiveEnum>> getter,
28+
ExceptionalConsumer<ActiveEnum> setter,
29+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
30+
Runnable unsubscriber) {
2231
super(
2332
"000000B0-0000-1000-8000-0026BB765291",
2433
"Active",
25-
ActiveEnum.values(),
34+
validValues,
2635
Optional.of(getter),
2736
Optional.of(setter),
2837
Optional.of(subscriber),

‎src/main/java/io/github/hapjava/characteristics/impl/common/ProgramModeCharacteristic.java‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,18 @@ public ProgramModeCharacteristic(
1616
Supplier<CompletableFuture<ProgramModeEnum>> getter,
1717
Consumer<HomekitCharacteristicChangeCallback> subscriber,
1818
Runnable unsubscriber) {
19+
this(ProgramModeEnum.values(), getter, subscriber, unsubscriber);
20+
}
21+
22+
public ProgramModeCharacteristic(
23+
ProgramModeEnum[] validValues,
24+
Supplier<CompletableFuture<ProgramModeEnum>> getter,
25+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
26+
Runnable unsubscriber) {
1927
super(
2028
"000000D1-0000-1000-8000-0026BB765291",
2129
"Program Mode",
22-
ProgramModeEnum.values(),
30+
validValues,
2331
Optional.of(getter),
2432
Optional.empty(),
2533
Optional.of(subscriber),

‎src/main/java/io/github/hapjava/characteristics/impl/common/ServiceLabelNamespaceCharacteristic.java‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,16 @@ public class ServiceLabelNamespaceCharacteristic
1313
extends EnumCharacteristic<ServiceLabelNamespaceEnum> {
1414
public ServiceLabelNamespaceCharacteristic(
1515
Supplier<CompletableFuture<ServiceLabelNamespaceEnum>> getter) {
16+
this(ServiceLabelNamespaceEnum.values(), getter);
17+
}
18+
19+
public ServiceLabelNamespaceCharacteristic(
20+
ServiceLabelNamespaceEnum[] validValues,
21+
Supplier<CompletableFuture<ServiceLabelNamespaceEnum>> getter) {
1622
super(
1723
"000000CD-0000-1000-8000-0026BB765291",
1824
"service label namespace",
19-
ServiceLabelNamespaceEnum.values(),
25+
validValues,
2026
Optional.of(getter),
2127
Optional.empty(),
2228
Optional.empty(),

‎src/main/java/io/github/hapjava/characteristics/impl/fan/CurrentFanStateCharacteristic.java‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,18 @@ public CurrentFanStateCharacteristic(
1919
Supplier<CompletableFuture<CurrentFanStateEnum>> getter,
2020
Consumer<HomekitCharacteristicChangeCallback> subscriber,
2121
Runnable unsubscriber) {
22+
this(CurrentFanStateEnum.values(), getter, subscriber, unsubscriber);
23+
}
24+
25+
public CurrentFanStateCharacteristic(
26+
CurrentFanStateEnum[] validValues,
27+
Supplier<CompletableFuture<CurrentFanStateEnum>> getter,
28+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
29+
Runnable unsubscriber) {
2230
super(
2331
"000000AF-0000-1000-8000-0026BB765291",
2432
"Current Fan State",
25-
CurrentFanStateEnum.values(),
33+
validValues,
2634
Optional.of(getter),
2735
Optional.empty(),
2836
Optional.of(subscriber),

‎src/main/java/io/github/hapjava/characteristics/impl/fan/LockPhysicalControlsCharacteristic.java‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,19 @@ public LockPhysicalControlsCharacteristic(
1818
ExceptionalConsumer<LockPhysicalControlsEnum> setter,
1919
Consumer<HomekitCharacteristicChangeCallback> subscriber,
2020
Runnable unsubscriber) {
21+
this(LockPhysicalControlsEnum.values(), getter, setter, subscriber, unsubscriber);
22+
}
23+
24+
public LockPhysicalControlsCharacteristic(
25+
LockPhysicalControlsEnum[] validValues,
26+
Supplier<CompletableFuture<LockPhysicalControlsEnum>> getter,
27+
ExceptionalConsumer<LockPhysicalControlsEnum> setter,
28+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
29+
Runnable unsubscriber) {
2130
super(
2231
"000000A7-0000-1000-8000-0026BB765291",
2332
"Physical Locks",
24-
LockPhysicalControlsEnum.values(),
33+
validValues,
2534
Optional.of(getter),
2635
Optional.of(setter),
2736
Optional.of(subscriber),

0 commit comments

Comments
 (0)