Skip to content

Commit 49bbccc

Browse files
authored
Merge pull request #14 from tooploox/feature/central-manager-state
BLECentralManager's state publicly available.
2 parents 305bed3 + f3bb588 commit 49bbccc

2 files changed

Lines changed: 12 additions & 2 deletions

File tree

Source/Central/BLECentralManager.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import CombineExt
1414
public protocol BLECentralManager: AnyObject {
1515
var centralManager: CBCentralManagerWrapper { get }
1616
var isScanning: Bool { get }
17+
var state: AnyPublisher<ManagerState, Never> { get }
1718

1819
func retrievePeripherals(withIdentifiers identifiers: [UUID]) -> AnyPublisher<BLEPeripheral, BLEError>
1920
func retrieveConnectedPeripherals(withServices serviceUUIDs: [CBUUID]) -> AnyPublisher<BLEPeripheral, BLEError>
@@ -31,7 +32,7 @@ final class StandardBLECentralManager: BLECentralManager {
3132
let centralManager: CBCentralManagerWrapper
3233
let peripheralProvider: BLEPeripheralProvider
3334

34-
var state = CurrentValueSubject<ManagerState, Never>(ManagerState.unknown)
35+
var stateSubject = CurrentValueSubject<ManagerState, Never>(ManagerState.unknown)
3536
let delegate: BLECentralManagerDelegate
3637

3738
private var cancellables = [AnyCancellable]()
@@ -40,6 +41,10 @@ final class StandardBLECentralManager: BLECentralManager {
4041
centralManager.isScanning
4142
}
4243

44+
var state: AnyPublisher<ManagerState, Never> {
45+
stateSubject.eraseToAnyPublisher()
46+
}
47+
4348
init(
4449
centralManager: CBCentralManagerWrapper,
4550
managerDelegate: BLECentralManagerDelegate = BLECentralManagerDelegate(),
@@ -64,7 +69,7 @@ final class StandardBLECentralManager: BLECentralManager {
6469
func observeUpdateState() {
6570
delegate
6671
.didUpdateState
67-
.sink { self.state.send($0) }
72+
.sink { self.stateSubject.send($0) }
6873
.store(in: &cancellables)
6974
}
7075

Tests/Mocks/MockBLECentralManager.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ import Combine
1313

1414
final class MockBLECentralManager: BLECentralManager {
1515

16+
private var _state = CurrentValueSubject<ManagerState, Never>(ManagerState.unknown)
17+
var state: AnyPublisher<ManagerState, Never> {
18+
_state.eraseToAnyPublisher()
19+
}
20+
1621
var centralManager: CBCentralManagerWrapper = MockCBCentralManagerWrapper()
1722

1823
var isScanning: Bool = false

0 commit comments

Comments
 (0)