|
42 | 42 |
|
43 | 43 | import java.lang.System.Logger; |
44 | 44 | import java.time.Duration; |
| 45 | +import java.util.Arrays; |
45 | 46 | import java.util.List; |
46 | 47 | import java.util.concurrent.CompletableFuture; |
47 | 48 | import java.util.concurrent.CopyOnWriteArrayList; |
|
60 | 61 | import io.calimero.cemi.CEMILData; |
61 | 62 | import io.calimero.internal.Executor; |
62 | 63 | import io.calimero.link.medium.KNXMediumSettings; |
| 64 | +import io.calimero.link.medium.PLSettings; |
| 65 | +import io.calimero.link.medium.RFSettings; |
63 | 66 | import io.calimero.log.LogService; |
64 | 67 |
|
65 | 68 | /** |
@@ -414,10 +417,24 @@ private AutoCloseable connect() throws InterruptedException, KNXException |
414 | 417 | try { |
415 | 418 | final T t = creator.get(); |
416 | 419 | if (t instanceof final KNXNetworkLink link) { |
417 | | - if (impl == null) { |
418 | | - settings = link.getKNXMedium(); |
| 420 | + var old = getKNXMedium(); |
| 421 | + if (old == null) { |
419 | 422 | hopCount = link.getHopCount(); |
420 | 423 | } |
| 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 | + } |
421 | 438 | link.setHopCount(hopCount); |
422 | 439 | link.addLinkListener(this); |
423 | 440 | if (link instanceof final AbstractLink<?> abstractLink) |
|
0 commit comments