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(); } }); }
/// <summary> /// Will discover all services/characteristics/descriptors when connected state occurs /// </summary> /// <param name="peripheral"></param> /// <returns></returns> public static IObservable <IGattDescriptor> WhenAnyDescriptorDiscovered(this IPeripheral peripheral) => peripheral.WhenAnyCharacteristicDiscovered().SelectMany(x => x.DiscoverDescriptors());