Enregistre l'état, la progression en pourcentage et le code d'erreur d'une sous-entité lors de mises à jour logicielles basées sur SOVD.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 86b478c2c357ProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Enregistre l'état, la progression en pourcentage et le code d'erreur d'une sous-entité lors de mises à jour logicielles basées sur SOVD.
La structure ara::diag::SovdSwUpdate::SubProgress encapsule la progression actuelle, l'état et les éventuelles erreurs d'une entité spécifique pendant une mise à jour logicielle basée sur SOVD ([SWS_DM_01896]). Les routines de mise à jour y enregistrent le composant à mettre à jour, actualisent la progression en pourcentage et transmettent l'état global à la gestion du diagnostic. Si la mise à jour échoue, le champ error spécifie le code d'erreur survenu, tandis qu'il n'est pas pris en compte en cas de déroulement régulier ([SWS_DM_01901]). Comme SubProgress est un type valeur de données pur sans synchronisation interne, la modification concurrente nécessite une protection au niveau de l'application.
Contexte
La structure ara::diag::SovdSwUpdate::SubProgress fait partie de l'interface C++ pour les mises à jour logicielles basées sur SOVD dans le module diag de l'AUTOSAR Adaptive Platform ([SWS_DM_01896], AUTOSAR_AP_SWS_Diagnostics §8.58.3 « Struct: SubProgress »). Dans le cadre de Service-Oriented Vehicle Diagnostics (SOVD), les opérations de mise à jour peuvent être constituées de plusieurs étapes partielles parallèles ou séquentielles. SubProgress assume la responsabilité de représenter l'état de traitement d'un sous-composant spécifique pendant la mise à jour. Les partenaires d'interaction comprennent des routines de mise à jour internes au diagnostic, qui effectuent des mises à jour partielles, ainsi que des instances de contrôle de niveau supérieur qui coordonnent la progression globale d'une mise à jour et la signalent aux outils de diagnostic externes.
entity : un ara::core::String qui nomme l'entité actuellement en cours de mise à jour ([SWS_DM_01898]).
status : une valeur de type SovdUpdateStatus qui représente l'état actuel de la mise à jour ([SWS_DM_01899]).
progress : une valeur optionnelle de type ara::core::Optional<std::uint8_t> pour la progression en pourcentage ([SWS_DM_01900]).
error : un code d'erreur de type ara::core::ErrorCode permettant de spécifier les erreurs survenues en cas d'erreur ([SWS_DM_01901]).
Cycle de vie
Conçue comme struct, SubProgress possède une sémantique de valeur (AUTOSAR_AP_SWS_Diagnostics §8.58.3.1 « Public Member Variables »). Une instance est typiquement créée sur la pile ou au sein d'un conteneur d'état de niveau supérieur dès qu'une nouvelle étape partielle commence au sein du traitement de la mise à jour. Le composant gestionnaire assigne au début à l'instance l'identifiant de l'entité cible via entity ([SWS_DM_01898]) et définit l'état initial dans status ([SWS_DM_01899]).
Pendant le déroulement, la progression en pourcentage ainsi que les changements d'état sont continuellement mis à jour dans la structure. Après l'achèvement ou l'interruption de la mise à jour partielle, la structure est transmise ou lue, puis finalement détruite automatiquement lors de la sortie de la portée. Comme la spécification ne prescrit pas de méthodes propres ni de primitives de synchronisation, la structure devrait faire office de pur conteneur de données sans sécurité des threads propre (interprétation). Un accès concurrent par plusieurs threads nécessite donc une synchronisation au niveau de l'application. Question Q-92b3fcc698f7bab8 (ouverte)
Parcours d'utilisation
Le déroulement régulier de la notification de progression s'articule en une succession fixe d'étapes :
Tout d'abord, la logique de mise à jour exécutante instancie un objet de type SubProgress et définit l'identifiant de l'entité concernée dans entity ([SWS_DM_01898]). Simultanément, la valeur initiale de status est définie, par exemple pour signaler le début du traitement ([SWS_DM_01899]). Lors d'étapes continues, la logique écrit périodiquement la progression en pourcentage dans le champ progress ([SWS_DM_01900], AUTOSAR_AP_SWS_Diagnostics §8.58.3.1.3 « progress »). Comme progress est déclaré en tant que ara::core::Optional, le champ reste vide tant que la progression est encore indéterminée. Enfin, la structure est transmise à l'interface centrale SovdSwUpdate afin que les clients SOVD externes puissent interroger l'état ([SWS_DM_01896]).
En cas d'irrégularités ou d'erreurs pendant le traitement d'une sous-entité, le scénario d'erreur de la structure intervient. Si une erreur survient, la valeur contenue dans status bascule vers un état d'erreur ([SWS_DM_01899]). Conformément à [SWS_DM_01901], la variable error ne spécifie le code d'erreur exact que si l'état est en échec (« Specifies the error if status is failed »). Cela constitue un couplage logique contraignant entre status et error : les destinataires de la structure ne doivent évaluer le champ error comme significatif que si status signale effectivement un état en échec ; dans le cas contraire, le contenu reste vraisemblablement ignoré ou représente une valeur par défaut (interprétation). Question Q-3caa7622672dcb8e (ouverte)
Un autre scénario d'erreur concerne les progressions indéterminées : si l'entité exécutante ne peut déterminer aucune valeur en pourcentage concrète ou si le calcul s'interrompt prématurément, le champ optionnel progress reste sans valeur (ara::core::nullopt), ce qui évite que des valeurs numériques non valides soient interprétées à tort comme une indication de pourcentage ([SWS_DM_01900]).
Ce guide est basé sur la spécification AUTOSAR Adaptive Platform Release R25-11 et résume les exigences relatives à la structure ara::diag::SovdSwUpdate::SubProgress.
gemini-3.8-flash-low· 2026-10-13 · Original allemand