mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-11 07:17:58 +00:00
API V1.23 - new pgaset command, to be used soon
This commit is contained in:
parent
5ab2f3a7cf
commit
e931b72753
22
API-README
22
API-README
@ -330,9 +330,20 @@ The list of requests - a (*) means it requires privileged access - and replies a
|
|||||||
queue, scantime, expiry
|
queue, scantime, expiry
|
||||||
N is an integer in the range 0 to 9999
|
N is an integer in the range 0 to 9999
|
||||||
|
|
||||||
substats USBSTATS Stats of all LIBUSB mining devices except ztex
|
usbstats USBSTATS Stats of all LIBUSB mining devices except ztex
|
||||||
e.g. Name=MMQ,ID=0,Stat=SendWork,Count=99,...|
|
e.g. Name=MMQ,ID=0,Stat=SendWork,Count=99,...|
|
||||||
|
|
||||||
|
pgaset|N,opt[,val] (*)
|
||||||
|
none There is no reply section just the STATUS section
|
||||||
|
stating the results of setting PGA N with opt[,val]
|
||||||
|
This is only available if PGA mining is enabled
|
||||||
|
|
||||||
|
If the PGA does not support any set options, it will
|
||||||
|
always return a WARN stating pgaset isn't supported
|
||||||
|
|
||||||
|
If opt=help it will return an INFO status with a
|
||||||
|
help message about the options available
|
||||||
|
|
||||||
When you enable, disable or restart a GPU or PGA, you will also get Thread messages
|
When you enable, disable or restart a GPU or PGA, you will also get Thread messages
|
||||||
in the cgminer status window
|
in the cgminer status window
|
||||||
|
|
||||||
@ -386,7 +397,14 @@ miner.php - an example web page to access the API
|
|||||||
Feature Changelog for external applications using the API:
|
Feature Changelog for external applications using the API:
|
||||||
|
|
||||||
|
|
||||||
API V1.22
|
API V1.23
|
||||||
|
|
||||||
|
Added API commands:
|
||||||
|
'pgaset'
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
API V1.22 (cgminer v2.10.1)
|
||||||
|
|
||||||
Enforced output limitation:
|
Enforced output limitation:
|
||||||
all extra records beyond the output limit of the API (~64k) are ignored
|
all extra records beyond the output limit of the API (~64k) are ignored
|
||||||
|
78
api.c
78
api.c
@ -133,7 +133,7 @@ static const char SEPARATOR = '|';
|
|||||||
#define SEPSTR "|"
|
#define SEPSTR "|"
|
||||||
static const char GPUSEP = ',';
|
static const char GPUSEP = ',';
|
||||||
|
|
||||||
static const char *APIVERSION = "1.22";
|
static const char *APIVERSION = "1.23";
|
||||||
static const char *DEAD = "Dead";
|
static const char *DEAD = "Dead";
|
||||||
#if defined(HAVE_OPENCL) || defined(HAVE_AN_FPGA)
|
#if defined(HAVE_OPENCL) || defined(HAVE_AN_FPGA)
|
||||||
static const char *SICK = "Sick";
|
static const char *SICK = "Sick";
|
||||||
@ -379,6 +379,14 @@ static const char *JSON_PARAMETER = "parameter";
|
|||||||
#define MSG_USBSTA 87
|
#define MSG_USBSTA 87
|
||||||
#define MSG_NOUSTA 88
|
#define MSG_NOUSTA 88
|
||||||
|
|
||||||
|
#ifdef HAVE_AN_FPGA
|
||||||
|
#define MSG_MISPGAOPT 89
|
||||||
|
#define MSG_PGANOSET 90
|
||||||
|
#define MSG_PGAHELP 91
|
||||||
|
#define MSG_PGASETOK 92
|
||||||
|
#define MSG_PGASETERR 93
|
||||||
|
#endif
|
||||||
|
|
||||||
enum code_severity {
|
enum code_severity {
|
||||||
SEVERITY_ERR,
|
SEVERITY_ERR,
|
||||||
SEVERITY_WARN,
|
SEVERITY_WARN,
|
||||||
@ -544,6 +552,13 @@ struct CODES {
|
|||||||
{ SEVERITY_ERR, MSG_CONVAL, PARAM_STR, "Missing config value N for '%s,N'" },
|
{ SEVERITY_ERR, MSG_CONVAL, PARAM_STR, "Missing config value N for '%s,N'" },
|
||||||
{ SEVERITY_SUCC, MSG_USBSTA, PARAM_NONE, "USB Statistics" },
|
{ SEVERITY_SUCC, MSG_USBSTA, PARAM_NONE, "USB Statistics" },
|
||||||
{ SEVERITY_INFO, MSG_NOUSTA, PARAM_NONE, "No USB Statistics" },
|
{ SEVERITY_INFO, MSG_NOUSTA, PARAM_NONE, "No USB Statistics" },
|
||||||
|
#ifdef HAVE_AN_FPGA
|
||||||
|
{ SEVERITY_ERR, MSG_MISPGAOPT, PARAM_NONE, "Missing option after PGA number" },
|
||||||
|
{ SEVERITY_WARN, MSG_PGANOSET, PARAM_PGA, "PGA %d does not support pgaset" },
|
||||||
|
{ SEVERITY_INFO, MSG_PGAHELP, PARAM_BOTH, "PGA %d set help: %s" },
|
||||||
|
{ SEVERITY_SUCC, MSG_PGASETOK, PARAM_BOTH, "PGA %d set OK" },
|
||||||
|
{ SEVERITY_ERR, MSG_PGASETERR, PARAM_BOTH, "PGA %d set failed: %s" },
|
||||||
|
#endif
|
||||||
{ SEVERITY_FAIL, 0, 0, NULL }
|
{ SEVERITY_FAIL, 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3142,6 +3157,64 @@ static void usbstats(struct io_data *io_data, __maybe_unused SOCKETTYPE c, __may
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_AN_FPGA
|
||||||
|
static void pgaset(struct io_data *io_data, __maybe_unused SOCKETTYPE c, __maybe_unused char *param, bool isjson, __maybe_unused char group)
|
||||||
|
{
|
||||||
|
char buf[TMPBUFSIZ];
|
||||||
|
int numpga = numpgas();
|
||||||
|
|
||||||
|
if (numpga == 0) {
|
||||||
|
message(io_data, MSG_PGANON, 0, NULL, isjson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (param == NULL || *param == '\0') {
|
||||||
|
message(io_data, MSG_MISID, 0, NULL, isjson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *opt = strchr(param, ',');
|
||||||
|
if (opt)
|
||||||
|
*(opt++) = '\0';
|
||||||
|
if (!opt || !*opt) {
|
||||||
|
message(io_data, MSG_MISPGAOPT, 0, NULL, isjson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int id = atoi(param);
|
||||||
|
if (id < 0 || id >= numpga) {
|
||||||
|
message(io_data, MSG_INVPGA, id, NULL, isjson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int dev = pgadevice(id);
|
||||||
|
if (dev < 0) { // Should never happen
|
||||||
|
message(io_data, MSG_INVPGA, id, NULL, isjson);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct cgpu_info *cgpu = devices[dev];
|
||||||
|
struct device_api *api = cgpu->api;
|
||||||
|
|
||||||
|
char *set = strchr(opt, ',');
|
||||||
|
if (set)
|
||||||
|
*(set++) = '\0';
|
||||||
|
|
||||||
|
if (!api->set_device)
|
||||||
|
message(io_data, MSG_PGANOSET, id, NULL, isjson);
|
||||||
|
else {
|
||||||
|
char *ret = api->set_device(cgpu, opt, set, buf);
|
||||||
|
if (ret) {
|
||||||
|
if (strcasecmp(opt, "help") == 0)
|
||||||
|
message(io_data, MSG_PGAHELP, id, ret, isjson);
|
||||||
|
else
|
||||||
|
message(io_data, MSG_PGASETERR, id, ret, isjson);
|
||||||
|
} else
|
||||||
|
message(io_data, MSG_PGASETOK, id, NULL, isjson);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void checkcommand(struct io_data *io_data, __maybe_unused SOCKETTYPE c, char *param, bool isjson, char group);
|
static void checkcommand(struct io_data *io_data, __maybe_unused SOCKETTYPE c, char *param, bool isjson, char group);
|
||||||
|
|
||||||
struct CMDS {
|
struct CMDS {
|
||||||
@ -3198,6 +3271,9 @@ struct CMDS {
|
|||||||
{ "debug", debugstate, true },
|
{ "debug", debugstate, true },
|
||||||
{ "setconfig", setconfig, true },
|
{ "setconfig", setconfig, true },
|
||||||
{ "usbstats", usbstats, false },
|
{ "usbstats", usbstats, false },
|
||||||
|
#ifdef HAVE_AN_FPGA
|
||||||
|
{ "pgaset", pgaset, true },
|
||||||
|
#endif
|
||||||
{ NULL, NULL, false }
|
{ NULL, NULL, false }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
1
miner.h
1
miner.h
@ -277,6 +277,7 @@ struct device_api {
|
|||||||
struct api_data *(*get_api_stats)(struct cgpu_info *);
|
struct api_data *(*get_api_stats)(struct cgpu_info *);
|
||||||
bool (*get_stats)(struct cgpu_info *);
|
bool (*get_stats)(struct cgpu_info *);
|
||||||
void (*identify_device)(struct cgpu_info *); // e.g. to flash a led
|
void (*identify_device)(struct cgpu_info *); // e.g. to flash a led
|
||||||
|
char *(*set_device)(struct cgpu_info *, char *option, char *setting, char *replybuf);
|
||||||
|
|
||||||
// Thread-specific functions
|
// Thread-specific functions
|
||||||
bool (*thread_prepare)(struct thr_info *);
|
bool (*thread_prepare)(struct thr_info *);
|
||||||
|
Loading…
Reference in New Issue
Block a user