Example #1
0
        private void ScanHardwareLocally()
        {
            if (miningEngine.Mining)
                return;

            ProgressForm progressForm = new ProgressForm("Scanning hardware for devices capable of mining. Please be patient.");
            updatingListView = true;
            try
            {
                progressForm.IsDownload = false;
                //not ShowDialog()
                progressForm.Show();
                try
                {
                    using (new HourGlass())
                    {
                        DevicesService devicesService = new DevicesService(engineConfiguration.XgminerConfiguration);
                        MinerDescriptor defaultMiner = MinerFactory.Instance.GetDefaultMiner();
                        devices = devicesService.GetDevices(defaultMiner, MinerPath.GetPathToInstalledMiner(defaultMiner));

                        //safe to do here as we are Scanning Hardware - we are not mining
                        //no data to lose in the ViewModel
                        //clearing means our sort order within the ListView is preserved
                        //and things like selecting the first item work better
                        //http://social.msdn.microsoft.com/Forums/windows/en-US/8a81c5a6-251c-4bf9-91c5-a937b5cfe9f3/possible-bug-in-listview-control-topitem-property-doesnt-work-with-groups
                        localViewModel.Devices.Clear();

                        ApplyModelsToViewModel();
                        //populate ListView directly after - maintain 1-to-1 for ViewModel to ListView items
                        RefreshListViewFromViewModel();
                    }
                }
                catch (Win32Exception)
                {
                    //miner not installed/not launched
                    devices = new List<Xgminer.Data.Device>(); //dummy empty device list

                    ShowNotInstalledMinerWarning();
                }

                if ((devices.Count > 0) && (engineConfiguration.DeviceConfigurations.Count == 0) &&
                    (engineConfiguration.CoinConfigurations.Count == 1))
                {
                    //setup devices for a brand new user
                    ConfigureDevicesForNewUser();
                }

                //first try to match up devices without configurations with configurations without devices
                //could happen if, for instance, a COM port changes for a device
                FixOrphanedDeviceConfigurations();

                //there needs to be a device config for each device
                AddMissingDeviceConfigurations();
                //but no configurations for devices that have gone missing
                RemoveExcessDeviceConfigurations();
                //remove any duplicate configurations
                engineConfiguration.RemoveDuplicateDeviceConfigurations();

                RefreshListViewFromViewModel();
                RefreshDetailsAreaIfVisible();

                //clean up mappings from previous device list
                deviceDetailsMapping.Clear();

                //auto-size columns
                AutoSizeListViewColumns();
                RefreshStatusBarFromViewModel();

                //it may not be possible to mine after discovering devices
                UpdateMiningButtons();

                //cache devices
                SaveKnownDevicesToFile();
            }
            finally
            {
                updatingListView = false;
                progressForm.Close();
                progressForm.Dispose();
            }
        }
        public bool ScanHardwareLocally()
        {
            if (ProgressStarted != null)
                ProgressStarted(this, new ProgressEventArgs
                {
                    Text = "Scanning hardware for devices capable of mining. Please be patient."
                });
            try
            {
                try
                {
                    DevicesService devicesService = new DevicesService(EngineConfiguration.XgminerConfiguration);
                    MinerDescriptor defaultMiner = MinerFactory.Instance.GetDefaultMiner();
                    Devices = devicesService.GetDevices(MinerPath.GetPathToInstalledMiner(defaultMiner));

                    //pull in virtual Proxy Devices
                    UpdateDevicesForProxySettings();

                    //safe to do here as we are Scanning Hardware - we are not mining
                    //no data to lose in the ViewModel
                    //clearing means our sort order within the ListView is preserved
                    //and things like selecting the first item work better
                    //http://social.msdn.microsoft.com/Forums/windows/en-US/8a81c5a6-251c-4bf9-91c5-a937b5cfe9f3/possible-bug-in-listview-control-topitem-property-doesnt-work-with-groups
                    LocalViewModel.Devices.Clear();

                    ApplyModelsToViewModel();
                }
                catch (Win32Exception)
                {
                    //miner not installed/not launched
                    Devices = new List<Device>(); //dummy empty device list

                    return false;
                }

                if ((Devices.Count > 0) && (EngineConfiguration.DeviceConfigurations.Count == 0) &&
                    (EngineConfiguration.CoinConfigurations.Count == 1))
                {
                    //setup devices for a brand new user
                    ConfigureDevicesForNewUser();
                }

                //first try to match up devices without configurations with configurations without devices
                //could happen if, for instance, a COM port changes for a device
                FixOrphanedDeviceConfigurations();

                //there needs to be a device config for each device
                AddMissingDeviceConfigurations();
                //but no configurations for devices that have gone missing
                RemoveExcessDeviceConfigurations();
                //remove any duplicate configurations
                EngineConfiguration.RemoveDuplicateDeviceConfigurations();

                //clean up mappings from previous device list
                DeviceDetailsMapping.Clear();

                //cache devices
                SaveKnownDevicesToFile();
            }
            finally
            {
                if (ProgressCompleted != null) ProgressCompleted(this, new EventArgs());
            }
            
            return true;
        }
        private void UpdateDevicesForProxySettings()
        {
            //devices not populated / loaded, e.g. remoting error loading app (socket in use)
            if (Devices == null)
                return;

            DevicesService service = new DevicesService(EngineConfiguration.XgminerConfiguration);
            service.UpdateDevicesForProxySettings(Devices, miningEngine.Mining);
            AddMissingDeviceConfigurations();
        }
Example #4
0
        private void ScanHardwareLocally()
        {
            if (miningEngine.Mining)
                return;

            updatingListView = true;
            try
            {
                try
                {
                    using (new HourGlass())
                    {
                        DevicesService devicesService = new DevicesService(engineConfiguration.XgminerConfiguration);
                        devices = devicesService.GetDevices(MinerPath.GetPathToInstalledMiner());

                        ApplyModelsToViewModel();
                        //populate ListView directly after - maintain 1-to-1 for ViewModel to ListView items
                        RefreshListViewFromViewModel();
                    }
                }
                catch (Win32Exception ex)
                {
                    //miner not installed/not launched
                    devices = new List<Device>(); //dummy empty device list

                    ShowNotInstalledMinerWarning();
                }

                if ((devices.Count > 0) && (engineConfiguration.DeviceConfigurations.Count == 0) &&
                    (engineConfiguration.CoinConfigurations.Count == 1))
                {
                    //setup devices for a brand new user
                    ConfigureDevicesForNewUser();
                }

                //first try to match up devices without configurations with configurations without devices
                //could happen if, for instance, a COM port changes for a device
                FixOrphanedDeviceConfigurations();

                //there needs to be a device config for each device
                AddMissingDeviceConfigurations();
                //but no configurations for devices that have gone missing
                RemoveExcessDeviceConfigurations();
                //remove any duplicate configurations
                engineConfiguration.RemoveDuplicateDeviceConfigurations();

                RefreshListViewFromViewModel();
                RefreshDetailsAreaIfVisible();

                //clean up mappings from previous device list
                deviceDetailsMapping.Clear();

                //auto-size columns
                AutoSizeListViewColumns();
                RefreshStatusBarFromViewModel();

                //it may not be possible to mine after discovering devices
                UpdateMiningButtons();
            }
            finally
            {
                updatingListView = false;
            }
        }