Exemplo n.º 1
0
 /// <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();
     }
 }
Exemplo n.º 2
0
        /// <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();
                }
            }));
        });
Exemplo n.º 3
0
 /// <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);
 }
Exemplo n.º 4
0
        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();
                }
            });
        }
Exemplo n.º 5
0
        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();
                }
            });
        }