+++ /dev/null
-/**
- * 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);
-}
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;
*
* @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<NetworkLinkListener> 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);
}
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();
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");
}