Contrôler le véhicule et la gestion de l'alimentation

L'agent VPM (Vehicle Mode and Power Management) aide le véhicule à contrôler le système d'alimentation de l'écosystème SDV (Software Defined Vehicle).

L'agent VPM facilite la communication des modes véhicule et d'alimentation à divers composants logiciels, y compris les agents SDV et les bundles de services au sein de SDV.

L'agent VPM permet aux composants SDV de suivre l'état actuel du véhicule, comme son mode de fonctionnement (par exemple, à l'arrêt ou en marche) et son état d'alimentation (par exemple, allumé, suspendu ou éteint). L'état du véhicule est le même pour tous les logiciels du véhicule. Toutefois, l'état de l'alimentation est propre à chaque VM SDV du véhicule.

L'agent VPM signale à la plate-forme du système SDV de démarrer des modes d'alimentation spécifiques. Cette fonctionnalité optimise la consommation d'énergie et réduit le temps de démarrage en cas de reprise. Elle contribue également à assurer le bon fonctionnement des différents composants logiciels du SDV.

Cette page décrit les principales exigences, contraintes et dépendances associées à l'agent VPM. Il explique les fonctionnalités attendues et les consignes d'intégration de l'agent VPM aux fabricants d'équipement d'origine (OEM) et aux autres développeurs SDV.

Architecture

La figure 1 illustre l'architecture de gestion de l'alimentation :

Architecture de gestion de l'alimentation

Figure 1. Architecture de gestion de l'alimentation.

L'agent VPM reçoit les commandes du mode d'alimentation (telles que l'arrêt et la suspension) du service de gestion de l'alimentation de l'OEM.

L'agent VPM transmet ces commandes aux agents SDV appropriés et attend que les agents les exécutent. Cette approche coordonnée permet d'assurer une transition fluide et sûre entre les modes d'alimentation, en minimisant le risque de perte de données ou d'instabilité du système.

Une fois que tous les agents SDV ont terminé leurs transitions d'alimentation, l'agent VPM en informe l'OEM, ce qui permet aux systèmes OEM de prendre les mesures nécessaires (par exemple, passer à l'état suivant ou s'éteindre). Les transitions d'alimentation sont bloquantes. La transition ne se produit que lorsque tous les agents SDV l'exécutent dans un délai défini par l'OEM.

Le schéma suivant illustre la machine à états pour la gestion de l'alimentation :

Machine à états de gestion de l'alimentation

Figure 2. Machine à états de gestion de l'alimentation.

L'agent VPM fonctionne avec le système d'orchestration et de gestion du cycle de vie pour informer les bundles de services SDV de toute mise à jour du mode d'alimentation. Cela permet aux bundles de services de gérer les transitions d'alimentation et d'éviter les interruptions de leur fonctionnement. Pour en savoir plus sur l'utilisation des états de gestion de l'alimentation avec les bundles de services et la gestion de la communication SDV, consultez Gérer la suspension et la reprise.

États de l'alimentation

Les états autorisés pour la gestion de l'alimentation dans SDV sont les suivants :

État Explication
REPORT_UNSPECIFIED Valeur par défaut si aucun rapport n'est spécifié.
POWER_OFF_EXIT La VM démarre à froid. Les agents SDV commencent par init.rc.
SUSPEND_TO_RAM_EXIT La VM reprend son activité après avoir été suspendue dans la RAM. Les agents SDV reprennent leur activité à partir de la RAM et reçoivent une notification concernant l'état de l'alimentation s'ils se sont abonnés aux notifications d'état de l'alimentation.
ON La VM s'exécute normalement.
POWER_OFF_ENTER La VM se prépare à l'arrêt. Les applications OEM qui peuvent être nettoyées tôt doivent l'être dans cet état. Les applications OEM peuvent toujours s'appuyer sur les agents SDV exécutés à ce stade. Les agents SDV ne doivent pas être suspendus ni éteints à ce stade, car les applications OEM peuvent encore avoir besoin de communiquer avec eux.
SUSPEND_TO_RAM_ENTER La VM se prépare à la suspension vers la RAM. Les applications OEM qui peuvent être nettoyées tôt doivent l'être dans cet état. Les applications OEM peuvent toujours s'appuyer sur les agents SDV exécutés à ce stade. Les agents SDV ne doivent pas être suspendus ni éteints à ce stade, car les applications OEM peuvent encore avoir besoin de communiquer avec eux.
WAIT_FOR_FINISH La VM a terminé le nettoyage initial et attend le signal de l'OEM pour terminer ou annuler l'arrêt ou la suspension.
SHUTDOWN_CANCELLED L'OEM a demandé l'annulation pour préparer l'arrêt. Cette demande doit être effectuée au plus tard le WAIT_FOR_FINISH. Les applications OEM sont demandées par le gestionnaire du cycle de vie pour annuler la préparation de la suspension ou de l'arrêt.
POWER_OFF_POST_FINISH Suite à la requête FINISH_SHUTDOWN de l'OEM, la VM termine le nettoyage final et éteint la plate-forme sous-jacente. Les agents SDV doivent effectuer un nettoyage avant la mise hors tension.
SUSPEND_TO_RAM_POST_FINISH La VM est sur le point d'être suspendue à la RAM et la plate-forme sous-jacente est sur le point d'être suspendue à la RAM. Les applications OEM ne doivent pas s'appuyer sur les agents SDV à ce stade, car ils sont également suspendus. Les agents SDV doivent effectuer leurs nettoyages avant la suspension.

Recevoir des informations sur l'état du véhicule

L'agent VPM reçoit des informations sur les modes de véhicule actuels à partir du bundle de services de contrôle du véhicule de l'OEM.

L'agent transmet ensuite ces informations aux composants SDV concernés via la pile de communication SDV standardisée. Il informe tous les composants SDV de l'état opérationnel du véhicule afin qu'ils puissent adapter leur comportement en conséquence.

Pour recevoir des informations sur l'état du véhicule, utilisez la configuration VSIDL suivante dans votre bundle de services :

package: "com.sdv.google.vpm.vehicle.client.subscriber"

service_bundle {
    name: "VehicleStateSubscriber"
    //Subscriber to the vehicle state updates.
    subscriber {
        message: "com.sdv.google.vpm.vehicle.VehicleStateChange"
    }
}

Les modes et transitions du véhicule sont non bloquants et asynchrones. Contrairement aux transitions d'alimentation, aucune machine à états n'est appliquée.

Voici les états autorisés pour un véhicule dans SDV :

État Explication
VEHICLE_STATE_UNSPECIFIED Valeur par défaut des états du véhicule si aucun état n'est spécifié.
LOW_POWER La voiture est éteinte du point de vue de l'utilisateur, mais l'unité de commande de puissance peut toujours détecter qu'elle est allumée.
SOFTWARE_UPDATE Des mises à jour logicielles sont en cours sur certaines ou toutes les parties du véhicule. Il s'agit de mises à jour logicielles non liées aux véhicules autonomes.
PARK Peu d'ECU sont fournis pour cette activité spécifique sans présence du client.
LIFE_ON_BOARD Les ECU de confort, tels que les sièges chauffants, les groupes d'instruments et les panneaux centraux, sont fournis et utilisables, ou l'activité du client est détectée, comme l'ouverture d'une porte ou le déverrouillage d'une voiture.
VEHICLE_ON Les ECU du moteur sont fournis, le moteur est opérationnel, mais la conduite n'est pas possible.
TRACTION_ON Les ECU du moteur sont fournis, le moteur est opérationnel et la conduite est possible.

Contrôler la gestion du véhicule et de l'alimentation avec l'agent VPM

Utilisez les définitions VSIDL suivantes pour implémenter un bundle de services qui contrôle la machine à états de l'alimentation dans SDV :

package: "com.sdv.google.vpm.client"

service_bundle {
    name: "VpmSystemClient"

    //Client for VPM system interface.
    client {
        service: "com.sdv.google.vpm.VpmSystemService"
    }

    //Server to VPM notification interface.
    server {
        service: "com.sdv.google.vpm.client.PowerNotificationService"
    }
}

Une fois le bundle implémenté et les LCA ajoutées à l'agent VPM, le bundle peut envoyer des requêtes RPC à l'agent VPM et recevoir des notifications d'état de l'alimentation sur le serveur défini.