From 73f423f67de5456448a02e791319b69768980295 Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Thu, 23 Sep 2021 21:57:05 +0200 Subject: [PATCH] fix: temporarily disabled getting Bluetooth devices via CBCentralManager (#642) --- Modules/Bluetooth/readers.swift | 90 +------------------------------ Stats/Supporting Files/Info.plist | 2 +- 2 files changed, 2 insertions(+), 90 deletions(-) diff --git a/Modules/Bluetooth/readers.swift b/Modules/Bluetooth/readers.swift index 4d332518..1c82f555 100644 --- a/Modules/Bluetooth/readers.swift +++ b/Modules/Bluetooth/readers.swift @@ -14,9 +14,8 @@ import Kit import CoreBluetooth import IOBluetooth -internal class DevicesReader: Reader<[BLEDevice]>, CBCentralManagerDelegate, CBPeripheralDelegate { +internal class DevicesReader: Reader<[BLEDevice]> { private let queue = DispatchQueue(label: "eu.exelban.Stats.Bluetooth.reader", attributes: .concurrent) - private var manager: CBCentralManager! private var _devices: [BLEDevice] = [] private var _uuidAddress: [UUID: String] = [:] @@ -49,7 +48,6 @@ internal class DevicesReader: Reader<[BLEDevice]>, CBCentralManagerDelegate, CBP init() { super.init() - self.manager = CBCentralManager.init(delegate: self, queue: nil) } public override func read() { @@ -181,90 +179,4 @@ internal class DevicesReader: Reader<[BLEDevice]>, CBCentralManagerDelegate, CBP } } } - - // MARK: - CBCentralManagerDelegate - - func centralManagerDidUpdateState(_ central: CBCentralManager) { - if central.state == .poweredOff { - self.manager.stopScan() - } else if central.state == .poweredOn { - self.manager.scanForPeripherals(withServices: nil, options: nil) - } - } - - func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String: Any], rssi RSSI: NSNumber) { - guard let address = self.uuidAddress[peripheral.identifier] else { - return - } - - guard let idx = self.devices.firstIndex(where: { $0.address == address && $0.conn == .ble }) else { - self.devices.append(BLEDevice( - conn: .ble, - address: address, - name: peripheral.name ?? "Unknown", - uuid: peripheral.identifier, - RSSI: Int(truncating: RSSI), - peripheral: peripheral - )) - return - } - - self.devices[idx].RSSI = Int(truncating: RSSI) - - if peripheral.state == .disconnected { - central.connect(peripheral, options: nil) - } else if peripheral.state == .connected && !self.devices[idx].isPeripheralConnected { - peripheral.delegate = self - peripheral.discoverServices([batteryServiceUUID]) - self.devices[idx].isPeripheralConnected = true - } - } - - // MARK: - CBPeripheralDelegate - - func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) { - guard error == nil else { - error_msg("didDiscoverServices: \(error!)") - return - } - - guard let service = peripheral.services?.first(where: { $0.uuid == self.batteryServiceUUID }) else { - print("battery service not found, skipping") - return - } - - peripheral.discoverCharacteristics([self.batteryCharacteristicsUUID], for: service) - - debug("\(peripheral.identifier): discover bluetooth services") - } - - func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) { - guard error == nil else { - error_msg("didDiscoverCharacteristicsFor: \(error!)") - return - } - - guard let batteryCharacteristics = service.characteristics?.first(where: { $0.uuid == self.batteryCharacteristicsUUID }) else { - print("characteristics not found") - return - } - - self.characteristicsDict[peripheral.identifier] = batteryCharacteristics - peripheral.readValue(for: batteryCharacteristics) - - debug("\(peripheral.identifier): discover battery service") - } - - func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { - guard error == nil else { - error_msg("didUpdateValueFor: \(error!)") - return - } - - if let batteryLevel = characteristic.value?[0], let idx = self.devices.firstIndex(where: { $0.uuid == peripheral.identifier }) { - self.devices[idx].batteryLevel = [KeyValue_t(key: "battery", value: "\(batteryLevel)")] - } - - debug("\(peripheral.identifier): receive battery update") - } } diff --git a/Stats/Supporting Files/Info.plist b/Stats/Supporting Files/Info.plist index f1f06552..620576ea 100755 --- a/Stats/Supporting Files/Info.plist +++ b/Stats/Supporting Files/Info.plist @@ -17,7 +17,7 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - 309 + 310 Description Simple macOS system monitor in your menu bar LSApplicationCategoryType