DEENESPTFRRUARHIKOZHNL

Communication Stack Types (ComStack_Types)

ModulComStack (Communication Stack Types)
BSW-Modul-ID196
Standard-Header#include "ComStack_Types.h"
SWS-SpezifikationAUTOSAR_SWS_CommunicationStackTypes.pdf
ClusterGeneral & Standard Types

دليل الوحدةمولَّد بالذكاء الاصطناعي

أنواع بيانات مشتركة، تتبادل بها وحدات مكدس الاتصال الـ PDUs وذاكرات التخزين المؤقت والقنوات.
مُولَّد بالذكاء الاصطناعي غير مُراجَع النموذج: claude-opus-5-5 · الجهد: high · درجة الحرارة: غير قابل للتحكم · الموجّه: 6cf9f0457dd9 المصدر أسئلة مفتوحة (1)
المرساة السببية: R20-11 صالح اعتبارًا من R20-11 مُركَّب حديثًا لهذا الإصدار من المواصفة.
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني

أنواع بيانات مشتركة، تتبادل بها وحدات مكدس الاتصال الـ PDUs وذاكرات التخزين المؤقت والقنوات.

توفر الوحدة comstack عبر ComStack_Types.h الأنواع المشتركة التي تستخدمها كافة طبقات مكدس اتصال Classic لعنونة وتبادل الـ PDUs: PduIdType كمقبض، وPduLengthType كطول، وPduInfoType مع مؤشر بيانات الحمولة النافعة ومؤشر بيانات التعريف والطول ([SWS_COMTYPE_00011]). تنسخ بروتوكولات النقل الـ PDUs الكبيرة مجزأةً عبر StartOfReception وCopyRxData وCopyTxData. وتُبلغ عن حالة ذاكرة التخزين المؤقت باستخدام BufReq_ReturnType، بينما يتحكم RetryInfoType في التأكيد وإعادة المحاولة ([SWS_COMTYPE_00012]). القيد الأهم: يعتمد عرض PduIdType وPduLengthType على تكوين EcuC ويتم توليده.

تُعرّف الوحدة comstack مخزون الأنواع المشترك لمكدس اتصال Classic. ينتمي إلى ذلك PduIdType وPduLengthType وPduInfoType وBufReq_ReturnType وRetryInfoType بالإضافة إلى معرفات القنوات والشبكات الجزئية، وجميعها متاحة عبر ComStack_Types.h ([SWS_COMTYPE_00011]، [SWS_COMTYPE_00038]). تستخدم واجهات النواقل وبروتوكولات النقل وPduR ووحدات التشخيص وRTE نفس الأنواع؛ وتستوردها RTE صراحةً (SWS RTE ص. 833).

kontext types ComStack_Types.h PduIdType, PduLengthType, PduInfoType, BufReq_ReturnType, RetryInfoType, NetworkHandleType, PNCHandleType cfg EcuC-Konfiguration → ComStack_Cfg.h cfg->types erzeugt Breite von PduIdType, PduLengthType rte RTE rte->types importiert com Com / LdCom pdur PduR com->pdur Transmit / RxIndication (PduIdType, PduInfoType*) dcm Dcm dcm->pdur TP-API (BufReq_ReturnType, RetryInfoType) secoc SecOC secoc->pdur واجهة برمجة تطبيقات (API) لـ TP وIF tp CanTp / FrTp / J1939Tp pdur->tp Transmit / CopyTxData / CopyRxData ifs CanIf / LinIf / FrIf pdur->ifs Transmit / TxConfirmation comm ComM / Nm comm->types NetworkHandleType, PNCHandleType

مخطط سياقي: مخزون أنواع واحد لكافة الطبقات، محدد الأبعاد عبر تكوين EcuC. المصادر: [SWS_COMTYPE_00005]، SWS RTE ص. 833

تعتمد المقابض والأطوال على التكوين. PduIdType هو uint8 أو uint16، وPduLengthType هو uint8 أو uint16 أو uint32؛ كلاهما يُولّد من تكوين EcuC ([SWS_COMTYPE_00005]، [SWS_COMTYPE_00008]). تختار كل وحدة موفرة معرفات المقابض الخاصة بها بنفسها. يجب أن تكون فريدة فقط لكل API؛ ويقوم PduR بترجمتها على طول مسار التوجيه (ECU Configuration ص. 156).

يجمع PduInfoType بين مؤشر بيانات الحمولة النافعة ومؤشر بيانات التعريف والطول. وبذلك يحمل هذا الهيكل أوامر الإرسال ودلالات الاستقبال وTrigger Transmit. يتم نسخ الـ PDUs الكبيرة مجزأة: يستدعي بروتوكول النقل بشكل متكرر عبر PduR الدالة CopyTxData للطبقة العليا (SWS PduR ص. 109). يبدأ الاستقبال بـ StartOfReception ويستمر مع CopyRxData.

إرسال TP من Dcm ← CanTp عبر PduRDcmPduRCanTpPduR_<User:Up>Transmit(PduIdType, const PduInfoType*)CanTp_Transmit(PduIdType, const PduInfoType*)E_OKE_OKloopحتى يتم إرسال جميع البياناتPduR_CanTpCopyTxData(id, info, retry, availableDataPtr)Dcm_CopyTxData(id, info, retry, availableDataPtr)نسخ البيانات إلى info->SduDataPtrBUFREQ_OK, *availableDataPtrBUFREQ_OK, *availableDataPtrPduR_CanTpTxConfirmation(PduIdType, Std_ReturnType)Dcm_TpTxConfirmation(PduIdType, Std_ReturnType)

مخطط تتابع: يسحب بروتوكول النقل بيانات الإرسال في حلقة تكرارية من DCM؛ ويتبع التأكيد في النهاية. المصادر: SWS PduR ص. 109

يُبلغ BufReq_ReturnType عن الأخطاء وحالات الاختناق ([SWS_COMTYPE_00012]):

  • BUFREQ_E_BUSY: لا توجد ذاكرة تخزين مؤقت مؤقتًا أو البيانات غير كافية؛ يُسمح بإعادة الاستدعاء.
  • BUFREQ_E_OVFL: لا توجد ذاكرة تخزين مؤقت بالطول المطلوب.
  • BUFREQ_E_NOT_OK: إلغاء.

يتحكم RetryInfoType في التأكيد وإعادة المحاولة عند إرسال TP باستخدام TP_DATACONF وTP_CONFPENDING وTP_DATARETRY إلى جانب الإزاحة TxTpDataCnt ([SWS_COMTYPE_00027]، [SWS_COMTYPE_00037]).

تُكمل أنواع المعرفات الأخرى هذا المخزون. يحدد NetworkHandleType (uint8) قناة اتصال. ويختار TPParameterType كلاً من STmin أو Block Size أو التحكم في عرض النطاق الترددي للتعديل ([SWS_COMTYPE_00031]). تم اشتقاق PNCHandleType في R20-11 من uint8 ([SWS_COMTYPE_00036])؛ وتذكر نسخة R23-11 بخلاف ذلك uint16 (SWS ComStackTypes ص. 17).

الدور: مخزون الأنواع المشترك لمكدس الاتصال

لا تقدم الوحدة comstack أي خدمات خاصة بها. إنها تُعرّف أنواع البيانات التي تتواصل بها وحدات مكدس اتصال Classic مع بعضها البعض. ينتمي إلى ذلك PduIdType وPduLengthType وPduInfoType وBufReq_ReturnType وTpDataStateType وRetryInfoType وTPParameterType وNetworkHandleType وPNCHandleType. وهي متاحة عبر ComStack_Types.h ([SWS_COMTYPE_00011]، [SWS_COMTYPE_00037]، [SWS_COMTYPE_00038]). اجتهاد: وبالتالي لا تمتلك الوحدة نفسها أي سلوك وقت تشغيل. سؤال Q-766338989232e06a (مفتوح) لا تنشأ التسلسلات والحالات واستجابات الأخطاء إلا في الوحدات التي تستخدم هذه الأنواع في واجهاتها.

لذلك يمر حد النظام عبر المكدس بأكمله. تستخدم نفس الأنواع:

  • واجهات النواقل مثل CanIf وبروتوكولات النقل مثل CanTp (SWS CanIf ص. 87)،
  • وPDU Router ووحدات التشخيص مثل DCM (SWS PduR ص. 109)،
  • وSecOC (SWS SecOC ص. 110)،
  • وRTE، التي تستورد صراحةً BufReq_ReturnType وPduIdType وPduInfoType وPduLengthType وRetryInfoType من ComStack_Types.h (SWS RTE ص. 833).
kontext types ComStack_Types.h PduIdType, PduLengthType, PduInfoType, BufReq_ReturnType, RetryInfoType, NetworkHandleType, PNCHandleType cfg EcuC-Konfiguration → ComStack_Cfg.h cfg->types erzeugt Breite von PduIdType, PduLengthType rte RTE rte->types importiert com Com / LdCom pdur PduR com->pdur Transmit / RxIndication (PduIdType, PduInfoType*) dcm Dcm dcm->pdur TP-API (BufReq_ReturnType, RetryInfoType) secoc SecOC secoc->pdur واجهة برمجة تطبيقات (API) لـ TP وIF tp CanTp / FrTp / J1939Tp pdur->tp Transmit / CopyTxData / CopyRxData ifs CanIf / LinIf / FrIf pdur->ifs Transmit / TxConfirmation comm ComM / Nm comm->types NetworkHandleType, PNCHandleType

مخطط سياقي: تعتمد كافة الطبقات من واجهة الناقل حتى RTE على نفس مخزون الأنواع من ComStack_Types.h؛ ويتم إنشاء أحجامه من تكوين EcuC. المصادر: [SWS_COMTYPE_00005]، SWS RTE ص. 833، SWS PduR ص. 33، SWS ComM ص. 171

مقابض وأطوال الـ PDU: هوية وحجم الـ PDU

PduIdType هو عدد صحيح صفري الأساس في النطاق 0…<PduIdmax>. يعتمد عرضه (uint8 أو uint16) على الحد الأقصى لعدد الـ PDUs التي تديرها وحدة برمجية مفردة. تنشئه أداة المولد من القيمة المكونة في الطبقة الافتراضية EcuC في ComStack_Cfg.h ([SWS_COMTYPE_00005]). تحدد المعلمة المرتبطة PduIdTypeEnum القاعدة: يكفي UINT8 ما دامت لا توجد وحدة تعالج أكثر من 256 PDU، وإلا يلزم UINT16 (ECU Configuration ص. 153).

وبالمثل، يتشكل PduLengthType اعتمادًا على التكوين كـ uint8 أو uint16 أو uint32. المعيار الحاسم هو الحد الأقصى لطول الـ PDUs التي ترسلها وحدة تحكم إلكترونية ([SWS_COMTYPE_00008]). وتشتق بروتوكولات النقل أيضًا الأطوال من EcuC: يحدد CanTp الحد الأقصى لطول الإرسال لـ N-PDU من معلمة EcuC المسماة PduLength (SWS CanTp ص. 60).

تجمع واجهات برمجة التطبيقات (APIs) الخاصة بالمكدس بين أمرين: مؤشر إلى ذاكرة التخزين المؤقت لبيانات الـ PDU، ومعرف مقبض (Handle-ID) يحدد الـ PDU التي ينتمي إليها هذا المؤشر. تختار الوحدة الموفرة قيمة معرف المقبض بحرية. وهكذا يمكن أن تنتقل نفس الـ PDU من Com بمعرف 5 إلى PduR ومن PduR بمعرف 19 إلى CanIf. يجب أن يكون المعرف فريدًا فقط ضمن نطاق صلاحية الـ API المعنية (ECU Configuration ص. 156). ولكي تتمكن وحدتان من الإشارة إلى نفس الـ PDU، توجد في تكوين الوحدة الافتراضية EcuC الحاوية المستقلة عن الوحدات EcucPduCollection (ECU Configuration ص. 154). يحدد PduR مسار التوجيه عبر المعرف المصدري ومعرفات الوجهة، ويقوم بتحويل المعرفات وتمرير قيمة PduInfoType دون تغيير (SWS PduR ص. 33).

