Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 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);
         }
     }
 }
Ejemplo n.º 3
0
        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);
        }