]> git.basschouten.com Git - openhab-addons.git/blob
c8792abfe301a2bc5a16ae7def5b538a464bd7b6
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.ecovacs.internal.api.impl;
14
15 import java.util.Set;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.eclipse.jdt.annotation.Nullable;
19 import org.openhab.binding.ecovacs.internal.api.model.DeviceCapability;
20
21 /**
22  * @author Danny Baumann - Initial contribution
23  */
24 @NonNullByDefault
25 public class DeviceDescription {
26     public final String modelName;
27     public final String deviceClass;
28     public final @Nullable String deviceClassLink;
29     public final ProtocolVersion protoVersion;
30     public final boolean usesMqtt;
31     public final Set<DeviceCapability> capabilities;
32
33     public DeviceDescription(String modelName, String deviceClass, @Nullable String deviceClassLink,
34             ProtocolVersion protoVersion, boolean usesMqtt, Set<DeviceCapability> capabilities) {
35         this.modelName = modelName;
36         this.capabilities = capabilities;
37         this.deviceClass = deviceClass;
38         this.deviceClassLink = deviceClassLink;
39         this.protoVersion = protoVersion;
40         this.usesMqtt = usesMqtt;
41     }
42
43     public DeviceDescription resolveLinkWith(DeviceDescription other) {
44         return new DeviceDescription(modelName, deviceClass, null, other.protoVersion, other.usesMqtt,
45                 other.capabilities);
46     }
47
48     public void addImplicitCapabilities() {
49         if (protoVersion != ProtocolVersion.XML && capabilities.contains(DeviceCapability.CLEAN_SPEED_CONTROL)) {
50             capabilities.add(DeviceCapability.EXTENDED_CLEAN_SPEED_CONTROL);
51         }
52         if (protoVersion != ProtocolVersion.XML) {
53             capabilities.add(DeviceCapability.EXTENDED_CLEAN_LOG_RECORD);
54         }
55         if (!capabilities.contains(DeviceCapability.SPOT_AREA_CLEANING)) {
56             capabilities.add(DeviceCapability.EDGE_CLEANING);
57             capabilities.add(DeviceCapability.SPOT_CLEANING);
58         }
59         if (protoVersion == ProtocolVersion.JSON_V2) {
60             capabilities.add(DeviceCapability.DEFAULT_CLEAN_COUNT_SETTING);
61         }
62     }
63 }