private async void ConnectAndDisposeDevice(DeviceListItemViewModel item)
        {
            try
            {
                using (item.Device)
                {
                    //_userDialogs.ShowLoading($"Connecting to {item.Name} ...");
                    await Adapter.ConnectToDeviceAsync(item.Device);

                    item.Update();
                    //_userDialogs.ShowSuccess($"Connected {item.Device.Name}");

                    //_userDialogs.HideLoading();
                    //for (var i = 5; i >= 1; i--)
                    //{
                    //    _userDialogs.ShowLoading($"Disconnect in {i}s...");

                    //    await Task.Delay(1000);

                    //    _userDialogs.HideLoading();
                    //}
                }
            }
            catch (Exception ex)
            {
                _userDialogs.Alert(ex.Message, "Failed to connect and dispose.");
            }
            finally
            {
                _userDialogs.HideLoading();
            }
        }
        private async Task <bool> ConnectDeviceAsync(DeviceListItemViewModel device, bool showPrompt = true)
        {
            if (showPrompt && !await _userDialogs.ConfirmAsync($"Connect to device '{device.Name}'?"))
            {
                return(false);
            }

            try
            {
                CancellationTokenSource tokenSource       = new CancellationTokenSource();
                ConnectParameters       connectParameters = new ConnectParameters();

                await Adapter.ConnectToDeviceAsync(device.Device, connectParameters, tokenSource.Token);

                _userDialogs.ShowSuccess($"Initializing Reader, Please Wait.", 8000);

                PreviousGuid = device.Device.Id;

                return(true);
            }
            catch (Exception ex)
            {
                _userDialogs.Alert(ex.Message, "Connection error");
                Mvx.Trace(ex.Message);
                return(false);
            }
            finally
            {
                //_userDialogs.HideLoading();
                device.Update();
            }
        }
        private async void HandleSelectedDevice(DeviceListItemViewModel devices)
        {
            try
            {
                if (await ConnectDeviceAsync(devices))
                {
                    // Connect to CS108

                    //var Services = Adapter.ConnectedDevices.FirstOrDefault(d => d.Id.ToString().Equals(device.Device.Id.ToString()));
                    var device = Adapter.ConnectedDevices.FirstOrDefault(d => d.Id.Equals(devices.Device.Id));

                    if (device == null)
                    {
                        return;
                    }

                    Connect(device);

                    Close(this);
                }
            }
            catch (Exception ex)
            {
                _userDialogs.Alert(ex.Message, "Disconnect error");
            }
        }
        private async void DisconnectDevice(DeviceListItemViewModel device)
        {
            if (BleMvxApplication._reader.Status != CSLibrary.HighLevelInterface.READERSTATE.DISCONNECT)
            {
                BleMvxApplication._reader.DisconnectAsync();
            }

            try
            {
                if (!device.IsConnected)
                {
                    return;
                }

                _userDialogs.ShowLoading($"Disconnecting {device.Name}...");

                await Adapter.DisconnectDeviceAsync(device.Device);
            }
            catch (Exception ex)
            {
                _userDialogs.Alert(ex.Message, "Disconnect error");
            }
            finally
            {
                device.Update();
                _userDialogs.HideLoading();
            }
        }
