Pour garantir que les composants matériels et logiciels (tels que l'affichage, l'audio et l'interaction vocale) sont activés et désactivés de manière sélective selon les besoins, AAOS fournit une politique d'alimentation, qui consiste en un ensemble d'états de mise sous tension et hors tension attendus pour les composants matériels et logiciels. . VHAL, ou services de fournisseurs privilégiés par le système, peut appliquer une nouvelle politique d'alimentation lorsque l'état d'alimentation d'Android change ou lorsque les conditions qu'ils attendent sont remplies.
L'application d'une stratégie d'alimentation est autorisée dans les états Wait for VHAL et On. Dans Shutdown Prepare, le mode Garage est en cours d'exécution et ne doit pas être perturbé par un changement d'état de l'alimentation. Bien qu'une stratégie d'alimentation normale ne puisse pas être appliquée, une stratégie d'alimentation spéciale , qui est la stratégie d'alimentation du système nommée « aucune interaction utilisateur », est appliquée dans Shutdown Prepare.
État d'alimentation AAOS
Les appareils AAOS suivent ce diagramme d'état d'alimentation :
Figure 1. Diagramme de l'état de l'alimentation AAOS
Chaque état d'alimentation est décrit ci-dessous :
Évaluer | La description |
---|---|
À l'arrêt | Aucune alimentation n'est physiquement fournie au processeur d'application (AP), à la mémoire et aux périphériques. |
Attendre VHAL |
|
Sur |
|
Préparation de l'arrêt |
|
Attendez que VHAL se termine |
|
Suspend-to-RAM (STR) | Le véhicule et l'AP sont éteints, aucun code n'est en cours d'exécution et l'alimentation est maintenue vers la RAM de l'AP. |
Architecture logicielle
L'architecture de politique d'alimentation est illustrée ci-dessous et définie dans la section suivante :
Figure 2. Architecture de politique d'alimentation
Comment la politique de puissance est-elle définie ?
Les implémenteurs définissent les politiques d'alimentation dans /vendor/etc/automotive/power_policy.xml
, qui :
- Définit la stratégie d'alimentation.
- Définit les groupes de stratégies d'alimentation, qui incluent la stratégie d'alimentation par défaut et sont automatiquement appliqués lorsque des transitions d'état d'alimentation se produisent.
- Remplacer la stratégie d'alimentation du système.
Politique d'alimentation
La stratégie d'alimentation est un ensemble d'états d'alimentation attendus des composants matériels et logiciels. AAOS prend en charge les composants suivants dans la stratégie d'alimentation :
-
AUDIO
-
MEDIA
-
DISPLAY_MAIN
-
DISPLAY_CLUSTER
-
DISPLAY_FRONT_PASSENGER
-
DISPLAY_REAR_PASSENGER
-
BLUETOOTH
-
WIFI
-
CELLULAR
-
ETHERNET
-
PROJECTION
-
NFC
-
INPUT
-
VOICE_INTERACTION
-
VISUAL_INTERACTION
-
TRUSTED_DEVICE_DETECTION
-
LOCATION
-
MICROPHONE
-
CPU
Groupe de règles d'alimentation
La stratégie d'alimentation par défaut est automatiquement appliquée lorsque la transition d'état d'alimentation est spécifiée dans le groupe de stratégies d'alimentation. Les fournisseurs peuvent définir la stratégie d'alimentation par défaut pour Wait For VHAL, On et Wait for VHAL Finish (Deep Sleep Entry ou Shutdown Start).
Stratégie d'alimentation du système
AAOS ne prend en charge qu'une seule politique d'alimentation du système, qui est "aucune interaction de l'utilisateur". La politique d'alimentation du système est appliquée lorsque l'appareil passe en mode silencieux ou en mode garage.
Le comportement de chaque composant dans la stratégie d'alimentation du système est répertorié dans le tableau ci-dessous. Les implémenteurs peuvent remplacer Bluetooth, NFC et la détection des appareils de confiance dans la politique d'alimentation du système. Les remplacements sont appliqués dans /vendor/etc/power_policy.xml
.
Composants | État d'alimentation | Configurable |
---|---|---|
l'audio | À l'arrêt | Non |
Médias | À l'arrêt | Non |
Affichage principal | À l'arrêt | Non |
Groupe d'affichage | À l'arrêt | Non |
Affichage passager avant | À l'arrêt | Non |
Affichage passager arrière | À l'arrêt | Non |
Bluetooth | À l'arrêt | OUI |
Wifi | SUR | Non |
Cellulaire | SUR | Non |
Ethernet | SUR | Non |
Projection | À l'arrêt | Non |
NFC | À l'arrêt | OUI |
Saisir | À l'arrêt | Non |
Interaction vocale | À l'arrêt | Non |
Interaction visuelle | À l'arrêt | Non |
Détection d'appareils de confiance | SUR | OUI |
Emplacement | À l'arrêt | Non |
Microphone | À l'arrêt | Non |
CPU | Sur | Non |
Interaction avec le VHAL
Le démon de politique d'alimentation de la voiture s'exécutant dans la couche système souscrit deux propriétés pour écouter les requêtes du VHAL :
-
POWER_POLICY_REQ
, le VHAL écrit l'ID de stratégie d'alimentation dans cette propriété. -
POWER_POLICY_GROUP_REQ
, le VHAL écrit l'ID de groupe de stratégie d'alimentation dans cette propriété.
La politique d'alimentation actuelle du système peut être modifiée par des modules autres que VHAL. Dans ce cas, le démon de politique d'alimentation de la voiture met à jour la propriété CURRENT_POWER_POLICY
pour notifier la modification au VHAL.
Interaction avec les processus natifs
Comme mentionné ci-dessus, le démon de politique d'alimentation de la voiture s'exécute dans la couche système et, en termes de gestion de la politique d'alimentation, fournit presque les mêmes fonctionnalités que CPMS s'exécutant dans la couche cadre. Supposons également que le démon de politique d'alimentation de la voiture et le CPMS soient entièrement synchronisés.
Le démon de politique d'alimentation de la voiture exporte les interfaces AIDL à utiliser par les HAL et d'autres processus natifs. Ils peuvent être avertis lorsqu'une nouvelle stratégie d'alimentation est modifiée. En d'autres termes, lorsque chacun doit changer son état d'alimentation.
ICarPowerPolicyServer.aidl
package android.frameworks.automotive.powerpolicy; import android.frameworks.automotive.powerpolicy.CarPowerPolicy; import android.frameworks.automotive.powerpolicy.CarPowerPolicyFilter; import android.frameworks.automotive.powerpolicy.ICarPowerPolicyChangeCallback; import android.frameworks.automotive.powerpolicy.PowerComponent; /** * ICarPowerPolicyServer is an interface implemented by the power policy daemon. * VHAL changes the power policy and the power policy daemon notifies the change to registered * subscribers. When subscribing to policy changes, a filter can be specified so that the registered * callbacks can listen only to a specific power component's change. */ @VintfStability interface ICarPowerPolicyServer { /** * Gets the current power policy. */ CarPowerPolicy getCurrentPowerPolicy(); /** * Gets whether the power component is turned on or off. * * @param componentId Power component ID defined in PowerComponent.aidl to check power state. * @return True if the component's power state is on. */ boolean getPowerComponentState(in PowerComponent componentId); /** * Subscribes to power policy change. * Notification is sent to the registered callback when the power policy changes and the power * state of the components which the callback is interested in changes. * * @param callback Callback that is invoked when the power policy changes. * @param filter The list of components which the callback is interested in. */ void registerPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback, in CarPowerPolicyFilter filter); /** * Unsubscribes from power policy change. * * @param callback Callback that doesn't want to receive power policy change. */ void unregisterPowerPolicyChangeCallback(in ICarPowerPolicyChangeCallback callback); }
ICarPowerPolicyChangeCallback.aidl
package android.frameworks.automotive.powerpolicy; import android.frameworks.automotive.powerpolicy.CarPowerPolicy; /** * ICarPowerPolicyChangeCallback is notified when a power policy changes. */ @VintfStability oneway interface ICarPowerPolicyChangeCallback { /** * Called when a power policy is fully changed. * * @param policy The current policy. */ void onPolicyChanged(in CarPowerPolicy policy); }
Interaction avec les modules Java
CarPowerManager
fournit des méthodes pour activer la gestion de la stratégie d'alimentation :
- Obtenez la stratégie d'alimentation actuelle.
- Obtenir le groupe de stratégie d'alimentation actuel
- Appliquer une nouvelle politique d'alimentation
- Définir un nouveau groupe de règles d'alimentation
Seuls les modules privilégiés par le système peuvent utiliser les méthodes. Les modules qui souhaitent être informés lorsqu'une politique d'alimentation est appliquée peuvent enregistrer un écouteur de changement de politique d'alimentation sur CarPowerManager
.