handle ecuc EcucPduCollection (EcuC) gemeinsame Pdu-Objekte com Com ecuc->com مرجع إلى PDU pdur PduR Routing-Pfad = Quell-ID + Ziel-IDs ecuc->pdur مرجع إلى PDU canif CanIf ecuc->canif مرجع إلى PDU linif LinIf ecuc->linif مرجع إلى PDU com->pdur PduR_ComTransmit(ID = 5, PduInfoType*) pdur->canif ID = 19 يبقى PduInfoType دون تغيير pdur->linif معرّف LinIf الخاص يبقى PduInfoType دون تغيير

مخطط تعاون: لكل واجهة معرفات مقابض خاصة بها؛ يترجمها PduR، بينما تتم الإشارة إلى الـ PDU المشتركة عبر EcucPduCollection. المصادر: ECU Configuration ص. 156، ECU Configuration ص. 154، SWS PduR ص. 33

PduInfoType: بيانات الحمولة النافعة وبيانات التعريف والطول في هيكل واحد

يجمع PduInfoType بين ثلاثة عناصر ([SWS_COMTYPE_00011]):

  • يشير SduDataPtr إلى بيانات الحمولة النافعة.
  • يشير MetaDataPtr إلى بيانات التعريف مثل معرف CAN أو معرف المقبس (Socket-ID) أو عناوين التشخيص. يتم تكوين طولها ونوعها بشكل ثابت لكل PDU؛ والعناصر التي تزيد عن 8 بت تكون بترتيب البايتات الخاص بالمنصة.
  • يحدد SduLength من النوع PduLengthType طول SDU بالبايت.

يحمل نفس الهيكل عدة أشكال من التفاعل:

  • أمر الإرسال: يمرر <Mod>_Transmit(TxPduId, const PduInfoType*) الطول ومؤشر البيانات ومؤشر بيانات التعريف ويعيد E_OK أو E_NOT_OK (SWS CanIf ص. 87).
  • دلالة الاستقبال: <Mod>_RxIndication(RxPduId, const PduInfoType*). في CanNm، يكون مؤشر البيانات صالحًا فقط حتى عودة الدلالة (SWS CanNm ص. 73).
  • Trigger Transmit: PduInfoPtr هو دخل وخرج. عند الاستدعاء يحتوي SduLength على حجم ذاكرة التخزين المؤقت المتاح، وعند العودة يحتوي على طول البيانات المنسوخة (SWS CanIf ص. 107). وفي أمر الإرسال السابق، تمرر الطبقة العليا الطول فقط؛ ويشير SduDataPtr حينئذٍ إلى NULL (SWS CanIf ص. 158).
  • واجهات نسخ TP: StartOfReception وCopyRxData وCopyTxData مع الإرجاع BufReq_ReturnType (SWS PduR ص. 93).

ذاكرة التخزين المؤقت لبروتوكول النقل: النسخ المجزأ بدلاً من التمرير الكامل

لا يتم تمرير الـ PDUs الكبيرة ككتلة واحدة. يسحب المرسل البيانات مجزأة: يُطلق DCM عبر PduR الدالة CanTp_Transmit. ثم يستدعي CanTp بشكل متكرر PduR_CanTpCopyTxData، والتي يتم توجيهها إلى Dcm_CopyTxData. وفي النهاية يتبع PduR_CanTpTxConfirmation وDcm_TpTxConfirmation (SWS PduR ص. 109). بالنسبة لمعلمات CopyTxData ينطبق الآتي:

  • يوفر info ذاكرة التخزين المؤقت للوجهة وعدد البايتات المراد نسخها.
  • قيمة SduLength بمقدار 0 تبلغ فقط عن تغيير الحالة في المعلمة retry أو تستعلم عن كمية البيانات المتاحة؛ ويجوز حينئذٍ أن يكون SduDataPtr هو NULL_PTR (SWS PduR ص. 93).
  • يُبلغ availableDataPtr عن بيانات الإرسال المتبقية. وتحدد وحدات TP ذات طول الحمولة النافعة الديناميكي، مثل FrIsoTp، إطارات Consecutive Frames التالية بناءً على ذلك (SWS LdCom ص. 34).
