Maakt het instellen en opvragen van meerdere diagnosevoorwaarden via een gezamenlijke interface mogelijk op basis van handles.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 2f3f3f7d9426HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Maakt het instellen en opvragen van meerdere diagnosevoorwaarden via een gezamenlijke interface mogelijk op basis van handles.
De klasse ara::diag::MultipleCondition dient voor het gebundeld opvragen en actualiseren van meerdere diagnosevoorwaarden via een gezamenlijke poortinterface aan de hand van numerieke handles ([SWS_DM_01730]). Applicaties instantiëren het object via een InstanceSpecifier en besturen voorwaarden gericht met behulp van SetCondition en GetCondition ([SWS_DM_01729]). Een belangrijke randvoorwaarde is dat de klasse noch kopieerbaar noch verplaatsbaar is, en dat de destructor ervan niet thread-safe is. Bovendien moeten alle geadresseerde voorwaarden in het model via poortmappings consistent zijn geconfigureerd om initialisatie- en runtimefouten te voorkomen.
Context
De klasse ara::diag::MultipleCondition stelt een adaptieve applicatie in staat om meerdere diagnosevoorwaarden gebundeld te beheren en te wijzigen via een gezamenlijke interface ([SWS_DM_01730]). Functioneel en semantisch biedt deze dezelfde mogelijkheden als afzonderlijke voorwaarden, maar breidt de bewerkingen uit met gerichte adressering via een identificatiehandle (AUTOSAR_AP_SWS_Diagnostics p. 237). Elke beheerde diagnosevoorwaarde (DiagnosticCondition) vereist in het model een koppeling via een DiagnosticMultipleConditionPortMapping met een passend getypeerde poort ([SWS_DM_01727], AUTOSAR_AP_SWS_Diagnostics p. 237). De adressering vindt plaats via het type ConditionHandleType; als er geen expliciete overrideId-waarde aanwezig is, kent Diagnostic Management (DM) oplopende numerieke waarden toe vanaf 0x010000 in alfabetische volgorde van de korte namen ([SWS_DM_01735]).
Een instantie wordt aangemaakt via de constructor MultipleCondition onder doorgifte van een ara::core::InstanceSpecifier ([SWS_DM_01727]). De aanmaak is thread-safe en gedeclareerd als noexcept ([SWS_DM_01727]). Het object is strikt gebonden aan zijn lokale scope: zowel kopieer- als move-bewerkingen zijn verwijderd; copy-constructor ([SWS_DM_02072]), move-constructor ([SWS_DM_02071]), copy-toewijzingsoperator ([SWS_DM_02073]) en move-toewijzingsoperator ([SWS_DM_02074]) zijn niet beschikbaar (=delete).
De destructor ~MultipleCondition() is expliciet gespecificeerd als niet thread-safe ([SWS_DM_01737]). De applicatie moet er daarom voor zorgen dat vóór de vernietiging alle gelijktijdige toegangen tot het object zijn afgerond. Voor reguliere methodeaanroepen geldt voorwaardelijke thread-safety ([SWS_DM_01728], [SWS_DM_01729]). Interpretatie: aangezien de constructorsignatuur volgens [SWS_DM_01727] geen expliciete concurrencyparameter accepteert, wordt de vereiste ConcurrencyType vermoedelijk bepaald via het onderliggende poortmodel in het manifest. Vraag Q-f29def512a68aae9 (open)
Gebruikspad
Het typische verloop bij de interactie met diagnosevoorwaarden omvat de volgende stappen:
Initialisatie: de applicatie instantieert de klasse onder vermelding van de doelpoort ([SWS_DM_01727]).
Toestand instellen: met SetCondition(conditionHandle, condition) verzendt de applicatie een toestandsverandering voor de gespecificeerde voorwaarde en controleert de resulterende ara::core::Result<void> ([SWS_DM_01729]).
Toestand opvragen: via GetCondition(conditionHandle) wordt de actuele toestand van de geadresseerde voorwaarde asynchroon opgevraagd als ara::core::Future<ConditionType> ([SWS_DM_01728]).
Vrijgave van resources: bij het verlaten van de scope bouwt de destructor de interface ordelijk af ([SWS_DM_01737]).
Bij het gebruik moet onderscheid worden gemaakt tussen modelleringsgerelateerde constructiefouten en functionele runtimefouten:
Ontwerpschendingen ([SWS_DM_01727]):
Als het oplossen van de InstanceSpecifier mislukt of als deze niet naar een PortPrototype verwijst, wordt een InstanceSpecifierMappingIntegrityViolation gemeld. Een PortInterfaceMappingViolation treedt op wanneer de poort niet getypeerd is op een DiagnosticMultipleConditionInterface. Als het gemodelleerde tegenhangerobject ontbreekt in het proces, leidt dit tot een ProcessMappingViolation. Wordt dezelfde InstanceSpecifier meerdere keren in het proces geïnstantieerd, dan resulteert dit in een InstanceSpecifierAlreadyInUseViolation.
Runtimefouten bij methodeaanroepen:\n als aan SetCondition ([SWS_DM_01729]) of GetCondition ([SWS_DM_01728]) een ontoelaatbare parameter of een ongeldige handle wordt doorgegeven, leveren de methoden de fout DiagErrc::kInvalidArgument op. Is de basisfunctionaliteit van Diagnostic Management tijdelijk niet bereikbaar, dan bevestigt GetCondition de aanroep met DiagErrc::kServiceNotAvailable ([SWS_DM_01728]).
Deze handleiding is uitsluitend gebaseerd op de specificaties van de AUTOSAR Adaptive Platform R25-11.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is referenced by a pingViolation DiagnosticMultipleConditionPortMapping needs to be typed by a DiagnosticMultipleConditionInterface. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticMultipleConditionInterface
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel