//uses -d?, returns driver information public List <Device> DeviceList() { string arguments = MinerParameter.DeviceList; bool redirectOutput = true; if (minerConfiguration.MinerBackend == MinerBackend.Bfgminer) { arguments = String.Format("{0} {1}", arguments, Bfgminer.MinerParameter.ScanSerialAll); } Process minerProcess = StartMinerProcess(arguments, redirectOutput); List <string> output = new List <string>(); while (!minerProcess.StandardOutput.EndOfStream) { string line = minerProcess.StandardOutput.ReadLine(); output.Add(line); } List <Device> result = new List <Device>(); DeviceListParser.ParseTextForDevices(output, result); return(result); }
private List <Device> ListDevices(bool prettyNames, CoinAlgorithm algorithm) { string arguments = MinerParameter.DeviceList; bool redirectOutput = true; string serialArg = GetListSerialArguments(); arguments = String.Format("{0} {1}", arguments, serialArg); //include Scrypt ASICs if (algorithm == CoinAlgorithm.Scrypt) { arguments = String.Format("{0} {1}", arguments, MinerParameter.Scrypt); } //include the args specified by the user so we pickup manual devices (e.g. Avalon) arguments = String.Format("{0} {1}", arguments, minerConfiguration.ScanArguments); //ADL mismatch with OCL can cause an error / exception, disable ADL when enumerating devices //user can then disable for mining in-app using settings //this also prevents nice names for GPUs //arguments = arguments + " --no-adl"; //this must be done async, with 70+ devices doing this synchronous //locks up the process Process minerProcess = StartMinerProcess(arguments, redirectOutput, false, "", false); List <string> output = new List <string>(); minerProcess.OutputDataReceived += (sender, e) => { if (e.Data != null) { string s = e.Data; output.Add(s); } }; minerProcess.Start(); minerProcess.BeginOutputReadLine(); //calling BeginErrorReadLine here is *required* on at least one user's machine minerProcess.BeginErrorReadLine(); //wait 5 minutes - scans may take a long time minerProcess.WaitForExit(5 * 60 * 1000); List <Device> result = new List <Device>(); DeviceListParser.ParseTextForDevices(output, result); if (prettyNames) { MakeNamesPretty(result); } return(result); }
public void PraseTextForDevices_UserData1_Succeeds() { const string inputText = @"[2013-12-09 12:39:26] Started bfgminer 3.8.0 [2013-12-09 12:39:28] Devices detected: [2013-12-09 12:39:28] AMD Radeon HD 5800 Series (driver=opencl; procs=1) 1 devices listed"; List <string> inputLines = inputText.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList(); List <Device> deviceList = new List <Device>(); DeviceListParser.ParseTextForDevices(inputLines, deviceList); Assert.IsTrue(deviceList.Count == 1); }
//uses -d?, returns driver information public List <Device> ListDevices() { string arguments = MinerParameter.DeviceList; bool redirectOutput = true; string serialArg = GetListSerialArguments(); arguments = String.Format("{0} {1}", arguments, serialArg); //ADL mismatch with OCL can cause an error / exception, disable ADL when enumerating devices //user can then disable for mining in-app using settings //this also prevents nice names for GPUs //arguments = arguments + " --no-adl"; //this must be done async, with 70+ devices doing this synchronous //locks up the process Process minerProcess = StartMinerProcess(arguments, redirectOutput, false, "", false); List <string> output = new List <string>(); minerProcess.OutputDataReceived += (sender, e) => { if (e.Data != null) { string s = e.Data; output.Add(s); } }; minerProcess.Start(); minerProcess.BeginOutputReadLine(); //calling BeginErrorReadLine here is *required* on at least one user's machine minerProcess.BeginErrorReadLine(); minerProcess.WaitForExit(60 * 1000); List <Device> result = new List <Device>(); DeviceListParser.ParseTextForDevices(output, result); return(result); }
public void ParseTextForDevices_Over10Devices_Succeeds() { const string inputText = @" [2013-08-06 21:01:57] Started bfgminer 3.1.3 [2013-08-06 21:02:04] Do not have user privileges required to open \\\.\COM1 [2013-08-06 21:02:10] Devices detected: [2013-08-06 21:02:10] 0. OCL 0 : AMD Radeon HD 7900 Series (driver: opencl) [2013-08-06 21:02:10] 1. OCL 1 : AMD Radeon HD 7900 Series (driver: opencl) [2013-08-06 21:02:10] 2. OCL 2 : AMD Radeon HD 7480D (driver: opencl) [2013-08-06 21:02:10] 3. ICA 0 (driver: icarus) [2013-08-06 21:02:10] 4. ICA 1 (driver: icarus) [2013-08-06 21:02:10] 5. ICA 2 (driver: icarus) [2013-08-06 21:02:10] 6. ICA 3 (driver: icarus) [2013-08-06 21:02:10] 7. ICA 4 (driver: icarus) [2013-08-06 21:02:10] 8. ICA 5 (driver: icarus) [2013-08-06 21:02:10] 9. ICA 6 (driver: icarus) [2013-08-06 21:02:10] 10. ICA 7 (driver: icarus) [2013-08-06 21:02:10] 11. ICA 8 (driver: icarus) [2013-08-06 21:02:10] 12. ICA 9 (driver: icarus) [2013-08-06 21:02:10] 13. ICA10 (driver: icarus) [2013-08-06 21:02:10] 14. ICA11 (driver: icarus) [2013-08-06 21:02:10] 15. MMQ 0a: ModMiner Quad v0.4-ljr-alpha (driver: modminer) [2013-08-06 21:02:10] 16. MMQ 0b: ModMiner Quad v0.4-ljr-alpha (driver: modminer) [2013-08-06 21:02:10] 17. MMQ 0c: ModMiner Quad v0.4-ljr-alpha (driver: modminer) [2013-08-06 21:02:10] 18. MMQ 0d: ModMiner Quad v0.4-ljr-alpha (driver: modminer) 19 devices listed"; List <string> inputLines = inputText.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList(); List <Device> deviceList = new List <Device>(); DeviceListParser.ParseTextForDevices(inputLines, deviceList); Assert.IsTrue(deviceList.Count == 19); }
public void ParseTextForDevices_Over10Devices_Succeeds() { const string inputText = @" [2013-08-06 21:01:57] Started bfgminer 3.1.3 [2013-08-06 21:02:04] Do not have user privileges required to open \\\.\COM1 [2013-08-06 21:02:10] Devices detected: [2013-08-06 21:02:10] OCL 0 : AMD Radeon HD 7900 Series (driver=opencl; procs=1) [2013-08-06 21:02:10] OCL 1 : AMD Radeon HD 7900 Series (driver=opencl; procs=1) [2013-08-06 21:02:10] OCL 2 : AMD Radeon HD 7480D (driver=opencl; procs=1) [2013-08-06 21:02:10] ICA 0 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA 1 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA 2 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA 3 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA 4 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA 5 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA 6 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA 7 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA 8 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA 9 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA10 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] ICA11 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-08-06 21:02:10] MMQ 0a: ModMiner Quad v0.4-ljr-alpha (driver=modminer; procs=1) [2013-08-06 21:02:10] MMQ 0b: ModMiner Quad v0.4-ljr-alpha (driver=modminer; procs=1) [2013-08-06 21:02:10] MMQ 0c: ModMiner Quad v0.4-ljr-alpha (driver=modminer; procs=1) [2013-08-06 21:02:10] MMQ 0d: ModMiner Quad v0.4-ljr-alpha (driver=modminer; procs=1) 19 devices listed"; List <string> inputLines = inputText.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList(); List <Data.Device> deviceList = new List <Data.Device>(); DeviceListParser.ParseTextForDevices(inputLines, deviceList); Assert.IsTrue(deviceList.Count == 19); }
//uses -d?, returns driver information public List <Device> DeviceList() { string arguments = MinerParameter.DeviceList; bool redirectOutput = true; if (minerConfiguration.MinerBackend == MinerBackend.Bfgminer) { string serialArg = minerConfiguration.ErupterDriver ? Bfgminer.MinerParameter.ScanSerialErupterAll : Bfgminer.MinerParameter.ScanSerialAll; arguments = String.Format("{0} {1}", arguments, serialArg); } //this must be done async, with 70+ devices doing this synchronous //locks up the process Process minerProcess = StartMinerProcess(arguments, redirectOutput, false, "", false); List <string> output = new List <string>(); minerProcess.OutputDataReceived += (sender, e) => { if (e.Data != null) { string s = e.Data; output.Add(s); } }; minerProcess.Start(); minerProcess.BeginOutputReadLine(); //calling BeginErrorReadLine here is *required* on at least one user's machine minerProcess.BeginErrorReadLine(); minerProcess.WaitForExit(60 * 1000); List <Device> result = new List <Device>(); DeviceListParser.ParseTextForDevices(output, result); return(result); }
public void ParseTextForDevices_Over50Devices_Succeeds() { const string inputText = @" [2013-09-01 09:12:43] Started bfgminer 3.1.4 [2013-09-01 09:12:43] Failed to load OpenCL library, no GPUs usab [2013-09-01 09:12:51] Do not have user privileges required to ope [2013-09-01 09:12:51] Devices detected: [2013-09-01 09:12:51] 0. ICA 0 (driver: icarus) [2013-09-01 09:12:51] 1. ICA 1 (driver: icarus) [2013-09-01 09:12:51] 2. ICA 2 (driver: icarus) [2013-09-01 09:12:51] 3. ICA 3 (driver: icarus) [2013-09-01 09:12:51] 4. ICA 4 (driver: icarus) [2013-09-01 09:12:51] 5. ICA 5 (driver: icarus) [2013-09-01 09:12:51] 6. ICA 6 (driver: icarus) [2013-09-01 09:12:51] 7. ICA 7 (driver: icarus) [2013-09-01 09:12:51] 8. ICA 8 (driver: icarus) [2013-09-01 09:12:51] 9. ICA 9 (driver: icarus) [2013-09-01 09:12:51] 10. ICA10 (driver: icarus) [2013-09-01 09:12:51] 11. ICA11 (driver: icarus) [2013-09-01 09:12:51] 12. ICA12 (driver: icarus) [2013-09-01 09:12:51] 13. ICA13 (driver: icarus) [2013-09-01 09:12:51] 14. ICA14 (driver: icarus) [2013-09-01 09:12:51] 15. ICA15 (driver: icarus) [2013-09-01 09:12:51] 16. ICA16 (driver: icarus) [2013-09-01 09:12:51] 17. ICA17 (driver: icarus) [2013-09-01 09:12:51] 18. ICA18 (driver: icarus) [2013-09-01 09:12:51] 19. ICA19 (driver: icarus) [2013-09-01 09:12:51] 20. ICA20 (driver: icarus) [2013-09-01 09:12:51] 21. ICA21 (driver: icarus) [2013-09-01 09:12:51] 22. ICA22 (driver: icarus) [2013-09-01 09:12:51] 23. ICA23 (driver: icarus) [2013-09-01 09:12:51] 24. ICA24 (driver: icarus) [2013-09-01 09:12:51] 25. ICA25 (driver: icarus) [2013-09-01 09:12:51] 26. ICA26 (driver: icarus) [2013-09-01 09:12:51] 27. ICA27 (driver: icarus) [2013-09-01 09:12:51] 28. ICA28 (driver: icarus) [2013-09-01 09:12:51] 29. ICA29 (driver: icarus) [2013-09-01 09:12:51] 30. ICA30 (driver: icarus) [2013-09-01 09:12:51] 31. ICA31 (driver: icarus) [2013-09-01 09:12:51] 32. ICA32 (driver: icarus) [2013-09-01 09:12:51] 33. ICA33 (driver: icarus) [2013-09-01 09:12:51] 34. ICA34 (driver: icarus) [2013-09-01 09:12:51] 35. ICA35 (driver: icarus) [2013-09-01 09:12:51] 36. ICA36 (driver: icarus) [2013-09-01 09:12:51] 37. ICA37 (driver: icarus) [2013-09-01 09:12:51] 38. ICA38 (driver: icarus) [2013-09-01 09:12:51] 39. ICA39 (driver: icarus) [2013-09-01 09:12:51] 40. ICA40 (driver: icarus) [2013-09-01 09:12:51] 41. ICA41 (driver: icarus) [2013-09-01 09:12:51] 42. ICA42 (driver: icarus) [2013-09-01 09:12:51] 43. ICA43 (driver: icarus) [2013-09-01 09:12:51] 44. ICA44 (driver: icarus) [2013-09-01 09:12:51] 45. ICA45 (driver: icarus) [2013-09-01 09:12:51] 46. ICA46 (driver: icarus) [2013-09-01 09:12:51] 47. ICA47 (driver: icarus) [2013-09-01 09:12:51] 48. ICA48 (driver: icarus) [2013-09-01 09:12:51] 49. ICA49 (driver: icarus) [2013-09-01 09:12:51] 50. ICA50 (driver: icarus) [2013-09-01 09:12:51] 51. ICA51 (driver: icarus) [2013-09-01 09:12:51] 52. ICA52 (driver: icarus) [2013-09-01 09:12:51] 53. ICA53 (driver: icarus) [2013-09-01 09:12:51] 54. ICA54 (driver: icarus) [2013-09-01 09:12:51] 55. ICA55 (driver: icarus) [2013-09-01 09:12:51] 56. ICA56 (driver: icarus) [2013-09-01 09:12:51] 57. ICA57 (driver: icarus) [2013-09-01 09:12:51] 58. ICA58 (driver: icarus) [2013-09-01 09:12:51] 59. ICA59 (driver: icarus) [2013-09-01 09:12:51] 60. ICA60 (driver: icarus) [2013-09-01 09:12:51] 61. ICA61 (driver: icarus) [2013-09-01 09:12:51] 62. ICA62 (driver: icarus) [2013-09-01 09:12:51] 63. ICA63 (driver: icarus) [2013-09-01 09:12:52] 64. ICA64 (driver: icarus) [2013-09-01 09:12:52] 65. ICA65 (driver: icarus) [2013-09-01 09:12:52] 66. ICA66 (driver: icarus) [2013-09-01 09:12:52] 67. ICA67 (driver: icarus) [2013-09-01 09:12:52] 68. ICA68 (driver: icarus) [2013-09-01 09:12:52] 69. ICA69 (driver: icarus) 70 devices listed"; List <string> inputLines = inputText.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList(); List <Device> deviceList = new List <Device>(); DeviceListParser.ParseTextForDevices(inputLines, deviceList); Assert.IsTrue(deviceList.Count == 70); }
public void ParseTextForDevices_Over50Devices_Succeeds() { const string inputText = @" [2013-09-01 09:12:43] Started bfgminer 3.1.4 [2013-09-01 09:12:43] Failed to load OpenCL library, no GPUs usab [2013-09-01 09:12:51] Do not have user privileges required to ope [2013-09-01 09:12:51] Devices detected: [2013-09-01 09:12:51] ICA 0 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA 1 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA 2 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA 3 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA 4 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA 5 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA 6 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA 7 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA 8 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA 9 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA10 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA11 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA12 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA13 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA14 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA15 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA16 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA17 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA18 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA19 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA20 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA21 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA22 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA23 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA24 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA25 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA26 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA27 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA28 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA29 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA30 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA31 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA32 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA33 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA34 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA35 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA36 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA37 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA38 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA39 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA40 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA41 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA42 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA43 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA44 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA45 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA46 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA47 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA48 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA49 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA50 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA51 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA52 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA53 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA54 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA55 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA56 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA57 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA58 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA59 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA60 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA61 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA62 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:51] ICA63 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:52] ICA64 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:52] ICA65 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:52] ICA66 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:52] ICA67 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:52] ICA68 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) [2013-09-01 09:12:52] ICA69 (driver=icarus; procs=1; serial=0001; path=\\.\COM3) 70 devices listed"; List <string> inputLines = inputText.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList(); List <Data.Device> deviceList = new List <Data.Device>(); DeviceListParser.ParseTextForDevices(inputLines, deviceList); Assert.IsTrue(deviceList.Count == 70); }