private Task <IReadOnlyList <GattService> > PlatformGetIncludedServicesAsync() { TaskCompletionSource <IReadOnlyList <GattService> > tcs = new TaskCompletionSource <IReadOnlyList <GattService> >(); CBPeripheral peripheral = Device; void handler(object sender, CBServiceEventArgs args) { peripheral.DiscoveredIncludedService -= handler; if (args.Error != null) { tcs.SetException(new Exception(args.Error.ToString())); } else { List <GattService> services = new List <GattService>(); foreach (var includedService in _service.IncludedServices) { services.Add(new GattService(Device, includedService)); } tcs.SetResult(services.AsReadOnly()); } } peripheral.DiscoveredIncludedService += handler; peripheral.DiscoverIncludedServices(new CBUUID[] { }, _service); return(tcs.Task); }
public override void DiscoveredService(CBPeripheral peripheral, NSError error) { peripheral.Delegate = this; if (peripheral.Services != null) { client.serviceObjects.AddRange(peripheral.Services); client.charCallCount = client.serviceObjects.Count; client.incCallCount = client.serviceObjects.Count; client.descCallCount = 0; foreach (var service in peripheral.Services) { peripheral.DiscoverIncludedServices(null, service); peripheral.DiscoverCharacteristics(null, service); } } }
private Task <GattService> PlatformGetIncludedServiceAsync(BluetoothUuid service) { TaskCompletionSource <GattService> tcs = new TaskCompletionSource <GattService>(); CBPeripheral peripheral = Device; void handler(object sender, CBServiceEventArgs args) { peripheral.DiscoveredIncludedService -= handler; if (args.Error != null) { tcs.SetException(new Exception(args.Error.ToString())); } else { tcs.SetResult(new GattService(Device, args.Service)); } } peripheral.DiscoveredIncludedService += handler; peripheral.DiscoverIncludedServices(new CBUUID[] { service }, _service); return(tcs.Task); }