public override async Task<InitializationResult> Initialize()
        {
            return await Task.Run(() =>
            {
                for (uint i = 1; ; i++)
                {
                    var delcom = new DelcomHid();
                    if (delcom.OpenNthDevice(i) != 0)
                        break;

                    var physicalDevice = new PhysicalDevice(delcom);
                    var delcomDevice = new DelcomDevice { PhysicalDevice = physicalDevice };

                    var physicalDeviceId = physicalDevice.Id;
                    var configuredDevice = delcomConfiguration.OutputDevices.OfType<DelcomDevice>().SingleOrDefault(d => d.PhysicalDeviceId == physicalDeviceId);

                    var delcomDeviceInfo = new DelcomDeviceInfo(delcomDevice, configuredDevice, delcomConfiguration);

                    if (configuredDevice != null)
                    {
                        ConfiguredDevices.Add(delcomDeviceInfo);
                    }
                    else
                    {
                        AvailableDevices.Add(delcomDeviceInfo);
                    }
                }

                foreach (var missingDevice in delcomConfiguration.OutputDevices.Where(od => ConfiguredDevices.All(cd => cd.Name != od.Name)))
                    ConfiguredDevices.Add(new DelcomDeviceInfo(null, missingDevice, delcomConfiguration));

                return InitializationResult.Succeeded;
            });
        }
Beispiel #2
0
        public DelcomDeviceInfo(DelcomDevice delcomDevice, IOutputDevice configuredDevice, IOutputConfiguration delcomConfiguration)
        {
            IndicateCommand = new DelegateCommand(Indicate);

            Device = delcomDevice;

            if (configuredDevice != null)
            {
                Name = configuredDevice.Name;
                Profile = configuredDevice.Profile.Id.ToString();
            }
            else
            {
                for (int i = 0;; i++)
                {
                    var currentname = defaultName + " #" + i;
                    if (delcomConfiguration.OutputDevices.All(d => d.Name != currentname))
                    {
                        Name = currentname;
                        break;
                    }
                }
            }
        }