يمكّن التطبيقات من المعالجة العامة لطلبات القراءة والكتابة الخاصة بـ UDS لمعرّفات التشخيص.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 02c252ff66d0المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يمكّن التطبيقات من المعالجة العامة لطلبات القراءة والكتابة الخاصة بـ UDS لمعرّفات التشخيص.
تُستخدم الفئة ara::diag::GenericDataIdentifier كواجهة عامة للمعالجة غير المتزامنة لطلبات القراءة والكتابة الخاصة بـ UDS لمعرّفات التشخيص في AUTOSAR Adaptive [SWS_DM_00636]. بعد الربط بمنفذ والتمكين عبر Offer()، يوجّه Diagnostic Management الطلبات إلى الدوال المنفّذة [SWS_DM_00638]. وباعتباره نسخة مفردة، لا يمكن نسخ الكائن أو نقله، في حين يتم التحكم في الأمان الخيطي لمعالجة الطلبات عبر تكوين التزامن المختار عند المنشئ.
السياق
تمثل الفئة ara::diag::GenericDataIdentifier واجهة خدمة عامة داخل المجموعة الوظيفية Diagnostic Management (DM) لـ AUTOSAR Adaptive Platform SWS Diagnostics §8.2 «GenericDataIdentifier». وبينما ترتبط الواجهات محددة النوع بأنواع بيانات مصممة بشكل ثابت، يُستخدم GenericDataIdentifier للمعالجة المرنة لمعرّفات التشخيص (معرّفات البيانات، DIDs)، حيث يتم تمرير المعرّف ذي الـ 16 بت ديناميكيًا كمعامل.
تشارك ثلاثة أدوار رئيسية في معالجة التشخيص:
جهاز فحص التشخيص الخارجي، الذي يوجّه خدمات UDS القياسية مثل ReadDataByIdentifier (0x22) أو WriteDataByIdentifier (0x2E) إلى المركبة.
Diagnostic Management (DM)، الذي يستقبل طلبات التشخيص ويتحقق من صحتها ويوجهها عبر واجهات منافذ محددة إلى نسخة التطبيق المقابلة، شريطة أن تكون قد تم تنشيطها مسبقًا عبر Offer[SWS_DM_00638].
التنفيذ المخصص للتطبيق لـ GenericDataIdentifier، والذي يغلّف منطق المعالجة الفعلي من خلال توفير الدوال Read[SWS_DM_00636] و Write[SWS_DM_00637] وإرجاع البيانات بشكل غير متزامن.
دورة الحياة
يتم إنشاء نسخة من ara::diag::GenericDataIdentifier صراحةً عبر منشئها [SWS_DM_00634]. وعندئذٍ يربط المستدعي الكائن بـ ara::core::InstanceSpecifier يشير إلى PortPrototype الخاص بـ DiagnosticDataIdentifierGenericInterface منمذج. ويتم تحديد ما إذا كانت الطلبات تُمرر بالتزامن (kConcurrent) أو بالتسلسل (kNotConcurrent) إلى المعالج عبر المعامل concurrencyType (من النوع DataIdentifierConcurrencyType) [SWS_DM_00634].
فيما يتعلق بالملكية وعمر الكائن، تم تصميم GenericDataIdentifier كنسخة مفردة، غير قابلة للنسخ وغير قابلة للنقل:
بعد التهيئة، يكون الكائن في حالة غير نشطة؛ ولا يقوم Diagnostic Management بتوجيه أي طلبات بعد. يتم تنشيط التوجيه فقط من خلال استدعاء Offer()[SWS_DM_00638]. ولإلغاء تنشيط توجيه طلبات التشخيص مجددًا، يستدعي التطبيق StopOffer()[SWS_DM_00639]. ويتم تدمير الكائن عبر المدمّر الافتراضي [SWS_DM_00635].
ينقسم المسار الرأسي النمطي لمعالجة طلبات التشخيص إلى الخطوات التالية:
التهيئة: يُنشئ التطبيق فئة المعالج المشتقة الخاصة به مع تحديد InstanceSpecifier بالإضافة إلى تكوين التزامن [SWS_DM_00634]. تفسير: من المحتمل أن يتم ذلك في الممارسة العملية نمطيًا خلال مرحلة تهيئة عملية التطبيق. سؤال Q-32596fba68253958 (مفتوح)
توفير الخدمة: يستدعي التطبيق Offer()[SWS_DM_00638]. يقوم Diagnostic Management بتنشيط توجيه طلبات DID الواردة.
معالجة الطلب:
عند ورود أمر قراءة، يستدعي DM الدالة Read(dataIdentifier, metaInfo, cancellationHandler)[SWS_DM_00636]. يفحص التطبيق المعرّف الممرر ذي الـ 16 بت ويعيد ara::core::Future<OperationOutput> بشكل غير متزامن.
عند وصول أمر كتابة، يستدعي DM Write(dataIdentifier, requestData, metaInfo, cancellationHandler)[SWS_DM_00637]. تظل بيانات الحمولة في requestData صالحة حتى يتم استيفاء الوعد (Promise) المرتبط بها أو يتم إلغاء المعالجة.
فحص الإلغاء: أثناء العمليات الطويلة، يمكن للمعالج التحقق عبر cancellationHandler.IsCanceled() مما إذا كانت المحادثة قد أُلغيت، أو تسجيل دالة إشعار عبر cancellationHandler.SetNotifier[SWS_DM_00636]، [SWS_DM_00637].
إلغاء تسجيل الخدمة: قبل إنهاء المعالج، يستدعي التطبيق StopOffer()[SWS_DM_00639]، مما يجعل DM يوقف التوجيه.
مخطط تسلسلي: التفاعل بين جهاز الفحص الخارجي و Diagnostic Management و GenericDataIdentifier عند طلب قراءة UDS. المصادر: [SWS_DM_00638]، [SWS_DM_00636]
سيناريوهات الأخطاء
يمكن أن تحدث الأخطاء في مراحل مختلفة من التفاعل:
انتهاكات التكوين وتعيين المنافذ: إذا تعذر حل InstanceSpecifier في النموذج أو كان لا يشير إلى PortPrototype، فسيحدث InstanceSpecifierMappingIntegrityViolation[SWS_DM_00634]. وإذا كان التخصيص لـ DiagnosticDataPortMapping مفقودًا، فسيحدث PortInterfaceMappingViolation[SWS_DM_00634]. يؤدي تعيين العملية المفقود إلى ProcessMappingViolation، ويؤدي InstanceSpecifier المستخدم بالفعل إلى InstanceSpecifierAlreadyInUseViolation[SWS_DM_00634].
التقديم المتعدد: إذا تم استدعاء Offer() بالرغم من تقديم الخدمة بشكل نشط بالفعل، تعيد الدالة ara::core::Result مع رمز الخطأ DiagOfferErrc::kAlreadyOffered[SWS_DM_00638].
أخطاء التشخيص التخصصية: إذا تعذر تلبية طلب قراءة أو كتابة من الناحية التخصصية، فلا يعيد التطبيق حالة نجاح في Future، بل يعيد رمز NRC قياسي لـ UDS (كود الاستجابة السلبية) عبر DiagUdsNrcErrc وفقًا للمعيار ISO 14229-1 [SWS_DM_00636]، [SWS_DM_00637].
يستند هذا الدليل إلى مواصفة AUTOSAR الإصدار 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 typed by a pingViolation DiagnosticDataIdentifierGenericInterface needs to be referenced by a DiagnosticDataPortMapping. 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 DiagnosticDataIdentifierGenericInterface.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent)
Request a governed re-review of this record. The record is not changed immediately.
This Offer will enable the DM to forward request messages to this handler.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 860e6bd15d7fالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام: تُستخدم الدالة المتزامنة Offer للفئة ara::diag::GenericDataIdentifier ([SWS_DM_00638]) لتسجيل معالج معرّف بيانات عام لدى Diagnostic Management (DM). ومن خلال هذا الاستدعاء، يتم تخويل DM لإعادة توجيه طلبات التشخيص الواردة (Request Messages) لمعرّف البيانات المعني إلى هذا المعالج ([SWS_DM_00638]). ولا تقبل الدالة أي معلمات تمرير وتُرجع بشكل متزامن ara::core::Result<void> ([SWS_DM_00638])، والذي يفيد بالنجاح أو الخطأ.
معالجة الأخطاء: تم التصريح عن الدالة بـ noexcept وهي تضمن أمانًا تامًا من الاستثناءات (exception safe) ([SWS_DM_00638]). ويتم الإبلاغ عن الأخطاء المحتملة عبر ara::core::Result. وإذا كان المعالج قد تم توفيره بالفعل مسبقًا، تُرجع الدالة رمز الخطأ DiagOfferErrc::kAlreadyOffered بدلالة التراجع ([SWS_DM_00638]). ويتوافق هذا مع تعداد الأخطاء العام DiagErrc::kAlreadyOffered ([SWS_DM_00514]).
التزامن والقيود: حُدّدت الدالة بأنها غير آمنة للخيوط (not thread-safe) ([SWS_DM_00638]). وبالتالي، يجب حماية الاستدعاءات على النسخة نفسها من الوصول المتزامن. وبما أنه لم يتم تحديد دالة إلغاء تسجيل منفصلة لـ GenericDataIdentifier، فمن المحتمل أن يكون عرض الخدمة مرتبطًا بفترة بقاء نسخة المعالج (تفسير). سؤال Q-7c64a5bd308464a8 (مفتوح)
التكامل والتفاعل: يتبع هذا الإجراء نمط التوفير المتسق لـ Diagnostic Management. وتوجد واجهات مماثلة لمعرّفات البيانات الخاصة بالنوع ([SWS_DM_00599])، والروتينات العامة ([SWS_DM_00557])، وكذلك خدمات UDS العامة ([SWS_DM_00619]).
تم إنشاء ملاحظة الاستخدام هذه بواسطة نظام ذكاء اصطناعي.
Called for ReadDataByIdentifier request for this DiagnosticDataIdentifier.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 7772a86b7791المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تُستدعى الطريقة Read من الفئة ara::diag::GenericDataIdentifier بمجرد ورود طلب تشخيص لـ ReadDataByIdentifier (UDS 0x22) لمعرف البيانات المعني [SWS_DM_00636]. وكعوامل، تأخذ الدالة المعرف العددي dataIdentifier، والسياق metaInfo بالإضافة إلى cancellationHandler. وعبر cancellationHandler، يمكن للتطبيق الاستعلام عن حالة الإلغاء باستخدام IsCanceled أو تسجيل دالة إشعار للمحادثات الملغاة عبر SetNotifier[SWS_DM_00636]. وتتوفر النتيجة بشكل غير متزامن عبر ara::core::Future<OperationOutput>، والذي يُرجع حمولة البيانات (OperationOutput) في حالة النجاح [SWS_DM_00636].
معالجة الأخطاء
في حالة الخطأ، يرجع Future قيمة إرجاع UDS سلبية (NRC) وفقًا للمعيار ISO 14229-1 عبر DiagUdsNrcErrc[SWS_DM_00636]. وإذا كانت الواجهة غير معروضة بعدُ أو لم تعد معروضة عبر offer()، يستجيب Diagnostic Management (DM) تلقائيًا برمز NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. وإذا تم الوصول إلى الحد المكوَّن لرسائل Response Pending، يقطع الخادم المعالجة ويستجيب بالرمز NRC 0x10 (generalReject) [SWS_DM_00369].
التزامن والتفاعل
تم التصريح عن الدالة كـ noexcept وهي آمنة من الاستثناءات [SWS_DM_00636]. أما أمان الخيوط لديها فمشروط: إذ يُحدَّد ما إذا كان يجب أن يكون التنفيذ آمنًا للخيوط عبر ConcurrencyType الممرَّر في الدالة الإنشائية [SWS_DM_00636]. فإذا كان readWrite مضبوطًا على kConcurrent، يُسمح لـ DM ببدء عمليات الوصول للقراءة والكتابة على نحو متزامن، وإلا (kNotConcurrent) فيتم الاستدعاء بشكل تسلسلي [SWS_DM_00939]. وعلى خلاف الواجهات المحددة مثل [SWS_DM_00640]، يغطي GenericDataIdentifier نطاقات DID عامة بمرونة عبر المعرّف ID الممرَّر [SWS_DM_00636].
تم إنشاء ملاحظة الاستخدام هذه تلقائيًا بناءً على مواصفات AUTOSAR.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataIdentifier
the corresponding DataIdentifier
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
This StopOffer will disable the forwarding of request messages from DM.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: bd73a88bfde2المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام وسياق الاستدعاء
تُستخدم الدالة العضو StopOffer للفئة ara::diag::GenericDataIdentifier لتعطيل إعادة توجيه رسائل الطلب الواردة من Diagnostic Management (DM) إلى المثيل المعني [SWS_DM_00639]. يتم الاستدعاء بشكل متزامن عبر الواجهة من ملف الرأس #include "ara/diag/generic_data_identifier.h"[SWS_DM_00639]. تمتلك الدالة التوقيع void StopOffer() noexcept;، ولا تقبل أي معاملات تمرير ولا تُرجع أي قيمة إرجاع [SWS_DM_00639].
معالجة الأخطاء والتزامن
تحدد المواصفة StopOffer بأنها آمنة من الاستثناءات (exception safe) وتضمن عبر المعرّف noexcept عدم حدوث استثناءات [SWS_DM_00639]. لا توجد رموز أخطاء أو استجابات أخطاء أو إخطارات محددة لـ DET أو DEM مخصصة لهذه العملية. وفيما يتعلق بالتزامن، تم تصنيف الطريقة على أنها غير آمنة لمؤشرات الترابط (not thread-safe) [SWS_DM_00639]. وبالتالي، يجب مزامنة الاستدعاءات المتوازية على نفس المثيل بواسطة المستدعي. تفسير: من المرجح أن تتم معالجة الطلبات التي بدأت بالفعل في Diagnostic Management بشكل منتظم قبل الإيقاف النهائي لإعادة التوجيه. سؤال Q-94a464dc832c055c (مفتوح)
التفاعل داخل وحدة التشخيص
يتم استخدام نمط سحب توفير الخدمة بشكل موحد ومتسق في وحدة التشخيص. توجد طرق StopOffer مماثلة من بين أمور أخرى لكل من:
معرّفات البيانات الخاصة بالنوع عبر DataIdentifierInterface::StopOffer[SWS_DM_00600] وكذلك عناصر البيانات [SWS_DM_00617]،
Called for WriteDataByIdentifier request for this DiagnosticDataIdentifier.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 7b195835c98cالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يتم استدعاء الدالة Write للفئة ara::diag::GenericDataIdentifier بواسطة Diagnostic Management بمجرد تلقي طلب UDS للخدمة WriteDataByIdentifier (0x2E) [SWS_DM_00637]. ويشترط للاستدعاء أن يكون معرّف البيانات المطلوب مدعومًا، وأن تسمح جلسة التشخيص الحالية ومستوى الأمان بالتنفيذ [SWS_DM_00186]، [SWS_DM_00415]، [SWS_DM_00416].
dataIdentifier: معرّف الـ 16 بت لمعرّف البيانات المراد كتابته.
requestData: ara::core::Span يحتوي على البيانات الخام للطلب بدون بادئة DID. ويظل المخزن المؤقت صالحًا حتى يتم استيفاء الوعد المقترن به أو إلغاء المعالجة.
metaInfo: بيانات وصفية إضافية لطلب التشخيص.
cancellationHandler: يُستخدم لمراقبة الإلغاء المبكر للمحادثة عبر IsCanceled وكذلك لتسجيل إشعار بالإلغاء عبر SetNotifier.
يتم التنفيذ بشكل غير متزامن ويُرجع ara::core::Future<void>[SWS_DM_00637]. وعند المعالجة بنجاح، يتم استيفاء الوعد بـ void لرسالة استجابة إيجابية. وفي حال حدوث خطأ، يجب إكمال الـ Future بقيمة إرجاع UDS سلبية مناسبة (NRC) وفقًا للمعيار ISO 14229-1 عبر DiagUdsNrcErrc[SWS_DM_00637]. وقد تم التصريح عن الدالة كـ noexcept ويجب تنفيذها لتكون آمنة من الاستثناءات [SWS_DM_00637].
فيما يتعلق بالتزامن، فإن أمان الخيوط مشروط: إذ يعتمد ما إذا كان يجب تنفيذ Write ليكون آمنًا للخيوط على ConcurrencyType الممرَّر عند إنشاء النسخة في الدالة الإنشائية [SWS_DM_00637]. ويتم التحكم في التنفيذ المتوازي لعمليات الوصول للقراءة والكتابة عبر الراية readWrite[SWS_DM_00939].
تم إنشاء هذا النص بواسطة ذكاء اصطناعي. تستند جميع المعلومات حصريًا إلى مواصفات الإصدار R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
dataIdentifier
the corresponding DataIdentifier
requestData
Content of request message (without DataIdentifier). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns TRUE in case, the current conversation has been cancelled and FALSE otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني