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 extends Type> 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");
}