إرسال TP من Dcm ← CanTp عبر PduRDcmPduRCanTpPduR_<User:Up>Transmit(PduIdType, const PduInfoType*)CanTp_Transmit(PduIdType, const PduInfoType*)E_OKE_OKloopحتى يتم إرسال جميع البياناتPduR_CanTpCopyTxData(id, info, retry, availableDataPtr)Dcm_CopyTxData(id, info, retry, availableDataPtr)نسخ البيانات إلى info->SduDataPtrBUFREQ_OK, *availableDataPtrBUFREQ_OK, *availableDataPtrPduR_CanTpTxConfirmation(PduIdType, Std_ReturnType)Dcm_TpTxConfirmation(PduIdType, Std_ReturnType)

مخطط تتابع: عند إرسال TP، يسحب بروتوكول النقل البيانات في حلقة تكرارية عبر PduR من الطبقة العليا؛ ولا يتبع التأكيد إلا بعد الجزء الأخير. المصادر: SWS PduR ص. 109، SWS PduR ص. 93، [SWS_COMTYPE_00012]

يتم الاستقبال في ثلاث خطوات:

  1. يفتح StartOfReception الاتصال. يحمل info بيانات First Frame أو Single Frame مع بيانات التعريف، أو يكون NULL_PTR إذا لم يتوفر أي منهما. ويذكر TpSduLength الطول الإجمالي. وعبر bufferSizePtr يبلغ المستقبل عن ذاكرة التخزين المؤقت الشاغرة لديه؛ ويحسب بروتوكول النقل Block Size بناءً على ذلك (SWS PduR ص. 92).
  2. يوفر كل استدعاء لـ CopyRxData الجزء التالي من I-PDU ويكتب ذاكرة التخزين المؤقت المتبقية (SWS PduR ص. 91).
  3. تختتم RxIndication الاستقبال.

إذا تم تمرير TP-PDU عبر بوابة (gatewayed) بالإضافة إلى ذلك، فإن PduR يقوم بتخزينها مؤقتًا بنفسه لأن DCM لا يعلم شيئًا عن التمرير عبر البوابة (SWS PduR ص. 112).

استقبال TP من CanTp ← Dcm عبر PduRCanTpPduRDcmPduR_CanTpStartOfReception(id, info, TpSduLength, bufferSizePtr)Dcm_StartOfReception(id, info, TpSduLength, bufferSizePtr)BUFREQ_OK, *bufferSizePtrBUFREQ_OK, *bufferSizePtrيُستخدم bufferSizePtr لـحساب حجم الكتلة (BS)loopje empfangenem Segment (N-PDU)PduR_CanTpCopyRxData(id, info, bufferSizePtr)Dcm_CopyRxData(id, info, bufferSizePtr)BUFREQ_OK, *bufferSizePtr (Restpuffer)BUFREQ_OK, *bufferSizePtr (Restpuffer)PduR_CanTpRxIndication(PduIdType, Std_ReturnType)Dcm_TpRxIndication(PduIdType, Std_ReturnType)

مخطط تتابع: يبدأ استقبال TP بالتفاوض على ذاكرة التخزين المؤقت، ويستمر بشكل مجزأ وينتهي بالدلالة. المصادر: SWS PduR ص. 112، SWS PduR ص. 92، SWS PduR ص. 91

التأكيد وإعادة المحاولة: RetryInfoType وTpDataStateType

يحتوي RetryInfoType على حقلين ([SWS_COMTYPE_00037]):

  • يصف TpDataState حالة ذاكرة التخزين المؤقت لـ TP.
  • يحدد TxTpDataCnt الإزاحة بدءًا من الموضع الحالي، والتي تحدد عدد البايتات المراد إعادة إرسالها.

يعرف TpDataStateType ثلاث قيم ([SWS_COMTYPE_00027]):

  • TP_DATACONF: تم تأكيد كافة البيانات المنسوخة حتى الآن ويجوز إزالتها من ذاكرة التخزين المؤقت لـ TP. وتُستثنى من ذلك البيانات المنسوخة في هذا الاستدعاء.
  • TP_DATARETRY: يُعاد نسخ البيانات المنسوخة بالفعل لتصحيح خطأ. يحدد TxTpDataCnt إزاحة البداية.
  • TP_CONFPENDING: يجب أن تظل البيانات المنسوخة حتى الآن في ذاكرة التخزين المؤقت لـ TP لتصحيح الخطأ.

إذا كان retry نفسه هو NULL_PTR، فيجوز تحرير البيانات فورًا بعد النسخ (SWS PduR ص. 93).

