Used to provide the DoIP group identification status to the Diagnostic Manager.
AI-GENERATEDunreviewedModel: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: dea27beb11bbProvenanceOpen questions (1)
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original
Used to provide the DoIP group identification status to the Diagnostic Manager.
Class ara::diag::DoIPGroupIdentification serves as an abstract interface for Adaptive applications to provide the current DoIP group identification status to Diagnostic Management [SWS_DM_00724]. After port-specific instantiation, the application activates the forwarding of requests via Offer() and stops it prior to object destruction using StopOffer()[SWS_DM_00725]. The handler instance is unique, neither copyable nor movable, and answers queries asynchronously via a ara::core::Future.
Context
Class ara::diag::DoIPGroupIdentification provides the functional interface of Diagnostic Management (AUTOSAR AP SWS Diagnostics p. 73) through which an adaptive application provides the current group identification status (GID status) for the DoIP protocol [SWS_DM_00724]. Within the platform architecture, the class acts as an intermediary between two primary interaction partners: the internal Diagnostic Management daemon (DM), which handles standardized vehicle identification and DoIP messages over the network, and the application-specific implementation, which concretizes pure virtual method GetGidStatus(). Providing and accepting requests is controlled via explicit service offerings [SWS_DM_00725].
Lifecycle
An instance of DoIPGroupIdentification represents a unique diagnostic port. For this reason, the class is designed as a uniquely managed object: Both copy constructor [SWS_DM_01641] and move constructor [SWS_DM_01642] as well as the corresponding assignment operators [SWS_DM_01639], [SWS_DM_01640] are explicitly deleted (=delete).
Creation is strictly performed via the parameterized constructor by specifying a ara::core::InstanceSpecifier as well as concurrency mode ConcurrencyType[SWS_DM_00722]. The lifecycle is divided into the following phases:
Not Offered: After construction, the object exists in the address space of the process, but does not yet receive requests from the DM.
Offered: By synchronously calling Offer()[SWS_DM_00725], the handler is activated with the DM so that incoming DoIP status requests are forwarded.
Stopped: Calling StopOffer()[SWS_DM_00726] revokes the forwarding authorization from the DM and transitions the object back to the inactive state.
Destruction occurs via virtual destructor ~DoIPGroupIdentification()[SWS_DM_00723]. Regarding concurrency, the constructor is thread-safe, whereas Offer(), StopOffer(), and the destructor are not thread-safe [SWS_DM_00722], [SWS_DM_00723], [SWS_DM_00725], [SWS_DM_00726]. The thread safety of query function GetGidStatus() is conditionally defined by the ConcurrencyType selected in the constructor [SWS_DM_00724]. Interpretation: The destructor presumably terminates ongoing forwardings implicitly if StopOffer() was not called beforehand. Question Q-50d70fb679462321 (open)
Usage Path
Typical usage comprises initialization, activation, asynchronous processing, and deactivation:
A concrete diagnostic class inherits from ara::diag::DoIPGroupIdentification and implements method GetGidStatus()[SWS_DM_00724].
The application creates the object with the InstanceSpecifier of the configured PortPrototype and specifies whether GetGidStatus() may be invoked concurrently (kConcurrent) or not (kNotConcurrent) [SWS_DM_00722].
Using Offer(), the application arms the handler for Diagnostic Management [SWS_DM_00725].
As soon as DoIP requests arrive, the DM calls GetGidStatus(); the application returns the GID state asynchronously via ara::core::Future<GidStatus>[SWS_DM_00724].
Before stopping the service or shutting down the component, the application calls StopOffer()[SWS_DM_00726], followed by destruction of the object [SWS_DM_00723].
When using DoIPGroupIdentification, error conditions are defined in the construction and offering phases:
Model and mapping errors (constructor): If instantiation fails, standardized violations are reported [SWS_DM_00722]:
InstanceSpecifierMappingIntegrityViolation: The identifier cannot be resolved or does not reference a port prototype.
PortInterfaceMappingViolation: The referenced port is not typed as DiagnosticDoIPGroupIdentificationInterface.
ProcessMappingViolation: No matching process is mapped to the execution context in the model.
InstanceSpecifierAlreadyInUseViolation: The specified port identifier is already in use by another instance in the running process.
Service offering errors (Offer()): The method returns a ara::core::Result<void>. If the service was already offered successfully for this handler, a repeated call fails with error code DiagOfferErrc::kAlreadyOffered[SWS_DM_00725].
Errors during status query: Interface GetGidStatus() specifies no standardized error codes [SWS_DM_00724]; application-internal errors must be mapped via the result object of the returned future.
This guide is based exclusively on the AUTOSAR Adaptive specification 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 DiagnosticDoIpGroupIdentificationPortMapping needs to be typed by a DiagnosticDoIPGroupIdentificationInterface. 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 DiagnosticDoIPGroupIdentificationInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
Request a governed re-review of this record. The record is not changed immediately.
This Offer will enable the DM to forward request messages to this handler.
AI-GENERATEDunreviewedModel: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: c580e08dd024Provenance
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original
The synchronous member function Offer of class ara::diag::DoIPGroupIdentification signals to Diagnostic Management (DM) that the providing Adaptive Application is ready and requests for DoIP group identification can be processed [SWS_DM_00725]. Only after this call can the DM retrieve the group ID via method GetGidStatus if needed, provided no fixed configuration is present [SWS_DM_00813].
The following conditions apply regarding call context and concurrency:
Signature and semantics: The call takes place without parameters and synchronously returns a ara::core::Result<void>[SWS_DM_00725]. The method is declared as noexcept and exception safe (exception safe) [SWS_DM_00725].
Thread safety: The operation is specified as not thread-safe (not thread-safe) [SWS_DM_00725]. Calls on the same instance must not occur unprotected from concurrent threads.
In the event of an error, the resulting object returns error code DiagOfferErrc::kAlreadyOffered with rollback semantics if the service has already been offered for this interface [SWS_DM_00725].
As long as the application has not yet executed Offer and the DM needs to transmit a DoIP group identification, the fallback behavior takes effect: The DM transmits either 0x00 0x00 0x00 0x00 0x00 0x00 or 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF according to ISO 13400-2 as the GID value to indicate "value not set" [SWS_DM_01527].
This usage note was generated automatically based on the AUTOSAR specification.
This StopOffer will disable the forwarding of request messages from DM to this handler.
AI-GENERATEDunreviewedModel: gemini-3.8-flash-medium · Effort: medium · Temperature: not controllable · Prompt: da4bfe9455e6ProvenanceOpen questions (1)
translated from the German guidegemini-3.8-flash-low · 2026-10-13 · German original
The method StopOffer of class ara::diag::DoIPGroupIdentification terminates the offering of the handler and deactivates the forwarding of incoming request messages (request messages) from Diagnostic Management (DM) to this instance [SWS_DM_00726].
Usage and Error Handling
The operation declared in header ara/diag/doip_group_identification.h has the signature void StopOffer () noexcept;[SWS_DM_00726]. It takes no parameters, returns no value, and is executed synchronously [SWS_DM_00726]. The method is specified as exception safe (exception safe) and throws no C++ exceptions; separate error codes or error messages are not provided for this process [SWS_DM_00726].
Concurrency and Limitations
Regarding concurrency, StopOffer is explicitly specified as not thread-safe (not thread-safe) [SWS_DM_00726]. Calling applications therefore presumably need to ensure independently that no concurrent calls take place on the same instance. Question Q-3ac810ffb08cb197 (open)
Interaction
The diagnostic module uses the pattern StopOffer uniformly across functional interfaces, for example for generic routines [SWS_DM_00558], communication control [SWS_DM_00810], and authentication services [SWS_DM_01131]. Although the designations are functionally aligned with service management in ara::com, it is an independent implementation of the diagnostic architecture AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 “Monitors”.
This usage note was generated by an AI and is based exclusively on the AUTOSAR specification for R25-11.
gemini-3.8-flash-low· 2026-10-13 · German original