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])। ट्रांसपोर्ट प्रोटोकॉल StartOfReception, CopyRxData और CopyTxData के माध्यम से बड़े PDUs को सेगमेंट के अनुसार कॉपी करते हैं। वे 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 TP और IF API 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])। प्रत्येक प्रदाता मॉड्यूल अपनी हैंडल IDs स्वयं चुनता है। उन्हें केवल प्रति API अद्वितीय होना आवश्यक है; PduR उन्हें रूटिंग पाथ पर अनुवादित करता है (ECU Configuration पृ. 156)।

PduInfoType पेलोड पॉइंटर, मेटाडेटा पॉइंटर और लंबाई को बंडल करता है। इस प्रकार यह संरचना ट्रांसमिट अनुरोधों, रिसेप्शन संकेतों और Trigger Transmit को ले जाती है। बड़े PDUs को टुकड़ों में कॉपी किया जाता है: ट्रांसपोर्ट प्रोटोकॉल PduR के माध्यम से ऊपरी परत के CopyTxData को बार-बार कॉल करता है (SWS PduR पृ. 109)। रिसेप्शन StartOfReception से शुरू होता है और CopyRxData के साथ जारी रहता है।

PduR के माध्यम से TP ट्रांसमिशन Dcm → CanTpDcmPduRCanTpPduR_<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->SduDataPtr में कॉपी करनाBUFREQ_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: निरस्तीकरण (Abortion)।

TP ट्रांसमिशन के दौरान पावती (acknowledgement) और पुनरावृत्ति (retry) को RetryInfoType, TP_DATACONF, TP_CONFPENDING और TP_DATARETRY के साथ-साथ ऑफ़सेट TxTpDataCnt ([SWS_COMTYPE_00027], [SWS_COMTYPE_00037]) द्वारा नियंत्रित किया जाता है।

अन्य पहचानकर्ता प्रकार (identifier types) इस संग्रह को पूरा करते हैं। NetworkHandleType (uint8) एक संचार चैनल को निर्दिष्ट करता है। TPParameterType संशोधन के लिए STmin, Block Size या बैंडविड्थ नियंत्रण का चयन करता है ([SWS_COMTYPE_00031])। R20-11 में PNCHandleType को uint8 से व्युत्पन्न किया गया है ([SWS_COMTYPE_00036]); जबकि R23-11 संस्करण भिन्न रूप से uint16 का उल्लेख करता है (SWS ComStackTypes पृ. 17)।

भूमिका: संचार स्टैक का साझा प्रकार-संग्रह (type pool)

मॉड्यूल comstack अपनी स्वयं की कोई सेवाएँ प्रदान नहीं करता है। यह उन डेटा प्रकारों को परिभाषित करता है जिनके माध्यम से Classic संचार स्टैक के मॉड्यूल एक दूसरे के साथ संचार करते हैं। इनमें PduIdType, PduLengthType, PduInfoType, BufReq_ReturnType, TpDataStateType, RetryInfoType, TPParameterType, NetworkHandleType और PNCHandleType शामिल हैं। वे ComStack_Types.h के माध्यम से उपलब्ध हैं ([SWS_COMTYPE_00011], [SWS_COMTYPE_00037], [SWS_COMTYPE_00038])। Interpretation: इस प्रकार मॉड्यूल का स्वयं का कोई रनटाइम व्यवहार नहीं होता है। प्रश्न 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 TP और IF API tp CanTp / FrTp / J1939Tp pdur->tp Transmit / CopyTxData / CopyRxData ifs CanIf / LinIf / FrIf pdur->ifs Transmit / TxConfirmation comm ComM / Nm comm->types NetworkHandleType, PNCHandleType

संदर्भ आरेख (Context diagram): बस इंटरफ़ेस से लेकर 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 से अधिक PDUs को संभालता नहीं है, अन्यथा UINT16 आवश्यक है (ECU Configuration पृ. 153)।

इसी प्रकार, PduLengthType कॉन्फ़िगरेशन के आधार पर uint8, uint16 या uint32 के रूप में व्यक्त होता है। निर्णायक कारक उन PDUs की अधिकतम लंबाई है जिसे कोई ECU भेजता है ([SWS_COMTYPE_00008])। ट्रांसपोर्ट प्रोटोकॉल भी EcuC से लंबाई प्राप्त करते हैं: CanTp N-PDU की अधिकतम ट्रांसमिशन लंबाई EcuC पैरामीटर PduLength (SWS CanTp पृ. 60) से निर्धारित करता है।

स्टैक के APIs दो चीज़ों को संयोजित करते हैं: PDU डेटा बफ़र का एक सूचक (pointer) और एक हैंडल ID जो यह निर्धारित करती है कि यह पॉइंटर किस PDU से संबंधित है। प्रदान करने वाला मॉड्यूल हैंडल ID का मान स्वतंत्र रूप से चुनता है। इस प्रकार, वही PDU Com से ID 5 के साथ PduR तक जा सकती है और PduR से ID 19 के साथ CanIf तक जा सकती है। ID को केवल संबंधित API के दायरे में अद्वितीय होना चाहिए (ECU Configuration पृ. 156)। दो मॉड्यूल एक ही PDU को संदर्भित कर सकें, इसके लिए वर्चुअल मॉड्यूल कॉन्फ़िगरेशन EcuC में मॉड्यूल-स्वतंत्र EcucPduCollection मौजूद है (ECU Configuration पृ. 154)। PduR स्रोत ID और गंतव्य IDs के माध्यम से एक रूटिंग पथ की पहचान करता है, IDs को मैप करता है और 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-ID PduInfoType अपरिवर्तित

