|
|
@ -149,6 +149,8 @@ static const char *UNKNOWN = "Unknown"; |
|
|
|
static const char *DYNAMIC = _DYNAMIC; |
|
|
|
static const char *DYNAMIC = _DYNAMIC; |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static __maybe_unused const char *NONE = "None"; |
|
|
|
|
|
|
|
|
|
|
|
static const char *YES = "Y"; |
|
|
|
static const char *YES = "Y"; |
|
|
|
static const char *NO = "N"; |
|
|
|
static const char *NO = "N"; |
|
|
|
static const char *NULLSTR = "(null)"; |
|
|
|
static const char *NULLSTR = "(null)"; |
|
|
@ -392,6 +394,11 @@ static const char *JSON_PARAMETER = "parameter"; |
|
|
|
#define MSG_ZERSUM 96 |
|
|
|
#define MSG_ZERSUM 96 |
|
|
|
#define MSG_ZERNOSUM 97 |
|
|
|
#define MSG_ZERNOSUM 97 |
|
|
|
#define MSG_USBNODEV 98 |
|
|
|
#define MSG_USBNODEV 98 |
|
|
|
|
|
|
|
#define MSG_INVHPLG 99 |
|
|
|
|
|
|
|
#define MSG_HOTPLUG 100 |
|
|
|
|
|
|
|
#define MSG_DISHPLG 101 |
|
|
|
|
|
|
|
#define MSG_NOHPLG 102 |
|
|
|
|
|
|
|
#define MSG_MISHPLG 102 |
|
|
|
|
|
|
|
|
|
|
|
enum code_severity { |
|
|
|
enum code_severity { |
|
|
|
SEVERITY_ERR, |
|
|
|
SEVERITY_ERR, |
|
|
@ -421,6 +428,7 @@ enum code_parameters { |
|
|
|
PARAM_BOTH, |
|
|
|
PARAM_BOTH, |
|
|
|
PARAM_BOOL, |
|
|
|
PARAM_BOOL, |
|
|
|
PARAM_SET, |
|
|
|
PARAM_SET, |
|
|
|
|
|
|
|
PARAM_INT, |
|
|
|
PARAM_NONE |
|
|
|
PARAM_NONE |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@ -572,6 +580,11 @@ struct CODES { |
|
|
|
#if defined(USE_MODMINER) || defined(USE_BITFORCE) |
|
|
|
#if defined(USE_MODMINER) || defined(USE_BITFORCE) |
|
|
|
{ SEVERITY_ERR, MSG_USBNODEV, PARAM_PGA, "PGA%d has no device" }, |
|
|
|
{ SEVERITY_ERR, MSG_USBNODEV, PARAM_PGA, "PGA%d has no device" }, |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
|
|
|
|
{ SEVERITY_ERR, MSG_INVHPLG, PARAM_STR, "Invalid value for hotplug (%s) must be 0..9999" }, |
|
|
|
|
|
|
|
{ SEVERITY_SUCC, MSG_HOTPLUG, PARAM_INT, "Hotplug check set to %ds" }, |
|
|
|
|
|
|
|
{ SEVERITY_SUCC, MSG_DISHPLG, PARAM_NONE, "Hotplug disabled" }, |
|
|
|
|
|
|
|
{ SEVERITY_WARN, MSG_NOHPLG, PARAM_NONE, "Hotplug is not available" }, |
|
|
|
|
|
|
|
{ SEVERITY_ERR, MSG_MISHPLG, PARAM_NONE, "Missing hotplug parameter" }, |
|
|
|
{ SEVERITY_FAIL, 0, 0, NULL } |
|
|
|
{ SEVERITY_FAIL, 0, 0, NULL } |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@ -1254,6 +1267,7 @@ static void message(struct io_data *io_data, int messageid, int paramid, char *p |
|
|
|
case PARAM_PGA: |
|
|
|
case PARAM_PGA: |
|
|
|
case PARAM_CPU: |
|
|
|
case PARAM_CPU: |
|
|
|
case PARAM_PID: |
|
|
|
case PARAM_PID: |
|
|
|
|
|
|
|
case PARAM_INT: |
|
|
|
sprintf(buf, codes[i].description, paramid); |
|
|
|
sprintf(buf, codes[i].description, paramid); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case PARAM_POOL: |
|
|
|
case PARAM_POOL: |
|
|
@ -1426,6 +1440,14 @@ static void minerconfig(struct io_data *io_data, __maybe_unused SOCKETTYPE c, __ |
|
|
|
root = api_add_int(root, "ScanTime", &opt_scantime, false); |
|
|
|
root = api_add_int(root, "ScanTime", &opt_scantime, false); |
|
|
|
root = api_add_int(root, "Queue", &opt_queue, false); |
|
|
|
root = api_add_int(root, "Queue", &opt_queue, false); |
|
|
|
root = api_add_int(root, "Expiry", &opt_expiry, false); |
|
|
|
root = api_add_int(root, "Expiry", &opt_expiry, false); |
|
|
|
|
|
|
|
#if defined(USE_MODMINER) || defined(USE_BITFORCE) |
|
|
|
|
|
|
|
if (hotplug_time == 0) |
|
|
|
|
|
|
|
root = api_add_const(root, "Hotplug", DISABLED, false); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
root = api_add_int(root, "Hotplug", &hotplug_time, false); |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
root = api_add_const(root, "Hotplug", NONE, false); |
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
root = print_data(root, buf, isjson, false); |
|
|
|
root = print_data(root, buf, isjson, false); |
|
|
|
io_add(io_data, buf); |
|
|
|
io_add(io_data, buf); |
|
|
@ -3308,6 +3330,34 @@ static void dozero(struct io_data *io_data, __maybe_unused SOCKETTYPE c, char *p |
|
|
|
message(io_data, MSG_ZERNOSUM, 0, all ? "All" : "BestShare", isjson); |
|
|
|
message(io_data, MSG_ZERNOSUM, 0, all ? "All" : "BestShare", isjson); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void dohotplug(struct io_data *io_data, __maybe_unused SOCKETTYPE c, __maybe_unused char *param, bool isjson, __maybe_unused char group) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
#if defined(USE_MODMINER) || defined(USE_BITFORCE) |
|
|
|
|
|
|
|
int value; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (param == NULL || *param == '\0') { |
|
|
|
|
|
|
|
message(io_data, MSG_MISHPLG, 0, NULL, isjson); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
value = atoi(param); |
|
|
|
|
|
|
|
if (value < 0 || value > 9999) { |
|
|
|
|
|
|
|
message(io_data, MSG_INVHPLG, 0, param, isjson); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
hotplug_time = value; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (value) |
|
|
|
|
|
|
|
message(io_data, MSG_HOTPLUG, value, NULL, isjson); |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
message(io_data, MSG_DISHPLG, 0, NULL, isjson); |
|
|
|
|
|
|
|
#else |
|
|
|
|
|
|
|
message(io_data, MSG_NOHPLG, 0, NULL, isjson); |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
#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 { |
|
|
@ -3368,6 +3418,7 @@ struct CMDS { |
|
|
|
{ "pgaset", pgaset, true }, |
|
|
|
{ "pgaset", pgaset, true }, |
|
|
|
#endif |
|
|
|
#endif |
|
|
|
{ "zero", dozero, true }, |
|
|
|
{ "zero", dozero, true }, |
|
|
|
|
|
|
|
{ "hotplug", dohotplug, true }, |
|
|
|
{ NULL, NULL, false } |
|
|
|
{ NULL, NULL, false } |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|