Commit 8a01f5326cd046d205bc0ebcd2efefb765c503d0

Con Kolivas 2013-08-21T20:46:07

Add avalon HW error% to stats and only show BTB variables if avalon is a BTB.

diff --git a/driver-avalon.c b/driver-avalon.c
index 995abd8..9bf0669 100644
--- a/driver-avalon.c
+++ b/driver-avalon.c
@@ -1483,6 +1483,8 @@ static struct api_data *avalon_api_stats(struct cgpu_info *cgpu)
 	struct avalon_info *info = cgpu->device_data;
 	char buf[64];
 	int i;
+	double hwp = (cgpu->hw_errors + cgpu->diff1) ?
+		     (double)(cgpu->hw_errors) / (double)(cgpu->hw_errors + cgpu->diff1) : 0;
 
 	root = api_add_int(root, "baud", &(info->baud), false);
 	root = api_add_int(root, "miner_count", &(info->miner_count),false);
@@ -1499,8 +1501,7 @@ static struct api_data *avalon_api_stats(struct cgpu_info *cgpu)
 	root = api_add_int(root, "temp3", &(info->temp2), false);
 	root = api_add_int(root, "temp_max", &(info->temp_max), false);
 
-	root = api_add_int(root, "core_voltage", &(info->core_voltage), false);
-
+	root = api_add_percent(root, "Device Hardware%", &hwp, false);
 	root = api_add_int(root, "no_matching_work", &(info->no_matching_work), false);
 	for (i = 0; i < info->miner_count; i++) {
 		char mcw[24];
@@ -1508,10 +1509,12 @@ static struct api_data *avalon_api_stats(struct cgpu_info *cgpu)
 		sprintf(mcw, "match_work_count%d", i + 1);
 		root = api_add_int(root, mcw, &(info->matching_work[i]), false);
 	}
-
-	snprintf(buf, sizeof(buf), "%"PRIu8".%"PRIu8".%"PRIu8,
-			info->version1, info->version2, info->version3);
-	root = api_add_string(root, "version", buf, true);
+	if (usb_ident(cgpu) == IDENT_BTB) {
+		root = api_add_int(root, "core_voltage", &(info->core_voltage), false);
+		snprintf(buf, sizeof(buf), "%"PRIu8".%"PRIu8".%"PRIu8,
+				info->version1, info->version2, info->version3);
+		root = api_add_string(root, "version", buf, true);
+	}
 
 	return root;
 }
diff --git a/miner.h b/miner.h
index 6a8b045..f4eb91a 100644
--- a/miner.h
+++ b/miner.h
@@ -1420,5 +1420,6 @@ extern struct api_data *api_add_freq(struct api_data *root, char *name, double *
 extern struct api_data *api_add_volts(struct api_data *root, char *name, float *data, bool copy_data);
 extern struct api_data *api_add_hs(struct api_data *root, char *name, double *data, bool copy_data);
 extern struct api_data *api_add_diff(struct api_data *root, char *name, double *data, bool copy_data);
+extern struct api_data *api_add_percent(struct api_data *root, char *name, double *data, bool copy_data);
 
 #endif /* __MINER_H__ */