Remove old BLE devices from scan

This commit is contained in:
Garth Vander Houwen 2022-03-04 04:16:45 -08:00
parent 0b375a4ba2
commit 809dad5e76
2 changed files with 10 additions and 4 deletions

View file

@ -98,7 +98,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
self.centralManager.stopScan()
self.isScanning = self.centralManager.isScanning
peripherals.removeAll(where: { $0.peripheral.state == CBPeripheralState.disconnected })
print("🛑 Stopped Scanning")
}
}
@ -177,7 +177,7 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
peripheralName = name
}
let newPeripheral = Peripheral(id: peripheral.identifier.uuidString, num: 0, name: peripheralName, shortName: String(peripheralName.suffix(3)), longName: peripheralName, firmwareVersion: "Unknown", rssi: RSSI.intValue, channelUtilization: nil, airTime: nil, subscribed: false, peripheral: peripheral)
let newPeripheral = Peripheral(id: peripheral.identifier.uuidString, num: 0, name: peripheralName, shortName: String(peripheralName.suffix(3)), longName: peripheralName, firmwareVersion: "Unknown", rssi: RSSI.intValue, channelUtilization: nil, airTime: nil, lastUpdate: Date(), subscribed: false, peripheral: peripheral)
let peripheralIndex = peripherals.firstIndex(where: { $0.id == newPeripheral.id })
if peripheralIndex != nil && newPeripheral.peripheral.state != CBPeripheralState.connected {
@ -187,13 +187,17 @@ class BLEManager: NSObject, ObservableObject, CBCentralManagerDelegate, CBPeriph
peripherals.append(newPeripheral)
} else {
if newPeripheral.peripheral.state != CBPeripheralState.connected {
peripherals.append(newPeripheral)
print(" Adding peripheral: \(peripheralName)")
}
}
let today = Date()
let fiveMinutesAgo = Calendar.current.date(byAdding: .minute, value: -5, to: today)!
peripherals.removeAll(where: { $0.lastUpdate <= fiveMinutesAgo})
}
// Called when a peripheral is connected

View file

@ -11,10 +11,11 @@ struct Peripheral: Identifiable {
var rssi: Int
var channelUtilization: Float?
var airTime: Float?
var lastUpdate: Date
var subscribed: Bool
var peripheral: CBPeripheral
init(id: String, num: Int64, name: String, shortName: String, longName: String, firmwareVersion: String, rssi: Int, channelUtilization: Float?, airTime: Float?, subscribed: Bool, peripheral: CBPeripheral) {
init(id: String, num: Int64, name: String, shortName: String, longName: String, firmwareVersion: String, rssi: Int, channelUtilization: Float?, airTime: Float?, lastUpdate: Date, subscribed: Bool, peripheral: CBPeripheral) {
self.id = id
self.num = num
self.name = name
@ -24,6 +25,7 @@ struct Peripheral: Identifiable {
self.rssi = rssi
self.channelUtilization = channelUtilization
self.airTime = airTime
self.lastUpdate = lastUpdate
self.subscribed = subscribed
self.peripheral = peripheral
}