public BLECBCentralManagerWrapper(CBCentralManager manager) { _wes = new WeakEventSource(); Manager = manager; _o1 = Manager.AddObserver( "state", NSKeyValueObservingOptions.OldNew, change => { using (var ov = (NSNumber)change.OldValue) using (var nv = (NSNumber)change.NewValue) { var oldState = (CBCentralManagerState)ov.Int32Value; var newState = (CBCentralManagerState)nv.Int32Value; _wes.RaiseEvent(nameof(StateChanged), Manager, new BLECBCentralManagerStateEventArgs(oldState, newState)); } }); _o2 = manager.AddObserver( "isScanning", NSKeyValueObservingOptions.New, change => _wes.RaiseEvent(nameof(ScanStateChanged), Manager, EventArgs.Empty)); Manager.ConnectedPeripheral += OnConnectedPeripheral; Manager.DisconnectedPeripheral += OnDisconnectedPeripheral; Manager.DiscoveredPeripheral += OnDiscoveredPeripheral; Manager.FailedToConnectPeripheral += OnFailedToConnectPeripheral; Manager.RetrievedConnectedPeripherals += OnRetrievedConnectedPeripherals; Manager.RetrievedPeripherals += OnRetrievedPeripherals; Manager.UpdatedState += OnUpdatedState; Manager.WillRestoreState += OnWillRestoreState; }
private CentralManager() { @delegate = new CentralManagerDelegate(); central = new CBCentralManager(@delegate, new DispatchQueue("Dandy.Devices.BLE.Mac.CentralManager")); var isScanningSubject = new BehaviorSubject <bool>(central.IsScanning); isScanningObserver = central.AddObserver("isScanning", NSKeyValueObservingOptions.New, change => { var value = ((NSNumber)change.NewValue).BoolValue; isScanningSubject.OnNext(value); }); isScanningObservable = isScanningSubject.AsObservable(); }