forked from external/yambar
Differentiate "Not Charging" and "Discharging" in state tag of battery module.
Some batteries support charge thresholds and when the upper limit is set to a number less than 100 percent and it reaches that limit and it is connected to the charger the battery state will be "Not charging". It doesn't charge anymore despite it's not full.
This commit is contained in:
parent
914cea1b14
commit
35e6943531
1 changed files with 7 additions and 5 deletions
|
@ -20,7 +20,7 @@
|
|||
#include "../config-verify.h"
|
||||
#include "../plugin.h"
|
||||
|
||||
enum state { STATE_FULL, STATE_CHARGING, STATE_DISCHARGING };
|
||||
enum state { STATE_FULL, STATE_NOTCHARGING, STATE_CHARGING, STATE_DISCHARGING };
|
||||
|
||||
struct private {
|
||||
struct particle *label;
|
||||
|
@ -65,6 +65,7 @@ content(struct module *mod)
|
|||
mtx_lock(&mod->lock);
|
||||
|
||||
assert(m->state == STATE_FULL ||
|
||||
m->state == STATE_NOTCHARGING ||
|
||||
m->state == STATE_CHARGING ||
|
||||
m->state == STATE_DISCHARGING);
|
||||
|
||||
|
@ -79,7 +80,7 @@ content(struct module *mod)
|
|||
? m->energy_full - m->energy : m->energy;
|
||||
|
||||
double hours_as_float;
|
||||
if (m->state == STATE_FULL)
|
||||
if (m->state == STATE_FULL || m->state == STATE_NOTCHARGING)
|
||||
hours_as_float = 0.0;
|
||||
else if (m->power > 0)
|
||||
hours_as_float = (double)energy / m->power;
|
||||
|
@ -93,7 +94,7 @@ content(struct module *mod)
|
|||
? m->charge_full - m->charge : m->charge;
|
||||
|
||||
double hours_as_float;
|
||||
if (m->state == STATE_FULL)
|
||||
if (m->state == STATE_FULL || m->state == STATE_NOTCHARGING)
|
||||
hours_as_float = 0.0;
|
||||
else if (m->current > 0)
|
||||
hours_as_float = (double)charge / m->current;
|
||||
|
@ -117,6 +118,7 @@ content(struct module *mod)
|
|||
tag_new_string(mod, "model", m->model),
|
||||
tag_new_string(mod, "state",
|
||||
m->state == STATE_FULL ? "full" :
|
||||
m->state == STATE_NOTCHARGING ? "not charging" :
|
||||
m->state == STATE_CHARGING ? "charging" :
|
||||
m->state == STATE_DISCHARGING ? "discharging" :
|
||||
"unknown"),
|
||||
|
@ -349,12 +351,12 @@ update_status(struct module *mod)
|
|||
state = STATE_DISCHARGING;
|
||||
} else if (strcmp(status, "Full") == 0)
|
||||
state = STATE_FULL;
|
||||
else if (strcmp(status, "Not charging") == 0)
|
||||
state = STATE_NOTCHARGING;
|
||||
else if (strcmp(status, "Charging") == 0)
|
||||
state = STATE_CHARGING;
|
||||
else if (strcmp(status, "Discharging") == 0)
|
||||
state = STATE_DISCHARGING;
|
||||
else if (strcmp(status, "Not charging") == 0)
|
||||
state = STATE_DISCHARGING;
|
||||
else if (strcmp(status, "Unknown") == 0)
|
||||
state = STATE_DISCHARGING;
|
||||
else {
|
||||
|
|
Loading…
Add table
Reference in a new issue