Stelt applicaties in staat bestands- en mapinhoud actief beschikbaar te stellen bij UDS-leesverzoeken.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 1ed24b3e3197HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Stelt applicaties in staat bestands- en mapinhoud actief beschikbaar te stellen bij UDS-leesverzoeken.
De klasse ara::diag::DataTransferReadByPushHandler dient als basisinterface voor UDS-leesoverdrachten waarbij de applicatie bestandsinhoud actief verpakt en beschikbaar stelt [SWS_DM_01515]. Gegevensblokken worden sequentieel via Read() overgedragen en de overdrachtssessie wordt vervolgens via ExitRead() ordelijk afgesloten [SWS_DM_01523]. Elke handler is strikt gebonden aan precies één overdrachtssessie, waardoor kopieeroperaties zijn geblokkeerd. Als essentiële levenscyclusvoorwaarde mag de instantie in geen geval vóór de aanroep van ExitRead() worden vernietigd [SWS_DM_01519].
Context
De klasse ara::diag::DataTransferReadByPushHandler fungeert als basis- en interfaceklasse voor diagnose-gegevensoverdrachten die worden geïnitieerd door verzoeken zoals RequestReadFile of RequestReadDirectory[SWS_DM_01515]. Het onderliggende overdrachtspatroon is gebaseerd op het push-principe: de bestands- of mapgegevens worden door de specifieke applicatie-implementatie actief verpakt en overgedragen aan het diagnosebeheer (Diagnostic Management, DM) AUTOSAR_AP_SWS_Diagnostics §8.10.3 “Class: DataTransferReadByPushHandler”. De wisselwerking vindt plaats tussen de externe UDS-client, de platformcomponent ara::diag en de concrete handler-implementatie van de applicatie.
Aangezien DataTransferReadByPushHandler is ontworpen als abstracte basisklasse, heeft de parameterloze constructor een beschermde zichtbaarheid (protected) [SWS_DM_01516]. De instantiatie vindt plaats in de context van een afgeleide klasse binnen de applicatie. Instanties zijn strikt gebonden aan precies één bestandsoverdrachtssessie („one way usage”); als gevolg daarvan zijn de kopieerconstructor [SWS_DM_01518] en de kopieertoekenningsoperator [SWS_DM_01521] expliciet verwijderd (=delete). Een overdracht van eigendom is mogelijk via move-operaties, aangezien move-constructor [SWS_DM_01517] en move-toekenning [SWS_DM_01520] als standaardimplementaties aanwezig zijn en als uitzonderingsveilig (noexcept) zijn gedeclareerd.
Voor de vernietiging van de handler definieert de specificatie een strikte preconditie: een instantie mag in geen geval worden vernietigd voordat de sessie via de aanroep van ExitRead() is afgesloten [SWS_DM_01519], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.1.2 “Destructor”. Wat betreft gelijktijdigheid zijn de virtuele methoden van de klasse gespecificeerd als niet-thread-safe („not thread-safe”) [SWS_DM_01522], [SWS_DM_01523], waardoor gelijktijdige toegangen door het platform moeten worden gesynchroniseerd of sequentieel moeten worden uitgevoerd.
Gebruikspad
Het operationele verloop is onderverdeeld in de repetitieve beschikbaarstelling van gegevensfragmenten en de ordelijke sessie-afsluiting. Na initiatie van de leesbewerking roept ara::diag herhaaldelijk de methode Read() aan [SWS_DM_01522], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.2 “Read”. Daarbij geeft het framework een richtwaarde mee voor de aanbevolen retourgrootte in bytes (recommended_number_bytes_to_return) om een optimale doorvoer te bereiken, evenals de verzoekcontext (MetaInfo) en een CancellationHandler. De applicatie genereert het gegevenspakket en draagt het eigendom daarvan via een ara::core::Future<ara::core::Vector<ara::core::Byte>> over aan het Diagnostic Management, dat de nuttige gegevens achter de bloksequenceteller in het UDS-antwoordbericht invoegt [SWS_DM_01522].
Zodra alle gegevensblokken zijn overgedragen of de sessie moet worden beëindigd, roept ara::diag de methode ExitRead() aan [SWS_DM_01523], AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.1 “ExitRead”. Naast de beëindigingsreden (DataTransferExitType exit_type) worden fabrikantspecifieke verzoekparameters via transfer_request_parameter_record meegegeven. De levensduur van deze parameter-span is er bindend aan gekoppeld totdat de bijbehorende promise is vervuld of de verwerking wordt afgebroken [SWS_DM_01523]. Na teruggave van de definitieve antwoordparameterset via de Future geldt de overdracht als beëindigd, waarmee is voldaan aan de voorwaarde voor het veilig vernietigen van het handler-object [SWS_DM_01519].
Sequentiediagram: typische interactievolgorde tussen Diagnostic Management en handler bij leesoverdracht en overdrachtsafsluiting. Bronnen: [SWS_DM_01522], [SWS_DM_01523], [SWS_DM_01519]
Foutscenario's
Treedt er tijdens het samenstellen van gegevensblokken of bij de sessie-afsluiting een fout op, dan wordt deze asynchroon gemeld via de desbetreffende ara::core::Future. In plaats van een positieve antwoordstructuur wordt de future beschikbaar gesteld met een foutcode (ara::core::ErrorCode) uit het bereik DiagUdsNrcErrc, die overeenkomt met een passende negatieve responscode (Negative Response Code, NRC) conform ISO 14229-1 [SWS_DM_01522], [SWS_DM_01523].
Breekt de diagnosedialoog af of verzendt de client een afbreekverzoek, dan treedt de meegegeven CancellationHandler in werking. De implementatie kan de actuele afbreekstatus opvragen via cancellation_handler.IsCanceled() of via cancellation_handler.SetNotifier() een callback-functie registreren die wordt geactiveerd bij het afbreken van de conversatie [SWS_DM_01522], [SWS_DM_01523]. De vervulling of het afbreken van de promise markeert tevens het einde van de geldigheid van de parameterset in ExitRead()[SWS_DM_01523].
Deze handleiding is gebaseerd op de specificatie AUTOSAR Adaptive Platform Release R25-11.
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 its ownership is passed as a result to ara::diag.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: eefe02828ffeHerkomst
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De virtuele methode ExitRead beëindigt een lopende data-overdrachtssessie in de context van de diagnosehandler [SWS_DM_01523]. De functie werkt asynchroon en geeft een ara::core::Future met de antwoorddata als bytevector terug SWS Diagnostics §8.10.3.1.3.1 “ExitRead”.
Parameters en aanroepcontext
exit_type (DataTransferExitType): Specificeert de reden voor het beëindigen van de overdracht [SWS_DM_01523].
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): Bevat fabrikantspecifieke parameters ter ondersteuning van de datatransfer. De onderliggende data moeten geldig blijven totdat het bijbehorende promise is voltooid of de verwerking is geannuleerd [SWS_DM_01523].
meta_info (MetaInfo const &): Draagt meta-informatie van het diagnoseverzoek over [SWS_DM_01523].
cancellation_handler (CancellationHandler): Dient voor het controleren van de annuleringsstatus middels IsCanceled() of voor het registreren van een callback-functie via SetNotifier() in het geval van een sessie-annulering [SWS_DM_01523].
Foutafhandeling en retourwaarden
In het geval van succes stelt de Future de uitvoerdata beschikbaar, die in het positieve UDS-antwoord na de SID als transferResponseParameterRecord worden geplaatst [SWS_DM_01523]. Bij een mislukking wordt de Future voltooid met een passende Negative Response Code (NRC) uit DiagUdsNrcErrc conform ISO 14229-1 [SWS_DM_01523].
Gelijktijdigheid en levenscyclus
De methode is uitzonderingsveilig (exception safe), maar expliciet niet-thread-safe (not thread-safe) gespecificeerd [SWS_DM_01523]. Met betrekking tot de levenscyclus van objecten geldt een bindende volgordevoorwaarde: een instantie van DataTransferReadByPushHandler mag onder geen beding vóór de aanroep van ExitRead() worden vernietigd [SWS_DM_01519]. Analoge voorschriften gelden voor verwante handler-klassen in de datatransfer [SWS_DM_01510][SWS_DM_01499].
Deze tekst is gegenereerd door een AI op basis van de specificatie AUTOSAR Adaptive R25-11.
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 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 its ownership is passed as a result to ara::diag.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: fcd7efa833dfHerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
De zuiver virtuele methode Read van de klasse ara::diag::DataTransferReadByPushHandler dient voor het asynchroon uitlezen van datablokken voor bestands- of directory-informatie uit de applicatie [SWS_DM_01522]. De applicatie stelt de desbetreffende data-chunk samen en draagt het eigendom daarvan als ara::core::Vector<ara::core::Byte> over aan de diagnosemodule.
Gebruik en aanroepcontext
De aanroep wordt uitgevoerd door de Diagnostic Server voor het beschikbaar stellen van antwoorddata voor UDS-clients via het headerbestand ara/diag/data_transfer.h[SWS_DM_01522]. De methode verwacht drie parameters:
recommended_number_bytes_to_return: Het aanbevolen aantal bytes voor een optimale doorvoer. Deze waarde is vermoedelijk gebaseerd op de interne buffer- of PDU-grootte van Diagnostic Management. Vraag Q-1a8c1270b192b96f (open)
meta_info: Aanvullende meta-informatie van het inkomende diagnoseverzoek (MetaInfo).
cancellation_handler: Maakt het opvragen van de annuleringsstatus via cancellation_handler.IsCanceled() mogelijk of het registreren van een melding middels cancellation_handler.SetNotifier() bij verbroken verbindingen.
Als retourwaarde dient een ara::core::Future<ara::core::Vector<ara::core::Byte>>. Bij succesvolle verwerking worden de data als transferResponseParameterRecord achter de sequentieteller in het positieve antwoordbericht ingebed [SWS_DM_01522].
Foutafhandeling en gelijktijdigheid
Als de verwerking mislukt, wordt het future voltooid met een foutcode uit DiagUdsNrcErrc, die een passende NRC conform ISO 14229-1 representeert [SWS_DM_01522]. Als de interface door de dienst nog niet of niet meer middels offer() wordt aangeboden, beantwoordt de Diagnostic Manager het verzoek met NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. De methode is gespecificeerd als uitzonderingsveilig (exception safe), maar als niet-thread-safe (not thread-safe) [SWS_DM_01522], waardoor gelijktijdige aanroepen aan de applicatiezijde moeten worden gesynchroniseerd.
Samenspel
Het push-principe van deze interface vormt een aanvulling op alternatieve leesmechanismen van de diagnosemodule: de pull-methode via ara::diag::DataTransferReadByPullHandler::Read[SWS_DM_01513] met een vooraf gedefinieerd geheugengebied en het beschikbaar stellen van een gedeeld geheugengebied middels ReleaseHandler[SWS_DM_01504].
The recommended number of bytes to send back to DM in order to
bytes_to_return
get optimum data throughput.
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 ReadPushOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for a negative response message). Data in ReadPushOutput.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.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel