Exemplo n.º 1
0
        // TODO: Make this available to other generated interfaces too, not just IDevice1.
        // `dynamic obj` works, but it requires a Microsoft.* NuGet package and isn't type safe.
        public static async Task WaitForPropertyValueAsync <T>(this IDevice1 obj, string propertyName, T value,
                                                               TimeSpan timeout)
        {
            var(watchTask, watcher) = WaitForPropertyValueInternal <T>(obj, propertyName, value);
            var currentValue = await obj.GetAsync <T>(propertyName);

            // Console.WriteLine($"{propertyName}: {currentValue}");

            // https://stackoverflow.com/questions/390900/cant-operator-be-applied-to-generic-types-in-c
            if (EqualityComparer <T> .Default.Equals(currentValue, value))
            {
                watcher.Dispose();
                return;
            }

            await Task.WhenAny(new Task[] { watchTask, Task.Delay(timeout) });

            if (!watchTask.IsCompleted)
            {
                throw new TimeoutException($"Timed out waiting for '{propertyName}' to change to '{value}'.");
            }

            // propogate any exceptions.
            await watchTask;
        }
Exemplo n.º 2
0
 public static Task <short> GetTxPowerAsync(this IDevice1 o) => o.GetAsync <short>(nameof(Device1Properties.TxPower));
Exemplo n.º 3
0
 public static Task <IDictionary <string, object> > GetServiceDataAsync(this IDevice1 o) =>
 o.GetAsync <IDictionary <string, object> >(nameof(Device1Properties.ServiceData));
Exemplo n.º 4
0
 public static Task <IDictionary <ushort, object> > GetManufacturerDataAsync(this IDevice1 o) =>
 o.GetAsync <IDictionary <ushort, object> >(nameof(Device1Properties.ManufacturerData));
Exemplo n.º 5
0
 public static Task <IAdapter1> GetAdapterAsync(this IDevice1 o) => o.GetAsync <IAdapter1>(nameof(Device1Properties.Adapter));
Exemplo n.º 6
0
 public static Task <string> GetModaliasAsync(this IDevice1 o) => o.GetAsync <string>(nameof(Device1Properties.Modalias));
Exemplo n.º 7
0
 public static Task <string[]> GetUUIDsAsync(this IDevice1 o) => o.GetAsync <string[]>(nameof(Device1Properties.UUIDs));
Exemplo n.º 8
0
 public static Task <string> GetNameAsync(this IDevice1 o) => o.GetAsync <string>(nameof(Device1Properties.Name));
Exemplo n.º 9
0
 public static Task <short> GetRSSIAsync(this IDevice1 o) => o.GetAsync <short>(nameof(Device1Properties.RSSI));
Exemplo n.º 10
0
 public static Task <bool> GetLegacyPairingAsync(this IDevice1 o) => o.GetAsync <bool>(nameof(Device1Properties.LegacyPairing));
Exemplo n.º 11
0
 public static Task <bool> GetBlockedAsync(this IDevice1 o) => o.GetAsync <bool>(nameof(Device1Properties.Blocked));
Exemplo n.º 12
0
 public static Task <string> GetIconAsync(this IDevice1 o) => o.GetAsync <string>(nameof(Device1Properties.Icon));
Exemplo n.º 13
0
 public static Task <ushort> GetAppearanceAsync(this IDevice1 o) => o.GetAsync <ushort>(nameof(Device1Properties.Appearance));
Exemplo n.º 14
0
 public static Task <uint> GetClassAsync(this IDevice1 o) => o.GetAsync <uint>("Class");
Exemplo n.º 15
0
 public static Task <bool> GetServicesResolvedAsync(this IDevice1 o) => o.GetAsync <bool>(nameof(Device1Properties.ServicesResolved));
Exemplo n.º 16
0
 public static Task <bool> GetConnectedAsync(this IDevice1 o) => o.GetAsync <bool>(nameof(Device1Properties.Connected));
Exemplo n.º 17
0
 public static Task <string> GetAddressAsync(this IDevice1 o) => o.GetAsync <string>(nameof(Device1Properties.Address));