साझा डेटा प्रकार, जिनके साथ संचार स्टैक के मॉड्यूल्स PDUs, बफ़र्स और चैनल्स का आदान-प्रदान करते हैं।
एआई-जनितअसत्यापितमॉडल: claude-opus-5-5 · प्रयास: high · तापमान: नियंत्रित नहीं किया जा सकता · प्रॉम्प्ट: 6cf9f0457dd9उद्गमखुले प्रश्न (1)
कारणात्मक एंकर: R20-11R20-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)।
हैंडल और लंबाई कॉन्फ़िगरेशन पर निर्भर करते हैं। PduIdTypeuint8 या uint16 है, PduLengthTypeuint8, 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 के साथ जारी रहता है।
अनुक्रम आरेख: ट्रांसपोर्ट प्रोटोकॉल एक लूप में 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),
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)।
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)।
अनुक्रम आरेख (Sequence diagram): TP ट्रांसमिशन के दौरान, ट्रांसपोर्ट प्रोटोकॉल PduR के माध्यम से ऊपरी परत से डेटा को एक लूप में खींचता है; पावती अंतिम खंड के बाद ही मिलती है। स्रोत: SWS PduR पृ. 109, SWS PduR पृ. 93, [SWS_COMTYPE_00012]
रिसेप्शन तीन चरणों में होता है:
StartOfReception कनेक्शन खोलता है। info मेटाडेटा सहित First या Single Frame का डेटा वहन करता है, या यदि दोनों में से कोई भी मौजूद नहीं है तो यह NULL_PTR होता है। TpSduLength कुल लंबाई निर्दिष्ट करता है। bufferSizePtr के माध्यम से रिसीवर अपने खाली बफ़र की रिपोर्ट करता है; ट्रांसपोर्ट प्रोटोकॉल इससे Block Size की गणना करता है (SWS PduR पृ. 92)।
प्रत्येक CopyRxData कॉल I-PDU का अगला हिस्सा प्रदान करता है और शेष बफ़र को वापस लिखता है (SWS PduR पृ. 91)।
एक RxIndication रिसेप्शन को पूरा करता है।
यदि कोई TP-PDU अतिरिक्त रूप से गेटवे की जाती है, तो PduR इसे स्वयं बफ़र करता है, क्योंकि DCM को गेटवेइंग के बारे में कुछ पता नहीं होता है (SWS PduR पृ. 112)।
अनुक्रम आरेख (Sequence diagram): TP रिसेप्शन बफ़र वार्ता (buffer negotiation) के साथ शुरू होता है, खंड-दर-खंड जारी रहता है और इंडिकेशन के साथ समाप्त होता है। स्रोत: SWS PduR पृ. 112, SWS PduR पृ. 92, SWS PduR पृ. 91
पावती और पुनरावृत्ति: RetryInfoType और TpDataStateType
TP_DATACONF: अब तक कॉपी किए गए सभी डेटा की पुष्टि हो चुकी है और उन्हें TP बफ़र से हटाया जा सकता है। इस कॉल में कॉपी किए गए डेटा इससे बाहर रखे गए हैं।
TP_DATARETRY: किसी त्रुटि को ठीक करने के लिए पहले से कॉपी किए गए डेटा को फिर से कॉपी किया जाता है। TxTpDataCnt प्रारंभ ऑफ़सेट निर्दिष्ट करता है।
TP_CONFPENDING: त्रुटि निवारण के लिए अब तक कॉपी किए गए डेटा को TP बफ़र में ही रहना चाहिए।
यदि retry स्वयं NULL_PTR है, तो डेटा को कॉपी करने के तुरंत बाद मुक्त किया जा सकता है (SWS PduR पृ. 93)।
गतिविधि आरेख (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)।
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)।
पुनः प्रयास हैंडलिंग का आरेख (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
typedef PduIdTypeThis type is used within the entire AUTOSAR Com Stack except for bus drivers.
typedef PduLengthTypeThis type shall be used within the entire AUTOSAR Com Stack of an ECU except for bus drivers.
struct PduInfoTypeVariables of this type shall be used to store the basic information about a PDU of any type, namely a pointer variable...
typedef PNCHandleTypeUsed to store the identifier of a partial network cluster.
enum TPParameterTypeSpecify the parameter to which the value has to be changed (BS or STmin).
enum BufReq_ReturnTypeVariables of this type shall be used to store the result of a buffer request.
enum TpDataStateTypeVariables of this type shall be used to store the state of TP buffer.
struct RetryInfoTypeVariables of this type shall be used to store the information about Tp buffer handling.
typedef NetworkHandleTypeVariables of the type Network Handle Type shall be used to store the identifier of a communication channel.
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.
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.
gemini-3.8-flash-low· 2026-10-13 · जर्मन मूल