Skip to content

Commit 4177a65

Browse files
committed
Adjust medium settings for a new connector link if appropriate
1 parent 6a7bdbc commit 4177a65

File tree

1 file changed

+19
-2
lines changed

1 file changed

+19
-2
lines changed

src/io/calimero/link/Connector.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242

4343
import java.lang.System.Logger;
4444
import java.time.Duration;
45+
import java.util.Arrays;
4546
import java.util.List;
4647
import java.util.concurrent.CompletableFuture;
4748
import java.util.concurrent.CopyOnWriteArrayList;
@@ -60,6 +61,8 @@
6061
import io.calimero.cemi.CEMILData;
6162
import io.calimero.internal.Executor;
6263
import io.calimero.link.medium.KNXMediumSettings;
64+
import io.calimero.link.medium.PLSettings;
65+
import io.calimero.link.medium.RFSettings;
6366
import io.calimero.log.LogService;
6467

6568
/**
@@ -414,10 +417,24 @@ private AutoCloseable connect() throws InterruptedException, KNXException
414417
try {
415418
final T t = creator.get();
416419
if (t instanceof final KNXNetworkLink link) {
417-
if (impl == null) {
418-
settings = link.getKNXMedium();
420+
var old = getKNXMedium();
421+
if (old == null) {
419422
hopCount = link.getHopCount();
420423
}
424+
else {
425+
// adjust some medium settings of the new link with the old ones if appropriate
426+
var adjust = link.getKNXMedium();
427+
if (!adjust.getDeviceAddress().equals(old.getDeviceAddress()))
428+
adjust.setDeviceAddress(old.getDeviceAddress());
429+
if (adjust.maxApduLength() != old.maxApduLength())
430+
adjust.setMaxApduLength(old.maxApduLength());
431+
if (adjust instanceof PLSettings pl && old instanceof PLSettings plOld
432+
&& !Arrays.equals(pl.getDomainAddress(), plOld.getDomainAddress()))
433+
pl.setDomainAddress(plOld.getDomainAddress());
434+
if (adjust instanceof RFSettings rf && old instanceof RFSettings rfOld
435+
&& !Arrays.equals(rf.getDomainAddress(), rfOld.getDomainAddress()))
436+
rf.setDomainAddress(rfOld.getDomainAddress());
437+
}
421438
link.setHopCount(hopCount);
422439
link.addLinkListener(this);
423440
if (link instanceof final AbstractLink<?> abstractLink)

0 commit comments

Comments
 (0)