Permet à l'application de mettre à disposition des données de calculateur pour les téléversements UDS vers le Diagnostic Management.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : e2e1ae703412ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Permet à l'application de mettre à disposition des données de calculateur pour les téléversements UDS vers le Diagnostic Management.
La classe ara::diag::UploadService sert d'interface de service côté application pour la mise à disposition de données de calculateur destinées aux téléversements de diagnostic externes conformément à UDS [SWS_DM_00797]. Après une activation réussie via Offer(), le gestionnaire traite de manière asynchrone les requêtes successives relatives à l'initiation de l'upload, au transfert de blocs de données et à la fin du transfert [SWS_DM_00802]. L'instance de service non copiable prend alors en charge tant les transferts de données par blocs que l'interruption prématurée via un gestionnaire d'annulation. Le gestionnaire acquitte les requêtes erronées au moyen de codes de retour négatifs UDS au sein des futures de réponse asynchrones.
Contexte
La classe ara::diag::UploadService définit l'interface de service centrale pour les opérations d'upload de diagnostic au sein de l'AUTOSAR Adaptive Platform [SWS_DM_00797]. Elle fait office de gestionnaire côté application pour la lecture et la mise à disposition de données internes au véhicule à des testeurs externes selon la norme de diagnostic UDS (ISO 14229-1) [SWS_DM_00799].
Dans l'architecture système, ara::diag::UploadService interagit pour l'essentiel avec deux partenaires : le client de diagnostic externe (testeur) et le démon de diagnostic côté plateforme Diagnostic Management (DM) [SWS_DM_00799], [SWS_DM_00802]. Le DM reçoit au niveau du protocole les requêtes de service UDS entrantes telles que RequestUpload, TransferData et RequestTransferExit, les valide et transmet les requêtes fonctionnelles au gestionnaire enregistré de l'application [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801]. L'instance de l'application implémente les méthodes virtuelles de l'interface afin de lire et de renvoyer les blocs de données effectifs depuis la mémoire [SWS_DM_00800].
Diagramme de contexte : intégration du service d'upload entre le client de diagnostic, le Diagnostic Management et le gestionnaire applicatif. Sources : [SWS_DM_00797], [SWS_DM_00799], [SWS_DM_00802].
Cycle de vie
Une instance de ara::diag::UploadService est construite en spécifiant un ara::core::InstanceSpecifier ainsi que le comportement de concurrence concurrencyType[SWS_DM_00797]. Le spécificateur associe l'instance à un prototype de port modélisé du type DiagnosticUploadInterface[SWS_DM_00797]. Le constructeur est spécifié comme sûr vis-à-vis des exceptions et thread-safe [SWS_DM_00797]. Afin de garantir une assignation univoque de l'instance de service, les constructeurs de copie et de déplacement ainsi que les opérateurs d'affectation sont explicitement supprimés [SWS_DM_01671], [SWS_DM_01672], [SWS_DM_01673], [SWS_DM_01674].
Après l'instanciation, le service se trouve d'abord à l'état inactif ; le DM ne transmet pas encore de requêtes. Ce n'est que par l'appel explicite de Offer() que la transmission est activée [SWS_DM_00802]. L'acheminement des requêtes peut être à nouveau interrompu à tout moment via StopOffer()[SWS_DM_00803]. Offer() tout comme StopOffer() sont définis comme non thread-safe et nécessitent une synchronisation externe en cas d'appels depuis plusieurs threads [SWS_DM_00802], [SWS_DM_00803].
La destruction s'effectue via le destructeur virtuel ~UploadService(), qui n'est pas non plus thread-safe [SWS_DM_00798]. Avant la libération de l'objet, le service devrait par conséquent être désenregistré en bonne et due forme via StopOffer()[SWS_DM_00803]. Le fait que les méthodes virtuelles de traitement doivent ou non être exécutées de manière intrinsèquement thread-safe est déterminé par le ConcurrencyType (kConcurrent ou kNotConcurrent) configuré lors de la construction [SWS_DM_00797], [SWS_DM_00799].
Parcours d'utilisation
Le déroulement standard d'une session d'upload s'effectue en plusieurs étapes successives :
Mise à disposition du service : l'application initialise le gestionnaire et appelle Offer() pour recevoir les requêtes de diagnostic entrantes du DM [SWS_DM_00802].
Demander l'upload (RequestUpload) : si une requête UDS d'initiation d'upload arrive, le DM appelle la méthode RequestUpload()[SWS_DM_00799]. Le gestionnaire vérifie le format des données, le format d'adressage ainsi que l'adresse mémoire et la longueur (memoryAddressAndSize). La zone mémoire transmise reste valide jusqu'à ce que le ara::core::Future<void> renvoyé soit satisfait ou que l'opération soit annulée [SWS_DM_00799].
Transférer les blocs de données (UploadData) : après une initiation réussie, le testeur envoie des requêtes UDS TransferData. Le DM appelle alors UploadData() de manière répétée [SWS_DM_00800]. L'application lit le bloc de données demandé et le restitue via un ara::core::Future<OperationOutput> ; les octets contenus dans OperationOutput.responseData sont placés dans la réponse positive après le compteur de blocs [SWS_DM_00800]. Interprétation : la limite de tampon numBytesToReturn devrait ici faire office de taille maximale de segment (chunk) pour la mise en tampon interne du DM, de sorte que les zones de mémoire plus étendues soient segmentées séquentiellement au moyen d'appels successifs. Question Q-6ede2e3041d99294 (ouverte)
Terminer le transfert (RequestUploadExit) : pour conclure, le DM appelle RequestUploadExit() et transmet les paramètres de transfert spécifiques au constructeur dans transferRequestParameterRecord[SWS_DM_00801]. Le gestionnaire valide la conclusion et renvoie des paramètres de retour facultatifs dans OperationOutput[SWS_DM_00801].
Désactiver le service : après la conclusion de toutes les transactions d'upload ou lors de l'arrêt du système, l'application met fin à la transmission avec StopOffer()[SWS_DM_00803].
Pendant l'intégralité du transfert de données, le gestionnaire reçoit un objet CancellationHandler. Via celui-ci, l'état d'annulation peut être interrogé activement au moyen de IsCanceled() ou un rappel peut être enregistré via SetNotifier() au cas où le testeur interromprait prématurément le dialogue [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801].
Des états d'erreur peuvent survenir lors de la construction, pendant l'activation ainsi que lors du déroulement effectif des données :
Violations de modèle et de configuration : si la configuration ne correspond pas au modèle ARXML, des violations surviennent lors de l'appel du constructeur [SWS_DM_00797]. En font partie InstanceSpecifierMappingIntegrityViolation (le spécificateur ne référence pas un PortPrototype), PortInterfaceMappingViolation (liaison manquante via DiagnosticServiceGenericMapping), ProcessMappingViolation (aucune concordance avec le processus modélisé) ainsi que InstanceSpecifierAlreadyInUseViolation (utilisation multiple du même spécificateur au sein d'un processus) [SWS_DM_00797].
Activation multiple du service : si Offer() est appelé alors que le service est déjà proposé, l'appel échoue et renvoie le code d'erreur DiagOfferErrc::kAlreadyOffered dans ara::core::Result<void>[SWS_DM_00802].
Réponses d'erreur UDS (Negative Response) : si le gestionnaire ne peut pas traiter fonctionnellement une requête dans RequestUpload(), UploadData() ou RequestUploadExit() (par ex. adresses mémoire non autorisées, erreurs de format ou compteurs de séquence non valides), il le signale en fournissant un code d'erreur issu de DiagUdsNrcErrc dans le Future renvoyé [SWS_DM_00799], [SWS_DM_00800], [SWS_DM_00801]. Le DM génère alors une réponse négative UDS conforme au standard (NRC) à destination de l'appareil de contrôle externe [SWS_DM_00799].
Ce guide se base exclusivement sur la spécification AUTOSAR Adaptive Platform Release R25-11.
This Offer will enable the DM to forward request messages to this handler.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : dce89cbe34efProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation et sémantique
La fonction membre synchrone Offer de la classe ara::diag::UploadService ([SWS_DM_00802]) active le transfert des requêtes de diagnostic par le Diagnostic Management (DM) vers le gestionnaire enregistré. L'appel ne prend aucun paramètre et déclare la sécurité des exceptions noexcept ([SWS_DM_00802]). Le type de retour utilisé est ara::core::Result<void>, qui reflète la mise à disposition réussie ou une erreur survenue ([SWS_DM_00802]).
Gestion des erreurs et concurrence
Codes d'erreur : Si le service a déjà été proposé auparavant, l'exécution échoue avec le code d'erreur DiagOfferErrc::kAlreadyOffered ([SWS_DM_00802]) ; la sémantique de rollback s'applique dans ce cas.
Sécurité des threads : La fonction est explicitement spécifiée comme not thread-safe ([SWS_DM_00802]). Les appels concurrents sur la même instance de service doivent être synchronisés côté application.
Interaction au sein du sous-système de diagnostic
L'opération s'intègre dans le modèle uniforme de mise à disposition des gestionnaires de diagnostic adaptatifs, tel qu'utilisé notamment pour DownloadService ([SWS_DM_00792]) ou GenericUDSService ([SWS_DM_00619]). Tant que la mise à disposition n'a pas eu lieu, le DM ne transfère aucun message de diagnostic entrant vers le gestionnaire (cf. comportements analogues dans [SWS_DM_01525]). Interprétation : l'appel de Offer devrait typiquement intervenir durant la phase d'initialisation de l'application, avant la réception du trafic de diagnostic. Question Q-aba091d233b5e45b (ouverte)
Cette note d'utilisation a été générée automatiquement à partir de la spécification AUTOSAR R25-11.
dataFormatIdentifier et addressAndLengthFormatIdentifier : Identifiants de format UDS pour les données, l'adresse mémoire et les indications de longueur.
memoryAddressAndSize : Un ara::core::Span contenant l'adresse et la taille de la mémoire, dont la validité est garantie jusqu'à la résolution de la promesse ou jusqu'à l'interruption du traitement.
metaInfo : Métainformations relatives à la requête de diagnostic.
cancellationHandler : Sert à interroger l'état d'interruption via cancellationHandler.IsCanceled et à enregistrer des fonctions de notification au moyen de cancellationHandler.SetNotifier.
Le traitement s'effectue de manière asynchrone avec le type de retour ara::core::Future<void>[SWS_DM_00799].
Gestion des erreurs
En cas d'erreur, le ara::core::Future fournit un code d'erreur UDS-NRC approprié conformément à l'ISO 14229-1 via DiagUdsNrcErrc, après quoi un retour négatif est effectué [SWS_DM_00799]. En cas de réponse positive, le Diagnostic Manager signale l'événement de sécurité SEV_UDS_REQUEST_UP_DOWNLOAD_SUCCESSFUL à l'IdsM [SWS_DM_02031], et en cas de réponse négative, l'événement SEV_UDS_REQUEST_UP_DOWNLOAD_FAILED[SWS_DM_02033].
Concurrence et interaction
La fonction est déclarée comme noexcept et sans exception. L'obligation pour la méthode d'être implémentée de manière thread-safe est conditionnelle et est définie via le ConcurrencyType transmis dans le constructeur [SWS_DM_00799].
Après la confirmation réussie de RequestUpload, le transfert effectif des données de téléversement est poursuivi lors des requêtes ultérieures du service UDS 0x36 (TransferData) via UploadData[SWS_DM_00800][SWS_DM_01096].
Cette note d'utilisation a été générée par une intelligence artificielle sur la base de la spécification AUTOSAR Adaptive R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataFormatIdentifier
UDS dataFormat Identifier
addressAndLengthFormatIdentifier
UDS addressAndLengthFormatIdentifier
memoryAddressAndSize
memoryAddress and memorySize part of the request. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
L'interface reçoit les paramètres suivants [SWS_DM_00801] :
transferRequestParameterRecord : Contient des paramètres spécifiques au constructeur pour assister le transfert au format ara::core::Span<const std::uint8_t>. Les données restent valides jusqu'à ce que la promesse correspondante soit tenue ou que le traitement soit interrompu. Interprétation : L'évaluation de ces paramètres devrait principalement servir à des validations spécifiques au constructeur lors de l'achèvement de l'upload. Question Q-d3989837f58761d7 (ouverte)
metaInfo : Transmet des métainformations sur la requête de diagnostic actuelle.
cancellationHandler : Permet d'interroger l'état d'interruption via cancellationHandler.IsCanceled() ou d'enregistrer un rappel de notification au moyen de cancellationHandler.SetNotifier().
Valeurs de retour et gestion des erreurs
L'exécution s'effectue de manière asynchrone et renvoie un ara::core::Future<OperationOutput>[SWS_DM_00801]. En cas de succès, le future est résolu avec une instance de OperationOutput. Les données de responseData qui y sont transmises sont insérées en tant que transferResponseParameterRecord dans la réponse de diagnostic positive après l'ID de service [SWS_DM_00796], [SWS_DM_00801]. En cas d'erreur, le future doit être complété avec un code d'erreur approprié issu de DiagUdsNrcErrc conformément à l'ISO 14229-1 [SWS_DM_00801].
Concurrence et restrictions
La méthode est spécifiée comme noexcept[SWS_DM_00801]. L'exigence relative à la sécurité des threads est conditionnelle : le fait que la fonction doive être exécutée de manière sûre au niveau des threads est déterminé via le ConcurrencyType transmis dans le constructeur de UploadService[SWS_DM_00801].
Cette note d'utilisation est basée sur les spécifications d'AUTOSAR AP SWS Diagnostics R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
transferRequestParameterRecord
This parameter record contains parameter(s), which are required by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.responseData will be placed after SID as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
This StopOffer will disable the forwarding of request messages from DM.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : e7cdc33ba5c7ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La méthode StopOffer() de la classe ara::diag::UploadService ([SWS_DM_00803], déclarée dans #include "ara/diag/upload.h") désactive la transmission des requêtes de diagnostic entrantes issues de Diagnostic Management (DM) vers le service de téléversement. La fonction possède la signature void StopOffer() noexcept;, n'accepte aucun paramètre et ne fournit aucune valeur de retour. L'appel s'effectue de manière synchrone et met immédiatement fin à la transmission des requêtes.
Gestion des erreurs
L'opération est spécifiée comme sûre vis-à-vis des exceptions (exception safe) et déclarée avec l'identifiant noexcept[SWS_DM_00803]. Aucune exception C++ n'est donc levée. Aucun code d'erreur ni message d'erreur spécifique n'est prévu pour cet appel.
Concurrence et restrictions
Conformément à la spécification, StopOffer() n'est pas sûre pour les threads (not thread-safe) [SWS_DM_00803]. L'Adaptive Application appelante doit donc s'assurer par elle-même que les appels sur une même instance ne s'effectuent pas de manière concurrente depuis plusieurs threads sans synchronisation externe. Quant à l'ordre d'appel, la méthode ne devrait typiquement être appelée qu'après une mise à disposition préalable du service, afin de le désenregistrer de manière contrôlée. Question Q-90ce659f307f54ca (ouverte)
Interaction
L'interface s'inscrit dans le modèle de mise à disposition uniforme du diagnostic AUTOSAR Adaptive, qui prévoit pour les instances de service des méthodes distinctes pour l'activation et la désactivation AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 « Monitors ». La méthode constitue le pendant fonctionnel de ara::diag::DownloadService::StopOffer ([SWS_DM_00793]), qui est soumise aux mêmes exigences amont. Des fonctions de désactivation analogues existent en outre pour d'autres composants de diagnostic tels que les routines génériques ([SWS_DM_00558]), les services UDS ([SWS_DM_00620]) ainsi que les interfaces d'authentification ([SWS_DM_01131]).
Cette note d'utilisation a été générée automatiquement sur la base de la spécification AUTOSAR Adaptive R25-11.
numBytesToReturn : spécifie le nombre maximal d'octets que le Diagnostic Manager (DM) peut recevoir pour ce bloc de données en raison de la taille de son tampon interne ([SWS_DM_00800]). Interprétation : l'application devrait limiter strictement la taille du bloc à cette valeur limite. Question Q-89de95e70e1e6223 (ouverte)
metaInfo : fournit des métadonnées relatives à la requête de diagnostic entrante ([SWS_DM_00800]).
cancellationHandler : sert à surveiller les conversations en cours via cancellationHandler.IsCanceled() ainsi qu'à enregistrer des notifications via cancellationHandler.SetNotifier() en cas d'interruption ([SWS_DM_00800]).
Le renvoi s'effectue de manière asynchrone via ara::core::Future<OperationOutput> ([SWS_DM_00800]). En cas de succès, les données utiles fournies dans OperationOutput.responseData ([SWS_DM_00796]) sont placées dans la réponse positive directement après le compteur blockSequenceCounter en tant que transferResponseParameterRecord ([SWS_DM_00800]).
Gestion des erreurs et validation
En cas d'erreur, le future est résolu avec un code d'erreur approprié (NRC) selon l'ISO 14229-1 issu de DiagUdsNrcErrc ([SWS_DM_00800]). En dehors des vérifications de base des NRC selon [SWS_DM_00101] et [SWS_DM_00103], le Diagnostic Manager n'effectue aucune autre validation de service ; toutes les autres vérifications de NRC requises doivent être implémentées par l'application appelée elle-même ([SWS_DM_01096]).
Concurrence et sécurité d'exécution
L'opération est sûre face aux exceptions (exception safe) ([SWS_DM_00800], AUTOSAR_AP_SWS_Diagnostics §8.27.1.1.3.5 « UploadData »). La sécurité vis-à-vis des threads est conditionnelle : la nécessité d'implémenter UploadData de manière sûre vis-à-vis des threads est définie via le ConcurrencyType transmis dans le constructeur de UploadService ([SWS_DM_00800]).
Cette note d'utilisation a été générée automatiquement à partir de la spécification AUTOSAR R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
numBytesToReturn
number of bytes DM accepts (due to its internal buffer) for this chunk.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for a negative response message). Data in OperationOutput.responseData will be placed after block SequenceCounter as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is typed by a pingViolation DiagnosticUploadInterface needs to be referenced by a DiagnosticServiceGenericMapping. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticUploadInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original allemand