D.Himro <d.hi...@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), а делать это только тогда когда состояние > действительно изменилось. Чем мешает то опрашивать самому?