Skip to content

Commit

Permalink
open connection on refresh even if no modules exist
Browse files Browse the repository at this point in the history
Signed-off-by: Wouter Denayer <[email protected]>
  • Loading branch information
wouterd authored and Wouter Denayer committed Dec 30, 2020
1 parent 1cc6577 commit 4cf0bed
Showing 1 changed file with 20 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
import org.slf4j.LoggerFactory;

/**
* The {@link NikobusPcLinkHandler} is responsible for handling commands, which are
* sent or received from the PC-Link Nikobus component.
* The {@link NikobusPcLinkHandler} is responsible for handling commands, which
* are sent or received from the PC-Link Nikobus component.
*
* @author Boris Krivonog - Initial contribution
*/
Expand Down Expand Up @@ -329,6 +329,22 @@ private void refresh() {
List<Thing> things = getThing().getThings().stream()
.filter(thing -> thing.getHandler() instanceof NikobusModuleHandler).collect(Collectors.toList());


// if there are command listeners then we need an open connection even if no modules exist
if (!commandListeners.isEmpty()) {
NikobusConnection connection = this.connection;
if (connection == null) {
return;
}
try {
connectIfNeeded(connection);
} catch (IOException e) {
logger.debug("refresh failed due {}", e.getMessage(), e);
connection.close();
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR, e.getMessage());
}
}

if (things.isEmpty()) {
logger.debug("Nothing to refresh");
return;
Expand All @@ -349,8 +365,8 @@ private synchronized void connectIfNeeded(NikobusConnection connection) throws I
if (!connection.isConnected()) {
connection.connect();

// Send connection sequence, mimicking the Nikobus software. If this is not send, PC-Link
// sometimes does not forward button presses via serial interface.
// Send connection sequence, mimicking the Nikobus software. If this is not
// sent, PC-Link sometimes does not forward button presses via serial interface.
Stream.of(new String[] { "++++", "ATH0", "ATZ", "$10110000B8CF9D", "#L0", "#E0", "#L0", "#E1" })
.map(NikobusCommand::new).forEach(this::sendCommand);

Expand Down

0 comments on commit 4cf0bed

Please sign in to comment.