private void connection() { //var logsVm = new LogsViewModel(); //SystemLog.Instance.AddSink(logsVm); var bleAssembly = bleAdapterSaved.GetType().GetTypeInfo().Assembly.GetName(); Log.Info(bleAssembly.Name + "@" + bleAssembly.Version); var bleGattServerViewModel = new BleGattServerViewModel(dialogsSaved, bleAdapterSaved); bleScanViewModel = new BleDeviceScannerViewModel( bleAdapter: bleAdapterSaved, dialogs: dialogsSaved, onSelectDevice: async p => { await bleGattServerViewModel.Update(p); background_scan_page_detail.IsVisible = true; background_scan_page.IsVisible = false; BindingContext = bleGattServerViewModel; bleScanViewModel.StopScan(); macAddress.Text = p.Address; deviceID.Text = p.Name; rssiLevel.Text = p.Rssi.ToString() + " db"; await Task.Run(async() => { await Task.Delay(500); Device.BeginInvokeOnMainThread(async() => { await bleGattServerViewModel.OpenConnection(); navigationDrawerList.IsEnabled = true; navigationDrawerList.Opacity = 1; bleGattServerViewModel.returnConnect(); savedServer = bleGattServerViewModel; }); }); } ); BindingContext = bleScanViewModel; NavigationPage.SetHasNavigationBar(this, false); //Turn off the Navigation bar Task.Run(async() => { await Task.Delay(500); Device.BeginInvokeOnMainThread(() => { bleScanViewModel.ScanForDevicesCommand.Execute(true); }); }); }
// Event for Menu Item selection, here we are going to handle navigation based // on user selection in menu ListView private async Task OnMenuItemSelectedAsync(object sender, SelectedItemChangedEventArgs e) { // if (Settings.IsConnectedBLE) // { var item = (PageItem)e.SelectedItem; String page = item.TargetType; switch (page) { case "ReadMTU": await Task.Run(async() => { await Task.Delay(1000); Device.BeginInvokeOnMainThread(() => { Guid value = new Guid("2cf42000-7992-4d24-b05d-1effd0381208"); BleGattServiceViewModel account = new BleGattServiceViewModel(value, savedServer.returnConnect(), dialogsSaved); Application.Current.MainPage.Navigation.PushAsync(new BleGattServicePage(account, savedServer.returnConnect(), dialogsSaved)); // ReadMtuMethod(account, savedServer, dialogsSaved); background_scan_page.Opacity = 1; background_scan_page_detail.Opacity = 1; ContentNav.Opacity = 0; ContentNav.IsVisible = false; navigationDrawerList.SelectedItem = null; navigationDrawerList.BeginRefresh(); navigationDrawerList.SelectedItem = null; navigationDrawerList.EndRefresh(); }); }); // Application.Current.MainPage.Navigation.PushAsync(new BleGattServicePage(account, bleGattServerViewModel.returnConnect(), dialogsSaved)); break; } background_scan_page.Opacity = 1; ContentNav.Opacity = 0; ContentNav.IsVisible = false; // } }