How do I...

Ian Smith smithi at nimnet.asn.au
Sat Nov 25 19:32:16 PST 2006


On Sat, 25 Nov 2006, M. Warner Losh wrote:

 > In message: <4568AA2F.4050602 at root.org>
 >             Nate Lawson <nate at root.org> writes:
 > : M. Warner Losh wrote:
 > : > ... run a command when there's < 1% battery life left?
 > : > 
 > : > Warner
 > : 
 > : You add support here in acpi_cmbat.c:
 > :      /* XXX If all batteries are critical, perhaps we should suspend. */
 > :      if (sc->bst.state & ACPI_BATT_STAT_CRITICAL) {
 > :      	if ((sc->flags & ACPI_BATT_STAT_CRITICAL) == 0) {
 > : 	    sc->flags |= ACPI_BATT_STAT_CRITICAL;
 > : 	    device_printf(dev, "critically low charge!\n");
 > : 	}
 > :      }
 > : 
 > : Use the acpi_NotifyMumble function to send a value to devd.  You 
 > : probably want to make sure you're off AC power also since you may still 
 > : have that crit state when plugged in.  So read the value of AC status 
 > : (see kern_power.c for how to do this) before sending the notify.
 > 
 > I was thinking of sending the critical message as well as for each %
 > of battery life that changed.  I just wanted to make sure that it
 > wasn't being done already and i was captain clueless.
 > 
 > Warner

I suspect what you're after is basically the functionality previously
provided by apmd for APM battery % {dis,}charging (and other) power
related events, where you could define in apmd.conf, eg from mine:

apm_battery 20% discharging {
        exec "logger -p user.notice battery status low [20%]";
        exec "echo T250L8CE-GE-C >>/dev/speaker";
}

Me too .. and here's where Nate says 'well write it then!' :)

Cheers, Ian



More information about the freebsd-acpi mailing list