/// <summary> /// Starts connection process if not already connecteds /// </summary> /// <param name="peripheral"></param> public static void ConnectIf(this IPeripheral peripheral) { if (peripheral.Status == ConnectionState.Disconnected) { peripheral.Connect(); } }
/// <summary> /// Attempts to connect if not already connected /// </summary> /// <param name="peripheral"></param> /// <param name="config"></param> /// <returns></returns> public static IObservable <IPeripheral> WithConnectIf(this IPeripheral peripheral, ConnectionConfig?config = null) => Observable.Create <IPeripheral>(ob => { if (peripheral.IsConnected()) { ob.Respond(peripheral); return(Disposable.Empty); } var sub1 = peripheral .WhenConnected() .Take(1) .Subscribe(_ => ob.Respond(peripheral)); var sub2 = peripheral .WhenConnectionFailed() .Subscribe(ob.OnError); peripheral.Connect(config); return(Disposable.Create(() => { sub1.Dispose(); sub2.Dispose(); if (peripheral.Status != ConnectionState.Connected) { peripheral.CancelConnection(); } })); });
/// <summary> /// Starts connection process if not already connecteds /// </summary> /// <param name="peripheral"></param> /// <param name="connectionConfig"></param> /// <returns>True if connection attempt was sent, otherwise false</returns> public static bool ConnectIf(this IPeripheral peripheral, ConnectionConfig?config = null) { if (peripheral.Status == ConnectionState.Disconnected) { peripheral.Connect(config); return(true); } return(false); }
public void ConnectPrinter(IPeripheral selectedPeripheral) { if (!selectedPeripheral.IsConnected()) { selectedPeripheral.Connect(); } _perifDisposable = selectedPeripheral.WhenAnyCharacteristicDiscovered().Subscribe((characteristic) => { if (characteristic.CanWrite() && !characteristic.CanRead() && !characteristic.CanNotify()) { _savedCharacteristic = characteristic; IsReady = true; _perifDisposable.Dispose(); } }); }
void ConnectPrinter(IPeripheral selectedPeripheral) { if (!selectedPeripheral.IsConnected()) { selectedPeripheral.Connect(); } _perifDisposable = selectedPeripheral.WhenAnyCharacteristicDiscovered().Subscribe((characteristic) => { //System.Diagnostics.Debug.WriteLine(characteristic.Description); //this is not suppported at this momment, and no neccesary I guess if (characteristic.CanWrite() && !characteristic.CanRead() && !characteristic.CanNotify()) { IsReadyToPrint = true; _savedCharacteristic = characteristic; System.Diagnostics.Debug.WriteLine($"Writing {characteristic.Uuid} - {characteristic.CanRead()} - {characteristic.CanIndicate()} - {characteristic.CanNotify()}"); _perifDisposable.Dispose(); } }); }