يتيح للتطبيقات مراقبة أحداث التشخيص وإزالة الارتداد والاستعلام عن DTC حسب الحالة.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 2f3253efefb6المصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يتيح للتطبيقات مراقبة أحداث التشخيص وإزالة الارتداد والاستعلام عن DTC حسب الحالة.
يوفر الصنف ara::diag::Event في AUTOSAR Adaptive عمليات لمراقبة أحداث التشخيص وحالة إزالة الارتداد والخطأ الخاصة بها. وتنشئ التطبيقات الكائن عبر InstanceSpecifier، وتسجل إشعارات تغيير اختيارية، وتستعلم عن معلومات التشخيص وDTC بشكل غير متزامن [SWS_DM_00647]. وكشرط أساسي، فإن المثيل غير قابل للنسخ أو النقل، وتتطلب معظم دوال الاستعلام مزامنة من جانب التطبيق عند الوصول المتزامن نظرًا لعدم توفر الأمان الخيطي [SWS_DM_00649].
السياق
يعمل الصنف ara::diag::Event في AUTOSAR Adaptive Platform كواجهة أساسية للتفاعل مع أحداث التشخيص. وهو بمثابة حلقة وصل بين البرنامج الخاص بالتطبيق والإدارة المركزية للتشخيص. وعبر هذه الواجهة، تراقب التطبيقات حالة التشخيص وإزالة الارتداد الحالية لحدث ما، أو تتلقى إشعارات بشأن تغييرات الحالة.
تشارك أساسًا ثلاثة أطراف في التفاعل ضمن سياق النظام:
برمجيات التطبيق: تُنشئ مثيلًا للفئة، وتبدأ استعلامات الحالة، وتستقبل تحديثات الحالة غير المتزامنة.
ara::diag::Event: تُغلّف منفذ التشخيص محدد النوع (PortPrototype لـ DiagnosticEventInterface) وتوفر دوال استعلام تعمل عبر الخيوط أو العمليات.
Diagnostic Management (DM): يُنفذ من جانب الخادم اكتشاف الأخطاء، وتعيينات DTC، وسلوك إزالة الارتداد (Debouncing).
مخطط السياق: موضع فئة الحدث بين برمجيات التطبيق و Diagnostic Management. المصادر: [SWS_DM_00647]، [SWS_DM_00653]
دورة الحياة
يتم إنشاء المثيل صراحةً عن طريق تمرير ara::core::InstanceSpecifier[SWS_DM_00647]. ويجب أن يُشير المعرّف إلى PortPrototype محدد النوع عبر DiagnosticEventInterface. دالة البناء آمنة من الاستثناءات وآمنة بالنسبة للخيوط [SWS_DM_00647].
فيما يتعلق بملكية الموارد، تُعرّف ara::diag::Event على أنها مثيل مفرد غير قابل للنسخ وغير قابل للنقل: فكل من دالة بناء النسخ [SWS_DM_01681] ودالة بناء النقل [SWS_DM_01682] وعاملي التعيين المقترنين بهما ([SWS_DM_01679]، [SWS_DM_01680]) محذوفة صراحةً (=delete). ولا يجوز إنشاء مثيل لـ InstanceSpecifier أكثر من مرة لكل عملية [SWS_DM_00647].
يتم التدمير عبر دالة الهدم ~Event()[SWS_DM_00648]. وعلى النقيض من دالة البناء، فإن دالة الهدم ليست آمنة بالنسبة للخيوط. كما تم تحديد دوال الأعضاء الأخرى (باستثناء GetDTCNumber) بأنها غير آمنة بالنسبة للخيوط، ولهذا السبب يجب مزامنة الاستدعاءات المتوازية على نفس المثيل من جانب التطبيق. في الإصدار R25-11، تم توحيد المصطلحات المتعلقة بذلك من Reentrancy إلى Concurrency AUTOSAR_AP_SWS_Diagnostics §1 «Change History».
مسار الاستخدام
تنقسم حالة الاستخدام النموذجية إلى الاستدعاءات التالية:
التهيئة: يُنشئ التطبيق المثيل عبر InstanceSpecifier الخاص به [SWS_DM_00647]. ويُرجّح أن يُنشئ الربط الاتصال مع عفريت التشخيص (daemon) في وقت التهيئة. سؤال Q-78e4462a0d147cfb (مفتوح)
تسجيل المُخطر: للمراقبة، يتم تسجيل دالة استدعاء رد (callback) اختياريًا عبر SetEventStatusChangedNotifier[SWS_DM_00650]. وأي استدعاء لاحق يحل محل المُخطر المحدد سابقًا.
استعلامات الحالة: أثناء التشغيل، يستعلم التطبيق عن بيانات التشخيص بشكل غير متزامن عبر ara::core::Future:
GetEventStatus() يُحدد بايت الحالة الحالي [SWS_DM_00649].
GetDebouncingStatus() يُعيد حالة إزالة الارتداد الحالية [SWS_DM_00654].
GetFaultDetectionCounter() يسترجع عدّاد اكتشاف الأخطاء (FDC) [SWS_DM_00656].
GetTestComplete() يتحقق مما إذا كان الاختبار قد اكتمل (وصول FDC إلى -128 أو 127) [SWS_DM_00655].
GetDTCNumber(dtcFormat) يُوفر رقم DTC المرتبط بالتنسيق المحدد وهو آمن بالنسبة للخيوط [SWS_DM_00653].
Register a notifier function which is called if a diagnostic event is changed. 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 DiagnosticEventPortMapping needs to be typed by a DiagnosticEventInterface. 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 DiagnosticEventInterface.
Request a governed re-review of this record. The record is not changed immediately.
Register a notifier function which is called if a diagnostic event is changed. A consecutive call of this method will overwrite the previous registered notifier.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 07bc53ae711cالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
من خلال الطريقة [SWS_DM_00650] للفئة ara::diag::Event (ملف الرأس ara/diag/event.h)، يسجل تطبيق Adaptive Application دالة رد نداء من النوع EventStatusByteNotifier. وبعد نجاح التسجيل، يستدعي Diagnostic Management (DM) هذا المُشعِر (Notifier) عند كل تغيير في حالة الحدث التشخيصي المرتبط [SWS_DM_01029]. يؤدي الاستدعاء المتتالي للطريقة إلى الكتابة فوق المُشعِر المسجل سابقًا [SWS_DM_00650]. تمتلك الدالة التوقيع ara::core::Result<void> SetEventStatusChangedNotifier(EventStatusByteNotifier notifier) noexcept وتُرجع في حالة النجاح نتيجة فارغة [SWS_DM_00650].
إذا حدث خطأ أثناء المعالجة، تُرجع الطريقة رمز الخطأ DiagErrc::kInvalidArgument[SWS_DM_00650]. ومع أن الواجهة مصرح بها على أنها آمنة من الاستثناءات (exception safe)، إلا أنها تُعد صراحة غير آمنة لخيوط المعالجة (not thread-safe) [SWS_DM_00650]. تفسير: يجب مزامنة عمليات الوصول المتزامنة إلى نفس المثيل من جانب التطبيق؛ وبالتالي يُرجح أن يتم إجراء التسجيل بشكل مفضل أثناء مرحلة تهيئة التطبيق. سؤال Q-d8ed099eaed6b197 (مفتوح)
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني