Skip to content

Commit

Permalink
Submit full device name and pool name to MobileMiner
Browse files Browse the repository at this point in the history
  • Loading branch information
nwoolls committed Dec 11, 2013
1 parent baf664f commit 0d23c5d
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 16 deletions.
9 changes: 9 additions & 0 deletions MultiMiner.MobileMiner.Api/MiningStatistics.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,14 @@ public class MiningStatistics
public int HardwareErrors { get; set; }
public double Utility { get; set; }
public string Intensity { get; set; } //string, might be D
//new properties from bfgminer
public string Name { get; set; }
public int DeviceID { get; set; }
public int PoolIndex { get; set; }
public double RejectedSharesPercent { get; set; }
public double HardwareErrorsPercent { get; set; }
//calculated properties from MultiMiner
public string FullName { get; set; }
public string PoolName { get; set; }
}
}
8 changes: 7 additions & 1 deletion MultiMiner.Win/Extensions/MiningStatisticsExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,13 @@ public static void PopulateFrom(this MiningStatistics miningStatistics, DeviceIn
miningStatistics.RejectedShares = deviceInformation.RejectedShares;
miningStatistics.Status = deviceInformation.Status;
miningStatistics.Temperature = deviceInformation.Temperature;
miningStatistics.Utility = deviceInformation.Utility;
//new properties from bfgminer
miningStatistics.Name = deviceInformation.Name;
miningStatistics.DeviceID = deviceInformation.ID;
miningStatistics.PoolIndex = deviceInformation.PoolIndex;
//miningStatistics.PoolName = deviceInformation.PoolName;
miningStatistics.RejectedSharesPercent = deviceInformation.RejectedSharesPercent;
miningStatistics.HardwareErrorsPercent = deviceInformation.HardwareErrorsPercent;
}
}
}
50 changes: 35 additions & 15 deletions MultiMiner.Win/MainForm.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1454,14 +1454,15 @@ private void PopulateIncomeForListViewItem(ListViewItem item)
}
}

private void PopulatePoolForListViewItem(int poolIndex, ListViewItem item)
private string GetPoolNameByIndex(int poolIndex, int deviceIndex)
{
string result = String.Empty;

if (poolIndex >= 0)
{
CoinConfiguration coinConfiguration = CoinConfigurationForListViewItem(item);
if (coinConfiguration == null)
item.SubItems["Pool"].Text = String.Empty;
else
Device device = devices[deviceIndex];
CoinConfiguration coinConfiguration = CoinConfigurationForDevice(device);
if (coinConfiguration != null)
{
//the poolIndex may be greater than the Pools count if the user edits
//their pools while mining
Expand All @@ -1470,25 +1471,33 @@ private void PopulatePoolForListViewItem(int poolIndex, ListViewItem item)
string poolHost = coinConfiguration.Pools[poolIndex].Host;
string poolDomain = poolHost.DomainFromHost();

item.SubItems["Pool"].Text = poolDomain;
result = poolDomain;
}
else
{
if (miningEngine.Donating)
item.SubItems["Pool"].Text = "donation"; //donation pool won't be in list
else
item.SubItems["Pool"].Text = String.Empty;
result = "donation"; //donation pool won't be in list
}
}
}
else
item.SubItems["Pool"].Text = String.Empty;

return result;
}

private void PopulatePoolForListViewItem(int poolIndex, ListViewItem item)
{
item.SubItems["Pool"].Text = GetPoolNameByIndex(poolIndex, deviceListView.Items.IndexOf(item));
}

private CoinConfiguration CoinConfigurationForListViewItem(ListViewItem item)
{
int itemIndex = deviceListView.Items.IndexOf(item);
Device device = devices[itemIndex];
return CoinConfigurationForDevice(device);
}

private CoinConfiguration CoinConfigurationForDevice(Device device)
{
//get the actual device configuration, text in the ListViewItem may be unsaved
DeviceConfiguration deviceConfiguration = engineConfiguration.DeviceConfigurations.SingleOrDefault(dc => dc.Equals(device));
if (deviceConfiguration == null)
Expand Down Expand Up @@ -2533,7 +2542,7 @@ private void mobileMinerTimer_Tick(object sender, EventArgs e)
{
//check for commands first so we can report mining activity after
CheckForMobileMinerCommands();
SubmitMobileMinerStats();
SubmitMobileMinerStatistics();
}
}

Expand Down Expand Up @@ -2562,7 +2571,7 @@ private string GetMobileMinerUrl()
//being triggered by someone who has valid credentials, and
//i've seen it myself as well
private bool mobileMinerSuccess = false;
private void SubmitMobileMinerStats()
private void SubmitMobileMinerStatistics()
{
//are remote monitoring enabled?
if (!applicationConfiguration.MobileMinerMonitoring)
Expand All @@ -2582,12 +2591,22 @@ private void SubmitMobileMinerStats()
if (deviceInformationList == null) //handled failure getting API info
continue;

//starting with bfgminer 3.7 we need the DEVDETAILS response to tie things from DEVS up with -d? details
List<DeviceDetailsResponse> processDevices = GetProcessDevices(minerProcess, deviceInformationList);

foreach (DeviceInformationResponse deviceInformation in deviceInformationList)
{
MultiMiner.MobileMiner.Api.MiningStatistics miningStatistics = new MobileMiner.Api.MiningStatistics();

//set CoinName first as it is used in PopulateMiningStatistics
PopulateMiningStatistics(miningStatistics, deviceInformation, GetCoinNameForApiContext(minerProcess.ApiContext));

DeviceDetailsResponse deviceDetails = processDevices.SingleOrDefault(d => d.Name.Equals(deviceInformation.Name, StringComparison.OrdinalIgnoreCase)
&& (d.ID == deviceInformation.ID));
int deviceIndex = GetItemIndexForDeviceDetails(deviceDetails);
Device device = devices[deviceIndex];

miningStatistics.FullName = device.Name;
miningStatistics.PoolName = GetPoolNameByIndex(deviceInformation.PoolIndex, deviceIndex);

statisticsList.Add(miningStatistics);
}
Expand All @@ -2607,7 +2626,8 @@ private void PopulateMiningStatistics(MultiMiner.MobileMiner.Api.MiningStatistic
{
miningStatistics.MinerName = "MultiMiner";
miningStatistics.CoinName = coinName;
CryptoCoin coin = engineConfiguration.CoinConfigurations.Single(c => c.Coin.Name.Equals(coinName)).Coin;
CoinConfiguration coinConfiguration = engineConfiguration.CoinConfigurations.Single(c => c.Coin.Name.Equals(coinName));
CryptoCoin coin = coinConfiguration.Coin;
miningStatistics.CoinSymbol = coin.Symbol;

if (coin.Algorithm == CoinAlgorithm.Scrypt)
Expand Down

0 comments on commit 0d23c5d

Please sign in to comment.