Exemple #5
0
        public static async Task disconnectDevice(DeviceListItemViewModel device, IUserDialogs _userDialogs)
        {
            if (!device.IsConnected)
            {
                return;
            }

            _userDialogs.ShowLoading($"Turning Off {device.Name}...");

            var service = await Settings.DEVICE.GetServiceAsync(KnownServices.RFDUINO_SERVICE);

            var CharacteristicD = await service.GetCharacteristicAsync(KnownCharacteristics.RFDUINO_DISCONNECT);

            await CharacteristicD.WriteAsync(new byte[0]);
        }
        private async void ConnectToPreviousDeviceAsync()
        {
            IDevice device;

            try
            {
                CancellationTokenSource tokenSource       = new CancellationTokenSource();
                ConnectParameters       connectParameters = new ConnectParameters();

                var config = new ProgressDialogConfig()
                {
                    Title           = $"Searching for '{PreviousGuid}'",
                    CancelText      = "Cancel",
                    IsDeterministic = false,
                    OnCancel        = tokenSource.Cancel
                };

                using (var progress = _userDialogs.Progress(config))
                {
                    progress.Show();

                    device = await Adapter.ConnectToKnownDeviceAsync(PreviousGuid, connectParameters, tokenSource.Token);
                }

                //_userDialogs.ShowSuccess($"Connected to {device.Name}.");

                var deviceItem = Devices.FirstOrDefault(d => d.Device.Id == device.Id);
                if (deviceItem == null)
                {
                    deviceItem = new DeviceListItemViewModel(device);
                    Devices.Add(deviceItem);
                    //await Task.Delay(9000);
                }
                else
                {
                    deviceItem.Update(device);
                }
            }
            catch (Exception ex)
            {
                _userDialogs.ShowError(ex.Message, 5000);
                return;
            }
        }
        async void ConnectAndDisposeDevice(object o, EventArgs e)
        {
            var mi = ((MenuItem)o);
            DeviceListItemViewModel item = mi.CommandParameter as DeviceListItemViewModel;


            try
            {
                //await Adapter.ConnectToDeviceAsync(Devices.FirstOrDefault().Device);
                BLEProfileManager.bleprofile.Adapter.ConnectToDeviceAsync(item.Device);

                item.Update();

                for (var i = 2; i >= 1; i--)
                {
                    await Task.Delay(1000);
                }
            }
            catch (Exception ex)
            {
            }
            finally
            {
                // this.Devicesl.ItemsSource = this.Devices;
            }

            this.Devicesl.ItemsSource = null;
            DisplayAlert("Your connected to ", item.Device.Name, "Ok");

            //BLEProfileManager.ScanForDevices();

            App.BlegUID = item.Device.Id.ToString();
            ((App)App.Current).SaveProfile();

            this.Systconnocted.Text = "Device name: " + BLEProfileManager.bleprofile.Devices.FirstOrDefault().Device.Name;
            this.SyststateL.Text    = "Connected: " + BLEProfileManager.bleprofile.Devices.FirstOrDefault().IsConnected.ToString();

            this.Devicesl.ItemsSource = BLEProfileManager.bleprofile.Devices;
        }
Exemple #8
0
        async void connectClicked(object sender, EventArgs e)
        {
            bool answer;

            if (switchconnectbutton == 0)
            {
                answer = await DisplayAlert("Beskyddare", "Vill du ansluta till den här bluetooth enheten?", "Ja", "Nej");
            }
            else
            {
                answer = await DisplayAlert("Beskyddare", "Vill du avsluta till den här bluetooth enheten?", "Ja", "Nej");
            }

            if (answer == true)
            {
                //var mi = ((MenuItem)sender);
                // DeviceListItemViewModel item = mi.CommandParameter as DeviceListItemViewModel;

                var button = sender as Button;
                DeviceListItemViewModel item = button.BindingContext as DeviceListItemViewModel;

                try
                {
                    if (switchconnectbutton == 0)
                    {
                        switchconnectbutton = 1;

                        BLEProfileManager.bleprofile.Adapter.ConnectToDeviceAsync(item.Device);

                        item.Update();
                        DisplayAlert("Your connected to ", item.Device.Name, "Ok");
                        for (var i = 2; i >= 1; i--)
                        {
                            await Task.Delay(1000);
                        }

                        //App.button.Text = "Avsluta";
                        App.isConnectedBLE = true;
                        App.BlegUID        = item.Device.Id.ToString();
                        ((App)App.Current).SaveProfile();

                        BLEProfileManager.getUnknownServiceAsync();
                    }
                    else
                    {
                        //App.button.Text = "Anslut";
                        switchconnectbutton = 0;
                        App.isConnectedBLE  = false;
                        //need to be implement
                        BLEProfileManager.bleprofile.Adapter.DisconnectDeviceAsync(item.Device);
                        DisplayAlert("Your disconnected from ", item.Device.Name, "Ok");
                        for (var i = 2; i >= 1; i--)
                        {
                            await Task.Delay(900);
                        }
                    }
                }
                catch (Exception ex)
                {
                    DisplayAlert("Wrong ", "Something bad happeed", "Ok");
                }
                finally
                {
                    //BLEProfileManager.bleprofile.Devices.FirstOrDefault().Update();
                    BLEProfileManager.bleprofile.Devices.FirstOrDefault(d => d.Device.Id == item.Id).Update();
                    this.theBTunits.ItemsSource = this.BLEProfileManager.bleprofile.Devices;
                }
            }
        }