يمكّن التطبيقات من المعالجة العامة لخدمات RoutineControl في UDS مع تمرير غير متزامن للبيانات.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: ed3ab770d945المصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يمكّن التطبيقات من المعالجة العامة لخدمات RoutineControl في UDS مع تمرير غير متزامن للبيانات.
يوفر الصنف معالجًا عامًا لخدمات RoutineControl في UDS ويعيد توجيه الطلبات لمُعرّفات إجراءات مختلفة إلى التطبيقات التكيفية [SWS_DM_00552]. يطبق المطورون إجراءات الروتين المطلوبة عبر دوال غير متزامنة مثل Start وينشطون إعادة توجيه الرسائل بواسطة Offer[SWS_DM_00557]. ونظرًا لأن النسخ غير قابلة للنسخ ولا للنقل، يجب التحكم في دورة الحياة والتزامن بدقة عبر المنشئ وتهيئة الواجهة. تدعم العمليات الجارية عمليات الإلغاء التعاونية بالإضافة إلى رموز أخطاء UDS القياسية.
السياق
يوفر الصنف ara::diag::GenericRoutine الواجهة العامة لمعالجة إجراءات التشخيص وفقًا للمعيار ISO 14229-1 (UDS RoutineControl، الخدمة 0x31) في AUTOSAR Adaptive Platform. وهو يعمل كحلقة وصل بين Diagnostic Management (DM) المركزي والتطبيق التكيفي. تُربط نسخة من هذا الصنف بنموذج أولي للمنفذ من النوع DiagnosticRoutineGenericInterface، والذي يجب الإشارة إليه عبر DiagnosticServiceGenericMapping في النموذج [SWS_DM_00552]. وخلافًا لواجهات الإجراءات محددة النوع، يمرر GenericRoutine البيانات الأولية لطلب التشخيص كـ ara::core::Span<const std::uint8_t> مع مُعرّف الإجراء الفعلي (routineId) إلى التطبيق [SWS_DM_00554]، [SWS_DM_00555]، [SWS_DM_00556]. يتيح ذلك لمعالج واحد خدمة عدة إجراءات بمرونة.
دورة الحياة
تكون نسخ GenericRoutine مقيدة بمنفذها المحدد ولا يجوز نسخها أو نقلها؛ وتم حذف منشئ النسخ ومنشئ النقل وعوامل التعيين صراحةً [SWS_DM_01637]، [SWS_DM_01638]، [SWS_DM_01635]، [SWS_DM_01636]. تتم التهيئة عبر المنشئ مع تحديد ara::core::InstanceSpecifier بالإضافة إلى سلوك التزامن (ConcurrencyType: kConcurrent أو kNotConcurrent) [SWS_DM_00552]. يحدد هذا المعامل ما إذا كان يجب تنفيذ دوال التنفيذ الافتراضية بشكل آمن خيطيًا.
بعد الإنشاء، لا يعيد DM في البداية توجيه أي رسائل إلى المعالج. وفقط من خلال استدعاء Offer() يتم تفعيل إعادة التوجيه [SWS_DM_00557]. وعبر StopOffer() يمكن إلغاء تفعيل إعادة التوجيه مجددًا [SWS_DM_00558]، قبل تحرير النسخة بواسطة المدمر الافتراضي ~GenericRoutine()[SWS_DM_00553]. وبينما يكون المنشئ آمنًا خيطيًا، فإن Offer() وStopOffer() والمدمر ليست آمنة خيطيًا وتتطلب مزامنة خارجية [SWS_DM_00552]، [SWS_DM_00557]، [SWS_DM_00558]، [SWS_DM_00553].
لتوفير إجراء عام، يشتق تطبيق ما من GenericRoutine ويعيد كتابة الدوال الافتراضية المطلوبة. وتكون الدالة Start (دالة UDS الفرعية 0x01) افتراضية صرفة (pure virtual) ويجب تنفيذها إلزاميًا [SWS_DM_00554]. أما الدوال Stop (الدالة الفرعية 0x02) [SWS_DM_00555] وRequestResults (الدالة الفرعية 0x03) [SWS_DM_00556] فهي دوال افتراضية؛ تفسير: نظرًا لأنها ليست افتراضية صرفة، فمن المفترض أنه يلزم فقط إعادة كتابتها إذا كان الإجراء المعني يدعم وظيفيًا الإيقاف أو استعلام النتائج المنفصل. سؤال (مفتوح)
يتضمن المسار المنتظم المراحل التالية:
إنشاء النسخة: إنشاء المعالج المشتق مع مرجع المنفذ ووضع التزامن [SWS_DM_00552].
التنفيذ: عند ورود طلبات UDS، يستدعي DM Start أو Stop أو RequestResults. يتلقى التطبيق routineId وrequestData وmetaInfo بالإضافة إلى CancellationHandler، ويُرجع ara::core::Future<OperationOutput>[SWS_DM_00554]، [SWS_DM_00555]، [SWS_DM_00556]. وصلاحية requestData مضمونة حتى يتم استيفاء Promise المقترن أو يتم إلغاء العملية [SWS_DM_00554].
معالجة الإلغاء: يمكن للتطبيق عبر cancellationHandler.IsCanceled() التحقق من حالة الإلغاء أو تسجيل رد نداء عبر cancellationHandler.SetNotifier()[SWS_DM_00554]. تفسير: في حالة الإلغاء، يُرجح أن يُنهي التطبيق الأنشطة الجارية في الخلفية بشكل مبكر ويقوم بتسوية Promise في وقت قريب. سؤال (مفتوح)
إلغاء التفعيل: إنهاء إعادة التوجيه عبر StopOffer()[SWS_DM_00558] قبل تدمير الكائن.
يمكن أن تحدث أخطاء أثناء التهيئة وكذلك أثناء وقت التشغيل والتنفيذ:
انتهاكات النموذج والتعيين: إذا فشل حل InstanceSpecifier في النموذج، أو لم يتم التعرف عليه كـ PortPrototype، أو لم يوجد DiagnosticServiceGenericMapping مطابق، يُبلغ إطار العمل عن انتهاكات مثل InstanceSpecifierMappingIntegrityViolation، PortInterfaceMappingViolation، ProcessMappingViolation أو InstanceSpecifierAlreadyInUseViolation[SWS_DM_00552].
أخطاء التقديم: إذا تم استدعاء Offer() على الرغم من أن الخدمة معروضة بالفعل، يفشل الاستدعاء ويُرجع رمز الخطأ DiagOfferErrc::kAlreadyOffered[SWS_DM_00557].
رموز أخطاء التشخيص (NRC): إذا تعذر إكمال عملية إجراء بنجاح أو احتوى الطلب على معاملات غير صالحة، لا يستوفي التطبيق Future المُرجع بـ OperationOutput، بل برمز استجابة سلبية (NRC) مناسب لـ UDS من DiagUdsNrcErrc وفقًا للمعيار ISO 14229-1 [SWS_DM_00554]، [SWS_DM_00555]، [SWS_DM_00556].
يستند دليل الفئات هذا إلى مواصفة 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 typed by a pingViolation DiagnosticRoutineGenericInterface needs to be referenced by a DiagnosticServiceGenericMapping. 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 DiagnosticRoutineGenericInterface.
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 · درجة الحرارة: غير قابل للتحكم · الموجّه: 36b2772d0811المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تمكّن الدالة Offer من الفئة ara::diag::GenericRoutine الـ Diagnostic Management (DM) من إعادة توجيه رسائل طلب التشخيص الواردة لروتين ما إلى المعالج المسجل [SWS_DM_00557]. يتم الاستدعاء بشكل متزامن، ولا يقبل أي معاملات، ويعيد ara::core::Result<void>[SWS_DM_00557]. نظرًا لأن الطريقة مصرح عنها بالمواصفة noexcept، فإنها تُعد آمنة من حيث الاستثناءات (exception safe) [SWS_DM_00557].
معالجة الأخطاء
إذا فشلت الإتاحة، تُرجع الطريقة نتيجة سلبية. إذا تم عرض الروتين مسبقًا لنفس النسخة المعنية، تُرجع الطريقة رمز الخطأ المحدد DiagOfferErrc::kAlreadyOffered[SWS_DM_00557]. تم تحديد دلالات التراجع لحالة الخطأ هذه، بحيث تظل الحالة دون تغيير [SWS_DM_00557]. معرف الخطأ kAlreadyOffered مثبت أيضًا في نطاقات الأخطاء الداخلية لاستدعاءات التشخيص [SWS_DM_00514].
التزامن والقيود
تم تحديد الواجهة صراحة على أنها غير آمنة للخيوط (not thread-safe) [SWS_DM_00557]. إذا وصلت عدة خيوط لتطبيق ما إلى نفس المعالج، فيجب مزامنة الاستدعاء. تفسير: يُرجح أن يحدث الاستدعاء عادةً أثناء التهيئة، نظرًا لأنه لا يمكن تلقي أي طلبات قبل تنفيذ Offer. سؤال Q-0c42f415bcb0de20 (مفتوح)
تفاعل
يُعد توفير الوظائف عبر Offer نمطًا مركزيًا في عنقود تشخيص AUTOSAR Adaptive؛ ويتم استخدامه بالمثل أيضًا لواجهات الروتين محددة النوع [SWS_DM_00594]، وخدمات UDS العامة [SWS_DM_00619]، بالإضافة إلى معرّفات البيانات [SWS_DM_00638]. على الرغم من تطابق الاسم مع ara::com، فإن هذا يمثل تنفيذًا محددًا لـ Diagnostic Management SWS Diagnostics §7.3.4.1.2 «Monitors».
تم إعداد ملاحظة الاستخدام هذه بواسطة ذكاء اصطناعي وتستند حصريًا إلى مواصفة AUTOSAR R25-11.
Called for RoutineControl with SubFunction RequestResults (0x03) request for this Diagnostic RoutineIdentifier.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: f4080ca4c8cdالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يتم استدعاء الطريقة RequestResults للفئة ara::diag::GenericRoutine بواسطة مثيل خادم التشخيص لمعالجة طلبات UDS RoutineControl للخدمة 0x31 مع الوظيفة الفرعية requestRoutineResults (0x03) بشكل عام لمعرّف روتين التشخيص المُمَعْلَم ([SWS_DM_00575]، [SWS_DM_00556]).
عند الاستدعاء، يتم تمرير معرّف الروتين routineId، والبيانات الوصفية الخاصة بالطلب metaInfo، وبيانات الإدخال requestData ([SWS_DM_00556]). وتقتصر صلاحية النطاق requestData بدقة حتى يتم استيفاء Promise المقابل أو إلغاء التنفيذ ([SWS_DM_00556]). ويتيح cancellationHandler الممرر الاستعلام عن حالة الإلغاء عبر IsCanceled بالإضافة إلى تسجيل دالة إشعار عبر SetNotifier ([SWS_DM_00556]).
تُعاد النتيجة بشكل غير متزامن كـ ara::core::Future<OperationOutput> ([SWS_DM_00556]). تفسير: يُرجح أن توفير بيانات الإخراج يتم عادةً بشكل غير متزامن عبر ara::core::Promise من جانب التطبيق. سؤال Q-f50c8509d7515e3f (مفتوح) وفي حالة النجاح، يوفر الـ Future كائن OperationOutput، بينما في حالة الخطأ، يتم إرسال UDS-NRC مناسب وفقًا لـ ISO 14229-1 عبر DiagUdsNrcErrc ([SWS_DM_00556]). أُعلن عن الدالة كـ noexcept وتُعتبر آمنة استثنائيًا ([SWS_DM_00556]).
فيما يتعلق بالتزامن، فإن الأمان المؤشري مشروط (conditional): وما إذا كان يجب تنفيذ الطريقة لتكون آمنة مؤشريًا يتم التحكم فيه بشكل إلزامي عبر ConcurrencyType الممرر إلى المُنشئ ([SWS_DM_00556]).
تم إنشاء ملاحظة الاستخدام هذه تلقائيًا بناءً على مواصفات 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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier), 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.
Called for RoutineControl with SubFunction Start (0x01) request for this DiagnosticRoutine Identifier.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 9e819a027940المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يتم استدعاء الطريقة Start للفئة ara::diag::GenericRoutine بمجرد وصول طلب تشخيص لـ RoutineControl بالوظيفة الفرعية Start (0x01) لـ routineId المحددة [SWS_DM_00554]. على عكس واجهة الروتين محددة النوع وفقاً لـ [SWS_DM_00591]، تستقبل هذه الواجهة العامة البيانات الخام لرسالة الطلب كنطاق بايتات (Byte-Span).
تنطبق المتطلبات وخصائص الواجهة التالية على التنفيذ:
سياق الاستدعاء والمعلمات: بالإضافة إلى routineId والبيانات الوصفية (metaInfo)، يتم تمرير المعلَم requestData. تظل فترة صلاحية بيانات الطلب سارية حتى يتم استيفاء الوعد (Promise) أو إلغاء المعالجة بواسطة cancellationHandler[SWS_DM_00554].
معالجة الإلغاء: يمكن للروتين الاستعلام عن حالة الإلغاء الحالية باستخدام cancellationHandler.IsCanceled() أو تسجيل دالة إشعار عبر cancellationHandler.SetNotifier() يتم استدعاؤها عند إلغاء المحادثة [SWS_DM_00554].
الدلالات غير المتزامنة: تتم المعالجة بشكل غير محجوب عبر ara::core::Future<OperationOutput>. عند التنفيذ الناجح، يوفر OperationOutput البيانات المفيدة للاستجابة الإيجابية [SWS_DM_00554].
معالجة الأخطاء: إذا فشل التنفيذ، يجب إكمال المستقبل (Future) برمز استجابة سلبية (NRC) مناسب وفقاً للمعيار ISO 14229-1 باستخدام DiagUdsNrcErrc[SWS_DM_00554].
التزامن: تم التصريح عن الدالة بأنها آمنة من الاستثناءات (noexcept). ويحدد ConcurrencyType الممرر إلى المنشئ ما إذا كان يجب أن يكون التوفير آمناً لخيوط المعالجة [SWS_DM_00554].
تم إنشاء ملاحظة الاستخدام هذه تلقائيًا بناءً على مواصفات 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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). 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.
Called for RoutineControl with SubFunction Stop (0x02) request for this DiagnosticRoutine Identifier.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: d8c6cb55284bالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يتم استدعاء الدالة Stop عند ورود طلب RoutineControl خاص بـ UDS مع الدالة الفرعية Stop (0x02) لروتين التشخيص العام المعني [SWS_DM_00555]. وبالمقارنة مع واجهات الروتين محددة النوع [SWS_DM_00592]، فإنها تستقبل معرف الروتين routineId وكذلك بيانات الطلب كنطاق بيانات أولية (raw data span) requestData[SWS_DM_00555].
عند الاستخدام، يجب مراعاة قواعد المعاملات وسير العمل التالية [SWS_DM_00555]:
فترة بقاء نطاق بيانات الإدخال: تظل مساحة الذاكرة الخاصة بـ requestData صالحة حتى يتم استيفاء Promise المقترن بها أو إلغاء التنفيذ عبر cancellationHandler[SWS_DM_00555].
معالجة الإلغاء: يمكن للتطبيق التحقق عبر cancellationHandler.IsCanceled() مما إذا كانت محادثة التشخيص الحالية قد أُلغيت، أو تسجيل دالة إشعار عبر cancellationHandler.SetNotifier يتم إطلاقها عند الإلغاء [SWS_DM_00555].
عدم التزامن والإرجاع: تعمل الدالة بشكل غير متزامن وترجع ara::core::Future<OperationOutput> يحتوي في حالة النجاح على بيانات الإخراج الخاصة باستجابة UDS الإيجابية [SWS_DM_00555].
تتم معالجة الأخطاء عبر قيم إرجاع تشخيصية سلبية: إذا فشل إيقاف الروتين، فيجب إنهاء Future برمز خطأ UDS NRC مناسب وفقاً للمعيار ISO 14229-1 عبر DiagUdsNrcErrc[SWS_DM_00555].
فيما يتعلق بالتزامن، تم تحديد الدالة كـ noexcept وآمنة من حيث الاستثناءات. ويعتمد ما إذا كان التنفيذ الفعلي يجب أن يكون مصمماً ليكون آمناً من حيث الخيوط على ConcurrencyType الممرر في دالة البناء أثناء إنشاء النسخة [SWS_DM_00555].
تستند ملاحظة الاستخدام هذه حصرياً إلى مواصفات إصدار Adaptive AUTOSAR 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
routineId
the corresponding RoutineIdentifier
requestData
Content of request message (without RoutineIdentifier). Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
metaInfo
MetaData 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 · درجة الحرارة: غير قابل للتحكم · الموجّه: 73588f5f0b57المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تعطّل الطريقة ara::diag::GenericRoutine::StopOffer إعادة توجيه طلبات التشخيص الواردة من Diagnostic Management (DM) إلى نسخة الروتين المعنية [SWS_DM_00558]. تمتلك الدالة التوقيع void StopOffer() noexcept;، ولا تأخذ معاملات ولا تُرجع أي قيمة [SWS_DM_00558]. تتم معالجة الاستدعاء بشكل متزامن ويشير إلى DM بأن الروتين لن يقبل أي طلبات بعد هذه اللحظة.
معالجة الأخطاء
تم تحديد العملية على أنها exception safe ومصرح عنها بـ noexcept[SWS_DM_00558]. لا تحدث رموز خطأ أو استثناءات C++ أثناء التنفيذ. لا تتوفر رسائل محددة لنسخ التطوير أو ذاكرة الأخطاء (DET/DEM) لهذه الواجهة في وحدة التشخيص.
التزامن والقيود
فيما يتعلق بسلوك الخيوط، تم تصنيف الطريقة على أنها not thread-safe[SWS_DM_00558]. لذلك، يجب مزامنة الاستدعاءات المتزامنة على نفس النسخة من ara::diag::GenericRoutine من جهة التطبيق. تفسير: يُرجح أن يحدث الاستدعاء بشكل أساسي عند إلغاء تنشيط روتين مؤقتًا أو إنهاء التطبيق بشكل محكم بعد إجراء استدعاء الإتاحة مسبقًا. سؤال Q-e110ce01110699e3 (مفتوح)
تفاعل
تتبع التسمية مفاهيميًا تقديم الخدمة لـ ara::com، ولكنها تمثل تنفيذًا مستقلاً داخل ara::diag ويجب عدم الخلط بينها وبين عروض الاتصال (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). تستخدم فئات التشخيص الأخرى على مستوى الوحدة أيضًا نفس نمط الإتاحة لتعطيل إعادة توجيه الطلبات مثل ara::diag::GenericUDSService[SWS_DM_00620]، وara::diag::GenericDataIdentifier[SWS_DM_00639]، وواجهات الروتين [SWS_DM_00595] بالإضافة إلى ara::diag::Monitor[SWS_DM_01089].
تم إنشاء هذا النص بواسطة ذكاء اصطناعي ويستند حصريًا إلى وثائق مواصفات AUTOSAR R25-11.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني