public async Task EnableAsync(BindingProfile profile) { foreach (DeviceBindingConfiguration bindingConfiguration in profile.BindingConfigurations) { if (bindingConfiguration.DeviceType == null) { _logger.LogWarning("A BindingConfiguration didn't have a {0} set.", nameof(DeviceBindingConfiguration.DeviceType)); continue; } IDevice?device = _deviceRepository.TryFindDevice(bindingConfiguration.DeviceType, bindingConfiguration.DeviceId); if (device == null) { _logger.LogInformation("Couldn't find device '{0}:{1}' for a BindingConfiguration.", bindingConfiguration.DeviceType, bindingConfiguration.DeviceId ?? "<null>"); continue; } bool deviceAvailable = false; if (!device.IsConnected) { if (await device.ConnectAsync().ConfigureAwait(false)) { deviceAvailable = true; } } else { await device.ResetDeviceState().ConfigureAwait(false); deviceAvailable = true; } if (deviceAvailable) { bindingConfiguration.Bindings.ForEach(ab => ab.Enable(_serviceProvider, device)); } } }
public async Task DisableAsync(BindingProfile profile) { if (profile.BindingConfigurations == null) { throw new Exception("F"); } foreach (DeviceBindingConfiguration?bindingConfiguration in profile.BindingConfigurations) { if (bindingConfiguration.DeviceType == null) { _logger.LogWarning("A BindingConfiguration didn't have a {0} set.", nameof(DeviceBindingConfiguration.DeviceType)); continue; } IDevice?device = _deviceRepository.TryFindDevice(bindingConfiguration.DeviceType, bindingConfiguration.DeviceId); if (device == null) { _logger.LogInformation("Couldn't find device '{0}:{1}' for a BindingConfiguration.", bindingConfiguration.DeviceType, bindingConfiguration.DeviceId ?? "<null>"); continue; } bindingConfiguration.Bindings.ForEach(ab => { try { ab.Disable(); } catch { } }); try { await device.DisconnectAsync(); } catch { } } }
public BindingProfileViewModel(BindingProfile model, ProfileManager profileManager, ProfileRepository profileRepository) { _model = model; _name = model.Name; WeakEventManager <ProfileRepository, ProfileRepository.ProfileEventArgs> .AddHandler(profileRepository, nameof(profileRepository.ProfileChanged), ProfileRepository_ProfileChanged); WeakEventManager <ProfileManager, ProfileManager.ProfileChangedEventArgs> .AddHandler(profileManager, nameof(profileManager.CurrentProfileChanged), ProfileManager_OnCurrentProfileChanged); }
public BindingProfileEditorViewModel(IServiceProvider service, BindingProfile profile) { _deviceRepository = service.GetRequiredService <DeviceRepository>(); Model = profile; var deviceList = new List <IDeviceBindingConfigurationEditorViewModel>(); //add all available devices IReadOnlyList <IDevice>?availableDeviceList = _deviceRepository.AvailableDevices; foreach (IDevice dev in availableDeviceList) { DeviceBindingConfiguration?config = profile.BindingConfigurations.FirstOrDefault(c => c.DeviceId == dev.DeviceId && c.DeviceType == dev.DeviceType); if (config == null) { config = new DeviceBindingConfiguration { DeviceId = dev.DeviceId, DeviceType = dev.DeviceType, FriendlyName = dev.FriendlyName, }; } deviceList.Add(new DeviceBindingConfigurationEditorViewModel(service, config, dev)); } //add devices that are configured but aren't available IEnumerable <DeviceBindingConfiguration> deviceMissing = profile.BindingConfigurations.Where(bc => !deviceList.Any(d => d.DeviceId == bc.DeviceId && d.DeviceType == bc.DeviceType)); foreach (DeviceBindingConfiguration config in deviceMissing) { deviceList.Add(new DeviceBindingConfigurationEditorViewModel(service, config, null)); } SetupCommands(); Devices = new ObservableCollection <IDeviceBindingConfigurationEditorViewModel>(deviceList); Devices.CollectionChanged += Devices_CollectionChanged; AddChildren(Devices); EnableTouchedTracking(); }
public ProfileEventArgs(BindingProfile profile) { Profile = profile; }