AUTOSAR_EXP_ARAComAPI
FIG-cc6292a9bb6c8655
962 × 1043 px
1 Release(s)
Figure 6.27: UpdateRate Class
SHA-256 Inhalts-Fingerabdruck:
cc6292a9bb6c86556943337d5685e711e215ee629ae5a7f9098bae147940bf53
✦
KI-generierte Bildanalyse & technische Beschreibung
Modell: gemini-3.8-flash (via agy) · Rezept figure-series@1 · erstellt am 2026-10-08
1. Diagrammtyp & Architektur-Kontext
- Diagrammtyp: C++-Klassenschnittstellen-Listing / API-Signaturdeklaration (generierter Skeleton-Code).
- Architektur-Kontext: AUTOSAR Adaptive Platform (Release R17-03 / AP R1.1.0), Kommunikations-Management (
ara::com). - Funktionale Einordnung: Dargestellt ist die Skeleton-/Server-seitige C++-Klassenrepräsentation eines AUTOSAR-Service-Interface-Fields namens
UpdateRate. Ein Field inara::comkombiniert bis zu drei Kommunikationsmuster auf demselben Datum: Getter (Request/Response), Setter (Request/Response) und Notifier (Publish/Subscribe-Event).
2. Komponenten, Entitäten & Schnittstellen
- Klasse
UpdateRate: Generierte C++-Field-Klasse auf Server- bzw. Skeleton-Ebene. - Typ-Alias:
using FieldType = uint32_t;: Stark typisierter Payload-Datentyp des Fields.
- Elementfunktionen (Schnittstellenverträge):
void Update(const FieldType& data):- Entspricht semantisch der
Send()-Methode einesara::com-Events. - Löst das Versenden einer Benachrichtigung an alle subscribierten Clients aus (sofern Notifier modelliert ist).
- Initialisiert den stack-internen Cache des Felds für autonome Getter-Antworten.
- Entspricht semantisch der
void RegisterGetHandler(std::function<ara::com::Future<FieldType>()> getHandler):- Registriert eine Callback-Funktion zur Bearbeitung eingehender Get-Anfragen.
- Rückgabetyp des Handlers ist ein asynchrones
ara::com::Future<FieldType>.
void RegisterSetHandler(std::function<ara::com::Future<FieldType>(const FieldType& data)> setHandler):- Registriert den Setter-Callback zur Validierung und Übernahme neuer Werte bei Client-Set-Anfragen.
- Rückgabetyp ist
ara::com::Future<FieldType>; der darin gesetzte finale Wert wird dem anfragenden Client quittiert und zeitgleich per Notifier gebroadcastet.
3. Dynamisches Verhalten & Sequenzablauf
A. Initialisierungs- & Startphase
- Instanziierung: Das Service-Skeleton wird durch die Applikation erzeugt.
- Handler-Registrierung:
- Falls das Field Setter-Zugriff erlaubt, muss
RegisterSetHandler()aufgerufen werden. RegisterGetHandler()ist optional.
- Falls das Field Setter-Zugriff erlaubt, muss
- Initiale Wertbelegung:
- Bedingung ohne Getter-Handler: Falls kein
getHandlerregistriert wird, muss die Applikation mindestens einmal vorOfferService()die MethodeUpdate()aufrufen, um den Initialwert inara::comabzulegen.
- Bedingung ohne Getter-Handler: Falls kein
B. Laufzeit-Trigger & Signalpfade
- Eingehender Get-Request:
- Mit registriertem GetHandler:
ara::comruft den Callback asynchron auf; der gelieferteara::com::Future-Wert wird serialisiert und an den Client übermittelt. - Ohne GetHandler:
ara::combedient den Request autonom ohne Applikations-Interaktion direkt aus dem durchUpdate()gecachten Datenbestand.
- Mit registriertem GetHandler:
- Eingehender Set-Request:
- Client sendet neuen Wert.
ara::comruft den registriertensetHandler(data)auf.- Applikation validiert die Daten, aktualisiert interne Zustände und füllt das
ara::com::Promise/ara::com::Future. - Nach Auflösung des Futures sendet
ara::comdie Antwort an den Requester und verteilt den neuen Wert automatisch als Notifier-Event an alle Abonnenten.
- Autonomes Update (Event-Pfad):
- Die Server-Applikation ruft aktiv
Update(data)auf, wenn sich interne Sensordaten oder Zustände ändern;ara::comversendet die Notification-PDU/SOME/IP-Event-Message an alle aktiven Subscriber.
- Die Server-Applikation ruft aktiv
4. Normative Relevanz & Entwickler-Hinweise
- Zwingende Reihenfolge / Deadlock- & Fehlervermeidung:
- Unterbleibt sowohl die Registrierung eines
GetHandlerals auch der Initialaufruf vonUpdate()vor dem Aufruf vonOfferService(), schlagen Client-Get-Requests fehl oder verhalten sich undefiniert.
- Unterbleibt sowohl die Registrierung eines
- Vermeidung redundanter Notifications:
- Innerhalb des
setHandlerdarf kein separater Aufruf vonUpdate()erfolgen, daara::comden Rückgabewert des Setters bereits normativ an das Notifier-Event weiterleitet. Ein zusätzlicherUpdate()-Aufruf führt zu doppelten Netzwerk-Bursts.
- Innerhalb des
- Asynchronitäts- und Threading-Modell:
- Die Callbacks laufen typischerweise auf Worker- oder Dispatch-Threads der Middleware-Laufzeitumgebung. Alle Datenzugriffe im
getHandlerbzw.setHandlermüssen threadsicher gekapselt sein. - Länger dauernde Berechnungen dürfen nicht synchron im Handler blockieren, sondern müssen über
ara::com::Promise/ara::com::Futureentkoppelt werden, um den Kommunikations-Threadpool nicht zu erschöpfen.
- Die Callbacks laufen typischerweise auf Worker- oder Dispatch-Threads der Middleware-Laufzeitumgebung. Alle Datenzugriffe im
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.