copytx start CopyTxData(id, info, retry, availableDataPtr) r retry == NULL_PTR? start->r frei البيانات قابلة للإزالة فورًا بعد النسخ r->frei نعم st TpDataState? r->st لا len info->SduLength == 0? frei->len conf TP_DATACONF: تأكيد البيانات المنسوخة حتى الآن، قابلة للإزالة من ذاكرة التخزين المؤقت لـ TP st->conf pend TP_CONFPENDING: الاحتفاظ بالبيانات المنسوخة حتى الآن في ذاكرة التخزين المؤقت لـ TP st->pend retr TP_DATARETRY: ab Offset TxTpDataCnt erneut kopieren st->retr conf->len pend->len retr->len abfrage تغيير الحالة فقط أو الاستعلام عن البيانات المتاحة؛ يجوز أن يكون SduDataPtr عبارة عن NULL_PTR len->abfrage نعم genug genug Sendedaten vorhanden? len->genug لا busy nichts kopieren, BUFREQ_E_BUSY; unterer Layer darf wiederholen genug->busy لا ok Daten kopieren, BUFREQ_OK, *availableDataPtr setzen genug->ok نعم

مخطط نشاط: يُقيّم استدعاء CopyTxData معلمة retry أولاً ثم يقرر بشأن النسخ أو BUFREQ_E_BUSY. المصادر: SWS PduR ص. 93، [SWS_COMTYPE_00027]، [SWS_COMTYPE_00012]

يوضح الرسم التوضيحي الخاص ببروتوكول النقل J1939 التفاعل بشكل ملموس:

  • لكل كتلة، يتم طلب الحزمة الأولى بـ TP_DATACONF، والحزم اللاحقة بـ TP_CONFPENDING.
  • إذا فُقدت TP.DT، يبدأ النقل مجددًا عند الحزمة الأولى للكتلة. ولهذا الغرض يُضبط TP_DATARETRY، ويحتوي TxTpDataCnt على الإزاحة إلى بداية الكتلة (SWS J1939Tp ص. 55).

لا يُقيّم كل مستخدم المعلمة: في LdCom، ووفقًا للمواصفة، لا تتم معالجة retry بواسطة LdCom ولا بواسطة طبقته العليا (SWS LdCom ص. 34).

معالجة إعادة المحاولة في بروتوكول النقل J1939PduR (Sender)J1939Tp (Sender)J1939Tp (المستقبِل)J1939Tp_Transmit(PduIdType, const PduInfoType*)TP.CM_RTSTP.CM_CTSloopje Blockloopje PaketPduR_J1939TpCopyTxData(id, info, retry, availableDataPtr)TpDataState = TP_DATACONF (الحزمة الأولى من الكتلة)أو TP_CONFPENDING (الحزم التالية)TP.DToptTP.DT verlorenالحزمة التالية = الحزمة الأولى من الكتلةPduR_J1939TpCopyTxData(retry)TpDataState = TP_DATARETRYTxTpDataCnt = الإزاحة بالنسبة لبداية الكتلةTP.EOMACKPduR_J1939TpTxConfirmation(...)

مخطط تتابع: نقل على مستوى الكتل مع حالات التأكيد والرجوع إلى بداية الكتلة في حال فقدان حزمة بيانات. المصادر: SWS J1939Tp ص. 55، [SWS_COMTYPE_00027]، [SWS_COMTYPE_00037]

القنوات والشبكات الجزئية ومعلمات TP

NetworkHandleType هو uint8 بالنطاق صفري الأساس 0..255. وهو يحفظ معرف قناة اتصال ([SWS_COMTYPE_00038]). أمثلة من إصدارات لاحقة:

  • يُبلغ Bus Mirroring عن إطار LIN مع قناة ComM المخصصة لقناة LIN (SWS Mirror ص. 80).
  • يمرر J1939Dcm القناة التي ورد عليها طلب (SWS J1939Dcm ص. 67).

يحفظ PNCHandleType معرف Partial Network Cluster وتم اشتقاقه في R20-11 من uint8 ([SWS_COMTYPE_00036]). وتذكر وثيقة R23-11 في المقابل uint16 (SWS ComStackTypes ص. 17). ينطبق المتطلب على R20-11. يوضح إيقاف تشغيل PNC المتزامن في ComM سياق استخدام معرفات PNC (SWS ComM ص. 171).

يحدد TPParameterType معلمة بروتوكول النقل المراد تغيير قيمتها ([SWS_COMTYPE_00031]):

  • TP_STMIN: Separation Time،
  • TP_BS: Block Size،
  • TP_BC: التحكم في عرض النطاق الترددي لبروتوكول نقل FlexRay.

يظهر Block Size وSTmin على سبيل المثال في إطار التحكم في التدفق (Flow-Control-Frame) لبروتوكول نقل FlexRay-AR (SWS FrArTp ص. 47).

التصرف في حالة الخطأ

يصف BufReq_ReturnType ([SWS_COMTYPE_00012]) نتيجة طلب المخزن المؤقت:

  • BUFREQ_OK (0): ناجح.
  • BUFREQ_E_NOT_OK (1): يتعذر الوصول إلى المخزن المؤقت.
  • BUFREQ_E_BUSY (2): لا يتوفر مخزن مؤقت مؤقتًا؛ ينبغي على الطالب إعادة المحاولة بعد فترة معينة.
  • BUFREQ_E_OVFL (3): يتعذر توفير مخزن مؤقت بالطول المطلوب.

تعين الواجهات هذه القيم على النحو التالي:

  • CopyTxData: إذا لم تكن بيانات الإرسال كافية، فلن يتم نسخ أي شيء ويتم إرجاع BUFREQ_E_BUSY؛ ويُسمح للطبقة السفلية بإعادة استدعاء الدالة (SWS PduR ص. 93). في تسلسل المخزن المؤقت المقسم لصفحات (Paged-Buffer) الخاص بـ DCM، يحدث BUFREQ_E_BUSY بالتناوب مع تجهيز الصفحة التالية (SWS DCM ص. 481).
  • StartOfReception: يرفض BUFREQ_E_NOT_OK الاتصال ويقطع الاستقبال؛ ويبقى bufferSizePtr دون تغيير. ويقطع BUFREQ_E_OVFL العملية لعدم توفر مخزن مؤقت بالطول المطلوب. وفي حالة BUFREQ_OK دون وجود مخزن مؤقت بالحجم المطلوب، يتم الإبلاغ عن حجم مخزن مؤقت قدره 0 (SWS DCM ص. 273).
  • CopyRxData: يعني BUFREQ_E_NOT_OK أنه لم يتم نسخ أي شيء بسبب حدوث خطأ (SWS PduR ص. 91).
  • خطأ في الإرسال في TP: تتم المعالجة عبر TP_DATARETRY مع الإزاحة TxTpDataCnt ([SWS_COMTYPE_00027]).
  • TriggerTransmit: يعني E_NOT_OK أنه لم يتم نسخ أي شيء. ولا يجوز حينئذٍ استخدام PduInfoPtr لأنه قد يكون NULL أو غير صالح (SWS CanIf ص. 107).

تحدد الوحدات المستخدمة الفحوصات الإضافية بنفسها. أمثلة:

  • يتحقق DoIP_SoAdTpCopyRxData عند تفعيل اكتشاف أخطاء التطوير مما إذا كان قد تم استدعاء DoIP_Init مسبقًا (SWS DoIP ص. 77).
  • يُرجع FrIf_Transmit في الحالة FRIF_STATE_OFFLINE القيمة E_NOT_OK (SWS FrIf ص. 68).
  • العديد من هذه الدوال قابلة لإعادة الدخول (reentrant) لمعرفات PDU المختلفة فقط، وليس لنفس المعرف (SWS DoIP ص. 75).

أدلة تفصيلية إضافية

يصنف العرض العام التالي أهم المراجع (من [SWS_COMTYPE_00005] إلى [SWS_COMTYPE_00038]):

