يمثل بايت الحالة المشفر بتيًا لحدث تشخيص ويوفر طرق فحص آمنة نوعيًا لبتات الحالة.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: c0a8a1df20deالمصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يمثل بايت الحالة المشفر بتيًا لحدث تشخيص ويوفر طرق فحص آمنة نوعيًا لبتات الحالة.
تغلف البنية ara::diag::EventStatusByte بايت الحالة المشفر بتيًا لحدث تشخيص فردي داخل Adaptive Platform [SWS_DM_00644]. وتوفر طرقًا للاستعلام الآمن نوعيًا عن بتات الحالة المعينة أو غير المعينة بالإضافة إلى حالات الفحص المركبة [SWS_DM_01755]. ونظرًا لأن الحساب يعكس دائمًا الحدث المحدد، فإنه يظل بمنأى عن تركيبات أحداث DTC ذات المستوى الأعلى. وباعتباره كائن قيمة خفيف الوزن، فإن جميع عمليات الوصول للقراءة آمنة من الاستثناءات وقابلة للقراءة بالتزامن، في حين يجب مزامنة عمليات الإسناد المغيرة خارجيًا.
السياق
تغلف البنية ara::diag::EventStatusByte بايت الحالة المشفر بتيًا لحدث تشخيص في ذاكرة الأعطال الخاصة بإدارة تشخيص AUTOSAR Adaptive [SWS_DM_00644]. ووفقًا للمواصفة، يمثل EventStatusByte دائمًا وبدقة حالة الحدث الفردي المخصص له ولا يتأثر بأي تركيب محتمل للأحداث (Event Combination) أثناء الحساب (AUTOSAR_AP_SWS_Diagnostics ص. 234). ويشمل شركاء التفاعل بالدرجة الأولى Diagnostic Management Core (DM)، الذي يحدد حالة UDS DTC عند تحديث حالات الأحداث [SWS_DM_01109] ويُخطر عبر ردود النداء المكونة [SWS_DM_01110]. تفسير: يُرجح إبلاغ دوال التطبيق المسجلة بتغير الحالة هذا عبر الاسم المستعار للنوع ara::diag::EventStatusByteNotifier[SWS_DM_02118]، حتى تتمكن من الاستجابة لتغيرات الحالة. سؤال Q-8fd114acd74569ee (مفتوح)
دورة الحياة
نسخ ara::diag::EventStatusByte هي كائنات قيمة خفيفة الوزن محددة في الترويسة ara/diag/event_types.h[SWS_DM_01753]. ويتم الإنشاء إما عن طريق النسخ، أو النقل، أو عبر مُنشئ قالب وسيطي متغير (variadic template constructor) يستقبل عددًا اختياريًا من EventStatusBits المراد تعيينها [SWS_DM_01753]. ونظرًا لأن المُنشئات وعوامل الإسناد قد أُعلن عنها كـ constexpr وnoexcept، يمكن إنشاء الكائنات بالفعل في وقت الترجمة (AUTOSAR_AP_SWS_Diagnostics §8.47.2.1.1 «Special Member Functions»).
فيما يتعلق بالملكية وعمر الكائن، يُمرر الكائن عادةً بالقيمة (by-value) أو بمرجع ثابت إلى المُنبهات. ويضمن مُنشئ النقل [SWS_DM_01751] ومُنشئ النسخ [SWS_DM_01752] الأمان من الاستثناءات والأمان المؤشري. وعلى النقيض من ذلك، صُنِّف عامل إسناد النسخ [SWS_DM_01750] وعامل إسناد النقل [SWS_DM_01749] في المواصفة صراحةً بأنهما غير آمنين مؤشريًا (not thread-safe). وتكون عمليات الوصول المتزامنة المتعددة للقراءة إلى بايت حالة موجود آمنة مؤشريًا، إلا أن عمليات الإسناد المغيرة إلى نسخة مشتركة تتطلب مزامنة خارجية.
مسار الاستخدام
تتمثل حالة الاستخدام النموذجية في فحص بايت حالة مرسل من Diagnostic Management للتحقق من معايير تشخيص معينة. وتوفر الفئة طرق تقييم متخصصة لهذا الغرض:
الفحص لاختبار الخطأ: باستخدام IsFailedAndTested()، يمكن الفحص مباشرةً عما إذا كان كل من البت kTestFailed وkTestFailedThisOperationCycle معينين [SWS_DM_01757]. تفسير: يشير هذا للتطبيق إلى أنه تم بالفعل اختبار الحدث في دورة التشغيل الحالية وتصنيفه كخاطئ. سؤال (مفتوح)
الفحص لاختبار خالٍ من الأخطاء: تعيد الطريقة IsPassedAndTested() القيمة true إذا لم يكن أي من kTestFailed أو kTestNotCompletedThisOperationCycle معينًا [SWS_DM_01756].
فحوصات البتات العامة: عبر القالب IsSet(bits...)، يمكن التحقق مما إذا كانت جميع بتات الحالة الممررة معينة [SWS_DM_01755]. وبشكل مكمل لذلك، تفحص IsNotSet(bits...) ما إذا كان أي من البتات الممررة غير نشط [SWS_DM_01754].
عند إعادة تعيين الأخطاء عبر عملية clearDTC، تقوم Diagnostic Management بتنظيف جميع الأحداث ذات الصلة بغض النظر عما إذا كانت تركيبات الأحداث قد تم تكوينها [SWS_DM_01108]. يوضح مخطط التسلسل التالي التفاعل أثناء تحديث الحالة والتقييم اللاحق في التطبيق.
بما أن ara::diag::EventStatusByte عبارة عن حاوية بيانات أولية، فإن جميع الدوال الأعضاء محددة بأنها noexcept وآمنة تمامًا من الاستثناءات ([SWS_DM_01749] إلى [SWS_DM_01757]). ولا يتم إطلاق أي استثناءات C++ ولا تُعاد رموز خطأ في صورة ara::core::Result.
وبالتالي، لا تنشأ حالات الخطأ في التطبيق من رموز أخطاء API، بل من التفسيرات الخاطئة الدلالية أو أخطاء المزامنة. والمخاطر النموذجية هي عمليات الوصول المتزامنة للكتابة عبر عوامل الإسناد دون حماية Mutex ([SWS_DM_01749]، [SWS_DM_01750]) أو الافتراض الخاطئ بأن EventStatusByte يتم تعديله بواسطة DTCs المجمعة، على الرغم من أنه يظل مقيدًا بصرامة بالحدث الفردي وفقًا للمواصفة (AUTOSAR_AP_SWS_Diagnostics ص. 234).
يستند هذا الدليل إلى مواصفة AUTOSAR Adaptive R25-11 ويلخص خصائص الفئة وفقًا للوثيقة AUTOSAR_AP_SWS_Diagnostics.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني