Browse Source

API zero - zero statistics - all or bestshare - with optional on screen summary

nfactor-troky
Kano 12 years ago
parent
commit
0b3d8c89c2
  1. 15
      API-README
  2. 58
      api.c
  3. 24
      cgminer.c
  4. 3
      miner.h

15
API-README

@ -347,6 +347,18 @@ The list of requests - a (*) means it requires privileged access - and replies a @@ -347,6 +347,18 @@ The list of requests - a (*) means it requires privileged access - and replies a
The current options are:
MMQ opt=clock val=160 to 230 (and a multiple of 2)
zero|Which,true/false (*)
none There is no reply section just the STATUS section
stating that the zero, and optional summary, was done
If Which='all', all normal cgminer and API statistics
will be zeroed other than the numbers displayed by the
usbstats and stats commands
If Which='bestshare', only the 'Best Share' values
are zeroed for each pool and the global 'Best Share'
The true/false option determines if a full summary is
shown on the cgminer display like is normally displayed
on exit.
When you enable, disable or restart a GPU or PGA, you will also get Thread messages
in the cgminer status window
@ -402,6 +414,9 @@ Feature Changelog for external applications using the API: @@ -402,6 +414,9 @@ Feature Changelog for external applications using the API:
API V1.24
Added API commands:
'zero'
Modified API commands:
'pools' - add 'Best Share'

58
api.c

@ -387,6 +387,11 @@ static const char *JSON_PARAMETER = "parameter"; @@ -387,6 +387,11 @@ static const char *JSON_PARAMETER = "parameter";
#define MSG_PGASETERR 93
#endif
#define MSG_ZERMIS 94
#define MSG_ZERINV 95
#define MSG_ZERSUM 96
#define MSG_ZERNOSUM 97
enum code_severity {
SEVERITY_ERR,
SEVERITY_WARN,
@ -559,6 +564,10 @@ struct CODES { @@ -559,6 +564,10 @@ struct CODES {
{ SEVERITY_SUCC, MSG_PGASETOK, PARAM_BOTH, "PGA %d set OK" },
{ SEVERITY_ERR, MSG_PGASETERR, PARAM_BOTH, "PGA %d set failed: %s" },
#endif
{ SEVERITY_ERR, MSG_ZERMIS, PARAM_NONE, "Missing zero parameters" },
{ SEVERITY_ERR, MSG_ZERINV, PARAM_STR, "Invalid zero parameter '%s'" },
{ SEVERITY_SUCC, MSG_ZERSUM, PARAM_STR, "Zeroed %s stats with summary" },
{ SEVERITY_SUCC, MSG_ZERNOSUM, PARAM_STR, "Zeroed %s stats without summary" },
{ SEVERITY_FAIL, 0, 0, NULL }
};
@ -3212,6 +3221,54 @@ static void pgaset(struct io_data *io_data, __maybe_unused SOCKETTYPE c, __maybe @@ -3212,6 +3221,54 @@ static void pgaset(struct io_data *io_data, __maybe_unused SOCKETTYPE c, __maybe
}
#endif
static void dozero(struct io_data *io_data, __maybe_unused SOCKETTYPE c, char *param, bool isjson, __maybe_unused char group)
{
if (param == NULL || *param == '\0') {
message(io_data, MSG_ZERMIS, 0, NULL, isjson);
return;
}
char *sum = strchr(param, ',');
if (sum)
*(sum++) = '\0';
if (!sum || !*sum) {
message(io_data, MSG_MISBOOL, 0, NULL, isjson);
return;
}
bool all = false;
bool bs = false;
if (strcasecmp(param, "all") == 0)
all = true;
else if (strcasecmp(param, "bestshare") == 0)
bs = true;
if (all == false && bs == false) {
message(io_data, MSG_ZERINV, 0, param, isjson);
return;
}
*sum = tolower(*sum);
if (*sum != 't' && *sum != 'f') {
message(io_data, MSG_INVBOOL, 0, NULL, isjson);
return;
}
bool dosum = (*sum == 't');
if (dosum)
print_summary();
if (all)
zero_stats();
if (bs)
zero_bestshare();
if (dosum)
message(io_data, MSG_ZERSUM, 0, all ? "All" : "BestShare", isjson);
else
message(io_data, MSG_ZERNOSUM, 0, all ? "All" : "BestShare", isjson);
}
static void checkcommand(struct io_data *io_data, __maybe_unused SOCKETTYPE c, char *param, bool isjson, char group);
struct CMDS {
@ -3271,6 +3328,7 @@ struct CMDS { @@ -3271,6 +3328,7 @@ struct CMDS {
#ifdef HAVE_AN_FPGA
{ "pgaset", pgaset, true },
#endif
{ "zero", dozero, true },
{ NULL, NULL, false }
};

24
cgminer.c

@ -2732,8 +2732,6 @@ static void disable_curses(void) @@ -2732,8 +2732,6 @@ static void disable_curses(void)
}
#endif
static void print_summary(void);
static void __kill_work(void)
{
struct thr_info *thr;
@ -3915,6 +3913,20 @@ void write_config(FILE *fcfg) @@ -3915,6 +3913,20 @@ void write_config(FILE *fcfg)
json_escape_free();
}
void zero_bestshare(void)
{
int i;
best_diff = 0;
memset(best_share, 0, 8);
suffix_string(best_diff, best_share, 0);
for (i = 0; i < total_pools; i++) {
struct pool *pool = pools[i];
pool->best_diff = 0;
}
}
void zero_stats(void)
{
int i;
@ -3931,10 +3943,7 @@ void zero_stats(void) @@ -3931,10 +3943,7 @@ void zero_stats(void)
total_go = 0;
total_ro = 0;
total_secs = 1.0;
best_diff = 0;
total_diff1 = 0;
memset(best_share, 0, 8);
suffix_string(best_diff, best_share, 0);
found_blocks = 0;
total_diff_accepted = 0;
total_diff_rejected = 0;
@ -3956,9 +3965,10 @@ void zero_stats(void) @@ -3956,9 +3965,10 @@ void zero_stats(void)
pool->diff_rejected = 0;
pool->diff_stale = 0;
pool->last_share_diff = 0;
pool->best_diff = 0;
}
zero_bestshare();
mutex_lock(&hash_lock);
for (i = 0; i < total_devices; ++i) {
struct cgpu_info *cgpu = devices[i];
@ -5961,7 +5971,7 @@ static void log_print_status(struct cgpu_info *cgpu) @@ -5961,7 +5971,7 @@ static void log_print_status(struct cgpu_info *cgpu)
applog(LOG_WARNING, "%s", logline);
}
static void print_summary(void)
void print_summary(void)
{
struct timeval diff;
int hours, mins, secs, i;

3
miner.h

@ -759,6 +759,7 @@ extern void api(int thr_id); @@ -759,6 +759,7 @@ extern void api(int thr_id);
extern struct pool *current_pool(void);
extern int enabled_pools;
extern bool detect_stratum(struct pool *pool, char *url);
extern void print_summary(void);
extern struct pool *add_pool(void);
extern void add_pool_details(struct pool *pool, bool live, char *url, char *user, char *pass);
@ -1077,6 +1078,8 @@ extern void kill_work(void); @@ -1077,6 +1078,8 @@ extern void kill_work(void);
extern void switch_pools(struct pool *selected);
extern void remove_pool(struct pool *pool);
extern void write_config(FILE *fcfg);
extern void zero_bestshare(void);
extern void zero_stats(void);
extern void default_save_file(char *filename);
extern bool log_curses_only(int prio, const char *f, va_list ap);
extern void clear_logwin(void);

Loading…
Cancel
Save