애플리케이션이 진단 식별자에 대한 UDS 읽기 및 쓰기 요청을 범용적으로 처리할 수 있도록 합니다.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 02c252ff66d0출처열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
애플리케이션이 진단 식별자에 대한 UDS 읽기 및 쓰기 요청을 범용적으로 처리할 수 있도록 합니다.
ara::diag::GenericDataIdentifier 클래스는 AUTOSAR Adaptive [SWS_DM_00636]에서 진단 식별자에 대한 UDS 읽기 및 쓰기 요청을 비동기식으로 처리하기 위한 제네릭 인터페이스 역할을 합니다. 포트에 바인딩되고 Offer()를 통해 릴리스된 후 Diagnostic Management는 구현된 메서드로 요청을 전달합니다 [SWS_DM_00638]. 단일 인스턴스로서 객체는 복사되거나 이동될 수 없으며, 요청 처리의 스레드 안전성은 생성자에서 선택된 동시성 구성을 통해 제어됩니다.
컨텍스트
ara::diag::GenericDataIdentifier 클래스는 AUTOSAR Adaptive Platform의 Diagnostic Management(DM) 기능 클러스터 내의 제네릭 서비스 인터페이스를 나타냅니다 SWS Diagnostics §8.2 “GenericDataIdentifier”. 타입별 인터페이스가 고정 모델링된 데이터 타입에 바인딩되는 반면, GenericDataIdentifier는 16비트 식별자가 매개변수로 동적으로 전달되는 진단 식별자(Data Identifier, DID)의 유연한 처리에 사용됩니다.
진단 처리에는 주로 세 가지 역할이 관여합니다:
ReadDataByIdentifier(0x22) 또는 WriteDataByIdentifier(0x2E)와 같은 표준화된 UDS 서비스를 차량으로 보내는 외부 진단 테스터.
진단 요청을 수신 및 유효성 검사하고, 이전에 Offer를 통해 활성화된 경우 정의된 포트 인터페이스를 통해 해당 애플리케이션 인스턴스로 전달하는 Diagnostic Management(DM) [SWS_DM_00638].
Read[SWS_DM_00636] 및 Write[SWS_DM_00637] 메서드를 제공하고 데이터를 비동기식으로 반환하여 실제 처리 로직을 캡슐화하는 GenericDataIdentifier의 애플리케이션별 구현.
수명 주기
ara::diag::GenericDataIdentifier의 인스턴스는 생성자를 통해 명시적으로 인스턴스화됩니다 [SWS_DM_00634]. 이때 호출자는 객체를 모델링된 DiagnosticDataIdentifierGenericInterface의 PortPrototype를 참조하는 ara::core::InstanceSpecifier에 바인딩합니다. concurrencyType 인수(타입: DataIdentifierConcurrencyType)를 통해 요청이 핸들러로 동시(kConcurrent) 또는 순차적(kNotConcurrent)으로 전달되는지 여부가 결정됩니다 [SWS_DM_00634].
소유권 및 수명과 관련하여 GenericDataIdentifier는 복사 불가능하고 이동 불가능한 단일 인스턴스로 모델링됩니다:
인스턴스화 후 객체는 비활성 상태에 있습니다. Diagnostic Management는 아직 요청을 전달하지 않습니다. Offer()[SWS_DM_00638]를 호출해야만 전달이 활성화됩니다. 진단 요청 전달을 다시 비활성화하기 위해 애플리케이션은 StopOffer()[SWS_DM_00639]를 호출합니다. 객체의 소멸은 가상 소멸자 [SWS_DM_00635]를 통해 수행됩니다.
진단 요청 처리를 위한 일반적인 수직 관통(Durchstich) 과정은 다음 단계로 구성됩니다:
초기화: 애플리케이션은 InstanceSpecifier 및 동시성 구성 [SWS_DM_00634]을 지정하여 파생된 핸들러 클래스를 인스턴스화합니다. 해석: 실제 환경에서는 일반적으로 애플리케이션 프로세스의 초기화 단계 중에 수행될 것으로 보입니다. 질문 Q-32596fba68253958 (열림)
서비스 제공: 애플리케이션이 Offer()를 호출합니다 [SWS_DM_00638]. Diagnostic Management가 수신 DID 요청의 전달을 활성화합니다.
쓰기 요청이 도착하면 DM은 Write(dataIdentifier, requestData, metaInfo, cancellationHandler)를 호출합니다 [SWS_DM_00637]. requestData의 페이로드는 연결된 Promise가 충족되거나 처리가 취소될 때까지 유효하게 유지됩니다.
취소 확인: 장시간 실행되는 작업 동안 핸들러는 cancellationHandler.IsCanceled()를 통해 대화가 취소되었는지 확인하거나 cancellationHandler.SetNotifier를 통해 알림 함수를 등록할 수 있습니다 [SWS_DM_00636], [SWS_DM_00637].
서비스 등록 취소: 핸들러를 종료하기 전에 애플리케이션은 StopOffer()를 호출하며 [SWS_DM_00639], 이를 통해 DM은 전달을 중지합니다.
시퀀스 다이어그램: UDS 읽기 요청 시 외부 테스터, Diagnostic Management 및 GenericDataIdentifier 간의 상호 작용. 출처: [SWS_DM_00638], [SWS_DM_00636]
오류 시나리오
오류는 상호 작용의 서로 다른 단계에서 발생할 수 있습니다:
구성 및 매핑 위반: 모델에서 InstanceSpecifier를 확인할 수 없거나 PortPrototype를 참조하지 않는 경우 InstanceSpecifierMappingIntegrityViolation가 발생합니다 [SWS_DM_00634]. DiagnosticDataPortMapping에 대한 할당이 누락된 경우 PortInterfaceMappingViolation가 발생합니다 [SWS_DM_00634]. 프로세스 매핑 누락은 ProcessMappingViolation를 생성하고, 이미 사용 중인 InstanceSpecifier는 InstanceSpecifierAlreadyInUseViolation로 이어집니다 [SWS_DM_00634].
다중 제공: 서비스가 이미 활발히 제공되고 있음에도 Offer()가 호출되는 경우, 메서드는 오류 코드 DiagOfferErrc::kAlreadyOffered를 포함하는 ara::core::Result를 반환합니다 [SWS_DM_00638].
기능적 진단 오류: 읽기 또는 쓰기 요청을 기능적으로 처리할 수 없는 경우, 애플리케이션은 Future에서 성공 상태를 반환하지 않고 ISO 14229-1에 따라 DiagUdsNrcErrc를 통해 표준화된 UDS-NRC(Negative Response Code)를 반환합니다 [SWS_DM_00636], [SWS_DM_00637].
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 typed by a pingViolation DiagnosticDataIdentifierGenericInterface needs to be referenced by a DiagnosticDataPortMapping. 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 DiagnosticDataIdentifierGenericInterface.
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 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 860e6bd15d7f출처열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
사용법:ara::diag::GenericDataIdentifier 클래스([SWS_DM_00638])의 동기 메서드 Offer은 Diagnostic Management(DM)에 일반 데이터 식별자 핸들러를 등록하는 데 사용됩니다. 이 호출을 통해 DM은 해당 데이터 식별자에 대한 수신 진단 요청(Request Messages)을 이 핸들러로 전달할 수 있는 권한을 부여받습니다([SWS_DM_00638]). 이 함수는 전달 매개변수를 받지 않으며 성공 또는 오류에 대한 정보를 제공하는 ara::core::Result<void>을 동기적으로 반환합니다([SWS_DM_00638]).
오류 처리: 이 메서드는 noexcept(으)로 선언되었으며 완전한 예외 안전성(exception safe)을 보장합니다([SWS_DM_00638]). 발생 가능한 오류는 ara::core::Result을 통해 보고됩니다. 핸들러가 이미 이전에 제공된 경우, 함수는 롤백 시맨틱과 함께 오류 코드 DiagOfferErrc::kAlreadyOffered을 반환합니다([SWS_DM_00638]). 이는 일반 오류 열거형 DiagErrc::kAlreadyOffered([SWS_DM_00514])에 해당합니다.
동시성 및 제한사항: 이 함수는 스레드 안전하지 않음(not thread-safe)으로 명시되어 있습니다([SWS_DM_00638]). 따라서 동일한 인스턴스에 대한 호출은 접근으로부터 보호되어야 합니다. GenericDataIdentifier에 대해 별도의 등록 취소 메서드가 지정되어 있지 않으므로, 서비스 제공은 핸들러 인스턴스의 수명에 결합되어 있을 것으로 추정됩니다(해석). 질문 Q-7c64a5bd308464a8 (열림)
Called for ReadDataByIdentifier request for this DiagnosticDataIdentifier.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 7772a86b7791출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
사용
해당 데이터 식별자에 대한 ReadDataByIdentifier(UDS 0x22) 진단 요청이 수신되는 즉시 ara::diag::GenericDataIdentifier 클래스의 Read 메서드가 호출됩니다[SWS_DM_00636]. 함수는 매개변수로 숫자 식별자 dataIdentifier, 컨텍스트 metaInfo 및 cancellationHandler를 받습니다. 애플리케이션은 cancellationHandler을 통해 IsCanceled을 사용하여 취소 상태를 쿼리하거나 SetNotifier을 통해 취소된 대화에 대한 알림 함수를 등록할 수 있습니다[SWS_DM_00636]. 결과는 비동기적으로 ara::core::Future<OperationOutput>을 통해 제공되며, 성공 시 페이로드(OperationOutput)를 반환합니다[SWS_DM_00636].
오류 처리
오류가 발생하면 Future은 DiagUdsNrcErrc[SWS_DM_00636]을 통해 ISO 14229-1에 따른 UDS 부정 반환 값(NRC)을 반환합니다. 인터페이스가 offer()을 통해 아직 제공되지 않았거나 더 이상 제공되지 않는 경우, Diagnostic Management(DM)은 NRC 0x94(ResourceTemporarilyNotAvailable)로 자체적으로 응답합니다[SWS_DM_01257]. 구성된 Response Pending 메시지 한계에 도달하면 서버는 처리를 중단하고 NRC 0x10(generalReject)으로 응답합니다[SWS_DM_00369].
동시성 및 상호 작용
이 메서드는 noexcept(으)로 선언되었으며 예외 안전합니다[SWS_DM_00636]. 해당 스레드 안전성은 조건부입니다. 구현이 스레드 안전해야 하는지 여부는 생성자에서 전달된 ConcurrencyType을 통해 제어됩니다[SWS_DM_00636]. readWrite이 kConcurrent(으)로 설정된 경우 DM은 읽기 및 쓰기 접근을 동시에 시작할 수 있으며, 그렇지 않은 경우(kNotConcurrent) 호출은 순차적으로 수행됩니다[SWS_DM_00939]. [SWS_DM_00640]과 같은 특정 인터페이스와 달리 GenericDataIdentifier은 전달된 ID를 통해 일반 DID 범위를 유연하게 처리합니다[SWS_DM_00636].
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataIdentifier
the corresponding DataIdentifier
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
This StopOffer will disable the forwarding of request messages from DM.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: bd73a88bfde2출처열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
사용법 및 호출 컨텍스트
ara::diag::GenericDataIdentifier 클래스의 멤버 함수 StopOffer은(는) Diagnostic Management(DM)로부터 수신되는 요청 메시지를 해당 인스턴스로 전달하는 것을 비활성화하는 데 사용됩니다[SWS_DM_00639]. 호출은 헤더 파일 #include "ara/diag/generic_data_identifier.h"의 인터페이스를 통해 동기식으로 수행됩니다[SWS_DM_00639]. 이 함수는 void StopOffer() noexcept; 시그니처를 가지며 전달 매개변수를 받지 않고 반환값을 반환하지 않습니다[SWS_DM_00639].
오류 처리 및 동시성
사양은 StopOffer을(를) 예외 안전(exception safe)(으)로 정의하며 식별자 noexcept을(를) 통해 예외가 발생하지 않음을 보장합니다[SWS_DM_00639]. 이 연산에 대해서는 특정 오류 코드, 오류 반응 또는 DET나 DEM에 대한 메시지가 예정되어 있지 않습니다. 동시성과 관련하여 이 메서드는 스레드 안전하지 않음(not thread-safe)(으)로 분류되어 있습니다[SWS_DM_00639]. 따라서 동일한 인스턴스에 대한 병렬 호출은 호출자에 의해 동기화되어야 합니다. 해석: Diagnostic Management에서 이미 시작된 요청은 전달이 최종 중단되기 전에 여전히 정상적으로 처리될 것으로 보입니다. 질문 Q-94a464dc832c055c (열림)
진단 모듈 내 상호작용
서비스 제공 취소 패턴은 진단 모듈에서 표준화되어 일관되게 사용됩니다. 유사한 StopOffer 메서드는 특히 다음에 대해 존재합니다:
Called for WriteDataByIdentifier request for this DiagnosticDataIdentifier.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 7b195835c98c출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
서비스 WriteDataByIdentifier(0x2E)의 UDS 요청이 수신되는 즉시 Diagnostic Management에 의해 ara::diag::GenericDataIdentifier 클래스의 Write 메서드가 호출됩니다[SWS_DM_00637]. 호출을 위한 전제 조건은 요청된 데이터 식별자가 지원되고 해당 진단 세션 및 보안 레벨이 실행을 허용하는 것입니다[SWS_DM_00186], [SWS_DM_00415], [SWS_DM_00416].
requestData: DID 접두사가 없는 요청의 원시 데이터를 포함하는 ara::core::Span입니다. 버퍼는 연결된 Promise가 이행되거나 처리가 취소될 때까지 유효하게 유지됩니다.
metaInfo: 진단 요청에 대한 추가 메타데이터입니다.
cancellationHandler: IsCanceled을 통한 대화의 조기 취소 모니터링 및 SetNotifier을 통한 취소 알림 등록에 사용됩니다.
실행은 비동기식으로 이루어지며 ara::core::Future<void>을 반환합니다[SWS_DM_00637]. 처리에 성공하면 긍정 응답 메시지를 위해 Promise가 void(으)로 이행됩니다. 오류가 발생하는 경우 DiagUdsNrcErrc을 통해 ISO 14229-1에 따른 적절한 UDS 부정 반환 값(NRC)으로 Future를 완료해야 합니다[SWS_DM_00637]. 이 메서드는 noexcept(으)로 선언되었으며 예외 안전하게 구현되어야 합니다[SWS_DM_00637].
동시성과 관련하여 스레드 안전성은 조건부입니다. Write을 스레드 안전하게 구현해야 하는지 여부는 인스턴스화 시 생성자에서 전달된 ConcurrencyType에 따라 달라집니다[SWS_DM_00637]. 읽기 및 쓰기 접근의 병렬 실행은 readWrite 플래그를 통해 제어됩니다[SWS_DM_00939].
이 텍스트는 AI에 의해 작성되었습니다. 모든 정보는 오직 릴리스 R25-11의 사양에만 기반합니다.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataIdentifier
the corresponding DataIdentifier
requestData
Content of request message (without DataIdentifier). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
gemini-3.8-flash-low· 2026-10-13 · 독일어 원문