Beispiel #1
0
        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));
                }
            }
        }
Beispiel #2
0
 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;
 }