अनुकूली अनुप्रयोगों को वाहन डायग्नोस्टिक संकेतकों की क्वेरी और ईवेंट-संचालित निगरानी करने में सक्षम बनाता है।
एआई-जनितअसत्यापितमॉडल: gemini-3.8-flash-medium · प्रयास: medium · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 7d81598b6e77उद्गमखुले प्रश्न (2)
जर्मन मार्गदर्शिका से अनूदितgemini-3.8-flash-low · 2026-10-13 · जर्मन मूल
अनुकूली अनुप्रयोगों को वाहन डायग्नोस्टिक संकेतकों की क्वेरी और ईवेंट-संचालित निगरानी करने में सक्षम बनाता है।
यह इंटरफ़ेस AUTOSAR Adaptive Platform के भीतर वाहन डायग्नोस्टिक संकेतकों की संरचित क्वेरी और निगरानी के लिए कार्य करता है। अनुप्रयोग एक मॉडल किए गए पहचानकर्ता के माध्यम से ऑब्जेक्ट को इंस्टेंटिएट करते हैं और एक एसिंक्रोनस क्वेरी विधि के माध्यम से वर्तमान स्थिति प्राप्त कर सकते हैं [SWS_DM_00744]। इसके अतिरिक्त, एक उपयोगकर्ता-परिभाषित कॉलबैक फ़ंक्शन पंजीकृत किया जा सकता है, जो परिवर्तनों पर सीधे स्थिति अपडेट प्राप्त करता है [SWS_DM_00745]। एक आवश्यक बाधा के रूप में, इंस्टेंस सख्ती से एक पोर्ट से बंधा हुआ है, न तो कॉपी करने योग्य है और न ही स्थानांतरित करने योग्य है, और पंजीकरण के साथ-साथ विनाश पर समवर्ती कॉलों के विरुद्ध सिंक्रोनाइज़ेशन की आवश्यकता होती है।
संदर्भ
क्लास ara::diag::Indicator Adaptive Platform मॉड्यूल diag में DiagnosticIndicatorInterface[SWS_DM_00742] के केंद्रीय प्रतिनिधित्व के रूप में कार्य करती है। इसका मुख्य कार्य अनुप्रयोगों को डायग्नोस्टिक संकेतकों जैसे चेतावनी लाइटों या फ़ंक्शन डिस्प्ले (उदाहरण के लिए एक Malfunction Indicator Light, MIL) तक पहुँच प्रदान करना है।
इस इंटरेक्शन में मुख्य रूप से तीन घटक शामिल होते हैं: एक उपयोग करने वाला अनुकूली अनुप्रयोग (जैसे कि एक इंस्ट्रूमेंट क्लस्टर या एक 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 स्पष्ट रूप से पास करके किया जाता है। यह पहचानकर्ता ऑब्जेक्ट को डिज़ाइन मॉडल में परिभाषित एक PortPrototype से बांधता है, जिसे अनिवार्य रूप से DiagnosticIndicatorInterface के रूप में टाइप किया जाना चाहिए [SWS_DM_00742]।
स्वामित्व और ऑब्जेक्ट सिमेंटिक्स के संबंध में, ara::diag::Indicator को एक सख्त एकल इंस्टेंस के रूप में डिज़ाइन किया गया है: न तो कॉपी करने की और न ही स्थानांतरित करने की अनुमति है। तदनुसार, कॉपी कंस्ट्रक्टर [SWS_DM_01629], मूव कंस्ट्रक्टर [SWS_DM_01630], कॉपी असाइनमेंट ऑपरेटर [SWS_DM_01627] और साथ ही मूव असाइनमेंट ऑपरेटर [SWS_DM_01628] को डिलीट किए गए (=delete) के रूप में घोषित किया गया है।
जीवन चक्र डिस्ट्रक्टर ~Indicator()[SWS_DM_00743] के कॉल के साथ समाप्त होता है। जबकि कंस्ट्रक्टर और स्थिति क्वेरी को थ्रेड-सुरक्षित निर्दिष्ट किया गया है [SWS_DM_00742], [SWS_DM_00744], डिस्ट्रक्टर थ्रेड-सुरक्षित नहीं है [SWS_DM_00743]। इसलिए कॉलिंग अनुप्रयोग को यह सुनिश्चित करना होगा कि विनाश के दौरान कोई समवर्ती विधि कॉल या नोटिफ़ायर निष्पादन न हो रहे हों।
उपयोग पथ
सफल इनिशियलाइज़ेशन के बाद, क्लास संकेतक स्थिति निर्धारित करने के लिए दो पूरक उपयोग मॉडलों का समर्थन करती है:
ईवेंट-संचालित अधिसूचना:SetNotifier() के माध्यम से प्रकार IndicatorStatusTypeNotifier का एक कॉलबैक फ़ंक्शन पंजीकृत किया जा सकता है [SWS_DM_00745], [SWS_DM_02129]। जैसे ही संकेतक की स्थिति बदलती है, रनटाइम परिवेश इस नोटिफ़ायर को कॉल करता है। 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 Daemon को सौंपी जाती है। प्रश्न Q-61a650bd8ab7fc04 (खुला)
त्रुटि स्थितियाँ इनिशियलाइज़ेशन चरण में और साथ ही रनटाइम पर दोनों जगह हो सकती हैं:
निर्माण के दौरान कॉन्फ़िगरेशन उल्लंघन: कंस्ट्रक्टर परिभाषित Violations [SWS_DM_00742] के रूप में मॉडलिंग असंगतियों की रिपोर्ट करता है। इनमें InstanceSpecifierMappingIntegrityViolation (पहचानकर्ता को हल नहीं किया जा सकता है या यह किसी पोर्ट को संदर्भित नहीं करता है), PortInterfaceMappingViolation (संदर्भित पोर्ट DiagnosticIndicatorInterface द्वारा टाइप नहीं किया गया है), ProcessMappingViolation (रनटाइम इंस्टेंस के लिए कोई उपयुक्त मॉडल किया गया प्रोसेस मौजूद नहीं है) और साथ ही InstanceSpecifierAlreadyInUseViolation (पहचानकर्ता पहले से ही प्रोसेस में किसी अन्य इंस्टेंस द्वारा उपयोग किया जा रहा है) [SWS_DM_00742] शामिल हैं।
डायग्नोस्टिक्स फ़ंक्शंस की विफलता: यदि GetIndicatorState() का निष्पादन विफल हो जाता है, तो लौटाए गए Future के माध्यम से त्रुटि कोड DiagErrc::kServiceNotAvailable प्रेषित किया जाता है [SWS_DM_00744]। ऐसा तब होता है जब कॉल के समय Diagnostic Management के आवश्यक फ़ंक्शन उपलब्ध नहीं होते हैं [SWS_DM_00744]।
समवर्ती एक्सेस: चूँकि SetNotifier()[SWS_DM_00745] और डिस्ट्रक्टर [SWS_DM_00743] थ्रेड-सुरक्षित नहीं हैं, इसलिए एक असुरक्षित समवर्ती एक्सेस अपरिभाषित रनटाइम व्यवहार की ओर ले जाता है।
यह गाइड AUTOSAR Adaptive Platform विनिर्देश R25-11 पर आधारित है और इसे एक AI क्यूरेशन सहायक द्वारा तैयार किया गया था।
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.
एआई-जनितअसत्यापितमॉडल: 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])। यह अधिलेखन व्यवहार Diagnostic Management में सामान्य पैटर्न से मेल खाता है, जैसा कि ara::diag::OperationCycle::SetNotifier ([SWS_DM_00755]) और ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]) के लिए समान रूप से निर्दिष्ट है।
त्रुटि हैंडलिंग और समवर्तीता
त्रुटि प्रबंधन: विधि को 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 · जर्मन मूल