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