المرجعالتصنيف
[SWS_COMTYPE_00005], [SWS_COMTYPE_00008]عرض PduIdType وPduLengthType المعتمد على التكوين، والمولَّد من EcuC
[SWS_COMTYPE_00011]بنية PduInfoType بما في ذلك البيانات الوصفية
[SWS_COMTYPE_00012]رموز نتائج جميع طلبات مخازن TP المؤقتة
[SWS_COMTYPE_00027], [SWS_COMTYPE_00037]منطق التأكيد وإعادة المحاولة عند إرسال TP
[SWS_COMTYPE_00031], [SWS_COMTYPE_00036], [SWS_COMTYPE_00038]اختيار معلمات TP، ومعرفات PNC والقنوات
ECU Configuration S. 156مفهوم معرف المقبض (Handle ID): قيم يمكن اختيارها بحرية لكل وحدة، وفريدة لكل API
SWS PduR S. 93, SWS PduR S. 92دلالات المرجع لواجهات نسخ TP
SWS J1939Tp S. 55مخطط توضيحي لمعالجة إعادة المحاولة (موضح أيضًا للإصدار R20-11)

دليل تم إنشاؤه بواسطة الذكاء الاصطناعي بناءً على المتطلبات ومواضع الوثائق المقدمة في الحمولة؛ وتأتي بعض مواضع الوثائق المقتبسة من إصدارات لاحقة (R23-11 إلى R25-11). المعيار الإلزامي للإصدار R20-11 هو المتطلبات SWS_COMTYPE_*.

Communication Stack Types (ComStack_Types)

Standardized types, PDU identifiers, lengths, and buffer request types (PduIdType, PduLengthType, PduInfoType, BufReq_ReturnType) used across all communication layers.

Typen — Übersicht

Typen — Detailansicht

نوع PduInfoType [SWS_COMTYPE_00011] 📄 PDF

typedef struct { uint8* SduDataPtr; uint8* MetaDataPtr; PduLengthType SduLength; } PduInfoType;

Variables of this type shall be used to store the basic information about a PDU of any type, namely a pointer variable pointing to its SDU (payload), a pointer to Meta Data of the PDU, and the corresponding length of the SDU in byt es.

نوع BufReq_ReturnType [SWS_COMTYPE_00012] 📄 PDF

typedef enum { BUFREQ_OK, BUFREQ_E_NOT_OK, BUFREQ_E_BUSY, BUFREQ_E_OVFL } BufReq_ReturnType;

Variables of this type shall be used to store the result of a buffer request.

نوع TpDataStateType [SWS_COMTYPE_00027] 📄 PDF

typedef enum { TP_DATACONF, TP_DATARETRY, TP_CONFPENDING } TpDataStateType;

Variables of this type shall be used to store the state of TP buffer.

دليل المنفِّذ قيد الإعداد (التعقيد I1)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_ComStack
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_ComStack@rel:R20-11#d09bb2d0
Content hash
d09bb2d0
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CommunicationStackTypes.pdf#nameddest=SWS_COMTYPE_00005

خريطة المواضيع

عرض التفاصيل

اختر عنصرًا من المخطط.

الأنواع

Variables of this type shall be used to store the result of a buffer request.

typedef enum { BUFREQ_OK, BUFREQ_E_NOT_OK, BUFREQ_E_BUSY, BUFREQ_E_OVFL } BufReq_ReturnType;

Variables of the type Network Handle Type shall be used to store the identifier of a communication channel.

PduIdType نوع

This type is used within the entire AUTOSAR Com Stack except for bus drivers.

typedef uint16 PduIdType;

Variables of this type shall be used to store the basic information about a PDU of any type, namely a pointer variable pointing to its SDU (payload), a pointer to Meta Data of the PDU, and the corresponding length of the SDU in byt es.

typedef struct { uint8* SduDataPtr; uint8* MetaDataPtr; PduLengthType SduLength; } PduInfoType;

This type shall be used within the entire AUTOSAR Com Stack of an ECU except for bus drivers.

Used to store the identifier of a partial network cluster.

Variables of this type shall be used to store the information about Tp buffer handling.

typedef struct { TpDataStateType TpDataState; PduLengthType TxTpDataCnt; } RetryInfoType;

Variables of this type shall be used to store the state of TP buffer.

typedef enum { TP_DATACONF, TP_DATARETRY, TP_CONFPENDING } TpDataStateType;

Specify the parameter to which the value has to be changed (BS or STmin).

typedef enum { TP_STMIN, TP_BS, TP_BC } TPParameterType;