सहयोग आरेख (Collaboration diagram): प्रत्येक इंटरफ़ेस के अपने हैंडल IDs होते हैं; PduR उनका अनुवाद करता है, जबकि साझा PDU को EcucPduCollection के माध्यम से संदर्भित किया जाता है। स्रोत: ECU Configuration पृ. 156, ECU Configuration पृ. 154, SWS PduR पृ. 33

PduInfoType: एक ही संरचना में पेलोड, मेटाडेटा और लंबाई

PduInfoType तीन तत्वों को बंडल करता है ([SWS_COMTYPE_00011]):

  • SduDataPtr पेलोड की ओर इंगित करता है।
  • MetaDataPtr CAN-ID, सॉकेट-ID या डायग्नोस्टिक पतों जैसे मेटाडेटा की ओर इंगित करता है। इनकी लंबाई और प्रकार प्रति PDU स्थिर रूप से कॉन्फ़िगर किए जाते हैं; 8 बिट से अधिक वाले तत्व प्लेटफ़ॉर्म बाइट क्रम में होते हैं।
  • प्रकार PduLengthType का SduLength बाइट्स में SDU लंबाई निर्दिष्ट करता है।

यही संरचना कई अंतःक्रिया रूपों (interaction forms) का वहन करती है:

  • ट्रांसमिशन अनुरोध: <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 कॉपी इंटरफेस: वापसी BufReq_ReturnType के साथ StartOfReception, CopyRxData और CopyTxData (SWS PduR पृ. 93)।

ट्रांसपोर्ट प्रोटोकॉल बफ़र: पास करने के बजाय खंड-वार कॉपी करना

बड़ी PDUs को संपूर्ण रूप में पास नहीं किया जाता है। प्रेषक डेटा को टुकड़ों में प्राप्त करता है: DCM PduR के माध्यम से CanTp_Transmit को ट्रिगर करता है। CanTp इसके बाद बार-बार PduR_CanTpCopyTxData को कॉल करता है, जिसे Dcm_CopyTxData पर अग्रेषित किया जाता है। अंत में PduR_CanTpTxConfirmation और Dcm_TpTxConfirmation आते हैं (SWS PduR पृ. 109)। CopyTxData के पैरामीटरों के लिए निम्नलिखित लागू होता है:

  • info गंतव्य बफ़र और कॉपी किए जाने वाले बाइट्स की संख्या प्रदान करता है।
  • 0 का SduLength केवल retry पैरामीटर में स्थिति परिवर्तन की रिपोर्ट करता है या उपलब्ध डेटा की मात्रा के बारे में पूछताछ करता है; SduDataPtr तब NULL_PTR हो सकता है (SWS PduR पृ. 93)।
  • availableDataPtr शेष ट्रांसमिशन डेटा की रिपोर्ट करता है। डायनामिक पेलोड लंबाई वाले TP मॉड्यूल, जैसे FrIsoTp, इसके आधार पर आगामी Consecutive Frames का आकार निर्धारित करते हैं (SWS LdCom पृ. 34)।
PduR के माध्यम से TP ट्रांसमिशन Dcm → CanTpDcmPduRCanTpPduR_<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->SduDataPtr में कॉपी करनाBUFREQ_OK, *availableDataPtrBUFREQ_OK, *availableDataPtrPduR_CanTpTxConfirmation(PduIdType, Std_ReturnType)Dcm_TpTxConfirmation(PduIdType, Std_ReturnType)

अनुक्रम आरेख (Sequence diagram): TP ट्रांसमिशन के दौरान, ट्रांसपोर्ट प्रोटोकॉल PduR के माध्यम से ऊपरी परत से डेटा को एक लूप में खींचता है; पावती अंतिम खंड के बाद ही मिलती है। स्रोत: SWS PduR पृ. 109, SWS PduR पृ. 93, [SWS_COMTYPE_00012]

रिसेप्शन तीन चरणों में होता है:

  1. StartOfReception कनेक्शन खोलता है। info मेटाडेटा सहित First या Single Frame का डेटा वहन करता है, या यदि दोनों में से कोई भी मौजूद नहीं है तो यह NULL_PTR होता है। TpSduLength कुल लंबाई निर्दिष्ट करता है। bufferSizePtr के माध्यम से रिसीवर अपने खाली बफ़र की रिपोर्ट करता है; ट्रांसपोर्ट प्रोटोकॉल इससे Block Size की गणना करता है (SWS PduR पृ. 92)।
  2. प्रत्येक CopyRxData कॉल I-PDU का अगला हिस्सा प्रदान करता है और शेष बफ़र को वापस लिखता है (SWS PduR पृ. 91)।
  3. एक RxIndication रिसेप्शन को पूरा करता है।

