diff --git a/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/KNXTypeMapper.java b/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/KNXTypeMapper.java deleted file mode 100644 index 7bcb8177b7c..00000000000 --- a/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/KNXTypeMapper.java +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright (c) 2010-2024 Contributors to the openHAB project - * - * See the NOTICE file(s) distributed with this work for additional - * information. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License 2.0 which is available at - * http://www.eclipse.org/legal/epl-2.0 - * - * SPDX-License-Identifier: EPL-2.0 - */ -package org.openhab.binding.knx.internal; - -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.eclipse.jdt.annotation.Nullable; -import org.openhab.core.types.Type; - -import tuwien.auto.calimero.datapoint.Datapoint; - -/** - * This interface must be implemented by classes that provide a type mapping - * between openHAB and KNX. - * When a command or status update is sent to an item on the openHAB event bus, - * it must be clear, in which format it must be sent to KNX and vice versa. - * - * @author Kai Kreuzer - Initial contribution - * - */ -@NonNullByDefault -public interface KNXTypeMapper { - - /** - * maps an openHAB command/state to a string value which correspond to its datapoint in KNX - * - * @param type a command or state - * @param dpt the corresponding datapoint type - * @return datapoint value as a string - */ - @Nullable - String toDPTValue(Type type, @Nullable String dpt); - - /** - * maps a datapoint value to an openHAB command or state - * - * @param datapoint the source datapoint - * @param data the datapoint value as an ASDU byte array (see - * {@link tuwien.auto.calimero.process.ProcessEvent}.getASDU()) - * @return a command or state of openHAB - */ - @Nullable - Type toType(Datapoint datapoint, byte[] data); - - @Nullable - Class toTypeClass(@Nullable String dpt); -} diff --git a/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java b/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java index f85996b085c..79f4fb2f1d0 100644 --- a/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java +++ b/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/client/AbstractKNXClient.java @@ -503,7 +503,8 @@ public abstract class AbstractKNXClient implements NetworkLinkListener, KNXClien } GroupAddress groupAddress = commandSpec.getGroupAddress(); - logger.trace("writeToKNX groupAddress '{}', commandSpec '{}'", groupAddress, commandSpec); + logger.trace("writeToKNX groupAddress '{}', commandSpec '{}:{} {}'", groupAddress, groupAddress, + commandSpec.getDPT(), commandSpec.getValue()); sendToKNX(processCommunicator, groupAddress, commandSpec.getDPT(), commandSpec.getValue()); } diff --git a/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/discovery/KNXnetDiscoveryService.java b/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/discovery/KNXnetDiscoveryService.java index 5eaddc8e279..d12192fa727 100644 --- a/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/discovery/KNXnetDiscoveryService.java +++ b/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/discovery/KNXnetDiscoveryService.java @@ -95,9 +95,6 @@ public class KNXnetDiscoveryService extends AbstractDiscoveryService { for (Result r : responses) { @Nullable SearchResponse response = r.getResponse(); - if (response == null) { - continue; - } Map services = response.getServiceFamilies().families(); if (services.containsKey(ServiceFamiliesDIB.ServiceFamily.Tunneling) diff --git a/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java b/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java index 9cf2e8cf165..fe23188d6b9 100644 --- a/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java +++ b/bundles/org.openhab.binding.knx/src/main/java/org/openhab/binding/knx/internal/profiles/KNXProfileAdvisor.java @@ -40,15 +40,15 @@ public class KNXProfileAdvisor implements ProfileAdvisor { if (channelTypeUID == null || !channelTypeUID.getBindingId().equals(BINDING_ID)) { return null; } - return getSuggestedProfieTypeUID(channelTypeUID); + return getSuggestedProfileTypeUID(channelTypeUID); } @Override public @Nullable ProfileTypeUID getSuggestedProfileTypeUID(ChannelType channelType, @Nullable String itemType) { - return getSuggestedProfieTypeUID(channelType.getUID()); + return getSuggestedProfileTypeUID(channelType.getUID()); } - private ProfileTypeUID getSuggestedProfieTypeUID(ChannelTypeUID channelTypeUID) { + private ProfileTypeUID getSuggestedProfileTypeUID(ChannelTypeUID channelTypeUID) { if (isControl(channelTypeUID)) { return SystemProfiles.FOLLOW; } else { diff --git a/bundles/org.openhab.binding.knx/src/test/java/org/openhab/binding/knx/internal/client/DummyKNXNetworkLink.java b/bundles/org.openhab.binding.knx/src/test/java/org/openhab/binding/knx/internal/client/DummyKNXNetworkLink.java index 553827f7d1d..7802404ec99 100644 --- a/bundles/org.openhab.binding.knx/src/test/java/org/openhab/binding/knx/internal/client/DummyKNXNetworkLink.java +++ b/bundles/org.openhab.binding.knx/src/test/java/org/openhab/binding/knx/internal/client/DummyKNXNetworkLink.java @@ -13,9 +13,11 @@ package org.openhab.binding.knx.internal.client; import java.util.HashSet; +import java.util.Objects; import java.util.Set; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.openhab.core.util.HexUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,27 +44,27 @@ import tuwien.auto.calimero.link.medium.KNXMediumSettings; * * @author Holger Friedrich - Initial contribution */ -@NonNullByDefault({}) +@NonNullByDefault public class DummyKNXNetworkLink implements KNXNetworkLink { public static final Logger LOGGER = LoggerFactory.getLogger(DummyKNXNetworkLink.class); public static final int GROUP_WRITE = 0x80; private byte[] lastFrame = new byte[0]; - private Set listeners = new HashSet<>(); + private Set<@Nullable NetworkLinkListener> listeners = new HashSet<>(); - public void setKNXMedium(KNXMediumSettings settings) { - LOGGER.warn(settings.toString()); + public void setKNXMedium(@Nullable KNXMediumSettings settings) { + LOGGER.warn(Objects.toString(settings)); } public KNXMediumSettings getKNXMedium() { return KNXMediumSettings.create(KNXMediumSettings.MEDIUM_TP1, new IndividualAddress(1, 2, 3)); } - public void addLinkListener(NetworkLinkListener l) { + public void addLinkListener(@Nullable NetworkLinkListener l) { listeners.add(l); } - public void removeLinkListener(NetworkLinkListener l) { + public void removeLinkListener(@Nullable NetworkLinkListener l) { listeners.remove(l); } @@ -73,13 +75,16 @@ public class DummyKNXNetworkLink implements KNXNetworkLink { return 0; } - public void sendRequest(KNXAddress dst, Priority p, byte[] nsdu) + public void sendRequest(@Nullable KNXAddress dst, @Nullable Priority p, byte @Nullable [] nsdu) throws KNXTimeoutException, KNXLinkClosedException { sendRequestWait(dst, p, nsdu); } - public void sendRequestWait(KNXAddress dst, Priority p, byte[] nsdu) + public void sendRequestWait(@Nullable KNXAddress dst, @Nullable Priority p, byte @Nullable [] nsdu) throws KNXTimeoutException, KNXLinkClosedException { + if (nsdu == null) { + return; + } LOGGER.info("sendRequestWait() {} {} {}", dst, p, HexUtils.bytesToHex(nsdu, " ")); lastFrame = nsdu.clone(); @@ -109,11 +114,13 @@ public class DummyKNXNetworkLink implements KNXNetworkLink { FrameEvent f = new FrameEvent(this, new CEMILData(CEMILData.MC_LDATA_IND, src, dst, nsdu, p, repeat, hopCount)); listeners.forEach(listener -> { - listener.indication(f); + if (listener != null) { + listener.indication(f); + } }); } - public void send(CEMILData msg, boolean waitForCon) throws KNXTimeoutException, KNXLinkClosedException { + public void send(@Nullable CEMILData msg, boolean waitForCon) throws KNXTimeoutException, KNXLinkClosedException { LOGGER.warn("send() not implemented"); }