Repository navigation
Expand file tree
/
Copy pathDoorbellService.java
More file actions
72 lines (64 loc) · 3.04 KB
/
Copy pathDoorbellService.java
File metadata and controls
72 lines (64 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package io.github.hapjava.services.impl;
import io.github.hapjava.accessories.DoorbellAccessory;
import io.github.hapjava.accessories.optionalcharacteristic.AccessoryWithBrightness;
import io.github.hapjava.accessories.optionalcharacteristic.AccessoryWithMute;
import io.github.hapjava.accessories.optionalcharacteristic.AccessoryWithName;
import io.github.hapjava.accessories.optionalcharacteristic.AccessoryWithVolume;
import io.github.hapjava.characteristics.impl.audio.MuteCharacteristic;
import io.github.hapjava.characteristics.impl.audio.VolumeCharacteristic;
import io.github.hapjava.characteristics.impl.common.NameCharacteristic;
import io.github.hapjava.characteristics.impl.common.ProgrammableSwitchEventCharacteristic;
import io.github.hapjava.characteristics.impl.lightbulb.BrightnessCharacteristic;
/** The Doorbell service describes a doorbell. */
public class DoorbellService extends AbstractServiceImpl {
public DoorbellService(ProgrammableSwitchEventCharacteristic switchEvent) {
super("00000121-0000-1000-8000-0026BB765291");
addCharacteristic(switchEvent);
}
public DoorbellService(DoorbellAccessory accessory) {
this(
new ProgrammableSwitchEventCharacteristic(
accessory::getSwitchEvent,
accessory::subscribeSwitchEvent,
accessory::unsubscribeSwitchEvent));
if (accessory instanceof AccessoryWithName) {
addOptionalCharacteristic(new NameCharacteristic(((AccessoryWithName) accessory)::getName));
}
if (accessory instanceof AccessoryWithBrightness) {
addOptionalCharacteristic(
new BrightnessCharacteristic(
((AccessoryWithBrightness) accessory)::getBrightness,
((AccessoryWithBrightness) accessory)::setBrightness,
((AccessoryWithBrightness) accessory)::subscribeBrightness,
((AccessoryWithBrightness) accessory)::unsubscribeBrightness));
}
if (accessory instanceof AccessoryWithVolume) {
addOptionalCharacteristic(
new VolumeCharacteristic(
((AccessoryWithVolume) accessory)::getVolume,
((AccessoryWithVolume) accessory)::setVolume,
((AccessoryWithVolume) accessory)::subscribeVolume,
((AccessoryWithVolume) accessory)::unsubscribeVolume));
}
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(BrightnessCharacteristic brightness) {
addCharacteristic(brightness);
}
public void addOptionalCharacteristic(VolumeCharacteristic volume) {
addCharacteristic(volume);
}
public void addOptionalCharacteristic(MuteCharacteristic mute) {
addCharacteristic(mute);
}
}