يتيح للتطبيقات التكيفية الاستعلام عن مؤشرات تشخيص المركبة ومراقبتها بناءً على الأحداث.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: 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]. وتتمثل مهمتها الأساسية في تمكين التطبيقات من الوصول إلى مؤشرات التشخيص مثل مصابيح التحذير أو شاشات الوظائف (على سبيل المثال، مصباح مؤشر الأعطال، MIL).
يشارك بشكل أساسي ثلاثة مكونات في التفاعل: تطبيق تكيفي مستخدم (مثل لوحة العدادات أو خدمة HMI)، ومثيل ara::diag::Indicator كنقطة نهاية محلية للواجهة، بالإضافة إلى خادم Diagnostic Management Daemon (DM). يعالج الأخير أحداث التشخيص على مستوى المركبة وحالات UDS-DTC ويوفر وظائف التشخيص الأساسية [SWS_DM_00744].
مخطط السياق: أطراف التفاعل لواجهة ara::diag::Indicator بين منطق التطبيق وخادم Diagnostic Management Daemon. المصادر: [SWS_DM_00742]، [SWS_DM_00744].
دورة الحياة
يتم إنشاء كائن ara::diag::Indicator صراحةً عن طريق تمرير ara::core::InstanceSpecifier إلى المنشئ [SWS_DM_00742]. يربط هذا المعرف الكائن بـ 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 (مفتوح)
يمكن أن تحدث شروط الخطأ في مرحلة التهيئة وكذلك في وقت التشغيل:
انتهاكات التكوين أثناء الإنشاء: يبلغ المنشئ عن عدم اتساق النمذجة في شكل انتهاكات محددة [SWS_DM_00742]. يشمل ذلك InstanceSpecifierMappingIntegrityViolation (يتعذر حل المعرف أو لا يشير إلى منفذ)، وPortInterfaceMappingViolation (المنفذ المشار إليه ليس محدد النوع بواسطة DiagnosticIndicatorInterface)، وProcessMappingViolation (لا توجد عملية منمذجة مطابقة لمثيل وقت التشغيل)، بالإضافة إلى InstanceSpecifierAlreadyInUseViolation (المعرف مستخدم بالفعل بواسطة مثيل آخر في العملية) [SWS_DM_00742].
فشل وظائف التشخيص: إذا فشل تنفيذ GetIndicatorState()، يتم نقل رمز الخطأ DiagErrc::kServiceNotAvailable عبر Future المُرجع [SWS_DM_00744]. يحدث هذا إذا كانت الوظائف الأساسية لـ Diagnostic Management غير متاحة في وقت الاستدعاء [SWS_DM_00744].
الوصول المتزامن المتنافس: نظرًا لأن SetNotifier()[SWS_DM_00745] والمدمر [SWS_DM_00743] ليسا آمنين لخيوط المعالجة، فإن الوصول المتزامن غير المحمي يؤدي إلى سلوك غير محدد في وقت التشغيل.
يستند هذا الدليل إلى مواصفات AUTOSAR Adaptive Platform R25-11 وتم إنشاؤه بواسطة مساعد تنظيم قائم على الذكاء الاصطناعي.
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 · الأصل الألماني
تسجل الدالة SetNotifier للفئة ara::diag::Indicator ([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 · الأصل الألماني