Figure 17: UML sequence diagram for asynchronous call with callback
cb39b272e9de20bd136afa67a422f99e652ac8574a572450e936d4aea0c504b2
1. Diagrammtyp & Architektur-Kontext
UML-Sequenzdiagramm (sd Asychronous Call w ith Callback) im Kontext der AUTOSAR-Basissoftware (NVRAM Manager / NvM). Das Diagramm veranschaulicht das Zusammenspiel zwischen einer Software-Komponente (SW-C), dem NVRAM Manager (Nv M::Nv M) und dem Scheduler (Betriebssystem-Task oder zyklischer Aufruf) bei der asynchronen Abarbeitung eines Schreibauftrags mit anschließender Benachrichtigung über einen Callback.
2. Komponenten, Entitäten & Schnittstellen
Beteiligte Lebenslinien:
Scheduler (OS task or cyclic call): Triggerquelle für die zyklische Ausführung der Hintergrundaufgaben.SW Component(from Interaction Views): Aufrufer der NVRAM-Dienste und Empfänger der Callback-Benachrichtigung.Nv M::Nv M: Das Basissoftwaremodul NVRAM Manager.
Schnittstellen und Operationen:
Std_ReturnType:= NvM_WriteBlock(BlockId, NvM_SrcPtr)/ AntwortNvM_WriteBlock: Asynchroner Aufruf zum Schreiben eines NVRAM-Blocks.NvM_MainFunction/ AntwortNvM_MainFunction: Zyklische Verarbeitungsfunktion des NvM, aufgerufen durch den Scheduler.JobEndNotification/ AntwortJobEndNotification: Rückruf zur Signalisierung des Auftragsendes an die SW-Komponente.NvM_RequestResultType:= NvM_GetErrorStatus(BlockId, RequestResultPtr)/ AntwortNvM_GetErrorStatus: Synchrone Status- und Ergebnisabfrage des NVRAM-Blocks.
3. Dynamisches Verhalten & Sequenzablauf
- Die
SW Componentinitiiert den Schreibauftrag durch Aufruf vonNvM_WriteBlock(BlockId, NvM_SrcPtr). Der NvM prüft und speichert den Auftrag, hinterlegt die Callback-Adresse aus dem NVRAM-Block-Deskriptor, setzt das Auftragsergebnis aufNVM_REQ_PENDINGund kehrt mitStd_ReturnTypezurück. - In der Schleife
loop Job processingmit der Bedingung[repeat until writing of block is completed]ruft derSchedulerwiederholtNvM_MainFunctionauf. Die Daten werden schrittweise asynchron ins NVRAM geschrieben (z. B. 1 Byte alle 10 ms). Während des Schreibvorgangs verbleibt das Ergebnis aufNVM_REQ_PENDING. - Nach Beendigung des eigentlichen Schreibvorgangs führt ein weiterer Aufruf von
NvM_MainFunctiondurch den Scheduler dazu, dass der NvM dieJobEndNotificationan dieSW Componentsendet. - Bei erfolgreichem Abschluss wird der Auftragsstatus im NvM auf
NVM_REQ_OKgesetzt. - Die
SW Componentruft abschließend synchronNvM_GetErrorStatus(BlockId, RequestResultPtr)auf, um das finale Ergebnis abzufragen.
4. Normative Relevanz & Entwickler-Hinweise
Das Diagramm verdeutlicht die Trennung von Auftragsinitiierung (nicht-blockierend) und eigentlicher Ein-/Ausgabe im Kontext von NvM_MainFunction. Die SW-Komponente muss darauf vorbereitet sein, dass das Ergebnis unmittelbar nach dem API-Aufruf NVM_REQ_PENDING ist und der Abschluss asynchron über die konfigurierte Block-Ende-Benachrichtigung (JobEndNotification) gemeldet wird. Vor dem Abruf des Fehlerstatus via NvM_GetErrorStatus muss der Abschluss des Auftrags abgewartet werden, sofern nicht gepollt wird.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.