AUTOSAR_AP_SWS_UpdateAndConfigurationManagement
FIG-7d9030711219987b
487 × 296 px
1 Release(s)
Figure 9.1: UCM composite structure - Transfer related
SHA-256 Inhalts-Fingerabdruck:
7d9030711219987b8515c886d6289b7ae9f19ad12dfd152c8757ce5cbbad4c4b
✦
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
- Klassifikation: UML-Schnittstellen- und Datentyp-Strukturdiagramm (ara::com Service-Interface-Ausschnitt).
- Funktionale Einordnung: Adaptive Platform – Update and Configuration Management (UCM). Das Diagramm spezifiziert die Transfer-Teilmenge des Service-Interfaces
PackageManagement(SWS_UCM_00131) zum blockbasierten Streaming von Software-Paketen (Software Package / Software Cluster) von einem UCM-Client (z. B. OTA-Client, Diagnostic Updater) in den flüchtigen bzw. persistenten Speicher des UCM.
2. Komponenten, Entitäten & Schnittstellen
- «interface» PackageManagement (Transfer):
Definiert die nachrichtenorientierten RPC-Methoden zur Abwicklung des Datentransfers:
TransferStart(size: uint64, TransferIdType*, unsigned int*): void(SWS_UCM_00044): Initiert die Übertragungssitzung. Nimmt die Gesamtgröße des Pakets in Bytes (size) entgegen und liefert als Ausgabeparameter eine eindeutige Session-ID (TransferIdType) sowie die maximale Blockgröße (blockSizein Bytes) zurück.TransferData(TransferIdType, ByteVectorType, uint32): void(SWS_UCM_00071,SWS_UCM_00395): Überträgt ein sequenzielles Datenfragment. Parameter: Transfer-Identifikator, Payload-Chunk (ByteVectorType) und fortlaufender Zähler (blockCounterab 1).TransferExit(TransferIdType): void(SWS_UCM_00396): Schließt den Übertragungsvorgang formal ab und triggert die Übergabe an die interne Integritäts- und Signaturprüfung.
- «primitive» TransferIdType (
SWS_UCM_00031): Abstrakter primitiver Datentyp zur Sitzungsidentifikation; typisiert in C++ üblicherweise als 16-Byte-Array (std::array<uint8_t, 16>) bzw. UUID nach RFC 4122. - «primitive» ByteVectorType (
SWS_UCM_00032): Dynamischer Byte-Puffer für die Payload-Chunks; abgebildet aufara::core::Vector<uint8_t>. - Beziehungen:
Strukturkopplung: Das Interface
PackageManagementbindetTransferIdTypeals Sitzungsanker über alle drei Methoden hinweg und nutztByteVectorTypeals In-Parameter für die Payload inTransferData.
3. Dynamisches Verhalten & Sequenzablauf
- Initialisierung (
TransferStart):- Client sendet erwartete Paketgröße (
uint64). - UCM validiert den verfügbaren Speicherplatz (Flash/RAM) und allokiert einen Transfer-Kontext.
- UCM generiert und retourniert die
TransferIdTypesowie das verhandelteblockSize-Limit (Chunk-Größe).
- Client sendet erwartete Paketgröße (
- Streaming-Schleife (
TransferData):- Client sendet Payload-Chunks konform zur verhandelten
blockSize. - Strikte Inkrementprüfung: UCM validiert
blockCounterauf lückenlose Monotonie (Beginn bei 1). Bei Sequenzfehlern, ungültiger Session-ID oder Größenüberschreitung bricht die Methode mit spezifischen UcmErrorDomain-Fehlern ab (z. B.IncorrectBlockCounter,InvalidTransferId,SizeMismatch). - Synchrone oder asynchrone Rückmeldung via
ara::core::Future<void>/ara::core::Result<void>.
- Client sendet Payload-Chunks konform zur verhandelten
- Abschluss (
TransferExit):- Client signalisiert Übertragungsende via
TransferIdType. - UCM verifiziert, ob die kumulierte Bytezahl exakt der in
TransferStartdeklarierten Gesamtgröße entspricht. - Nach erfolgreichem Exit wechselt das Paket intern vom Zustand Transferring in den Zustand Transferred (bereit für
ProcessPackage).
- Client signalisiert Übertragungsende via
4. Normative Relevanz & Entwickler-Hinweise
- ara::com Service-Binding: Methoden werden über das SOME/IP- oder IPC-Binding als Request/Response-Pattern exponiert. Da
PackageManagementpotenziell megabyte- oder gigabyteweise Daten verarbeitet, müssen Entwickler SOME/IP-Transport-Protocol-Eigenschaften (TP) oder Shared-Memory-Transfers in den Deployment-Manifesten (.arxml) korrekt parametrieren. - Speicher- und Pufferverwaltung: Die von
TransferStartzurückgegebeneblockSizeist bindend für den Client. Ein Senden größererByteVectorType-Instanzen führt zur direkten Ablehnung durch den UCM. - Fehlerbehandlung: Methoden liefern keinen rohen
void-Rückgabewert auf C++-Ebene, sondernara::core::Future<PackageManagement::TransferDataOutput>bzw.ara::core::Result<void>. Relevante Error-Codes der UCM-Fehlerdomäne (z. B.InsufficientMemory,PackageInconsistent) müssen im Client zwingend abgefangen und verarbeitet werden. - Parallelität: Mehrere parallele Transfers verschiedener Pakete werden über distinkte
TransferIdType-Instanzen differenziert; der UCM-Stack limitiert die maximale Anzahl gleichzeitiger Transfers über Implementierungs- und Konfigurationsparameter.
Zugeordnete Anforderungen
Diese Angaben zeigt der Versions-Explorer.