[knx] Code cleanup (#16199)

- Enhance trace logging
- Remove unused file
- Null annotations

Signed-off-by: Holger Friedrich <mail@holger-friedrich.de>
Signed-off-by: Ciprian Pascu <contact@ciprianpascu.ro>
This commit is contained in:
Holger Friedrich 2024-01-03 21:54:21 +01:00 committed by Ciprian Pascu
parent 7c02d52138
commit 1f90fb9a08
5 changed files with 22 additions and 73 deletions

View File

@ -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
* <code>{@link tuwien.auto.calimero.process.ProcessEvent}.getASDU()</code>)
* @return a command or state of openHAB
*/
@Nullable
Type toType(Datapoint datapoint, byte[] data);
@Nullable
Class<? extends Type> toTypeClass(@Nullable String dpt);
}

View File

@ -503,7 +503,8 @@ public abstract class AbstractKNXClient implements NetworkLinkListener, KNXClien
} }
GroupAddress groupAddress = commandSpec.getGroupAddress(); 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()); sendToKNX(processCommunicator, groupAddress, commandSpec.getDPT(), commandSpec.getValue());
} }

View File

@ -95,9 +95,6 @@ public class KNXnetDiscoveryService extends AbstractDiscoveryService {
for (Result<SearchResponse> r : responses) { for (Result<SearchResponse> r : responses) {
@Nullable @Nullable
SearchResponse response = r.getResponse(); SearchResponse response = r.getResponse();
if (response == null) {
continue;
}
Map<ServiceFamily, Integer> services = response.getServiceFamilies().families(); Map<ServiceFamily, Integer> services = response.getServiceFamilies().families();
if (services.containsKey(ServiceFamiliesDIB.ServiceFamily.Tunneling) if (services.containsKey(ServiceFamiliesDIB.ServiceFamily.Tunneling)

View File

@ -40,15 +40,15 @@ public class KNXProfileAdvisor implements ProfileAdvisor {
if (channelTypeUID == null || !channelTypeUID.getBindingId().equals(BINDING_ID)) { if (channelTypeUID == null || !channelTypeUID.getBindingId().equals(BINDING_ID)) {
return null; return null;
} }
return getSuggestedProfieTypeUID(channelTypeUID); return getSuggestedProfileTypeUID(channelTypeUID);
} }
@Override @Override
public @Nullable ProfileTypeUID getSuggestedProfileTypeUID(ChannelType channelType, @Nullable String itemType) { 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)) { if (isControl(channelTypeUID)) {
return SystemProfiles.FOLLOW; return SystemProfiles.FOLLOW;
} else { } else {

View File

@ -13,9 +13,11 @@
package org.openhab.binding.knx.internal.client; package org.openhab.binding.knx.internal.client;
import java.util.HashSet; import java.util.HashSet;
import java.util.Objects;
import java.util.Set; import java.util.Set;
import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.jdt.annotation.Nullable;
import org.openhab.core.util.HexUtils; import org.openhab.core.util.HexUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -42,27 +44,27 @@ import tuwien.auto.calimero.link.medium.KNXMediumSettings;
* *
* @author Holger Friedrich - Initial contribution * @author Holger Friedrich - Initial contribution
*/ */
@NonNullByDefault({}) @NonNullByDefault
public class DummyKNXNetworkLink implements KNXNetworkLink { public class DummyKNXNetworkLink implements KNXNetworkLink {
public static final Logger LOGGER = LoggerFactory.getLogger(DummyKNXNetworkLink.class); public static final Logger LOGGER = LoggerFactory.getLogger(DummyKNXNetworkLink.class);
public static final int GROUP_WRITE = 0x80; public static final int GROUP_WRITE = 0x80;
private byte[] lastFrame = new byte[0]; private byte[] lastFrame = new byte[0];
private Set<NetworkLinkListener> listeners = new HashSet<>(); private Set<@Nullable NetworkLinkListener> listeners = new HashSet<>();
public void setKNXMedium(KNXMediumSettings settings) { public void setKNXMedium(@Nullable KNXMediumSettings settings) {
LOGGER.warn(settings.toString()); LOGGER.warn(Objects.toString(settings));
} }
public KNXMediumSettings getKNXMedium() { public KNXMediumSettings getKNXMedium() {
return KNXMediumSettings.create(KNXMediumSettings.MEDIUM_TP1, new IndividualAddress(1, 2, 3)); 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); listeners.add(l);
} }
public void removeLinkListener(NetworkLinkListener l) { public void removeLinkListener(@Nullable NetworkLinkListener l) {
listeners.remove(l); listeners.remove(l);
} }
@ -73,13 +75,16 @@ public class DummyKNXNetworkLink implements KNXNetworkLink {
return 0; 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 { throws KNXTimeoutException, KNXLinkClosedException {
sendRequestWait(dst, p, nsdu); 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 { throws KNXTimeoutException, KNXLinkClosedException {
if (nsdu == null) {
return;
}
LOGGER.info("sendRequestWait() {} {} {}", dst, p, HexUtils.bytesToHex(nsdu, " ")); LOGGER.info("sendRequestWait() {} {} {}", dst, p, HexUtils.bytesToHex(nsdu, " "));
lastFrame = nsdu.clone(); 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)); FrameEvent f = new FrameEvent(this, new CEMILData(CEMILData.MC_LDATA_IND, src, dst, nsdu, p, repeat, hopCount));
listeners.forEach(listener -> { 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"); LOGGER.warn("send() not implemented");
} }