Re: Состояние батареи
D.Himro <d.himro@yahoo.com> wrote:
> Доброго времени суток уважаемые.
> Есть задача получить информацию о состоянии батареи в приложении.
> Уровень заряда в частности, который понятное дело меняется во время
> использования.
> Для получения информации о текущем заряде у нас есть acpi, sysfs и
> возможно что-то есть для dbus (его вообще рассматривать не будем).
> При этом acpilib пользует sysfs для получения информации. Из этого
> следует, что для того, чтобы отслеживать уровень заряда надо либо
> переодичски дёргать тот-же acpi либо читать sysfs. Т.е. получается
> пулинг. Не очень красиво.
> Далее есть laptop mode, в котором есть такое вот:
> This module allows laptop mode to react to battery level changes, even
> if the battery does not send out frequent ACPI events for such battery
> level changes.
> Note that this does NOT make ACPI-only features work on non-ACPI hardware.
> Т.е. модуль может работать как в режиме пулинга, так и получать какие-то
> эвенты.
Это всего-лишь означает, что модуль "возможно будет получать ACPI эвенты от
батарейки". А на деле - зависит от кривости ACPI в железке.
> Собственно и вопрос, что это за эвенты, как на них подписаться и\или в
> какую сторону смотреть. Есть ли какая-то возможность подписаться на
> события от ядра? Оно ведь знает о состоянии батареи для того чтобы
> предоставлять его в sysfs.
> Суть проста, не пулить постоянно состояние батареи (будь то через
> acpilib или sysfs), а делать это только тогда когда состояние
> действительно изменилось.
Чем мешает то опрашивать самому?
Reply to: