]> git.basschouten.com Git - openhab-addons.git/commitdiff
[bluetooth.bluegiga] Fix broken device discovery (#8906)
authorConnor Petty <mistercpp2000@gmail.com>
Sat, 31 Oct 2020 09:40:05 +0000 (02:40 -0700)
committerGitHub <noreply@github.com>
Sat, 31 Oct 2020 09:40:05 +0000 (10:40 +0100)
Signed-off-by: Connor Petty <mistercpp2000+gitsignoff@gmail.com>
bundles/org.openhab.binding.bluetooth.bluegiga/src/main/java/org/openhab/binding/bluetooth/bluegiga/BlueGigaBluetoothDevice.java
bundles/org.openhab.binding.bluetooth.bluegiga/src/main/java/org/openhab/binding/bluetooth/bluegiga/handler/BlueGigaBridgeHandler.java

index 575de1a0964a2da889fbd57c1ddb6d80ae8f62fc..d7f24cd447c893f741353dc55761e8ec17d51e5a 100644 (file)
@@ -127,6 +127,10 @@ public class BlueGigaBluetoothDevice extends BaseBluetoothDevice implements Blue
         updateLastSeenTime();
     }
 
+    public void setAddressType(BluetoothAddressType addressType) {
+        this.addressType = addressType;
+    }
+
     @Override
     public boolean connect() {
         if (connection != -1) {
index 36ceaea9b511dcf5a405e289148d1fbf3dee1882..a6c54f65cc5773c3c9a3092f68300d439aeca511 100644 (file)
@@ -141,10 +141,6 @@ public class BlueGigaBridgeHandler extends AbstractBluetoothBridgeHandler<BlueGi
     // Our BT address
     private @Nullable BluetoothAddress address;
 
-    // Map of Bluetooth devices known to this bridge.
-    // This is all devices we have heard on the network - not just things bound to the bridge
-    private final Map<BluetoothAddress, BlueGigaBluetoothDevice> devices = new ConcurrentHashMap<>();
-
     // Map of open connections
     private final Map<Integer, BluetoothAddress> connections = new ConcurrentHashMap<>();
 
@@ -707,14 +703,9 @@ public class BlueGigaBridgeHandler extends AbstractBluetoothBridgeHandler<BlueGi
                 // We use the scan event to add any devices we hear to the devices list
                 // The device gets created, and then manages itself for discovery etc.
                 BluetoothAddress sender = new BluetoothAddress(scanEvent.getSender());
-                if (!devices.containsKey(sender)) {
-                    BlueGigaBluetoothDevice device;
-                    logger.debug("BlueGiga adding new device to adaptor {}: {}", address, sender);
-                    device = new BlueGigaBluetoothDevice(this, new BluetoothAddress(scanEvent.getSender()),
-                            scanEvent.getAddressType());
-                    devices.put(sender, device);
-                    deviceDiscovered(device);
-                }
+                BlueGigaBluetoothDevice device = getDevice(sender);
+                device.setAddressType(scanEvent.getAddressType());
+                deviceDiscovered(device);
             } else {
                 logger.trace("Ignore BlueGigaScanResponseEvent as initialization is not complete");
             }