DEENESPTFRRUARHIKOZHNL
AUTOSAR_EXP_ARAComAPI FIG-7d2ba026559bfb62 962 × 1042 px 1 Release(s)

Figure 6.19: UpdateRate Class

SHA-256 Inhalts-Fingerabdruck: 7d2ba026559bfb622b5a0609bc4befaa197b16c4611d73ae19e47645be53206f
✦ KI-generierte Bildanalyse & technische Beschreibung Modell: gemini-3.8-flash (via agy) · Rezept figure-description@2 · erstellt am 2026-10-07

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 in ara::com kombiniert 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 eines ara::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.
    • 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
  1. Instanziierung: Das Service-Skeleton wird durch die Applikation erzeugt.
  2. Handler-Registrierung:
    • Falls das Field Setter-Zugriff erlaubt, muss RegisterSetHandler() aufgerufen werden.
    • RegisterGetHandler() ist optional.
  3. Initiale Wertbelegung:
    • Bedingung ohne Getter-Handler: Falls kein getHandler registriert wird, muss die Applikation mindestens einmal vor OfferService() die Methode Update() aufrufen, um den Initialwert in ara::com abzulegen.
B. Laufzeit-Trigger & Signalpfade
  • Eingehender Get-Request:
    • Mit registriertem GetHandler: ara::com ruft den Callback asynchron auf; der gelieferte ara::com::Future-Wert wird serialisiert und an den Client übermittelt.
    • Ohne GetHandler: ara::com bedient den Request autonom ohne Applikations-Interaktion direkt aus dem durch Update() gecachten Datenbestand.
  • Eingehender Set-Request:
    1. Client sendet neuen Wert.
    2. ara::com ruft den registrierten setHandler(data) auf.
    3. Applikation validiert die Daten, aktualisiert interne Zustände und füllt das ara::com::Promise/ara::com::Future.
    4. Nach Auflösung des Futures sendet ara::com die 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::com versendet die Notification-PDU/SOME/IP-Event-Message an alle aktiven Subscriber.

4. Normative Relevanz & Entwickler-Hinweise

  • Zwingende Reihenfolge / Deadlock- & Fehlervermeidung:
    • Unterbleibt sowohl die Registrierung eines GetHandler als auch der Initialaufruf von Update() vor dem Aufruf von OfferService(), schlagen Client-Get-Requests fehl oder verhalten sich undefiniert.
  • Vermeidung redundanter Notifications:
    • Innerhalb des setHandler darf kein separater Aufruf von Update() erfolgen, da ara::com den Rückgabewert des Setters bereits normativ an das Notifier-Event weiterleitet. Ein zusätzlicher Update()-Aufruf führt zu doppelten Netzwerk-Bursts.
  • Asynchronitäts- und Threading-Modell:
    • Die Callbacks laufen typischerweise auf Worker- oder Dispatch-Threads der Middleware-Laufzeitumgebung. Alle Datenzugriffe im getHandler bzw. setHandler müssen threadsicher gekapselt sein.
    • Länger dauernde Berechnungen dürfen nicht synchron im Handler blockieren, sondern müssen über ara::com::Promise / ara::com::Future entkoppelt werden, um den Kommunikations-Threadpool nicht zu erschöpfen.

Versionsvergleich KI-generiert · gemini-3.8-flash (via agy)

R17-03_R1.1.0 → R17-10_R1.2.0 redaktionell Nachfolger: FIG-5b8a074ebf2cd80e
  • Klassenkopf und Typdeklaration: Zeilen 1 bis 5 (class UpdateRate {, public:, using FieldType = uint32_t;) sind oben abgeschnitten bzw. fehlen im Bildausschnitt.

Zugeordnete Anforderungen

Diese Angaben zeigt der Versions-Explorer.

Aus dem Dokument extrahierter Text & Kontext

Beschriftungen im Schaubild:

1 class UpdateRate { | 2 public: | 3 | 4 using FieldType = uint32_t; | 5 | 6 /** | 7 * Update equals the send method of the event. This triggers the transmission of the notify (if configured) to the | 8 * subscribed clients. | 9 * | 10 * In case of a configured Getter, this has to be called at least once to set the initial value. | 11 */ | 12 void Update(const FieldType& data); | 13 /** | 14 * Registering a GetHandler is optional. If registered the function is called whenever a get request is received. | 15 * | 16 * If no Getter is registered ara::com is responsible for responding to the request using the last value set by update. | 17 * This implicitly requires at least one call to update after initialization of the Service, before the service is offered. | 18 * This is up to the implementer of the service. | 19 * | 20 * The get handler shall return a future. | 21 */ | 22 void RegisterGetHandler(std::function<ara::com::Future<FieldType>()> | getHandler); | 23 /** | 24 * Registering a SetHandler is mandatory, if the field supports it. | 25 * The handler gets the data the sender requested to be set. It has to validate the settings and perform | 26 * an update of its internal data. The new value of the field should than be set in the future. | 27 * | 28 * | 29 * The returned value is sent to the requester and is sent via notification to all subscribed entities. | 30 */ | 31 void RegisterSetHandler(std::function<ara::com::Future<FieldType>(const | FieldType& data)> setHandler); | 32 };

Vorkommen in AUTOSAR-Releases (1)

Release Dokument Seite Nr. Bildunterschrift im Dokument
R17-03_R1.1.0 AUTOSAR_EXP_ARAComAPI S. 59 6.19 Figure 6.19: UpdateRate Class