يتيح تعيين شروط التشخيص المتعددة والاستعلام عنها عبر واجهة مشتركة استنادًا إلى المقابض.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 2f3f3f7d9426المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يتيح تعيين شروط التشخيص المتعددة والاستعلام عنها عبر واجهة مشتركة استنادًا إلى المقابض.
تُستخدم الفئة ara::diag::MultipleCondition للاستعلام المجمع وتحديث شروط التشخيص المتعددة عبر واجهة منفذ مشتركة استنادًا إلى المقابض الرقمية ([SWS_DM_01730]). تقوم التطبيقات بتهيئة الكائن عبر InstanceSpecifier وتتحكم في الشروط بشكل مستهدف عبر SetCondition و GetCondition ([SWS_DM_01729]). وكشرط أساسي، فإن الفئة غير قابلة للنسخ أو النقل، ومدمّرها ليس آمنًا خيطيًا. بالإضافة إلى ذلك، يجب تكوين جميع الشروط المعنونة في النموذج بشكل متسق عبر تعيينات المنافذ (Port-Mappings) لتجنب أخطاء التهيئة ووقت التشغيل.
السياق
تتيح الفئة ara::diag::MultipleCondition للتطبيق التكيفي إدارة وتعديل شروط التشخيص المتعددة بشكل مجمع عبر واجهة مشتركة ([SWS_DM_01730]). ومن الناحية الوظيفية والدلالية، فإنها توفر نفس قدرات الشروط الفردية، لكنها توسّع العمليات لتشمل العنونة المستهدفة عبر مقبض تعريف (AUTOSAR_AP_SWS_Diagnostics ص. 237). يتطلب كل شرط تشخيص مُدار (DiagnosticCondition) في النموذج ارتباطًا عبر DiagnosticMultipleConditionPortMapping بمنفذ ذي نوع مطابق ([SWS_DM_01727]، AUTOSAR_AP_SWS_Diagnostics ص. 237). وتتم العنونة عبر النوع ConditionHandleType؛ وإذا لم تكن هناك قيمة overrideId صريحة، يخصص Diagnostic Management (DM) قيمًا رقمية تصاعدية تبدأ من 0x010000 وفقًا للترتيب الأبجدي للأسماء المختصرة ([SWS_DM_01735]).
يتم إنشاء نسخة عبر المنشئ MultipleCondition مع تمرير ara::core::InstanceSpecifier ([SWS_DM_01727]). عملية الإنشاء آمنة خيطيًا ومُعلن عنها كـ noexcept ([SWS_DM_01727]). ويمتلك الكائن ارتباطًا صارمًا بنطاق صلاحيته المحلي: تم حذف كل من عمليات النسخ والنقل؛ مُنشئ النسخ ([SWS_DM_02072])، ومُنشئ النقل ([SWS_DM_02071])، ومعامل تعيين النسخ ([SWS_DM_02073])، ومعامل تعيين النقل ([SWS_DM_02074]) غير متاحة (=delete).
تم تحديد المدمّر ~MultipleCondition() صراحةً بأنه غير آمن خيطيًا ([SWS_DM_01737]). لذلك يجب على التطبيق التأكد من اكتمال جميع عمليات الوصول المتزامنة إلى الكائن قبل تدميره. وبالنسبة لاستدعاءات الدوال العادية، يسري أمان خيطي مشروط ([SWS_DM_01728]، [SWS_DM_01729]). تفسير: نظرًا لأن توقيع المنشئ وفقًا لـ [SWS_DM_01727] لا يقبل معامل تزامن صريحًا، فمن المحتمل أن يتم تحديد ConcurrencyType المطلوب عبر نموذج المنفذ الأساسي في البيان (Manifest). سؤال Q-f29def512a68aae9 (مفتوح)
مسار الاستخدام
يتضمن التسلسل النموذجي عند التفاعل مع شروط التشخيص الخطوات التالية:
التهيئة: يُنشئ التطبيق نسخة من الفئة مع تحديد المنفذ المستهدف ([SWS_DM_01727]).
تعيين الحالة: باستخدام SetCondition(conditionHandle, condition)، يُرسل التطبيق تغييرًا في الحالة للشرط المحدد ويتحقق من ara::core::Result<void> الناتج ([SWS_DM_01729]).
الاستعلام عن الحالة: عبر GetCondition(conditionHandle)، تُطلب الحالة الحالية للشرط المعنون بشكل غير متزامن كـ ara::core::Future<ConditionType> ([SWS_DM_01728]).
تحرير الموارد: عند مغادرة نطاق الصلاحية، يقوم مدمّر الكائن بتفكيك الواجهة بطريقة منظمة ([SWS_DM_01737]).
عند الاستخدام، يجب التمييز بين أخطاء الإنشاء المرتبطة بالنمذجة وأخطاء وقت التشغيل الوظيفية:
انتهاكات الإنشاء ([SWS_DM_01727]):
إذا فشل حل InstanceSpecifier أو لم يُشر إلى PortPrototype، فسيتم الإبلاغ عن InstanceSpecifierMappingIntegrityViolation. ويحدث PortInterfaceMappingViolation إذا لم يكن نوع المنفذ محددًا كـ DiagnosticMultipleConditionInterface. وإذا كان النظير المنمذج مفقودًا في العملية، ينشأ ProcessMappingViolation. وإذا تم إنشاء نسخ متعددة من InstanceSpecifier نفسه داخل العملية، يؤدي ذلك إلى InstanceSpecifierAlreadyInUseViolation.
أخطاء وقت التشغيل عند استدعاء الدوال:
إذا تم تمرير معامل غير مسموح به أو مقبض غير صالح إلى SetCondition ([SWS_DM_01729]) أو GetCondition ([SWS_DM_01728])، فإن الدوال تُرجع الخطأ DiagErrc::kInvalidArgument. وإذا كانت الوظيفة الأساسية لـ Diagnostic Management غير متاحة مؤقتًا، تؤكد GetCondition الاستدعاء بـ DiagErrc::kServiceNotAvailable ([SWS_DM_01728]).
يستند هذا الدليل حصريًا إلى مواصفات AUTOSAR Adaptive Platform R25-11.
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 DiagnosticMultipleConditionPortMapping needs to be typed by a DiagnosticMultipleConditionInterface. 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 DiagnosticMultipleConditionInterface
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني