From 2357eeb87832b89f4199ab1c1a677a135863a6fd Mon Sep 17 00:00:00 2001 From: Patrick Fink Date: Sat, 12 Jan 2019 16:19:06 +0100 Subject: [PATCH] Fix: GattChannelHandler did not always listen to new binary change events Signed-off-by: Patrick Fink --- .../esh/binding/bluetooth/handler/BluetoothHandler.java | 4 ++++ .../esh/binding/bluetooth/handler/GattChannelHandler.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/BluetoothHandler.java b/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/BluetoothHandler.java index 1e05569..b5c2e78 100644 --- a/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/BluetoothHandler.java +++ b/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/BluetoothHandler.java @@ -107,6 +107,10 @@ public void channelUnlinked(ChannelUID channelUID) { }); } + public boolean hasChannelHandler(ChannelHandler handler) { + return this.channelHandlers.containsKey(handler); + } + @Override protected void updateState(String channelID, State state) { super.updateState(channelID, state); diff --git a/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/GattChannelHandler.java b/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/GattChannelHandler.java index 2084596..0648e27 100644 --- a/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/GattChannelHandler.java +++ b/src/main/java/org/sputnikdev/esh/binding/bluetooth/handler/GattChannelHandler.java @@ -171,7 +171,7 @@ private boolean channelRequired(Field field) { } private void buildMissingBinaryChannel() { - if (getBinaryChannel() == null) { + if (!handler.hasChannelHandler(this) || getBinaryChannel() == null) { Channel channel = buildBinaryChannel(); handler.registerChannel(channel.getUID(), this); handler.updateThingWithChannels(Collections.singletonList(channel));