Implementación del subsistema de energía y carga
El subsistema de energía y carga de la batería en una plataforma Windows debería implementar la interfaz ACPI Control Method Battery. Windows utiliza esta interfaz para obtener información de estado del subsistema de la batería y recibir notificaciones de eventos de la batería.
Modelo de controlador del subsistema de batería y energía de Windows
Windows cuenta con un sólido modelo de controlador de dispositivo del subsistema de batería y energía. La información sobre la administración de energía se transmite al administrador de energía de Windows a través de un controlador de dispositivo de batería. A continuación, esta información se agrega y se expone a la interfaz de usuario de Windows a través de los IRP del dispositivo de batería y un conjunto de API de software de administración de energía.
El modelo de controlador de batería para Windows es un modelo de puerto/minipuerto; es decir, el modelo de batería y las interfaces se definen de modo que los nuevos tipos de batería puedan exponerse a través de un controlador de minipuerto, como se muestra en el siguiente diagrama de bloques. Sin embargo, en la práctica, sólo se utiliza la interfaz ACPI Control Method Battery. Se admite un controlador de minipuerto de batería de dispositivo de interfaz humana (HID) para dispositivos de sistema de alimentación ininterrumpida (SAI) conectados por USB, pero este controlador no se utiliza para las baterías del sistema.
Se espera que todas las plataformas Windows expongan sus baterías y subsistema de carga a través de la interfaz de ACPI Control Method Battery. La interfaz del minipuerto de batería no debe utilizarse para subsistemas de carga de baterías específicos de la plataforma. La especificación ACPI 5.0 define métodos de control que permiten a Windows obtener información sobre la batería y su estado actual. Además, la interfaz ACPI proporciona eventos para permitir que la plataforma de hardware notifique a Windows los cambios de batería y fuente de energía, como una transición de energía de CA a batería.
Obtener el estado de la batería
El administrador de energía de Windows solicita periódicamente información sobre el estado de la batería, incluida la capacidad de carga restante y la tasa de descarga actual. Esta solicitud se origina en el propio administrador de energía, en un componente de interfaz de usuario de nivel superior o en una aplicación. El administrador de energía convierte la solicitud en un paquete de solicitud de E/S (IRP) para el dispositivo de la batería, que luego se convierte en el método de control apropiado por el controlador de la batería de método de control de Windows, Cmbatt.sys. El método se ejecuta y el resultado se devuelve a la pila del controlador.
En el caso de la información de estado, el método de control adecuado es el del estado de la batería (_BST). El método _BST requiere que el firmware de ACPI obtenga información actual del subsistema de energía. El resultado del método _BST es un búfer que contiene la información necesaria, que se devuelve al controlador de batería del método de control. El controlador de la batería del método de control convierte el contenido del búfer al formato requerido por el controlador de la batería y el administrador de energía de Windows.
Notificaciones de cambio de estado
El subsistema de energía y batería genera varias notificaciones al sistema operativo para los cambios de estado, incluidos los cambios en el nivel de carga, las transiciones de CA a la energía de la batería, etc. No es conveniente sondear continuamente estos cambios de estado porque, al hacerlo, se requiere una frecuencia de sondeo alta. Por lo tanto, la plataforma de hardware debe implementar un modelo basado en eventos para notificar a Windows los cambios en el subsistema de energía y batería.
Cuando cambia el estado de la batería (incluida la capacidad restante o el estado de carga), el firmware de ACPI debe emitir un comando Notify(0x80) en el dispositivo de batería del método de control. En respuesta, el controlador de la batería del método de control en Windows evalúa el método _BST y devuelve la información actualizada al administrador de energía.
Cuando cambian los datos estáticos de la batería (incluida la capacidad de la última carga completa, la capacidad de diseño y el recuento de ciclos), el firmware de ACPI debe emitir un comando Notify(0x81) en el dispositivo de batería del método de control. En respuesta, el controlador de la batería del método de control en Windows evalúa el método _BIX y devuelve la información actualizada al administrador de energía.
Los eventos de Notificación de ACPI se señalan a través de la Interrupción de control del sistema (SCI), en el caso de plataformas equipadas con controlador integrado, o a través de E/S de propósito general (GPIO), en el caso de plataformas que tienen hardware de subsistema de batería directamente conectado al silicio del núcleo.