यदि कोई TP-PDU अतिरिक्त रूप से गेटवे की जाती है, तो PduR इसे स्वयं बफ़र करता है, क्योंकि DCM को गेटवेइंग के बारे में कुछ पता नहीं होता है (SWS PduR पृ. 112)।

PduR के माध्यम से TP रिसेप्शन CanTp → DcmCanTpPduRDcmPduR_CanTpStartOfReception(id, info, TpSduLength, bufferSizePtr)Dcm_StartOfReception(id, info, TpSduLength, bufferSizePtr)BUFREQ_OK, *bufferSizePtrBUFREQ_OK, *bufferSizePtrbufferSizePtr का उपयोग इसके लिए होता हैBlock Size (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)

अनुक्रम आरेख (Sequence diagram): TP रिसेप्शन बफ़र वार्ता (buffer negotiation) के साथ शुरू होता है, खंड-दर-खंड जारी रहता है और इंडिकेशन के साथ समाप्त होता है। स्रोत: 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 हाँ

गतिविधि आरेख (Activity diagram): एक 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)।

J1939 ट्रांसपोर्ट प्रोटोकॉल में पुनः प्रयास हैंडलिंगPduR (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(...)

अनुक्रम आरेख (Sequence diagram): पावती स्थितियों के साथ ब्लॉक-वार ट्रांसमिशन और डेटा पैकेट खो जाने पर ब्लॉक की शुरुआत में वापस जाना। स्रोत: SWS J1939Tp पृ. 55, [SWS_COMTYPE_00027], [SWS_COMTYPE_00037]

चैनल, सबनेट और TP पैरामीटर

NetworkHandleType शून्य-आधारित रेंज 0..255 वाला एक uint8 है। यह संचार चैनल के पहचानकर्ता को संग्रहीत करता है ([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 उदाहरण के लिए FlexRay-AR ट्रांसपोर्ट प्रोटोकॉल के Flow-Control फ़्रेम में दिखाई देते हैं (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)। DCM के paged-buffer अनुक्रम में, 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 में ट्रांसमिशन त्रुटि: सुधार ऑफ़सेट TxTpDataCnt के साथ TP_DATARETRY के माध्यम से किया जाता है ([SWS_COMTYPE_00027])।
  • TriggerTransmit: E_NOT_OK का अर्थ है कि कुछ भी कॉपी नहीं किया गया था। तब PduInfoPtr का उपयोग नहीं किया जाना चाहिए, क्योंकि यह NULL या अमान्य हो सकता है (SWS CanIf पृ. 107)।

उपयोगकर्ता मॉड्यूल स्वयं अतिरिक्त जांच निर्धारित करते हैं। उदाहरण:

  • DoIP_SoAdTpCopyRxData विकास त्रुटि पहचान (development error detection) सक्षम होने पर जाँचता है कि क्या DoIP_Init को पहले कॉल किया गया था (SWS DoIP पृ. 77)।
  • FrIf_Transmit स्थिति FRIF_STATE_OFFLINE में मान E_NOT_OK लौटाता है (SWS FrIf पृ. 68)।
  • इनमें से कई फ़ंक्शन केवल विभिन्न PDU-IDs के लिए पुन:प्रवेशी (reentrant) हैं, समान के लिए नहीं (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हैंडल ID अवधारणा: प्रति मॉड्यूल स्वतंत्र रूप से चयन योग्य मान, प्रति API विशिष्ट
SWS PduR S. 93, SWS PduR S. 92TP कॉपी इंटरफेस का संदर्भ सिमेंटिक्स
SWS J1939Tp S. 55पुनः प्रयास हैंडलिंग का आरेख (R20-11 के लिए भी निर्दिष्ट)

पेलोड में प्रदान की गई आवश्यकताओं और दस्तावेज़ अंशों पर आधारित AI-जनित गाइड; उद्धृत दस्तावेज़ अंश आंशिक रूप से बाद के रिलीज़ (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#51027e9c
Content hash
51027e9c
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CommunicationStackTypes.pdf#nameddest=SWS_COMTYPE_00005

विषय मानचित्र

विवरण दृश्य

रूपरेखा में कोई प्रविष्टि चुनें।

टाइप

BufReq_ReturnType टाइप

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;
NetworkHandleType टाइप

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;
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.

typedef struct { uint8* SduDataPtr; uint8* MetaDataPtr; PduLengthType SduLength; } PduInfoType;
PduLengthType टाइप

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

PNCHandleType टाइप

Used to store the identifier of a partial network cluster.

RetryInfoType टाइप

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

typedef struct { TpDataStateType TpDataState; PduLengthType TxTpDataCnt; } RetryInfoType;
TpDataStateType टाइप

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

typedef enum { TP_DATACONF, TP_DATARETRY, TP_CONFPENDING } TpDataStateType;
TPParameterType टाइप

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

typedef enum { TP_STMIN, TP_BS, TP_BC } TPParameterType;