Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions Source/Central/BLECentralManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import Combine
public protocol BLECentralManager: AnyObject {
var centralManager: CBCentralManagerWrapper { get }
var isScanning: Bool { get }
var state: AnyPublisher<ManagerState, Never> { get }

func retrievePeripherals(withIdentifiers identifiers: [UUID]) -> AnyPublisher<BLEPeripheral, BLEError>
func retrieveConnectedPeripherals(withServices serviceUUIDs: [CBUUID]) -> AnyPublisher<BLEPeripheral, BLEError>
Expand All @@ -30,7 +31,7 @@ final class StandardBLECentralManager: BLECentralManager {
let centralManager: CBCentralManagerWrapper
let peripheralBuilder: BLEPeripheralBuilder

var state = CurrentValueSubject<ManagerState, Never>(ManagerState.unknown)
var stateSubject = CurrentValueSubject<ManagerState, Never>(ManagerState.unknown)
let delegate: BLECentralManagerDelegate

private var scannedPeripherals = [UUID: BLEPeripheral]()
Expand All @@ -40,6 +41,10 @@ final class StandardBLECentralManager: BLECentralManager {
centralManager.isScanning
}

var state: AnyPublisher<ManagerState, Never> {
stateSubject.eraseToAnyPublisher()
}

init(
centralManager: CBCentralManagerWrapper,
managerDelegate: BLECentralManagerDelegate = BLECentralManagerDelegate(),
Expand All @@ -64,7 +69,7 @@ final class StandardBLECentralManager: BLECentralManager {
func observeUpdateState() {
delegate
.didUpdateState
.sink { self.state.send($0) }
.sink { self.stateSubject.send($0) }
.store(in: &cancellables)
}

Expand Down
5 changes: 5 additions & 0 deletions Tests/Mocks/MockBLECentralManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ import Combine

final class MockBLECentralManager: BLECentralManager {

private var _state = CurrentValueSubject<ManagerState, Never>(ManagerState.unknown)
var state: AnyPublisher<ManagerState, Never> {
_state.eraseToAnyPublisher()
}

var centralManager: CBCentralManagerWrapper = MockCBCentralManagerWrapper()

var isScanning: Bool = false
Expand Down