Re: ACPI battery driver emits POWER_SUPPLY_STATUS_FULL when power lead plugged in

Richard Hughes
2009-01-23T23:40:23Z

On Fri, 2009-01-23 at 20:02 -0200, Henrique de Moraes Holschuh wrote:
> On Fri, 23 Jan 2009, Alexey Starikovskiy wrote:
> > This is probably related to this piece of code (drivers/acpi/battery.c),
> > similar code exists in drivers/acpi/sbs.c, but it is not relevant to your case:
> > case POWER_SUPPLY_PROP_STATUS:
> > if (battery->state & 0x01)
> > val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
> > else if (battery->state & 0x02)
> > val->intval = POWER_SUPPLY_STATUS_CHARGING;
> > else if (battery->state == 0)
> > val->intval = POWER_SUPPLY_STATUS_FULL;
> > else
> > val->intval = POWER_SUPPLY_STATUS_UNKNOWN;
> > break;
> >
> > Actually, state==0 means POWER_SUPPLY_STATUS_NOT_CHARGING, so if that is preferred it could be changed.
>
> It should be fixed, yes. Batteries being idle without being full are really
> common in laptops with battery-life-saving functions (charge/stop-charge
> threshold control).

I suspected this might be the case. Is there a way we can get true
battery state out of acpi for the battery? I always thought there could
be two booleans: charging and discharging.

I guess fully charged isn't just !charging and !discharging.

Richard.