Ejemplo n.º 1
0
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            _deferral = taskInstance.GetDeferral();
            var client = DigitServiceBuilder.Get();

            try
            {
                var opts = new DigitBLEOptions();
                if (opts.IsConfigured)
                {
                    var bleClient      = new DigitBLEClient(opts);
                    var batteryService = new BatteryService(bleClient, client);
                    await batteryService.TimeTriggeredMeasurement();
                }
            }
            catch (Exception e)
            {
                await client.LogAsync($"Unhandled background exception: {e.Message}", 3);
            }
            _deferral.Complete();
        }
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            _deferral = taskInstance.GetDeferral();
            var details = (BluetoothLEAdvertisementWatcherTriggerDetails)taskInstance.TriggerDetails;
            var client  = DigitServiceBuilder.Get();

            if (details.Advertisements != null && details.Advertisements.Count > 0)
            {
                var packets = details.Advertisements.Select(v => new DigitAdvertisementPacket(v));
                var latest  = packets.OrderByDescending(v => v.Timestamp).First();
                if (!latest.TimeKnown.HasValue || !latest.TimeKnown.Value)
                {
                    var opts = new DigitBLEOptions();
                    if (opts.IsConfigured)
                    {
                        var bleClient = new DigitBLEClient(opts);
                        try
                        {
                            await bleClient.SetTime(DateTime.Now);

                            await client.LogAsync($"Sent current time to watch (advertisement requested)", 1);
                        }
                        catch (DigitBLEExpcetion e)
                        {
                            await client.LogAsync($"Could not send time (advertisement requested): ${e.Message}", 3);
                        }
                    }
                    else
                    {
                        await client.LogAsync($"Adv Task error: no device configured.", 3);
                    }
                }
                if (new AdvertisementWatcherManager().RegisterAdvertisementWatcherTask())
                {
                    await client.LogAsync($"Re-registered advertisement watcher task");
                }
            }
            _deferral.Complete();
        }
        private async void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var client = DigitServiceBuilder.Get();

            if (ResultsListView.SelectedItem is BluetoothLEDeviceDisplay selected)
            {
                bool claimed = false;
                try
                {
                    claimed = await client.Device["12345"].ClaimAsync();
                }
                catch (DigitServiceException exc)
                {
                    await client.LogAsync($"Could not claim device: ${exc.Message}");
                }
                if (claimed)
                {
                    var opts = new DigitBLEOptions();
                    opts.StoreDeviceId(selected.Id);
                    DigitId = selected.Id;
                    var  bleClient = new DigitBLEClient(opts);
                    bool paired    = false;
                    try
                    {
                        paired = await bleClient.Pair();
                    }
                    catch (DigitBLEExpcetion ex)
                    {
                        await client.LogAsync($"Pairing failed: {ex.Message}", 3);
                    }
                    var pairInformation = paired ? "(paired)" : "";
                    await client.LogAsync($"Selected device {selected.Id} as digit{pairInformation}.");

                    var man = new BackgroundManager();
                    man.RegisterDeviceConnectionBackgroundTask(selected.Id);
                }
            }
        }
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
            _deferral = taskInstance.GetDeferral();
            var client = DigitServiceBuilder.Get();

            try
            {
                RawNotification notification = (RawNotification)taskInstance.TriggerDetails;
                await client.LogAsync($"Received push {notification.Content}");

                var opts = new DigitBLEOptions();


                var content = JsonConvert.DeserializeObject <PushPayload>(notification.Content);
                switch (content.Action)
                {
                case PushActions.MeasureBattery:
                    if (opts.IsConfigured)
                    {
                        var bleClient      = new DigitBLEClient(opts);
                        var batteryService = new BatteryService(bleClient, client);
                        await batteryService.AddBatteryMeasurement();
                    }
                    else
                    {
                        await client.LogAsync($"Push error: no device configured.", 3);
                    }
                    break;

                case PushActions.SendTime:
                    if (opts.IsConfigured)
                    {
                        var bleClient = new DigitBLEClient(opts);
                        try
                        {
                            await bleClient.SetTime(DateTime.Now);
                        }
                        catch (DigitBLEExpcetion e)
                        {
                            await client.LogAsync($"Could not send time: {e.Message}", 3);
                        }
                    }
                    else
                    {
                        await client.LogAsync($"Push error: no device configured.", 3);
                    }
                    break;

                case PushActions.SendLocation:
                    var locationService = new LocationService(client);
                    await locationService.SendCurrentLocation();

                    break;

                default: break;
                }
            }
            catch (Exception e)
            {
                await client.LogAsync($"Unhandled background exception: {e.Message}", 3);
            }
            _deferral.Complete();
        }
 private async void Button_Click_3(object sender, RoutedEventArgs e)
 {
     var opts      = new DigitBLEOptions();
     var bleClient = new DigitBLEClient(opts);
     await bleClient.EnterBootloader();
 }