Adaptive 애플리케이션이 차량 진단 인디케이터를 조회하고 이벤트 기반으로 모니터링할 수 있도록 합니다.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 7d81598b6e77출처열린 질문 (2)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
Adaptive 애플리케이션이 차량 진단 인디케이터를 조회하고 이벤트 기반으로 모니터링할 수 있도록 합니다.
이 인터페이스는 AUTOSAR Adaptive Platform 내에서 차량 진단 인디케이터의 구조화된 조회 및 모니터링에 사용됩니다. 애플리케이션은 모델링된 식별자를 통해 객체를 인스턴스화하며 비동기 조회 메서드를 통해 현재 상태를 검색할 수 있습니다 [SWS_DM_00744]. 또한 변경 시 상태 업데이트를 직접 수신하는 사용자 정의 콜백 함수를 등록할 수 있습니다 [SWS_DM_00745]. 주요 제약 조건으로 인스턴스는 포트에 엄격하게 바인딩되어 복사하거나 이동할 수 없으며, 등록 및 소멸 시 동시 호출에 대한 동기화가 필요합니다.
컨텍스트
ara::diag::Indicator 클래스는 Adaptive Platform 모듈 diag에서 DiagnosticIndicatorInterface의 중앙 표현 역할을 합니다 [SWS_DM_00742]. 핵심 작업은 애플리케이션이 경고등 또는 기능 표시등(예: 오작동 표시등, MIL)과 같은 진단 인디케이터에 액세스할 수 있도록 하는 것입니다.
상호작용에는 주로 세 가지 컴포넌트가 참여합니다: 사용하는 Adaptive 애플리케이션(예: 계기판 또는 HMI 서비스), 로컬 인터페이스 엔드포인트 역할을 하는 ara::diag::Indicator의 인스턴스, 그리고 Diagnostic Management Daemon(DM)입니다. 후자는 차량 전체의 진단 이벤트 및 UDS DTC 상태를 처리하고 기본 진단 기능을 제공합니다 [SWS_DM_00744].
컨텍스트 다이어그램: 애플리케이션 로직과 Diagnostic Management Daemon 간의 ara::diag::Indicator 인터페이스 상호작용 파트너. 출처: [SWS_DM_00742], [SWS_DM_00744].
수명 주기
ara::diag::Indicator 객체의 생성은 생성자 [SWS_DM_00742]에 ara::core::InstanceSpecifier을 전달하여 명시적으로 수행됩니다. 이 식별자는 해당 객체를 설계 모델에 정의되고 반드시 DiagnosticIndicatorInterface(으)로 형식화되어야 하는 PortPrototype에 바인딩합니다 [SWS_DM_00742].
수명 주기는 소멸자 ~Indicator()의 호출로 종료됩니다 [SWS_DM_00743]. 생성자와 상태 쿼리는 스레드 안전(thread-safe)한 것으로 명시되어 있는 반면 [SWS_DM_00742], [SWS_DM_00744], 소멸자는 스레드 안전하지 않습니다 [SWS_DM_00743]. 따라서 호출 애플리케이션은 소멸 중에 동시 메서드 호출이나 알리미(notifier) 실행이 더 이상 발생하지 않도록 보장해야 합니다.
사용 경로
성공적인 초기화 후, 해당 클래스는 인디케이터 상태를 확인하기 위한 두 가지 상호 보완적인 사용 모델을 지원합니다.
이벤트 기반 알림:SetNotifier()을(를) 통해 IndicatorStatusTypeNotifier 형식의 콜백 함수를 등록할 수 있습니다 [SWS_DM_00745], [SWS_DM_02129]. 인디케이터의 상태가 변경되는 즉시 런타임 환경이 이 알리미(notifier)를 호출합니다. SetNotifier()을(를) 연속으로 호출하면 이전에 등록된 핸들러를 덮어씁니다 [SWS_DM_00745]. SetNotifier()은(는) 스레드 안전하지 않으므로 등록을 외부에서 동기화해야 합니다 [SWS_DM_00745]. 아마도 알리미는 Diagnostic Management의 백그라운드 스레드 컨텍스트에서 실행되므로, 그 안에서 시간이 많이 걸리는 블로킹이 발생해서는 안 됩니다. 질문 Q-c27898ecefb8006f (열림)
목적별 쿼리:GetIndicatorState()을(를) 통해 언제든지 현재 상태를 능동적으로 쿼리할 수 있습니다 [SWS_DM_00744]. 이 메서드는 스레드 안전하며 ara::core::Future<IndicatorStatusType>을(를) 반환합니다 [SWS_DM_00744]. 해석: Future를 통한 비동기식 제공은 쿼리가 프로세스 간 통신(IPC)을 통해 중앙 Diagnostic Management 데몬에 내부적으로 위임됨을 시사합니다. 질문 Q-61a650bd8ab7fc04 (열림)
생성 시 구성 위반: 생성자는 정의된 위반(Violation) 형태로 모델링 불일치를 보고합니다 [SWS_DM_00742]. 여기에는 InstanceSpecifierMappingIntegrityViolation(식별자를 확인할 수 없거나 포트를 가리키지 않음), PortInterfaceMappingViolation(참조된 포트가 DiagnosticIndicatorInterface(으)로 형식화되지 않음), ProcessMappingViolation(런타임 인스턴스에 일치하는 모델링된 프로세스가 없음) 및 InstanceSpecifierAlreadyInUseViolation(해당 식별자가 프로세스 내에서 다른 인스턴스에 의해 이미 사용 중임)이(가) 포함됩니다 [SWS_DM_00742].
진단 기능 실패:GetIndicatorState()의 실행이 실패하면 반환된 Future를 통해 오류 코드 DiagErrc::kServiceNotAvailable이(가) 전달됩니다 [SWS_DM_00744]. 이는 호출 시점에 Diagnostic Management의 필수 기능을 사용할 수 없는 경우에 발생합니다 [SWS_DM_00744].
Register a notifier function which is called if the indicator is updated. A consecutive call of this method will overwrite the previous registered notifier.
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 DiagnosticIndicatorPortMapping needs to be typed by a DiagnosticIndicatorInterface. 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 DiagnosticIndicatorInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if the indicator is updated. A consecutive call of this method will overwrite the previous registered notifier.
AI 생성미검증모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: f2935619a27a출처열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문
ara::diag::Indicator 클래스의 SetNotifier 함수([SWS_DM_00745], 헤더 ara/diag/indicator.h에 선언됨)는 IndicatorStatusTypeNotifier 타입의 애플리케이션별 알림 함수를 등록합니다. 이 콜백 함수는 진단 경고 표시기의 상태 업데이트가 있을 때 Diagnostic Management에 의해 호출됩니다([SWS_DM_00745]).
다중 호출 시 동작
동일한 인스턴스에서 SetNotifier을 반복 호출하면 이전에 등록된 알리미를 완전히 덮어씁니다([SWS_DM_00745], [SWS_DM_01359]). 이러한 덮어쓰기 동작은 ara::diag::OperationCycle::SetNotifier([SWS_DM_00755]) 및 ara::diag::CancellationHandler::SetNotifier([SWS_DM_00615])에 대해 동일하게 정의된 것과 같이 Diagnostic Management의 일반적인 패턴에 부합합니다.
오류 처리 및 동시성
오류 처리: 이 메서드는 noexcept이자 예외 안전(exception safe)으로 지정되어 있습니다([SWS_DM_00745]). 표준화된 오류가 정의되어 있지 않으므로, 반환된 ara::core::Result<void>는 해석상 항상 성공적인 호출을 캡슐화할 것으로 보입니다. 질문 Q-dcde3dd383fbfb4a (열림)
동시성: 이 인터페이스는 명시적으로 스레드 안전하지 않은 것(not thread-safe)으로 선언되어 있습니다([SWS_DM_00745]). 동일한 인스턴스에 대한 동시 호출은 애플리케이션에 의해 동기화되어야 합니다.
gemini-3.8-flash-low· 2026-10-13 · 독일어 원문