2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.ecovacs.internal.api.impl;
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18 import org.eclipse.jdt.annotation.Nullable;
19 import org.openhab.binding.ecovacs.internal.api.model.DeviceCapability;
22 * @author Danny Baumann - Initial contribution
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;
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;
43 public DeviceDescription resolveLinkWith(DeviceDescription other) {
44 return new DeviceDescription(modelName, deviceClass, null, other.protoVersion, other.usesMqtt,
48 public void addImplicitCapabilities() {
49 if (protoVersion != ProtocolVersion.XML && capabilities.contains(DeviceCapability.CLEAN_SPEED_CONTROL)) {
50 capabilities.add(DeviceCapability.EXTENDED_CLEAN_SPEED_CONTROL);
52 if (protoVersion != ProtocolVersion.XML) {
53 capabilities.add(DeviceCapability.EXTENDED_CLEAN_LOG_RECORD);
55 if (!capabilities.contains(DeviceCapability.SPOT_AREA_CLEANING)) {
56 capabilities.add(DeviceCapability.EDGE_CLEANING);
57 capabilities.add(DeviceCapability.SPOT_CLEANING);
59 if (protoVersion == ProtocolVersion.JSON_V2) {
60 capabilities.add(DeviceCapability.DEFAULT_CLEAN_COUNT_SETTING);