Class EnumCharacteristic<T extends CharacteristicEnum>
- java.lang.Object
-
- io.github.hapjava.characteristics.impl.base.BaseCharacteristic<Integer>
-
- io.github.hapjava.characteristics.impl.base.EnumCharacteristic<T>
-
- All Implemented Interfaces:
Characteristic,EventableCharacteristic
- Direct Known Subclasses:
AccessoryFlagsCharacteristic,ActiveCharacteristic,AirQualityCharacteristic,CarbonDioxideDetectedCharacteristic,CarbonMonoxideDetectedCharacteristic,ChargingStateCharacteristic,ClosedCaptionsCharacteristic,ContactSensorStateCharacteristic,CurrentAirPurifierCharacteristic,CurrentDoorStateCharacteristic,CurrentFanStateCharacteristic,CurrentHeaterCoolerStateCharacteristic,CurrentHeatingCoolingStateCharacteristic,CurrentHumidifierDehumidifierStateCharacteristic,CurrentMediaStateCharacteristic,CurrentSecuritySystemStateCharacteristic,CurrentSlatStateCharacteristic,CurrentVisibilityStateCharacteristic,FilterChangeIndicationCharacteristic,InputDeviceTypeCharacteristic,InputSourceTypeCharacteristic,InUseCharacteristic,IsConfiguredCharacteristic,LeakDetectedStateCharacteristic,LockCurrentStateCharacteristic,LockPhysicalControlsCharacteristic,LockTargetStateCharacteristic,OccupancyDetectedCharacteristic,PictureModeCharacteristic,PositionStateCharacteristic,PowerModeCharacteristic,ProgrammableSwitchEventCharacteristic,ProgramModeCharacteristic,RemoteKeyCharacteristic,RotationDirectionCharacteristic,SecuritySystemAlarmTypeCharacteristic,ServiceLabelNamespaceCharacteristic,SlatTypeCharacteristic,SleepDiscoveryModeCharacteristic,SmokeDetectedCharacteristic,StatusFaultCharacteristic,StatusLowBatteryCharacteristic,StatusTamperedCharacteristic,SwingModeCharacteristic,TargetAirPurifierStateCharacteristic,TargetDoorStateCharacteristic,TargetFanStateCharacteristic,TargetHeaterCoolerStateCharacteristic,TargetHeatingCoolingStateCharacteristic,TargetHumidifierDehumidifierStateCharacteristic,TargetMediaStateCharacteristic,TargetSecuritySystemStateCharacteristic,TargetVisibilityStateCharacteristic,TemperatureDisplayUnitCharacteristic,ValveTypeCharacteristic,VolumeControlTypeCharacteristic,VolumeSelectorCharacteristic
public abstract class EnumCharacteristic<T extends CharacteristicEnum> extends BaseCharacteristic<Integer>
Characteristic that exposes an Enum value. Enums are represented as an Integer value in the HomeKit protocol, and classes extending this one must handle the static mapping to an Integer value.- Author:
- Andy Lintner
-
-
Field Summary
Fields Modifier and Type Field Description protected Optional<ExceptionalConsumer<T>>setter
-
Constructor Summary
Constructors Constructor Description EnumCharacteristic(String type, String description, T[] validValues, Optional<Supplier<CompletableFuture<T>>> getter, Optional<ExceptionalConsumer<T>> setter, Optional<Consumer<HomekitCharacteristicChangeCallback>> subscriber, Optional<Runnable> unsubscriber)Default constructor
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Integerconvert(javax.json.JsonValue jsonValue)Converts from the JSON value to a Java object of the type TIntegergetDefault()Supplies a default value for the characteristic to send to connected clients when the real value.protected CompletableFuture<Integer>getValue()Retrieves the current value of the characteristic.protected CompletableFuture<javax.json.JsonObjectBuilder>makeBuilder(int iid)Creates the JSON serialized form of the accessory for use over the HomeKit Accessory Protocol.protected voidsetValue(Integer value)Update the characteristic value using a new value supplied by the connected client.-
Methods inherited from class io.github.hapjava.characteristics.impl.base.BaseCharacteristic
setJsonValue, setValue, subscribe, supplyValue, toJson, unsubscribe
-
-
-
-
Field Detail
-
setter
protected Optional<ExceptionalConsumer<T extends CharacteristicEnum>> setter
-
-
Constructor Detail
-
EnumCharacteristic
public EnumCharacteristic(String type, String description, T[] validValues, Optional<Supplier<CompletableFuture<T>>> getter, Optional<ExceptionalConsumer<T>> setter, Optional<Consumer<HomekitCharacteristicChangeCallback>> subscriber, Optional<Runnable> unsubscriber)
Default constructor- Parameters:
type- a string containing a UUID that indicates the type of characteristic. Apple defines a set of these, however implementors can create their own as well.description- a description of the characteristic to be passed to the consuming device.validValues- an array of valid values for enum.getter- getter to retrieve the valuesetter- setter to set valuesubscriber- subscriber to subscribe to changesunsubscriber- unsubscriber to unsubscribe from chnages
-
-
Method Detail
-
makeBuilder
protected CompletableFuture<javax.json.JsonObjectBuilder> makeBuilder(int iid)
Creates the JSON serialized form of the accessory for use over the HomeKit Accessory Protocol.- Overrides:
makeBuilderin classBaseCharacteristic<Integer>- Parameters:
iid- the static id of the accessory.- Returns:
- a future that will complete with the JSON builder for the object.
-
convert
protected Integer convert(javax.json.JsonValue jsonValue)
Converts from the JSON value to a Java object of the type T- Specified by:
convertin classBaseCharacteristic<Integer>- Parameters:
jsonValue- the JSON value to convert from.- Returns:
- the converted Java object.
-
getValue
protected CompletableFuture<Integer> getValue()
Description copied from class:BaseCharacteristicRetrieves the current value of the characteristic.- Specified by:
getValuein classBaseCharacteristic<Integer>- Returns:
- a future that will complete with the current value.
-
setValue
protected void setValue(Integer value) throws Exception
Description copied from class:BaseCharacteristicUpdate the characteristic value using a new value supplied by the connected client.- Specified by:
setValuein classBaseCharacteristic<Integer>- Parameters:
value- the new value to set.- Throws:
Exception- if the value cannot be set.
-
getDefault
public Integer getDefault()
Supplies a default value for the characteristic to send to connected clients when the real value. cannot be retrieved.- Specified by:
getDefaultin classBaseCharacteristic<Integer>- Returns:
- a sensible default value.
-
-