async Task OnConnectDeviceCommand(ConnectDeviceCommand arg) { var device = await _deviceManager.ConnectDevice(arg.Mac, SdkConfig.ConnectDeviceTimeout); if (device == null) { device = await _deviceManager.ConnectDevice(arg.Mac, SdkConfig.ConnectDeviceTimeout / 2); } if (device != null) { await device.WaitInitialization(SdkConfig.DeviceInitializationTimeout, default); } await _hub.Publish(new ConnectDeviceResponse(device, arg.Mac)); }
private async void OnConnectDeviceCommand() { if (!Connecting) { if (SelectedDevice != null) { if (CrossBleAdapter.Current.Status == AdapterStatus.PoweredOn || CrossBleAdapter.Current.Status == AdapterStatus.Unsupported) { try { Connecting = true; ConnectDeviceCommand.RaiseCanExecuteChanged(); bleService.Connect(); var timeOut = 0; while (SelectedDevice.ConnectState != DeviceState.Connected && timeOut < 30) { await Task.Delay(TimeSpan.FromSeconds(1)); timeOut++; } Connecting = false; ConnectDeviceCommand.RaiseCanExecuteChanged(); if (SelectedDevice.ConnectState != DeviceState.Connected) { await dialogService.DisplayAlertAsync("Bluetooth", "Device failed to connect, please check if the device is On", "Ok"); } else { RaisePropertyChanged(nameof(SelectedDevice)); //try //{ // BatteryToken = new CancellationTokenSource(); // DeterminingBatteryLevel = true; // CheckBatteryLevelCommand.RaiseCanExecuteChanged(); // BatteryLevel = double.NaN; // bleService.SendCommand(new GetProgramCommand(GetProgramCommand.BatteryVoltageLevel), BatteryToken.Token, 3, (a) => // { // if (a is string blevel) // { // if (int.TryParse(blevel, out var r)) // { // var percentage = bleService.ResolveBatteryLevel(r); // BatteryLevel = percentage; // } // } // DeterminingBatteryLevel = false; // CheckBatteryLevelCommand.RaiseCanExecuteChanged(); // }, () => // { // BatteryLevel = double.NaN; // DeterminingBatteryLevel = false; // CheckBatteryLevelCommand.RaiseCanExecuteChanged(); // }); //} //catch (Exception e) //{ // Crashes.TrackError(e); //} ////DeterminingSystemInfo = true; //try //{ // SystemToken = new CancellationTokenSource(); // DeviceSerialNumber = ""; // bleService.SendCommand(new GetSystemCommand(GetSystemCommand.SystemSerialNumber), SystemToken.Token, 3, (a) => // { // if (a is string serialNumber) // { // DeviceSerialNumber = serialNumber; // } // }, () => // { // DeviceSerialNumber = "Failed To Fetch"; // }); // LoadCellSerialNumber = ""; // bleService.SendCommand(new GetSystemCommand(GetSystemCommand.LoadCellSerialNumber), SystemToken.Token, 3, (a) => // { // if (a is string serialNumber) // { // LoadCellSerialNumber = serialNumber; // } // }, () => // { // LoadCellSerialNumber = "Failed To Fetch"; // }); // GeophoneOneSerialNumber = ""; // bleService.SendCommand(new GetSystemCommand(GetSystemCommand.GeophoneOneSerialNumber), SystemToken.Token, 3, (a) => // { // if (a is string serialNumber) // { // GeophoneOneSerialNumber = serialNumber; // } // }, () => // { // GeophoneOneSerialNumber = "Failed To Fetch"; // }); // GeophoneTwoSerialNumber = ""; // bleService.SendCommand(new GetSystemCommand(GetSystemCommand.GeophoneTwoSerialNumber), SystemToken.Token, 3, (a) => // { // if (a is string serialNumber) // { // GeophoneTwoSerialNumber = serialNumber; // } // }, () => // { // GeophoneTwoSerialNumber = "Failed To Fetch"; // }); // GeophoneThreeSerialNumber = ""; // bleService.SendCommand(new GetSystemCommand(GetSystemCommand.GeophoneThreeSerialNumber), SystemToken.Token, 3, (a) => // { // if (a is string serialNumber) // { // GeophoneThreeSerialNumber = serialNumber; // } // }, () => // { // GeophoneThreeSerialNumber = "Failed To Fetch"; // }); //} //catch (Exception e) //{ // Crashes.TrackError(e); //} //try //{ // ProgramDate = ""; // ProgramToken = new CancellationTokenSource(); // bleService.SendCommand(new GetProgramCommand(GetProgramCommand.UpdateDate), ProgramToken.Token, 3, (a) => // { // if (a is string date) // { // ProgramDate = date; // } // }, () => // { // ProgramDate = "Failed To Fetch"; // }); // Version = ""; // bleService.SendCommand(new GetProgramCommand(GetProgramCommand.Version), ProgramToken.Token, 3, (a) => // { // if (a is string vs) // { // Version = vs; // } // }, () => // { // Version = "Failed To Fetch"; // }); // DropCount = ""; // bleService.SendCommand(new GetProgramCommand(GetProgramCommand.DropCount), ProgramToken.Token, 3, (a) => // { // if (a is string dc) // { // DropCount = dc; // } // }, () => // { // DropCount = "Failed To Fetch"; // }); //} //catch (Exception e) //{ // Crashes.TrackError(e); //} } } catch (Exception e) { // Crashes.TrackError(e); Connecting = false; ConnectDeviceCommand.RaiseCanExecuteChanged(); } } else { await dialogService.DisplayAlertAsync("Bluetooth", "Please check your Bluetooth Settings", "Ok"); } } } }