forked from external/yambar
module/battery: poll-interval: convert value from ‘seconds’ to ‘milliseconds’
This commit is contained in:
parent
ac8e45c331
commit
8fbbce10a5
3 changed files with 32 additions and 9 deletions
|
@ -57,7 +57,10 @@ the state *unknown* under other conditions.
|
||||||
| poll-interval
|
| poll-interval
|
||||||
: int
|
: int
|
||||||
: no
|
: no
|
||||||
: How often, in seconds, to poll for capacity changes (default=*60*). Set to `0` to disable polling (*warning*: many batteries do not support asynchronous reporting).
|
: How often, in milliseconds, to poll for capacity changes
|
||||||
|
(default=*60000*). Set to `0` to disable polling (*warning*: many
|
||||||
|
batteries do not support asynchronous reporting). Cannot be less
|
||||||
|
than 500ms.
|
||||||
|
|
||||||
# EXAMPLES
|
# EXAMPLES
|
||||||
|
|
||||||
|
@ -66,7 +69,7 @@ bar:
|
||||||
left:
|
left:
|
||||||
- battery:
|
- battery:
|
||||||
name: BAT0
|
name: BAT0
|
||||||
poll-interval: 30
|
poll-interval: 30000
|
||||||
content:
|
content:
|
||||||
string: {text: "BAT: {capacity}% {estimate}"}
|
string: {text: "BAT: {capacity}% {estimate}"}
|
||||||
```
|
```
|
||||||
|
|
|
@ -221,7 +221,7 @@ bar:
|
||||||
content: [ string: {text: , font: *awesome}, string: {text: "{percent}%"}]
|
content: [ string: {text: , font: *awesome}, string: {text: "{percent}%"}]
|
||||||
- battery:
|
- battery:
|
||||||
name: BAT0
|
name: BAT0
|
||||||
poll-interval: 30
|
poll-interval: 30000
|
||||||
anchors:
|
anchors:
|
||||||
discharging: &discharging
|
discharging: &discharging
|
||||||
list:
|
list:
|
||||||
|
|
|
@ -20,12 +20,15 @@
|
||||||
#include "../config-verify.h"
|
#include "../config-verify.h"
|
||||||
#include "../plugin.h"
|
#include "../plugin.h"
|
||||||
|
|
||||||
|
static const long min_poll_interval = 500;
|
||||||
|
static const long default_poll_interval = 60 * 1000;
|
||||||
|
|
||||||
enum state { STATE_FULL, STATE_NOTCHARGING, STATE_CHARGING, STATE_DISCHARGING, STATE_UNKNOWN };
|
enum state { STATE_FULL, STATE_NOTCHARGING, STATE_CHARGING, STATE_DISCHARGING, STATE_UNKNOWN };
|
||||||
|
|
||||||
struct private {
|
struct private {
|
||||||
struct particle *label;
|
struct particle *label;
|
||||||
|
|
||||||
int poll_interval;
|
long poll_interval;
|
||||||
char *battery;
|
char *battery;
|
||||||
char *manufacturer;
|
char *manufacturer;
|
||||||
char *model;
|
char *model;
|
||||||
|
@ -429,7 +432,7 @@ run(struct module *mod)
|
||||||
{.fd = udev_monitor_get_fd(mon), .events = POLLIN},
|
{.fd = udev_monitor_get_fd(mon), .events = POLLIN},
|
||||||
};
|
};
|
||||||
if (poll(fds, sizeof(fds) / sizeof(fds[0]),
|
if (poll(fds, sizeof(fds) / sizeof(fds[0]),
|
||||||
m->poll_interval > 0 ? m->poll_interval * 1000 : -1) < 0)
|
m->poll_interval > 0 ? m->poll_interval : -1) < 0)
|
||||||
{
|
{
|
||||||
if (errno == EINTR)
|
if (errno == EINTR)
|
||||||
continue;
|
continue;
|
||||||
|
@ -469,11 +472,11 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct module *
|
static struct module *
|
||||||
battery_new(const char *battery, struct particle *label, int poll_interval_secs)
|
battery_new(const char *battery, struct particle *label, long poll_interval_msecs)
|
||||||
{
|
{
|
||||||
struct private *m = calloc(1, sizeof(*m));
|
struct private *m = calloc(1, sizeof(*m));
|
||||||
m->label = label;
|
m->label = label;
|
||||||
m->poll_interval = poll_interval_secs;
|
m->poll_interval = poll_interval_msecs;
|
||||||
m->battery = strdup(battery);
|
m->battery = strdup(battery);
|
||||||
m->state = STATE_UNKNOWN;
|
m->state = STATE_UNKNOWN;
|
||||||
|
|
||||||
|
@ -496,7 +499,24 @@ from_conf(const struct yml_node *node, struct conf_inherit inherited)
|
||||||
return battery_new(
|
return battery_new(
|
||||||
yml_value_as_string(name),
|
yml_value_as_string(name),
|
||||||
conf_to_particle(c, inherited),
|
conf_to_particle(c, inherited),
|
||||||
poll_interval != NULL ? yml_value_as_int(poll_interval) : 60);
|
(poll_interval != NULL
|
||||||
|
? yml_value_as_int(poll_interval)
|
||||||
|
: default_poll_interval));
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
conf_verify_poll_interval(keychain_t *chain, const struct yml_node *node)
|
||||||
|
{
|
||||||
|
if (!conf_verify_unsigned(chain, node))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (yml_value_as_int(node) < min_poll_interval) {
|
||||||
|
LOG_ERR("%s: interval value cannot be less than %ldms",
|
||||||
|
conf_err_prefix(chain, node), min_poll_interval);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
@ -504,7 +524,7 @@ verify_conf(keychain_t *chain, const struct yml_node *node)
|
||||||
{
|
{
|
||||||
static const struct attr_info attrs[] = {
|
static const struct attr_info attrs[] = {
|
||||||
{"name", true, &conf_verify_string},
|
{"name", true, &conf_verify_string},
|
||||||
{"poll-interval", false, &conf_verify_unsigned},
|
{"poll-interval", false, &conf_verify_poll_interval},
|
||||||
MODULE_COMMON_ATTRS,
|
MODULE_COMMON_ATTRS,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue