Stelt de diagnose-runtime-omgeving in staat om stapsgewijs bestands- en mapgegevens op te halen uit een applicatie.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: a81aee002281HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Stelt de diagnose-runtime-omgeving in staat om stapsgewijs bestands- en mapgegevens op te halen uit een applicatie.
De klasse ara::diag::DataTransferReadByPullHandler dient voor het beschikbaar stellen van bestands- of mapgegevens die door de diagnoselaag AraDiag in het kader van een UDS-leesoperatie actief worden opgehaald uit de applicatie ([SWS_DM_01506]). Het verloop omvat het stapsgewijs ophalen van gegevens via Read() tot de definitieve sessie-afsluiting via ExitRead(). Als strikte levenscyclusvoorwaarde mag een handler-instantie, die aan precies één afzonderlijke overdrachtssessie is toegewezen, in geen geval vóór de aanroep van ExitRead() worden vernietigd ([SWS_DM_01510]).
Context
De klasse ara::diag::DataTransferReadByPullHandler ([SWS_DM_01506], AUTOSAR_AP_SWS_Diagnostics §8.10.2 “Class: DataTransferReadByPullHandler”) handelt gegevensoverdrachten af die zijn geïnitieerd door diagnoseverzoeken voor het lezen van bestanden of mappen (zoals RequestReadFile of RequestReadDirectory). De architectuur is gebaseerd op een pull-methode, waarbij de diagnoselaag AraDiag de over te dragen gegevens actief opvraagt („pulled”) uit de implementatie.
Bij de interactie zijn drie componenten betrokken: de externe UDS-client (diagnosetester), het diagnosesubsysteem AraDiag en de applicatiespecifieke handler-implementatie. De externe client verzendt leesverzoeken, waarna AraDiag de methoden van de handler aanroept om stapsgewijs gegevenschunks beschikbaar te stellen en naar de UDS-client te verzenden ([SWS_DM_01513]).
Levenscyclus
De levenscyclus van een handler-instantie is exclusief gebonden aan een afzonderlijke bestandsoverdrachtssessie. De standaardconstructor is als protected gedeclareerd ([SWS_DM_01507]). Interpretatie: de concrete applicatie zal daarom vermoedelijk een afgeleide subklasse implementeren en instantiëren. Vraag Q-cb78bc4a1d40968b (open)
Kopieeroperaties zijn volledig gedeactiveerd: de kopieerconstructor ([SWS_DM_01509]) en de kopieertoekenningsoperator ([SWS_DM_01512]) zijn als verwijderd (=delete) gespecificeerd, aangezien handlers bedoeld zijn voor eenmalig gebruik binnen een sessie („only one way usage i.e. per single file transfer session”). Verplaatsingsoperaties (move-constructor en move-toekenning) zijn daarentegen gedefinieerd als standaardimplementatie en gedeclareerd als noexcept ([SWS_DM_01508], [SWS_DM_01511], AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.1.1 “Move Constructor”).
Voor de vrijgave geldt een strikte preconditie: een instantie van de klasse mag in geen geval worden vernietigd voordat de methode ExitRead() is aangeroepen ([SWS_DM_01510], AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.1.2 “Destructor”). Wat betreft gelijktijdigheid zijn de interfacemethoden Read() en ExitRead() gedefinieerd als niet-thread-safe („not thread-safe”), maar wel uitzonderingsveilig (noexcept) ([SWS_DM_01513], [SWS_DM_01514]).
Gebruikspad
Het reguliere verloop van het ophalen van gegevens is onderverdeeld in de volgende stappen:
Initialisatie: de applicatie instantieert de afgeleide handler-klasse voor de aanstaande overdrachtssessie.
Gegevens ophalen: voor het beschikbaar stellen van de gegevensblokken roept AraDiag de methode Read() aan ([SWS_DM_01513], AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.3.2 “Read”). De applicatie ontvangt een geheugenweergave response_data (van het type ara::core::Span<const ara::core::Byte>) op een door AraDiag vooraf gealloceerde buffer, vult deze met de volgende bestandsinhoud en voltooit de ara::core::Future<std::uint32_t> met het geschreven aantal bytes. AraDiag voegt deze gegevens achter de bloksequenceteller (blockSequenceCounter) in als transferResponseParameterRecord in het positieve UDS-antwoord ([SWS_DM_01513]). Deze stap wordt herhaald voor volgende chunks.
Sessie-afsluiting: voor het regulier beëindigen van de overdracht roept AraDiagExitRead() aan ([SWS_DM_01514], AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.3.1 “ExitRead”). Meegegeven worden de beëindigingsreden exit_type, fabrikantspecifieke parameters (transfer_request_parameter_record), meta_info en een cancellation_handler. De implementatie bevestigt dit via een ara::core::Future<ara::core::Vector<ara::core::Byte>>, waarvan de retourwaarden achter de SID in het positieve antwoord worden verzonden ([SWS_DM_01514]).
Vrijgave: pas nadat de aanroep van ExitRead() heeft plaatsgevonden, mag het handler-object worden vernietigd ([SWS_DM_01510]).
Sequentiediagram: typisch verloop van het ophalen van gegevens via de pull-methode via AraDiag. Bronnen: [SWS_DM_01513], [SWS_DM_01514]
Foutscenario's
Treden er bij de gegevensvoorbereiding of bij de afsluiting fouten op, dan meldt de applicatie dit via de geretourneerde Future door deze beschikbaar te stellen met een UDS-foutcode (DiagUdsNrcErrc conform ISO 14229-1) ([SWS_DM_01513], [SWS_DM_01514]). AraDiag genereert vervolgens het bijbehorende negatieve UDS-antwoord (NRC) aan de tester.
Voor voortijdig afbreken wordt aan beide methoden een CancellationHandler meegegeven ([SWS_DM_01513], [SWS_DM_01514]). De applicatie kan via cancellation_handler.IsCanceled() controleren of de conversatie is afgebroken, of via cancellation_handler.SetNotifier() een callback-functie registreren. De beschikbaar gestelde buffers (response_data en transfer_request_parameter_record) blijven geldig tot de vervulling van de promise respectievelijk tot het afbreken via de handler.
Wordt de instantie vóór de aanroep van ExitRead() vernietigd, dan is er sprake van een schending van het specificatievoorschrift ([SWS_DM_01510]), wat kan leiden tot onvolledige overdrachtssessies en ongedefinieerde systeemtoestanden.
Deze klassehandleiding is gebaseerd op de specificatie AUTOSAR Adaptive R25-11 en vat de vereisten voor de interface ara::diag::DataTransferReadByPullHandler samen.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and copied into the provided by ara::diag Span with up to the requested Span size.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 7a822a7b2a3dHerkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De zuiver virtuele methode ExitRead beëindigt een lopende gegevensoverdrachtsessie in het kader van ara::diag::DataTransferReadByPullHandler[SWS_DM_01514] (AUTOSAR_AP_SWS_Diagnostics §8.10.2.1.3.1 “ExitRead”). Zij neemt als parameters de beëindigingsreden exit_type (type DataTransferExitType), voertuigfabrikantspecifieke parameters in transfer_request_parameter_record (als ara::core::Span<const ara::core::Byte>), de verzoekcontext meta_info evenals een cancellation_handler in ontvangst. De parameter transfer_request_parameter_record blijft geldig totdat de bijbehorende Promise is vervuld of de uitvoering via de CancellationHandler wordt afgebroken [SWS_DM_01514].
De aanroep geschiedt asynchroon en retourneert een ara::core::Future<ara::core::Vector<ara::core::Byte>>[SWS_DM_01514]:
In het geval van succes wordt de Future voor een positief antwoordbericht beschikbaar gesteld; de gegevens uit OperationOutput.response_data worden daarbij als transferResponseParameterRecord na de service-ID geplaatst.
In het geval van een fout wordt de Future vervuld met een UDS-foutcode (NRC) conform ISO 14229-1 uit DiagUdsNrcErrc voor een negatief antwoordbericht.
De functie is gedeclareerd als noexcept en uitzonderingsveilig (exception safe), echter niet thread-safe (not thread-safe) [SWS_DM_01514]. Via de cancellation_handler kan met behulp van cancellation_handler.IsCanceled() de annuleringsstatus worden opgevraagd of kan via cancellation_handler.SetNotifier() een notificatiefunctie voor het afbreken van de conversatie worden geregistreerd [SWS_DM_01514].
Wat betreft de volgorde mag een instantie van DataTransferReadByPullHandler in geen geval worden vernietigd voordat ExitRead() is aangeroepen [SWS_DM_01510]. Overeenkomstige beëindigingsfuncties en destructorvoorwaarden bestaan parallel voor ara::diag::DataTransferReadSharedDataHandler::ExitRead[SWS_DM_01505] ([SWS_DM_01499]) en ara::diag::DataTransferReadByPushHandler::ExitRead[SWS_DM_01523] ([SWS_DM_01519]).
Deze tekst is opgesteld door een AI; de specificatie is bindend.
This parameter record contains parameter(s), which are required
parameter_record
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.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). 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 UDS ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.response_data 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.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and copied into the provided by ara::diag Span with up to the requested Span size.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 104f857aa59eHerkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Gebruik en aanroepsemantiek
De methode Read van de klasse ara::diag::DataTransferReadByPullHandler dient voor het uitlezen van datablokken door de applicatie in het kader van de UDS-datatransfer [SWS_DM_01513]. De applicatie stelt het eerste of volgende bestands- of directory-inhoudsblok samen en kopieert dit naar de door ara::diag overgedragen buffer response_data (type ara::core::Span<const ara::core::Byte>) tot maximaal de grootte van de span.
De aanroep vindt asynchroon plaats en geeft een ara::core::Future<std::uint32_t> terug [SWS_DM_01513]. In het geval van succes wordt het future voltooid met het daadwerkelijk geleverde aantal bytes; deze data worden in het positieve UDS-antwoord na het blockSequenceCounter als transferResponseParameterRecord geplaatst. Via de parameter cancellation_handler kan de applicatie middels IsCanceled() de annuleringsstatus opvragen of via SetNotifier() een meldingsfunctie voor een annulering registreren.
Foutafhandeling en randvoorwaarden
In het geval van een fout wordt het future afgesloten met een toepasselijke UDS-NRC uit DiagUdsNrcErrc conform ISO 14229-1 [SWS_DM_01513]. Als een interface niet of niet meer middels offer() beschikbaar is gesteld, antwoordt de DM met NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257].
Gelijktijdigheid en wisselwerking
De interface is gespecificeerd als niet-thread-safe (not thread-safe), maar uitzonderingsveilig (exception safe) [SWS_DM_01513]. Het geheugengebied van response_data blijft slechts geldig totdat het bijbehorende promise is voltooid of de bewerking wordt geannuleerd. Als alternatief voor het pull-patroon bestaan voor de datatransfer de push-methode via DataTransferReadByPushHandler::Read[SWS_DM_01522] en de overdracht met gedeeld eigendom via DataTransferReadSharedOwnershipHandler::Read[SWS_DM_01504].
Deze gebruiksinstructie is geautomatiseerd gegenereerd op basis van de specificatiedocumenten van AUTOSAR Adaptive.
The view over a pre-allocated by AraDiag memory to write in this data chunk. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to actual amount of data provided in the Span (for a positive response message) or readied with UDS ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in response_data will be placed after blockSequenceCounter 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.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel