DEENESPTFRRUARHIKOZHNL

IPDU Multiplexer (IpduM)

ModulIpduM (IPDU Multiplexer)
BSW-Modul-ID52
Standard-Header#include "IpduM.h"
SWS-SpezifikationAUTOSAR_CP_SWS_IPDUMultiplexer.pdf, AUTOSAR_SWS_IPDUM.pdf, AUTOSAR_SWS_IPDUMultiplexer.pdf
Umfang130 Records · 14 Snippets
ClusterKommunikationsdienste (COM)

IPDU Multiplexer (IpduM)

AUTOSAR Classic Communication Services-Modul IPDU Multiplexer (IpduM, Spezifikation: AUTOSAR_CP_SWS_IPDUMultiplexer.pdf, AUTOSAR_SWS_IPDUM.pdf, AUTOSAR_SWS_IPDUMultiplexer.pdf).

Funktionen — Übersicht

Typen — Übersicht

Anforderungen — Übersicht

Funktionen & Typen — Detailansicht

函数 IpduM_Init [SWS_IpduM_00032] 📄 PDF

void IpduM_Init(const IpduM_ConfigType* config);

Initializes the I-PDU Multiplexer. In configurations, in which IpduM is assigned to more than one partition (i.e. IpduM_Main Functions are mapped to partitions), IpduM may provide one init function per partition.

函数 IpduM_TxConfirmation [SWS_IpduM_00044] 📄 PDF

void IpduM_TxConfirmation(PduIdType TxPduId, Std_ReturnType result);

The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

函数 IpduM_TriggerTransmit [SWS_IpduM_00060] 📄 PDF

Std_ReturnType IpduM_TriggerTransmit(PduIdType TxPduId, PduInfoType* PduInfoPtr);

Within this API, the upper layer module (called module) shall check whether the available data fits into the buffer size reported by PduInfoPtr->SduLength. If it fits, it shall copy its data into the buffer provided by PduInfoPtr->SduDataPtr and update the length of the actual copied data in PduInfoPtr->SduLength. If not, it returns E_NOT_OK without changing PduInfoPtr.

函数 IpduM_MainFunctionRx [SWS_IpduM_91001] 📄 PDF

void IpduM_MainFunctionRx(void);

This function performs the processing of the reception activities that are not directly handled within the calls from PduR. Per configured IpduMMainFunctionRx instance one IpduM_MainFunctionRx_<shortName> shall be implemented. Hereby <shortName> is the short name of the IpduMMainFunctionRx configuration container in the ECU configuration.

函数 IpduM_MainFunctionTx [SWS_IpduM_91002] 📄 PDF

void IpduM_MainFunctionTx(void);

This function performs the processing of the transmission activities that are not directly handled within the calls from PduR. Per configured IpduMMainFunctionTx instance one IpduM_MainFunctionTx_<shortName> shall be implemented. Hereby <shortName> is the short name of the IpduMMainFunctionTx configuration container in the ECU configuration.

类型 IpduM_ConfigType [SWS_IpduM_00159] 📄 PDF

This is the type of the data structure containing the initialization data for the I-PDU multiplexer.

requirement SWS_IpduM_00011 [SWS_IpduM_00011] 📄 PDF

The number of values used of the selector field, i.e. values used to distinguish between different I-PDU layouts, does not have to be the whole range of possible values.

requirement SWS_IpduM_00015 [SWS_IpduM_00015] 📄 PDF

For a multiplexed I-PDU IpduM shall merge the corresponding two COM I-PDUs representing the associated static part and the last received dynamic part into one single IpduM I-PDU with a new unique I-PDU ID. IpduM shall send out this new IpduM I-PDU to the PDU Router module.

requirement SWS_IpduM_00017 [SWS_IpduM_00017] 📄 PDF

The function IpduM_Transmit shall assemble the mul- tiplexed I-PDU, using the related static and dynamic part, and transmit it ac- cording to the trigger conditions/ modes as defined in [SWS_IpduM_00021] and [ECUC_IpduM_00125].

requirement SWS_IpduM_00021 [SWS_IpduM_00021] 📄 PDF

The IpduM module shall be configurable to send a transmission request for the new multiplexed I-PDU to the PDU Router because of the following trigger conditions/modes: • receiving a static part • receiving a dynamic part • receiving a static or a dynamic part • does not trigger transmission because of receiving anything of this I-PDU ( Ip- duMTxTriggerMode None) in case of TriggerTransmit For configuration, see [ECUC_IpduM_00052].

requirement SWS_IpduM_00022 [SWS_IpduM_00022] 📄 PDF

If the IpduM receives a TxConfirmation for a specific IpduM I-PDU, it shall translate this confirmation into the corresponding confirmations for the COM I-PDUs, which were contained in the last sent out multiplexed IpduM I-PDU.

requirement SWS_IpduM_00026 [SWS_IpduM_00026] 📄 PDF

API servi ce called with wrong parameter:  error code: IPDUM_E_PARAM  value [hex]: 0x10

requirement SWS_IpduM_00028 [SWS_IpduM_00028] 📄 PDF

If IpduMDevErrorDetect is configured to TRUE, all IpduM APIs shall check their input parameters and report detected errors to [9, DET] via Det_ReportError . IPDUM_E_PARAM shall be reported for normal parameters and IPDUM_E_PARAM_POINTER for pointer parameters.

requirement SWS_IpduM_00033 [SWS_IpduM_00033] 📄 PDF

The function IpduM_Init shall initialize all module-related global variables.

requirement SWS_IpduM_00041 [SWS_IpduM_00041] 📄 PDF

If there is a static part configured in a multiplexed SDU received from the PDU Router, the function IpduM_RxIndication transforms the incoming I- PDU ID into the correct I-PDU ID for the static part's destination and then forwards the SDU via the PDU Router, see PduR_IpduMRxIndication in the [10, SWS PDU Router].

requirement SWS_IpduM_00042 [SWS_IpduM_00042] 📄 PDF

When a multiplexed I-PDU is received from the PDU Router the function IpduM_RxIndication uses the incoming I-PDU ID and the selector field to find out the correct I-PDU ID for the dynamic part's destination and then forwards the I-PDU via the PDU Router, see PduR_IpduMRxIndication in the [10, SWS PDU Router].

requirement SWS_IpduM_00067 [SWS_IpduM_00067] 📄 PDF

The IpduM shall initialize its internal transmit buffers with the configured pattern IpduMIPduUnusedAreasDefault .

requirement SWS_IpduM_00068 [SWS_IpduM_00068] 📄 PDF

The initial signal values of the initial dynamic part shall be set according to initial values of the referenced COM I-PDU ( IpduMInitialDy- namicPart -> IpduMTxDynamicPart -> IpduMTxDynamicPduRef ).

requirement SWS_IpduM_00084 [SWS_IpduM_00084] 📄 PDF

The behavior of the IpduM is unspecified until a correct call to IpduM_Init is made.

requirement SWS_IpduM_00086 [SWS_IpduM_00086] 📄 PDF

The function IpduM_RxIndication shall be callable in inter- rupt context, e.g. from receive interrupt.

requirement SWS_IpduM_00087 [SWS_IpduM_00087] 📄 PDF

The function IpduM_TxConfirmation shall be callable in in- terrupt context, e.g. from a transmit interrupt.

requirement SWS_IpduM_00088 [SWS_IpduM_00088] 📄 PDF

The function IpduM_TxConfirmation shall translate the confirmation received from the PDU Router into confirmations for the I-PDUs which where contained in the sent multiplexed I-PDU or Container PDU.

requirement SWS_IpduM_00089 [SWS_IpduM_00089] 📄 PDF

The function IpduM_TriggerTransmit shall be callable in interrupt context.

requirement SWS_IpduM_00090 [SWS_IpduM_00090] 📄 PDF

Within the function IpduM_TriggerTransmit , the IpduM shall copy the contents of its I-PDU transmit buffer to the PDU buffer given by PduIn- foPtr ->SduDataPtr and update PduInfoPtr ->SduLength with length of the copied data accordingly.

requirement SWS_IpduM_00091 [SWS_IpduM_00091] 📄 PDF

The IpduM shall take care about the data consistency during providing the data.

requirement SWS_IpduM_00097 [SWS_IpduM_00097] 📄 PDF

The IpduM shall be implemented so that no other modules depend on it and that it is be possible to build a system without the IpduM module if it is not needed.

requirement SWS_IpduM_00102 [SWS_IpduM_00102] 📄 PDF

Module Header File Imported Type ComStack_Types.h PduIdType ComStack_Types.h PduInfoType ComStack_Types ComStack_Types.h PduLengthType Std_Types.h Std_ReturnType Std Std_Types.h Std_VersionInfoType

requirement SWS_IpduM_00104 [SWS_IpduM_00104] 📄 PDF

Det_ReportRuntimeError Det.h Service to report runtime errors. If a callout has been configured then this callout shall be called.

requirement SWS_IpduM_00105 [SWS_IpduM_00105] 📄 PDF

Det_ReportError Det.h Service to report development errors. PduR_IpduMRxIndication PduR_IpduM.h Indication of a received PDU from a lower layer communication interface module. PduR_IpduMTransmit PduR_IpduM.h Requests transmission of a PDU. PduR_IpduMTriggerTransmit PduR_IpduM.h Within this API, the upper layer module (called module) shall check whether the available data fits into the buffer size reported by PduInfoPtr->Sdu Length. If it fits, it shall copy its data into the buffer provided by PduInfoPtr->SduDataPtr and update the length of the actual copied data in PduInfoPtr->Sdu Length. If not, it returns E_NOT_OK without changing PduInfoPtr. PduR_IpduMTxConfirmation PduR_IpduM.h The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

requirement SWS_IpduM_00140 [SWS_IpduM_00140] 📄 PDF

It shall be allowed to optimize the Rx- and Tx-Confirmation path from the IpduM module via the PDU Router module to the COM layer to call the COM API directly from the IpduM module without including the PDU Router. This shall be indicated by setting the published parameter IpduMRxDirectComInvocation to TRUE, see [ECUC_IpduM_00142].

requirement SWS_IpduM_00143 [SWS_IpduM_00143] 📄 PDF

The initial signal values of the static part shall be set ac- cording to the intial values of the referenced COM I-PDU ( IpduMTxStaticPart -> IpduMTxStaticPduRef ).

requirement SWS_IpduM_00152 [SWS_IpduM_00152] 📄 PDF

As long as no transmission confirmation for the IpduM I-PDU is received (regardless of the result), the function IpduM_Transmit shall return E_- NOT_OK for any new transmission request from the upper layer with a COM I-PDU belonging to the same IpduM I-PDU.

requirement SWS_IpduM_00153 [SWS_IpduM_00153] 📄 PDF

API service (except IpduM_MainFunctionTx, IpduM_MainFunctionRx and IpduM_GetVersionInfo) used without module initializ a- tion  error code: IPDUM_E_UNINIT  value [hex]: 0x20

requirement SWS_IpduM_00162 [SWS_IpduM_00162] 📄 PDF

NULL pointer checking  error code: IPDUM_E_PARAM_POINTER  value [hex]: 0x11

requirement SWS_IpduM_00168 [SWS_IpduM_00168] 📄 PDF

In case the transmission of a multiplexed I-PDU is triggered by the update of one part and IpduMJitUpdate is configured to true for the second part, the IpduM module shall update the second part via PduR_IpduMTriggerTransmit before the multiplexed I-PDU is sent out via PduR_IpduMTransmit .

requirement SWS_IpduM_00169 [SWS_IpduM_00169] 📄 PDF

In case the contents of a multiplexed I-PDU is requested via IpduM_TriggerTransmit , the IpduM module shall update all parts which have Ip- duMJitUpdate configured to true before returning the contents of the multiplexed I-PDU.

requirement SWS_IpduM_00171 [SWS_IpduM_00171] 📄 PDF

In case the transmission of a multiplexed I-PDU is triggered by the update of one part and IpduMJitUpdate is configured to true for the sec- ond part, the multiplexed I-PDU shall not be send if the JIT-update request via PduR_IpduMTriggerTransmit returns E_NOT_OK .

requirement SWS_IpduM_00172 [SWS_IpduM_00172] 📄 PDF

In case the contents of a multiplexed I-PDU is requested via IpduM_TriggerTransmit and IpduMJitUpdate is configured to true for any mul- tiplexed part, IpduM_TriggerTransmit shall return E_NOT_OK if any of the JIT- update requests via PduR_IpduMTriggerTransmit return E_NOT_OK .

requirement SWS_IpduM_00173 [SWS_IpduM_00173] 📄 PDF

The IpduM shall respect the IpduMByteOrder when interpreting the selector field value.

requirement SWS_IpduM_00174 [SWS_IpduM_00174] 📄 PDF

Invalid configuration set selection  error code: IPDUM_E_I NIT_FAILED  value [hex]: 0x21

requirement SWS_IpduM_00175 [SWS_IpduM_00175] 📄 PDF

{DRAFT} Inside a dynamic Container PDU IpduM shall place the header of a contained I-PDU in front of the contained I-PDU.

requirement SWS_IpduM_00177 [SWS_IpduM_00177] 📄 PDF

Each I-PDU header shall consist of ID field and length field in the byte order determined by IpduMHeaderByteOrder .

requirement SWS_IpduM_00178 [SWS_IpduM_00178] 📄 PDF

{DRAFT} Placing of headers and payloads of contained I-PDUs inside a dynamic Container PDU shall be contiguous without any gap.

requirement SWS_IpduM_00179 [SWS_IpduM_00179] 📄 PDF

When a contained I-PDU with IpduMContainedTxPduCol- lectionSemantics set to IPDUM_COLLECT_QUEUED (see [ECUC_IpduM_00198]) is passed to IpduM via IpduM_Transmit , IpduM shall identify the associated Con- tainer PDU and append the contained I-PDU to its payload even if a previous instance of the contained I-PDU is already present in that Container PDU.

requirement SWS_IpduM_00180 [SWS_IpduM_00180] 📄 PDF

When assigning a transmission request of a contained I-PDU to a Container PDU that has not been triggered yet, and if the resulting payload of this Container PDU is bigger than IpduMContainerTxSizeThreshold , then the Container PDU shall be triggered.

requirement SWS_IpduM_00181 [SWS_IpduM_00181] 📄 PDF

When assigning a transmission request of a contained I-PDU to a Container PDU which has not been triggered yet, and if IpduMContainedTx- PduTrigger is set to IPDUM_TRIGGER_ALWAYS, the Container PDU shall be trig- gered immediately.

requirement SWS_IpduM_00182 [SWS_IpduM_00182] 📄 PDF

If a contained I-PDU has IpduMContainedTxPduCollec- tionSemantics set to IPDUM_COLLECT_QUEUED (see [ECUC_IpduM_00198]), the IpduMContainerTxTriggerMode is set to IPDUM_DIRECT and adding this con- tained I-PDU would exceed the maximum size of the Container I-PDU, first the Con- tainer PDU shall be triggered. The contained I-PDU shall be added to a new instance of the Container PDU.

requirement SWS_IpduM_00183 [SWS_IpduM_00183] 📄 PDF

If a contained I-PDU has IpduMContainedTxPduCollec- tionSemantics set to IPDUM_COLLECT_QUEUED (see [ECUC_IpduM_00198]), the IpduMContainerTxTriggerMode is set to IPDUM_TRIGGERTRANSMIT and adding this contained I-PDU would exceed maximum size of the Container PDU, first the Con- tainer PDU shall be queued. Then the contained I-PDU shall be added to a new in- stance of the Container PDU.

requirement SWS_IpduM_00184 [SWS_IpduM_00184] 📄 PDF

When assigning the first transmission request of a contained I-PDU to a Container PDU and either IpduMContainerTxSendTimeout of the Con- tainer PDU or IpduMContainedTxPduSendTimeout of the contained I-PDU is con- figured greater than zero, the IpduM module shall start the transmission timer of the Container PDU. The timer shall be initialized with the smaller non zero value of IpduM- ContainerTxSendTimeout and IpduMContainedTxPduSendTimeout .

requirement SWS_IpduM_00185 [SWS_IpduM_00185] 📄 PDF

When a transmission request of a contained I-PDU is assigned to a Container PDU, the transmission timer of the Container PDU shall be updated with the contained I-PDU's timeout ( IpduMContainedTxPduSendTimeout ) if it is less than the remaining time of the Container PDU.

requirement SWS_IpduM_00186 [SWS_IpduM_00186] 📄 PDF

When the transmission timer of the Container PDU defined by [SWS_IpduM_00184] has elapsed, the Container PDU shall be triggered.

requirement SWS_IpduM_00187 [SWS_IpduM_00187] 📄 PDF

If a Container PDU is assembled (see [SWS_IpduM_00188] and [SWS_IpduM_00256]), IpduM shall calculate the overall size of the Container PDU. The total size builds up by the total of all payloads of the contained I-PDUs plus the total length of the corresponding headers. The result shall be the payload size of the Container PDU.

requirement SWS_IpduM_00188 [SWS_IpduM_00188] 📄 PDF

When a Container PDU is triggered and IpduMContain- erTxTriggerMode is set to IPDUM_DIRECT , IpduM shall assemble the Container PDU and handle the transmission process with respect to the configuration for the transmission queue (please refer to [SWS_IpduM_00261] and [SWS_IpduM_00262]).

requirement SWS_IpduM_00189 [SWS_IpduM_00189] 📄 PDF

The IpduM shall wait for the transmission confirmation (regard- less of the result) of a Container PDU before invoking PduR_IpduMTransmit for the next instance of that Container PDU.

requirement SWS_IpduM_00190 [SWS_IpduM_00190] 📄 PDF

In case the transmission confirmation for that Container PDU was received, the IpduM shall invoke PduR_IpduMTransmit for the next oldest in- stance of that Container PDU during the next call to IpduM_MainFunctionTx at the latest.

requirement SWS_IpduM_00191 [SWS_IpduM_00191] 📄 PDF

In case IpduMContainerTxTriggerMode is set to IP- DUM_DIRECT, and PduR_IpduMTransmit returns E_OK for that Container PDU, Ip- duM shall remove that instance from the queue.

requirement SWS_IpduM_00192 [SWS_IpduM_00192] 📄 PDF

If a Container PDU has IpduMContainerTxTriggerMode set to IPDUM_DIRECT and this Container PDU has been assembled and is passed to PduR, the Parameter PduInfoPtr shall contain a pointer to the assembled Con- tainer PDU in SduDataPtr and the total length (according to [SWS_IpduM_00187]) in SduLength .

requirement SWS_IpduM_00193 [SWS_IpduM_00193] 📄 PDF

If IpduMContainerTxTriggerMode is set to IPDUM_TRIG- GERTRANSMIT , IpduM shall keep and provide buffered data until it is fetched by a call to IpduM_TriggerTransmit .

requirement SWS_IpduM_00194 [SWS_IpduM_00194] 📄 PDF

If IpduMContainerTxTriggerMode is set to IPDUM_TRIGGER- TRANSMIT , IpduM_TriggerTransmit shall copy the oldest Container PDU instance in the queue. If the queue is empty/non-existent, the current instance of the Container PDU is copied. If the current instance of the Container PDU is empty/non-existent as well, E_NOT_OK is returned by IpduM_TriggerTransmit .

requirement SWS_IpduM_00195 [SWS_IpduM_00195] 📄 PDF

If PduR_IpduMTransmit has returned E_NOT_OK , the same transmit request shall be repeated during the next call to IpduM_MainFunctionTx up to IpduMMaxTransmitRetries times. The instance of that Container PDU is queued in the meantime.

requirement SWS_IpduM_00196 [SWS_IpduM_00196] 📄 PDF

If the IpduM receives a transmission confirmation for a specific Container PDU, it shall translate this confirmation into the corresponding confirmations for those contained I-PDUs having IpduMContainedTxPduConfirmation set to TRUE and were contained in the last transmission of this specific Container PDU. This shall result in multiple TxConfirmations, if the same contained I-PDU was present more than once in this transmitted specific Container PDU.

requirement SWS_IpduM_00199 [SWS_IpduM_00199] 📄 PDF

If creating a new instance of a Container PDU would exceed IpduMContainerQueueSize the oldest instance shall be discarded. If IpduMCon- tainerQueueSize is not configured the local instance shall be discarded. In both cases IPDUM_E_QUEUEOVFL shall be reported to [9, DET] via Det_ReportRun- timeError .

requirement SWS_IpduM_00200 [SWS_IpduM_00200] 📄 PDF

If IpduMContainerTxTriggerMode is set to IPDUM_TRIG- GERTRANSMIT , a Container PDU instance shall be dropped from the queue if it is fetched by IpduM_TriggerTransmit .

requirement SWS_IpduM_00201 [SWS_IpduM_00201] 📄 PDF

When assigning a transmission request of a contained I-PDU to a Container PDU with the parameter IpduMContainerTxFirstContainedP- duTrigger set to TRUE, the Container PDU shall be queued for transmission.

requirement SWS_IpduM_00202 [SWS_IpduM_00202] 📄 PDF

If IpduMContainerPduProcessing is set to IPDUM_PRO- CESSING_IMMEDIATE , the processing of the received Container PDUs shall be exe- cuted in the context of IpduM_RxIndication . Otherwise, it is deferred to the next call to IpduM_MainFunctionRx . All deferred Container PDUs shall be processed in the order of their reception.

requirement SWS_IpduM_00203 [SWS_IpduM_00203] 📄 PDF

If by a call of IpduM_RxIndication a Container PDU is re- ceived, the contained I-PDUs shall be extracted.

requirement SWS_IpduM_00204 [SWS_IpduM_00204] 📄 PDF

For each contained I-PDU of a received Container PDU where the IpduMContainerRxPdu has IpduMContainerRxAcceptContainedPdu = IPDUM_ACCEPT_ALL the ID from the PDU header shall be used to identify the cor- responding contained I-PDU: • If the received Container PDU uses long or short header ( IpduMContainer- HeaderSize = IPDUM_HEADERTYPE_LONG or IPDUM_HEADERTYPE_SHORT , respectively) the ID shall be compared with the IpduMContainedRxPduLong- HeaderId or IpduMContainedRxPduShortHeaderId , respectively, in the set of IpduMContainedRxPdus which do not have an IpduMContainedRxInCon- tainerPduRef defined.

requirement SWS_IpduM_00205 [SWS_IpduM_00205] 📄 PDF

If for the received Container PDU the configuration parame- ter IpduMContainerRxAcceptContainedPdu is set to IPDUM_ACCEPT_CONFIG- URED , IpduM shall expect and match only contained I-PDUs ( IpduMContainedRx- Pdu ) that reference the IpduMContainerRxPdu in IpduMContainedRxInCon- tainerPduRef .

requirement SWS_IpduM_00206 [SWS_IpduM_00206] 📄 PDF

For a received Container PDU with IpduMContainerRxAc- ceptContainedPdu =IPDUM_ACCEPT_ALL, IpduM shall expect and match only Ip- duMContainedRxPdus which do not have an IpduMContainedRxInContainerP- duRef defined.

requirement SWS_IpduM_00207 [SWS_IpduM_00207] 📄 PDF

If a contained I-PDU of a received IpduMContainerRxPdu with IpduMContainerRxAcceptContainedPdu = IPDUM_ACCEPT_ALL can not be matched according to [SWS_IpduM_00206] then this contained I-PDU shall be dis- carded silently.

requirement SWS_IpduM_00208 [SWS_IpduM_00208] 📄 PDF

For each contained I-PDU the length given in its header shall be used as the length of the corresponding I-PDU.

requirement SWS_IpduM_00209 [SWS_IpduM_00209] 📄 PDF

Each contained I-PDU shall be notified to PduR via PduR_IpduMRxIndication . IpduM shall indicate the contained I-PDUs in the same order as the I-PDUs are located inside the Container PDU.

requirement SWS_IpduM_00210 [SWS_IpduM_00210] 📄 PDF

When processing a received Container PDU and detecting a header containing the ID 0 the processing for this Container PDU shall be stopped and the remaining bytes shall be ignored.

requirement SWS_IpduM_00211 [SWS_IpduM_00211] 📄 PDF

If a Container PDU is received and IpduMContainer- PduProcessing is set to IPDUM_PROCESSING_DEFERRED , the Container PDU shall be queued.

requirement SWS_IpduM_00212 [SWS_IpduM_00212] 📄 PDF

If receiving a new instance of a Container PDU would exceed IpduMContainerQueueSize the oldest instance shall be discarded and IPDUM_E_- QUEUEOVFL shall be reported to [9, DET] via Det_ReportRuntimeError .

requirement SWS_IpduM_00213 [SWS_IpduM_00213] 📄 PDF

When processing a received Container PDU and detecting a header where the payload length exceeds the remaining bytes of the container the processing for this Container PDU shall be stopped and the remaining bytes shall be ignored. Furthermore, IPDUM_E_HEADER shall be reported to [9, DET] via Det_- ReportRuntimeError .

requirement SWS_IpduM_00214 [SWS_IpduM_00214] 📄 PDF

If the remaining bytes in a Container PDU are less than the configured IpduMContainerHeaderSize ([ECUC_IpduM_00183]) the remain- ing bytes shall be ignored.

requirement SWS_IpduM_00215 [SWS_IpduM_00215] 📄 PDF

Erroneous header detected  error code: IPDUM_E_HEADER  value [hex]: 0x30

requirement SWS_IpduM_00216 [SWS_IpduM_00216] 📄 PDF

Container Queue ove r flow  error code: IPDUM_E_QUEUEOVFL  value [hex]: 0x31

requirement SWS_IpduM_00217 [SWS_IpduM_00217] 📄 PDF

When a Container PDU is received from the PDU Router, the function IpduM_RxIndication forwards the contained I-PDUs via the PDU Router, using PduR_IpduMRxIndication (see [SWS_IpduM_00105]).

requirement SWS_IpduM_00219 [SWS_IpduM_00219] 📄 PDF

IpduM shall reject configurations in which the transmit proper- ties (see [ECUC_IpduM_00198]: IpduMContainedTxPduCollectionSemantics ) of the contained I-PDUs which are assigned to a specific Container PDU are mixed. A Container PDU shall contain either solely I-PDUs with IPDUM_COLLECT_LAST_- IS_BEST or solely I-PDUs with IPDUM_COLLECT_QUEUED semantic.

requirement SWS_IpduM_00220 [SWS_IpduM_00220] 📄 PDF

For contained I-PDUs, with IpduMContainedTxPduCol- lectionSemantics set to IPDUM_COLLECT_LAST_IS_BEST , IpduM shall use PduR_IpduMTriggerTransmit to fetch the PDU data from its upper layer imme- diately before it transfers the container I-PDU to the lower layer.

requirement SWS_IpduM_00221 [SWS_IpduM_00221] 📄 PDF

When a transmission request of a contained I-PDU is assigned to a Container PDU, the contained I-PDU has IpduMContainedTxPduCollection- Semantics set to IPDUM_COLLECT_LAST_IS_BEST and IpduMContainedTx- PduPriorityHandling is set to FALSE, the IpduM shall retain the order in which the transmission requests are passed to IpduM. That is, the contained I-PDU of the first passed transmission request is placed at the beginning at the container and so on.If a transmission request of the same contained I-PDU is passed multiple times, the IpduM shall store it only once at the position matching its first occurrence.

requirement SWS_IpduM_00222 [SWS_IpduM_00222] 📄 PDF

If a contained I-PDU has IpduMContainedTxPduCollec- tionSemantics IPDUM_COLLECT_LAST_IS_BEST , the Container PDU is assem- bled and if a PduR_IpduMTriggerTransmit returns E_NOT_OK for a contained I- PDU, IpduM shall omit this contained I-PDU silently and proceed with the assembly of the Container PDU.

requirement SWS_IpduM_00223 [SWS_IpduM_00223] 📄 PDF

In case the IpduM shall update the dynamic part just-in-time, the latest dynamic part sent by the upper layer shall be updated or the dynamic part referenced by IpduMInitialDynamicPart if no dynamic part was sent before.

requirement SWS_IpduM_00224 [SWS_IpduM_00224] 📄 PDF

All static and dynamic parts shall be configured to allocate ex- actly the same bits in the multiplexed and the de-multiplexed I-PDUs.

requirement SWS_IpduM_00225 [SWS_IpduM_00225] 📄 PDF

If IpduMTxTriggerMode is configured to a different value than NONE, the IpduM shall use the MetaData of the triggering part for sending of the multiplexed I-PDU.

requirement SWS_IpduM_00226 [SWS_IpduM_00226] 📄 PDF

If IpduMTxTriggerMode is configured to NONE, the IpduM shall use the MetaData of the last updated part for sending of the multiplexed I-PDU.

requirement SWS_IpduM_00227 [SWS_IpduM_00227] 📄 PDF

On receiver side the IpduM shall forward the received Meta- Data along with all demultiplexed parts.

requirement SWS_IpduM_00228 [SWS_IpduM_00228] 📄 PDF

In case a Container PDU supports MetaData, the IpduM shall use the MetaData last collected from the contained I-PDUs when sending the Con- tainer PDU.

requirement SWS_IpduM_00229 [SWS_IpduM_00229] 📄 PDF

In case the IpduM receives a Container PDU with MetaData, the IpduM shall forward the MetaData of the Container PDU along with all contained I-PDU that support MetaData.

requirement SWS_IpduM_00230 [SWS_IpduM_00230] 📄 PDF

IpduM shall reject configurations in which contained I-PDU supporting MetaData have a different MetaDataType from the MetaDataType of the Container PDU.

requirement SWS_IpduM_00231 [SWS_IpduM_00231] 📄 PDF

If a contained I-PDU has IpduMContainedTxPduCollec- tionSemantics set to IPDUM_COLLECT_LAST_IS_BEST , the transmission request is updated and the total length of the payloads plus the corresponding headers of all contained I-PDUs which are requested for transmission would exceed the maximum size of the Container PDU, then the Container PDU shall be triggered.

requirement SWS_IpduM_00232 [SWS_IpduM_00232] 📄 PDF

{DRAFT} If the IpduMContainerHeaderSize is set to IP- DUM_HEADERTYPE_NONE , the IpduM module shall statically place the contained I- PDUs within the Container PDU according to their configured IpduMContainedTxP- duOffset.

requirement SWS_IpduM_00233 [SWS_IpduM_00233] 📄 PDF

{DRAFT} In case a Static Container has a configured Ipdu- MUnusedAreasDefault , the IpduM shall ensure that all not updated areas of the Container are set to the value of IpduMUnusedAreasDefault before the Container PDU is sent.

requirement SWS_IpduM_00234 [SWS_IpduM_00234] 📄 PDF

{DRAFT} For Container PDUs with static container layout and IpduMContainerTxTriggerMode is set to IPDUM_DIRECT , the IpduM shall trig- ger the Container PDU when all contained I-PDUs were updated by the upper layer.

requirement SWS_IpduM_00235 [SWS_IpduM_00235] 📄 PDF

{DRAFT} In case a contained I-PDU has a configured IpduMUp- dateBitPosition, the IpduM shall ensure that the update bit of this contained I-PDU is set if and only if the contained I-PDU was successfully updated.

requirement SWS_IpduM_00236 [SWS_IpduM_00236] 📄 PDF

{DRAFT} In case a received contained I-PDU has a configured update bit, the IpduM module shall only process and indicate it to the upper layer if its received update-bit is set.

requirement SWS_IpduM_00237 [SWS_IpduM_00237] 📄 PDF

{DRAFT} When processing a received Container PDU with Ip- duMContainerHeaderSize set to IPDUM_HEADERTYPE_NONE , the IpduM shall ignore all contained PDUs that are according to their configuration not or not completely con- tained in the received Container PDU. Such contained I-PDUs shall not be indicated to the upper layer. If Development Error Detection is configured ([ECUC_IpduM_00132]) IPDUM_E_CONTAINER shall be reported to [9, DET] via Det_ReportError .

requirement SWS_IpduM_00238 [SWS_IpduM_00238] 📄 PDF

{DRAFT} For a Container PDU with IpduMContainerHead- erSize set to IPDUM_HEADERTYPE_NONE , all contained I-PDUs shall have IpduM- ContainedTxPduCollectionSemantics set to IPDUM_COLLECT_LAST_IS_- BEST .

requirement SWS_IpduM_00240 [SWS_IpduM_00240] 📄 PDF

{DRAFT} Contained I-PDUs with a configured IpduMPduUp- dateBitPosition shall only be assigned to Container PDUs with IpduMContain- erHeaderSize set to IPDUM_HEADERTYPE_NONE .

requirement SWS_IpduM_00241 [SWS_IpduM_00241] 📄 PDF

{DRAFT} For a Container PDU with IpduMContainerHead- erSize set to IPDUM_HEADERTYPE_NONE , all contained I-PDUs shall have a config- ured IpduMContainedTxPduOffset.

requirement SWS_IpduM_00242 [SWS_IpduM_00242] 📄 PDF

{DRAFT} For a Container PDU with IpduMContainerHead- erSize set to IPDUM_HEADERTYPE_NONE and IpduMUnusedAreasDefault not set, all contained I-PDUs shall have a configured IpduMPduUpdateBitPosition .

requirement SWS_IpduM_00245 [SWS_IpduM_00245] 📄 PDF

{DRAFT} All IpduMPduUpdateBitPositions shall be configured to their own not otherwise occupied bit position.

requirement SWS_IpduM_00246 [SWS_IpduM_00246] 📄 PDF

{DRAFT} Only the last contained IPdu (according to IpduM- ContainedPduOffset ) of a ContainerIPdu with static container layout (i.e. Ip- duMContainerHeaderSize set to IPDUM_HEADERTYPE_NONE ) may be a dynamic length PDU (i.e, a PDU that at runtime may exhibit a length different from the one stat- ically configured via Pdu.length of the respective Pdu). All other contained PDUs of a ContainerIPdu with static container layout have to be static length PDUs.

requirement SWS_IpduM_00247 [SWS_IpduM_00247] 📄 PDF

Partly or erroneous container received  error code: IPDUM_E_CONTAINER  value [hex]: 0x32

requirement SWS_IpduM_00248 [SWS_IpduM_00248] 📄 PDF

All contained I-Pdus with Collection Semantic IPDUM_- COLLECT_LAST_IS_BEST and IpduMContainedTxPduPriorityHandling is set to TRUE, shall have an IpduMContainedTxPduPriority . If the IpduMCon- tainedTxPduPriority is not configured, the IpduMContainedTxPduPriority shall be set to default value 255 (lowest available priority).

requirement SWS_IpduM_00249 [SWS_IpduM_00249] 📄 PDF

When transmission requests of contained I-PDUs are as- signed to a Container PDU, the contained I-PDUs with IpduMContainedTxP- duCollectionSemantics set to IPDUM_COLLECT_LAST_IS_BEST and IpduM- ContainedTxPduPriorityHandling is set to TRUE, the IpduM shall collect the transmission request in respect to the IpduMContainedTxPduPriority (highest priority first and so on). Transmission requests of contained I-PDUs with the same IpduMContainedTxPduPriority shall be collected in the order the transmission request occurred.

requirement SWS_IpduM_00250 [SWS_IpduM_00250] 📄 PDF

For an IpduMContainerRxPdu with IpduMContainerRxAc- ceptContainedPdu = IPDUM_ACCEPT_CONFIGURED and IpduMContainerHead- erSize = IPDUM_HEADERTYPE_LONG or IPDUM_HEADERTYPE_SHORT the following constraint applies: • IpduMContainedRxPdus with an IpduMContainedRxInContainerPduRef to that specific IpduMContainerRxPdu shall have unique IpduMContainedRx- PduLongHeaderId or IpduMContainedRxPduShortHeaderId , respectively, defined in the context of that IpduMContainerRxPdu .

requirement SWS_IpduM_00251 [SWS_IpduM_00251] 📄 PDF

All IpduMContainedRxPdus with no IpduMContainedRxInCon- tainerPduRef and a defined IpduMContainedRxPduLongHeaderId or IpduM- ContainedRxPduShortHeaderId , shall have a unique IpduMContainedRxPdu- LongHeaderId or IpduMContainedRxPduShortHeaderId , respectively.

requirement SWS_IpduM_00252 [SWS_IpduM_00252] 📄 PDF

{DRAFT} IpduM Container Pdus shall be processed within the MainFunction, which is referenced by the Container Pdu configuration parameters (i.e. IpduMContainerRxPdu and IpduMContainerTxPdu ).

requirement SWS_IpduM_00253 [SWS_IpduM_00253] 📄 PDF

When sending a Static Container PDU, the IPduM shall reduce the size of the Container PDU by omitting not updated data behind the last updated PDU and the last update bit.

requirement SWS_IpduM_00254 [SWS_IpduM_00254] 📄 PDF

When a Container PDU is triggered and IpduMContain- erTxTriggerMode is set to IPDUM_TRIGGERTRANSMIT, IpduM shall invoke PduR_IpduMTransmit with SduDataPtr set to NULL and SduLength according to the following preconditions: • For static Container PDUs the SduLength shall be calculated with respect to Ip- duMUpdateBitPosition (see [SWS_IpduM_00241]), IpduMContainedTxPduOffset (see [SWS_IpduM_00242]) and length of last contained I-PDU, if having dynamic PDU length configured (see [SWS_IpduM_00246]). • For dynamic Container PDUs the SduLength shall be calculated as specified in [SWS_IpduM_00187].

requirement SWS_IpduM_00256 [SWS_IpduM_00256] 📄 PDF

When a Container PDU has been triggered and IpduMCon- tainerTxTriggerMode is set to IPDUM_TRIGGERTRANSMIT , IpduM shall assemble the Container PDU in the context of the API call IpduM_TriggerTransmit .

requirement SWS_IpduM_00257 [SWS_IpduM_00257] 📄 PDF

If a Container PDU has IpduMContainerTxTriggerMode set to IPDUM_TRIGGERTRANSMIT and this Container PDU has been assembled in the context of the IpduM_TriggerTransmit call, the Parameter PduInfoPtr shall be updated with the total length (according to [SWS_IpduM_00187]) in SduLength .

requirement SWS_IpduM_00258 [SWS_IpduM_00258] 📄 PDF

If a container PDU is assembled and the contained PDUs have IpduMContainedTxPduCollectionSemantics set to IPDUM_COLLECT_LAST_- IS_BEST , the IpduM shall place the contained I-PDUs in the container I-PDU with respect to the configuration and resulting order according to [SWS_IpduM_00221] and [SWS_IpduM_00249].

requirement SWS_IpduM_00259 [SWS_IpduM_00259] 📄 PDF

If a container PDU is assembled, the contained PDUs have IpduMContainedTxPduCollectionSemantics set to IPDUM_COLLECT_LAST_- IS_BEST and placing a contained I-PDU would exceed maximum size of the Container PDU, the IpduM shall finish the assembly process and keep the remaining transmission requests for the next transmission.

requirement SWS_IpduM_00260 [SWS_IpduM_00260] 📄 PDF

IpduM shall reject configurations in which contained I-PDUs have IpduMContainedTxPduCollectionSemantics set to IPDUM_COLLECT_- LAST_IS_BEST and the according Container PDU has queue ( IpduMContain- erQueueSize is available) configured.

requirement SWS_IpduM_00261 [SWS_IpduM_00261] 📄 PDF

If a PDU Container is queued for transmission, and IpduM- ContainerQueueSize is not set (or set to 1), IpduM shall call PduR_IpduMTransmit .

requirement SWS_IpduM_00262 [SWS_IpduM_00262] 📄 PDF

If a PDU Container is queued for transmission, and IpduM- ContainerQueueSize is > 1, IpduM shall call store the Container PDU in a queue.

requirement SWS_IpduM_00265 [SWS_IpduM_00265] 📄 PDF

[SWS_IpduM_00265] Handling of discarded container PDUs Upstream requirements: SRS_IpduM_02820 ⌈If an instance of a container PDU was discarded (see [SWS_IpduM_00199]), then PduR_IpduMTxConfirmation shall be called with result E_NOT_OK for every con- tained PDU that has IpduMContainedTxPduConfirmation enabled within that re- spective instance.⌋

requirement SWS_IpduM_91003 [SWS_IpduM_91003] 📄 PDF

Type of error Related error code Error value API service called with wrong parameter IPDUM_E_PARAM 0x10 NULL pointer checking IPDUM_E_PARAM_POINTER 0x11 API service (except IpduM_MainFunctionTx,Ipdu M_MainFunctionRx and IpduM_GetVersionInfo) used without module initialization IPDUM_E_UNINIT 0x20 Invalid configuration set selection IPDUM_E_INIT_FAILED 0x21

requirement SWS_IpduM_91004 [SWS_IpduM_91004] 📄 PDF

Type of error Related error code Error value Erroneous header detected IPDUM_E_HEADER 0x30 Container Queue overflow IPDUM_E_QUEUEOVFL 0x31 Partly or erroneous container received IPDUM_E_CONTAINER 0x32

requirement SWS_IpduM_CONSTR_00263 [SWS_IpduM_CONSTR_00263] 📄 PDF

The IpduMContainedTxPduPriorityHan- dling shall be set to TRUE , if at least one IpduMContainerTxPdu is referenced by at least two IpduMContainedTxPdu via IpduMContainedTxInContain- erPduRef and the configured IpduMContainedTxPduPriority of those IpduMContainedTxPdu differ from each other.

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

Record
AUTOSAR/AP/record/CP_MOD_IpduM
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_IpduM@rel:R20-11#46aa6d24
Content hash
46aa6d24
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_IPDUMultiplexer.pdf#nameddest=SWS_IpduM_00032

主题图

需求

121
SWS_IpduM_00011SWS_IpduM_00015SWS_IpduM_00017SWS_IpduM_00021SWS_IpduM_00022SWS_IpduM_00026SWS_IpduM_00028SWS_IpduM_00033SWS_IpduM_00041SWS_IpduM_00042SWS_IpduM_00067SWS_IpduM_00068SWS_IpduM_00084SWS_IpduM_00086SWS_IpduM_00087SWS_IpduM_00088SWS_IpduM_00089SWS_IpduM_00090SWS_IpduM_00091SWS_IpduM_00097SWS_IpduM_00098SWS_IpduM_00102SWS_IpduM_00104SWS_IpduM_00105SWS_IpduM_00107SWS_IpduM_00140SWS_IpduM_00143SWS_IpduM_00152SWS_IpduM_00153SWS_IpduM_00162SWS_IpduM_00168SWS_IpduM_00169SWS_IpduM_00171SWS_IpduM_00172SWS_IpduM_00173SWS_IpduM_00174SWS_IpduM_00175SWS_IpduM_00177SWS_IpduM_00178SWS_IpduM_00179SWS_IpduM_00180SWS_IpduM_00181SWS_IpduM_00182SWS_IpduM_00183SWS_IpduM_00184SWS_IpduM_00185SWS_IpduM_00186SWS_IpduM_00187SWS_IpduM_00188SWS_IpduM_00189SWS_IpduM_00190SWS_IpduM_00191SWS_IpduM_00192SWS_IpduM_00193SWS_IpduM_00194SWS_IpduM_00195SWS_IpduM_00196SWS_IpduM_00199SWS_IpduM_00200SWS_IpduM_00201SWS_IpduM_00202SWS_IpduM_00203SWS_IpduM_00204SWS_IpduM_00205SWS_IpduM_00206SWS_IpduM_00207SWS_IpduM_00208SWS_IpduM_00209SWS_IpduM_00210SWS_IpduM_00211SWS_IpduM_00212SWS_IpduM_00213SWS_IpduM_00214SWS_IpduM_00215SWS_IpduM_00216SWS_IpduM_00217SWS_IpduM_00219SWS_IpduM_00220SWS_IpduM_00221SWS_IpduM_00222SWS_IpduM_00223SWS_IpduM_00224SWS_IpduM_00225SWS_IpduM_00226SWS_IpduM_00227SWS_IpduM_00228SWS_IpduM_00229SWS_IpduM_00230SWS_IpduM_00231SWS_IpduM_00232SWS_IpduM_00233SWS_IpduM_00234SWS_IpduM_00235SWS_IpduM_00236SWS_IpduM_00237SWS_IpduM_00238SWS_IpduM_00240SWS_IpduM_00241SWS_IpduM_00242SWS_IpduM_00245SWS_IpduM_00246SWS_IpduM_00247SWS_IpduM_00248SWS_IpduM_00249SWS_IpduM_00250SWS_IpduM_00251SWS_IpduM_00252SWS_IpduM_00253SWS_IpduM_00254SWS_IpduM_00256SWS_IpduM_00257SWS_IpduM_00258SWS_IpduM_00259SWS_IpduM_00260SWS_IpduM_00261SWS_IpduM_00262SWS_IpduM_00265SWS_IpduM_91003SWS_IpduM_91004SWS_IpduM_CONSTR_00263SWS_IpduM_NA

详细视图

请在大纲中选择一个条目。

初始化与状态

Service returns the version information of this module.

void IpduM_GetVersionInfo(Std_VersionInfoType* versioninfo);
IpduM_Init 函数

Initializes the I-PDU Multiplexer. In configurations, in which IpduM is assigned to more than one partition (i.e. IpduM_Main Functions are mapped to partitions), IpduM may provide one init function per partition.

void IpduM_Init(const IpduM_ConfigType* config);

服务

Requests transmission of a PDU.

Std_ReturnType IpduM_Transmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr);

回调

Indication of a received PDU from a lower layer communication interface module.

void IpduM_RxIndication(PduIdType RxPduId, const PduInfoType* PduInfoPtr);

Within this API, the upper layer module (called module) shall check whether the available data fits into the buffer size reported by PduInfoPtr->SduLength. If it fits, it shall copy its data into the buffer provided by PduInfoPtr->SduDataPtr and update the length of the actual copied data in PduInfoPtr->SduLength. If not, it returns E_NOT_OK without changing PduInfoPtr.

Std_ReturnType IpduM_TriggerTransmit(PduIdType TxPduId, PduInfoType* PduInfoPtr);

The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

void IpduM_TxConfirmation(PduIdType TxPduId, Std_ReturnType result);

周期性

This function performs the processing of the reception activities that are not directly handled within the calls from PduR. Per configured IpduMMainFunctionRx instance one IpduM_MainFunctionRx_<shortName> shall be implemented. Hereby <shortName> is the short name of the IpduMMainFunctionRx configuration container in the ECU configuration.

void IpduM_MainFunctionRx(void);

This function performs the processing of the transmission activities that are not directly handled within the calls from PduR. Per configured IpduMMainFunctionTx instance one IpduM_MainFunctionTx_<shortName> shall be implemented. Hereby <shortName> is the short name of the IpduMMainFunctionTx configuration container in the ECU configuration.

void IpduM_MainFunctionTx(void);

类型

This is the type of the data structure containing the initialization data for the I-PDU multiplexer.

需求

SWS_IpduM_00011 requirement

The number of values used of the selector field, i.e. values used to distinguish between different I-PDU layouts, does not have to be the whole range of possible values.

SWS_IpduM_00015 requirement

For a multiplexed I-PDU IpduM shall merge the corresponding two COM I-PDUs representing the associated static part and the last received dynamic part into one single IpduM I-PDU with a new unique I-PDU ID. IpduM shall send out this new IpduM I-PDU to the PDU Router module.

SWS_IpduM_00017 requirement

The function IpduM_Transmit shall assemble the mul- tiplexed I-PDU, using the related static and dynamic part, and transmit it ac- cording to the trigger conditions/ modes as defined in [SWS_IpduM_00021] and [ECUC_IpduM_00125].

SWS_IpduM_00021 requirement

The IpduM module shall be configurable to send a transmission request for the new multiplexed I-PDU to the PDU Router because of the following trigger conditions/modes: • receiving a static part • receiving a dynamic part • receiving a static or a dynamic part • does not trigger transmission because of receiving anything of this I-PDU ( Ip- duMTxTriggerMode None) in case of TriggerTransmit For configuration, see [ECUC_IpduM_00052].

SWS_IpduM_00022 requirement

If the IpduM receives a TxConfirmation for a specific IpduM I-PDU, it shall translate this confirmation into the corresponding confirmations for the COM I-PDUs, which were contained in the last sent out multiplexed IpduM I-PDU.

SWS_IpduM_00026 requirement

API servi ce called with wrong parameter:  error code: IPDUM_E_PARAM  value [hex]: 0x10

SWS_IpduM_00028 requirement

If IpduMDevErrorDetect is configured to TRUE, all IpduM APIs shall check their input parameters and report detected errors to [9, DET] via Det_ReportError . IPDUM_E_PARAM shall be reported for normal parameters and IPDUM_E_PARAM_POINTER for pointer parameters.

SWS_IpduM_00033 requirement

The function IpduM_Init shall initialize all module-related global variables.

SWS_IpduM_00041 requirement

If there is a static part configured in a multiplexed SDU received from the PDU Router, the function IpduM_RxIndication transforms the incoming I- PDU ID into the correct I-PDU ID for the static part's destination and then forwards the SDU via the PDU Router, see PduR_IpduMRxIndication in the [10, SWS PDU Router].

SWS_IpduM_00042 requirement

When a multiplexed I-PDU is received from the PDU Router the function IpduM_RxIndication uses the incoming I-PDU ID and the selector field to find out the correct I-PDU ID for the dynamic part's destination and then forwards the I-PDU via the PDU Router, see PduR_IpduMRxIndication in the [10, SWS PDU Router].

SWS_IpduM_00067 requirement

The IpduM shall initialize its internal transmit buffers with the configured pattern IpduMIPduUnusedAreasDefault .

SWS_IpduM_00068 requirement

The initial signal values of the initial dynamic part shall be set according to initial values of the referenced COM I-PDU ( IpduMInitialDy- namicPart -> IpduMTxDynamicPart -> IpduMTxDynamicPduRef ).

SWS_IpduM_00084 requirement

The behavior of the IpduM is unspecified until a correct call to IpduM_Init is made.

SWS_IpduM_00086 requirement

The function IpduM_RxIndication shall be callable in inter- rupt context, e.g. from receive interrupt.

SWS_IpduM_00087 requirement

The function IpduM_TxConfirmation shall be callable in in- terrupt context, e.g. from a transmit interrupt.

SWS_IpduM_00088 requirement

The function IpduM_TxConfirmation shall translate the confirmation received from the PDU Router into confirmations for the I-PDUs which where contained in the sent multiplexed I-PDU or Container PDU.

SWS_IpduM_00089 requirement

The function IpduM_TriggerTransmit shall be callable in interrupt context.

SWS_IpduM_00090 requirement

Within the function IpduM_TriggerTransmit , the IpduM shall copy the contents of its I-PDU transmit buffer to the PDU buffer given by PduIn- foPtr ->SduDataPtr and update PduInfoPtr ->SduLength with length of the copied data accordingly.

SWS_IpduM_00091 requirement

The IpduM shall take care about the data consistency during providing the data.

SWS_IpduM_00097 requirement

The IpduM shall be implemented so that no other modules depend on it and that it is be possible to build a system without the IpduM module if it is not needed.

SWS_IpduM_00098 requirement

The IpduM module shall not set the selector field.

SWS_IpduM_00102 requirement

Module Header File Imported Type ComStack_Types.h PduIdType ComStack_Types.h PduInfoType ComStack_Types ComStack_Types.h PduLengthType Std_Types.h Std_ReturnType Std Std_Types.h Std_VersionInfoType

SWS_IpduM_00104 requirement

Det_ReportRuntimeError Det.h Service to report runtime errors. If a callout has been configured then this callout shall be called.

SWS_IpduM_00105 requirement

Det_ReportError Det.h Service to report development errors. PduR_IpduMRxIndication PduR_IpduM.h Indication of a received PDU from a lower layer communication interface module. PduR_IpduMTransmit PduR_IpduM.h Requests transmission of a PDU. PduR_IpduMTriggerTransmit PduR_IpduM.h Within this API, the upper layer module (called module) shall check whether the available data fits into the buffer size reported by PduInfoPtr->Sdu Length. If it fits, it shall copy its data into the buffer provided by PduInfoPtr->SduDataPtr and update the length of the actual copied data in PduInfoPtr->Sdu Length. If not, it returns E_NOT_OK without changing PduInfoPtr. PduR_IpduMTxConfirmation PduR_IpduM.h The lower layer communication interface module confirms the transmission of a PDU, or the failure to transmit a PDU.

SWS_IpduM_00107 requirement

The IpduM shall not directly access the AUTOSAR OS.

SWS_IpduM_00140 requirement

It shall be allowed to optimize the Rx- and Tx-Confirmation path from the IpduM module via the PDU Router module to the COM layer to call the COM API directly from the IpduM module without including the PDU Router. This shall be indicated by setting the published parameter IpduMRxDirectComInvocation to TRUE, see [ECUC_IpduM_00142].

SWS_IpduM_00143 requirement

The initial signal values of the static part shall be set ac- cording to the intial values of the referenced COM I-PDU ( IpduMTxStaticPart -> IpduMTxStaticPduRef ).

SWS_IpduM_00152 requirement

As long as no transmission confirmation for the IpduM I-PDU is received (regardless of the result), the function IpduM_Transmit shall return E_- NOT_OK for any new transmission request from the upper layer with a COM I-PDU belonging to the same IpduM I-PDU.

SWS_IpduM_00153 requirement

API service (except IpduM_MainFunctionTx, IpduM_MainFunctionRx and IpduM_GetVersionInfo) used without module initializ a- tion  error code: IPDUM_E_UNINIT  value [hex]: 0x20

SWS_IpduM_00162 requirement

NULL pointer checking  error code: IPDUM_E_PARAM_POINTER  value [hex]: 0x11

SWS_IpduM_00168 requirement

In case the transmission of a multiplexed I-PDU is triggered by the update of one part and IpduMJitUpdate is configured to true for the second part, the IpduM module shall update the second part via PduR_IpduMTriggerTransmit before the multiplexed I-PDU is sent out via PduR_IpduMTransmit .

SWS_IpduM_00169 requirement

In case the contents of a multiplexed I-PDU is requested via IpduM_TriggerTransmit , the IpduM module shall update all parts which have Ip- duMJitUpdate configured to true before returning the contents of the multiplexed I-PDU.

SWS_IpduM_00171 requirement

In case the transmission of a multiplexed I-PDU is triggered by the update of one part and IpduMJitUpdate is configured to true for the sec- ond part, the multiplexed I-PDU shall not be send if the JIT-update request via PduR_IpduMTriggerTransmit returns E_NOT_OK .

SWS_IpduM_00172 requirement

In case the contents of a multiplexed I-PDU is requested via IpduM_TriggerTransmit and IpduMJitUpdate is configured to true for any mul- tiplexed part, IpduM_TriggerTransmit shall return E_NOT_OK if any of the JIT- update requests via PduR_IpduMTriggerTransmit return E_NOT_OK .

SWS_IpduM_00173 requirement

The IpduM shall respect the IpduMByteOrder when interpreting the selector field value.

SWS_IpduM_00174 requirement

Invalid configuration set selection  error code: IPDUM_E_I NIT_FAILED  value [hex]: 0x21

SWS_IpduM_00175 requirement

{DRAFT} Inside a dynamic Container PDU IpduM shall place the header of a contained I-PDU in front of the contained I-PDU.

SWS_IpduM_00177 requirement

Each I-PDU header shall consist of ID field and length field in the byte order determined by IpduMHeaderByteOrder .

SWS_IpduM_00178 requirement

{DRAFT} Placing of headers and payloads of contained I-PDUs inside a dynamic Container PDU shall be contiguous without any gap.

SWS_IpduM_00179 requirement

When a contained I-PDU with IpduMContainedTxPduCol- lectionSemantics set to IPDUM_COLLECT_QUEUED (see [ECUC_IpduM_00198]) is passed to IpduM via IpduM_Transmit , IpduM shall identify the associated Con- tainer PDU and append the contained I-PDU to its payload even if a previous instance of the contained I-PDU is already present in that Container PDU.

SWS_IpduM_00180 requirement

When assigning a transmission request of a contained I-PDU to a Container PDU that has not been triggered yet, and if the resulting payload of this Container PDU is bigger than IpduMContainerTxSizeThreshold , then the Container PDU shall be triggered.

SWS_IpduM_00181 requirement

When assigning a transmission request of a contained I-PDU to a Container PDU which has not been triggered yet, and if IpduMContainedTx- PduTrigger is set to IPDUM_TRIGGER_ALWAYS, the Container PDU shall be trig- gered immediately.

SWS_IpduM_00182 requirement

If a contained I-PDU has IpduMContainedTxPduCollec- tionSemantics set to IPDUM_COLLECT_QUEUED (see [ECUC_IpduM_00198]), the IpduMContainerTxTriggerMode is set to IPDUM_DIRECT and adding this con- tained I-PDU would exceed the maximum size of the Container I-PDU, first the Con- tainer PDU shall be triggered. The contained I-PDU shall be added to a new instance of the Container PDU.

SWS_IpduM_00183 requirement

If a contained I-PDU has IpduMContainedTxPduCollec- tionSemantics set to IPDUM_COLLECT_QUEUED (see [ECUC_IpduM_00198]), the IpduMContainerTxTriggerMode is set to IPDUM_TRIGGERTRANSMIT and adding this contained I-PDU would exceed maximum size of the Container PDU, first the Con- tainer PDU shall be queued. Then the contained I-PDU shall be added to a new in- stance of the Container PDU.

SWS_IpduM_00184 requirement

When assigning the first transmission request of a contained I-PDU to a Container PDU and either IpduMContainerTxSendTimeout of the Con- tainer PDU or IpduMContainedTxPduSendTimeout of the contained I-PDU is con- figured greater than zero, the IpduM module shall start the transmission timer of the Container PDU. The timer shall be initialized with the smaller non zero value of IpduM- ContainerTxSendTimeout and IpduMContainedTxPduSendTimeout .

SWS_IpduM_00185 requirement

When a transmission request of a contained I-PDU is assigned to a Container PDU, the transmission timer of the Container PDU shall be updated with the contained I-PDU's timeout ( IpduMContainedTxPduSendTimeout ) if it is less than the remaining time of the Container PDU.

SWS_IpduM_00186 requirement

When the transmission timer of the Container PDU defined by [SWS_IpduM_00184] has elapsed, the Container PDU shall be triggered.

SWS_IpduM_00187 requirement

If a Container PDU is assembled (see [SWS_IpduM_00188] and [SWS_IpduM_00256]), IpduM shall calculate the overall size of the Container PDU. The total size builds up by the total of all payloads of the contained I-PDUs plus the total length of the corresponding headers. The result shall be the payload size of the Container PDU.

SWS_IpduM_00188 requirement

When a Container PDU is triggered and IpduMContain- erTxTriggerMode is set to IPDUM_DIRECT , IpduM shall assemble the Container PDU and handle the transmission process with respect to the configuration for the transmission queue (please refer to [SWS_IpduM_00261] and [SWS_IpduM_00262]).

SWS_IpduM_00189 requirement

The IpduM shall wait for the transmission confirmation (regard- less of the result) of a Container PDU before invoking PduR_IpduMTransmit for the next instance of that Container PDU.

SWS_IpduM_00190 requirement

In case the transmission confirmation for that Container PDU was received, the IpduM shall invoke PduR_IpduMTransmit for the next oldest in- stance of that Container PDU during the next call to IpduM_MainFunctionTx at the latest.

SWS_IpduM_00191 requirement

In case IpduMContainerTxTriggerMode is set to IP- DUM_DIRECT, and PduR_IpduMTransmit returns E_OK for that Container PDU, Ip- duM shall remove that instance from the queue.

SWS_IpduM_00192 requirement

If a Container PDU has IpduMContainerTxTriggerMode set to IPDUM_DIRECT and this Container PDU has been assembled and is passed to PduR, the Parameter PduInfoPtr shall contain a pointer to the assembled Con- tainer PDU in SduDataPtr and the total length (according to [SWS_IpduM_00187]) in SduLength .

SWS_IpduM_00193 requirement

If IpduMContainerTxTriggerMode is set to IPDUM_TRIG- GERTRANSMIT , IpduM shall keep and provide buffered data until it is fetched by a call to IpduM_TriggerTransmit .

SWS_IpduM_00194 requirement

If IpduMContainerTxTriggerMode is set to IPDUM_TRIGGER- TRANSMIT , IpduM_TriggerTransmit shall copy the oldest Container PDU instance in the queue. If the queue is empty/non-existent, the current instance of the Container PDU is copied. If the current instance of the Container PDU is empty/non-existent as well, E_NOT_OK is returned by IpduM_TriggerTransmit .

SWS_IpduM_00195 requirement

If PduR_IpduMTransmit has returned E_NOT_OK , the same transmit request shall be repeated during the next call to IpduM_MainFunctionTx up to IpduMMaxTransmitRetries times. The instance of that Container PDU is queued in the meantime.

SWS_IpduM_00196 requirement

If the IpduM receives a transmission confirmation for a specific Container PDU, it shall translate this confirmation into the corresponding confirmations for those contained I-PDUs having IpduMContainedTxPduConfirmation set to TRUE and were contained in the last transmission of this specific Container PDU. This shall result in multiple TxConfirmations, if the same contained I-PDU was present more than once in this transmitted specific Container PDU.

SWS_IpduM_00199 requirement

If creating a new instance of a Container PDU would exceed IpduMContainerQueueSize the oldest instance shall be discarded. If IpduMCon- tainerQueueSize is not configured the local instance shall be discarded. In both cases IPDUM_E_QUEUEOVFL shall be reported to [9, DET] via Det_ReportRun- timeError .

SWS_IpduM_00200 requirement

If IpduMContainerTxTriggerMode is set to IPDUM_TRIG- GERTRANSMIT , a Container PDU instance shall be dropped from the queue if it is fetched by IpduM_TriggerTransmit .

SWS_IpduM_00201 requirement

When assigning a transmission request of a contained I-PDU to a Container PDU with the parameter IpduMContainerTxFirstContainedP- duTrigger set to TRUE, the Container PDU shall be queued for transmission.

SWS_IpduM_00202 requirement

If IpduMContainerPduProcessing is set to IPDUM_PRO- CESSING_IMMEDIATE , the processing of the received Container PDUs shall be exe- cuted in the context of IpduM_RxIndication . Otherwise, it is deferred to the next call to IpduM_MainFunctionRx . All deferred Container PDUs shall be processed in the order of their reception.

SWS_IpduM_00203 requirement

If by a call of IpduM_RxIndication a Container PDU is re- ceived, the contained I-PDUs shall be extracted.

SWS_IpduM_00204 requirement

For each contained I-PDU of a received Container PDU where the IpduMContainerRxPdu has IpduMContainerRxAcceptContainedPdu = IPDUM_ACCEPT_ALL the ID from the PDU header shall be used to identify the cor- responding contained I-PDU: • If the received Container PDU uses long or short header ( IpduMContainer- HeaderSize = IPDUM_HEADERTYPE_LONG or IPDUM_HEADERTYPE_SHORT , respectively) the ID shall be compared with the IpduMContainedRxPduLong- HeaderId or IpduMContainedRxPduShortHeaderId , respectively, in the set of IpduMContainedRxPdus which do not have an IpduMContainedRxInCon- tainerPduRef defined.

SWS_IpduM_00205 requirement

If for the received Container PDU the configuration parame- ter IpduMContainerRxAcceptContainedPdu is set to IPDUM_ACCEPT_CONFIG- URED , IpduM shall expect and match only contained I-PDUs ( IpduMContainedRx- Pdu ) that reference the IpduMContainerRxPdu in IpduMContainedRxInCon- tainerPduRef .

SWS_IpduM_00206 requirement

For a received Container PDU with IpduMContainerRxAc- ceptContainedPdu =IPDUM_ACCEPT_ALL, IpduM shall expect and match only Ip- duMContainedRxPdus which do not have an IpduMContainedRxInContainerP- duRef defined.

SWS_IpduM_00207 requirement

If a contained I-PDU of a received IpduMContainerRxPdu with IpduMContainerRxAcceptContainedPdu = IPDUM_ACCEPT_ALL can not be matched according to [SWS_IpduM_00206] then this contained I-PDU shall be dis- carded silently.

SWS_IpduM_00208 requirement

For each contained I-PDU the length given in its header shall be used as the length of the corresponding I-PDU.

SWS_IpduM_00209 requirement

Each contained I-PDU shall be notified to PduR via PduR_IpduMRxIndication . IpduM shall indicate the contained I-PDUs in the same order as the I-PDUs are located inside the Container PDU.

SWS_IpduM_00210 requirement

When processing a received Container PDU and detecting a header containing the ID 0 the processing for this Container PDU shall be stopped and the remaining bytes shall be ignored.

SWS_IpduM_00211 requirement

If a Container PDU is received and IpduMContainer- PduProcessing is set to IPDUM_PROCESSING_DEFERRED , the Container PDU shall be queued.

SWS_IpduM_00212 requirement

If receiving a new instance of a Container PDU would exceed IpduMContainerQueueSize the oldest instance shall be discarded and IPDUM_E_- QUEUEOVFL shall be reported to [9, DET] via Det_ReportRuntimeError .

SWS_IpduM_00213 requirement

When processing a received Container PDU and detecting a header where the payload length exceeds the remaining bytes of the container the processing for this Container PDU shall be stopped and the remaining bytes shall be ignored. Furthermore, IPDUM_E_HEADER shall be reported to [9, DET] via Det_- ReportRuntimeError .

SWS_IpduM_00214 requirement

If the remaining bytes in a Container PDU are less than the configured IpduMContainerHeaderSize ([ECUC_IpduM_00183]) the remain- ing bytes shall be ignored.

SWS_IpduM_00215 requirement

Erroneous header detected  error code: IPDUM_E_HEADER  value [hex]: 0x30

SWS_IpduM_00216 requirement

Container Queue ove r flow  error code: IPDUM_E_QUEUEOVFL  value [hex]: 0x31

SWS_IpduM_00217 requirement

When a Container PDU is received from the PDU Router, the function IpduM_RxIndication forwards the contained I-PDUs via the PDU Router, using PduR_IpduMRxIndication (see [SWS_IpduM_00105]).

SWS_IpduM_00219 requirement

IpduM shall reject configurations in which the transmit proper- ties (see [ECUC_IpduM_00198]: IpduMContainedTxPduCollectionSemantics ) of the contained I-PDUs which are assigned to a specific Container PDU are mixed. A Container PDU shall contain either solely I-PDUs with IPDUM_COLLECT_LAST_- IS_BEST or solely I-PDUs with IPDUM_COLLECT_QUEUED semantic.

SWS_IpduM_00220 requirement

For contained I-PDUs, with IpduMContainedTxPduCol- lectionSemantics set to IPDUM_COLLECT_LAST_IS_BEST , IpduM shall use PduR_IpduMTriggerTransmit to fetch the PDU data from its upper layer imme- diately before it transfers the container I-PDU to the lower layer.

SWS_IpduM_00221 requirement

When a transmission request of a contained I-PDU is assigned to a Container PDU, the contained I-PDU has IpduMContainedTxPduCollection- Semantics set to IPDUM_COLLECT_LAST_IS_BEST and IpduMContainedTx- PduPriorityHandling is set to FALSE, the IpduM shall retain the order in which the transmission requests are passed to IpduM. That is, the contained I-PDU of the first passed transmission request is placed at the beginning at the container and so on.If a transmission request of the same contained I-PDU is passed multiple times, the IpduM shall store it only once at the position matching its first occurrence.

SWS_IpduM_00222 requirement

If a contained I-PDU has IpduMContainedTxPduCollec- tionSemantics IPDUM_COLLECT_LAST_IS_BEST , the Container PDU is assem- bled and if a PduR_IpduMTriggerTransmit returns E_NOT_OK for a contained I- PDU, IpduM shall omit this contained I-PDU silently and proceed with the assembly of the Container PDU.

SWS_IpduM_00223 requirement

In case the IpduM shall update the dynamic part just-in-time, the latest dynamic part sent by the upper layer shall be updated or the dynamic part referenced by IpduMInitialDynamicPart if no dynamic part was sent before.

SWS_IpduM_00224 requirement

All static and dynamic parts shall be configured to allocate ex- actly the same bits in the multiplexed and the de-multiplexed I-PDUs.

SWS_IpduM_00225 requirement

If IpduMTxTriggerMode is configured to a different value than NONE, the IpduM shall use the MetaData of the triggering part for sending of the multiplexed I-PDU.

SWS_IpduM_00226 requirement

If IpduMTxTriggerMode is configured to NONE, the IpduM shall use the MetaData of the last updated part for sending of the multiplexed I-PDU.

SWS_IpduM_00227 requirement

On receiver side the IpduM shall forward the received Meta- Data along with all demultiplexed parts.

SWS_IpduM_00228 requirement

In case a Container PDU supports MetaData, the IpduM shall use the MetaData last collected from the contained I-PDUs when sending the Con- tainer PDU.

SWS_IpduM_00229 requirement

In case the IpduM receives a Container PDU with MetaData, the IpduM shall forward the MetaData of the Container PDU along with all contained I-PDU that support MetaData.

SWS_IpduM_00230 requirement

IpduM shall reject configurations in which contained I-PDU supporting MetaData have a different MetaDataType from the MetaDataType of the Container PDU.

SWS_IpduM_00231 requirement

If a contained I-PDU has IpduMContainedTxPduCollec- tionSemantics set to IPDUM_COLLECT_LAST_IS_BEST , the transmission request is updated and the total length of the payloads plus the corresponding headers of all contained I-PDUs which are requested for transmission would exceed the maximum size of the Container PDU, then the Container PDU shall be triggered.

SWS_IpduM_00232 requirement

{DRAFT} If the IpduMContainerHeaderSize is set to IP- DUM_HEADERTYPE_NONE , the IpduM module shall statically place the contained I- PDUs within the Container PDU according to their configured IpduMContainedTxP- duOffset.

SWS_IpduM_00233 requirement

{DRAFT} In case a Static Container has a configured Ipdu- MUnusedAreasDefault , the IpduM shall ensure that all not updated areas of the Container are set to the value of IpduMUnusedAreasDefault before the Container PDU is sent.

SWS_IpduM_00234 requirement

{DRAFT} For Container PDUs with static container layout and IpduMContainerTxTriggerMode is set to IPDUM_DIRECT , the IpduM shall trig- ger the Container PDU when all contained I-PDUs were updated by the upper layer.

SWS_IpduM_00235 requirement

{DRAFT} In case a contained I-PDU has a configured IpduMUp- dateBitPosition, the IpduM shall ensure that the update bit of this contained I-PDU is set if and only if the contained I-PDU was successfully updated.

SWS_IpduM_00236 requirement

{DRAFT} In case a received contained I-PDU has a configured update bit, the IpduM module shall only process and indicate it to the upper layer if its received update-bit is set.

SWS_IpduM_00237 requirement

{DRAFT} When processing a received Container PDU with Ip- duMContainerHeaderSize set to IPDUM_HEADERTYPE_NONE , the IpduM shall ignore all contained PDUs that are according to their configuration not or not completely con- tained in the received Container PDU. Such contained I-PDUs shall not be indicated to the upper layer. If Development Error Detection is configured ([ECUC_IpduM_00132]) IPDUM_E_CONTAINER shall be reported to [9, DET] via Det_ReportError .

SWS_IpduM_00238 requirement

{DRAFT} For a Container PDU with IpduMContainerHead- erSize set to IPDUM_HEADERTYPE_NONE , all contained I-PDUs shall have IpduM- ContainedTxPduCollectionSemantics set to IPDUM_COLLECT_LAST_IS_- BEST .

SWS_IpduM_00240 requirement

{DRAFT} Contained I-PDUs with a configured IpduMPduUp- dateBitPosition shall only be assigned to Container PDUs with IpduMContain- erHeaderSize set to IPDUM_HEADERTYPE_NONE .

SWS_IpduM_00241 requirement

{DRAFT} For a Container PDU with IpduMContainerHead- erSize set to IPDUM_HEADERTYPE_NONE , all contained I-PDUs shall have a config- ured IpduMContainedTxPduOffset.

SWS_IpduM_00242 requirement

{DRAFT} For a Container PDU with IpduMContainerHead- erSize set to IPDUM_HEADERTYPE_NONE and IpduMUnusedAreasDefault not set, all contained I-PDUs shall have a configured IpduMPduUpdateBitPosition .

SWS_IpduM_00245 requirement

{DRAFT} All IpduMPduUpdateBitPositions shall be configured to their own not otherwise occupied bit position.

SWS_IpduM_00246 requirement

{DRAFT} Only the last contained IPdu (according to IpduM- ContainedPduOffset ) of a ContainerIPdu with static container layout (i.e. Ip- duMContainerHeaderSize set to IPDUM_HEADERTYPE_NONE ) may be a dynamic length PDU (i.e, a PDU that at runtime may exhibit a length different from the one stat- ically configured via Pdu.length of the respective Pdu). All other contained PDUs of a ContainerIPdu with static container layout have to be static length PDUs.

SWS_IpduM_00247 requirement

Partly or erroneous container received  error code: IPDUM_E_CONTAINER  value [hex]: 0x32

SWS_IpduM_00248 requirement

All contained I-Pdus with Collection Semantic IPDUM_- COLLECT_LAST_IS_BEST and IpduMContainedTxPduPriorityHandling is set to TRUE, shall have an IpduMContainedTxPduPriority . If the IpduMCon- tainedTxPduPriority is not configured, the IpduMContainedTxPduPriority shall be set to default value 255 (lowest available priority).

SWS_IpduM_00249 requirement

When transmission requests of contained I-PDUs are as- signed to a Container PDU, the contained I-PDUs with IpduMContainedTxP- duCollectionSemantics set to IPDUM_COLLECT_LAST_IS_BEST and IpduM- ContainedTxPduPriorityHandling is set to TRUE, the IpduM shall collect the transmission request in respect to the IpduMContainedTxPduPriority (highest priority first and so on). Transmission requests of contained I-PDUs with the same IpduMContainedTxPduPriority shall be collected in the order the transmission request occurred.

SWS_IpduM_00250 requirement

For an IpduMContainerRxPdu with IpduMContainerRxAc- ceptContainedPdu = IPDUM_ACCEPT_CONFIGURED and IpduMContainerHead- erSize = IPDUM_HEADERTYPE_LONG or IPDUM_HEADERTYPE_SHORT the following constraint applies: • IpduMContainedRxPdus with an IpduMContainedRxInContainerPduRef to that specific IpduMContainerRxPdu shall have unique IpduMContainedRx- PduLongHeaderId or IpduMContainedRxPduShortHeaderId , respectively, defined in the context of that IpduMContainerRxPdu .

SWS_IpduM_00251 requirement

All IpduMContainedRxPdus with no IpduMContainedRxInCon- tainerPduRef and a defined IpduMContainedRxPduLongHeaderId or IpduM- ContainedRxPduShortHeaderId , shall have a unique IpduMContainedRxPdu- LongHeaderId or IpduMContainedRxPduShortHeaderId , respectively.

SWS_IpduM_00252 requirement

{DRAFT} IpduM Container Pdus shall be processed within the MainFunction, which is referenced by the Container Pdu configuration parameters (i.e. IpduMContainerRxPdu and IpduMContainerTxPdu ).

SWS_IpduM_00253 requirement

When sending a Static Container PDU, the IPduM shall reduce the size of the Container PDU by omitting not updated data behind the last updated PDU and the last update bit.

SWS_IpduM_00254 requirement

When a Container PDU is triggered and IpduMContain- erTxTriggerMode is set to IPDUM_TRIGGERTRANSMIT, IpduM shall invoke PduR_IpduMTransmit with SduDataPtr set to NULL and SduLength according to the following preconditions: • For static Container PDUs the SduLength shall be calculated with respect to Ip- duMUpdateBitPosition (see [SWS_IpduM_00241]), IpduMContainedTxPduOffset (see [SWS_IpduM_00242]) and length of last contained I-PDU, if having dynamic PDU length configured (see [SWS_IpduM_00246]). • For dynamic Container PDUs the SduLength shall be calculated as specified in [SWS_IpduM_00187].

SWS_IpduM_00256 requirement

When a Container PDU has been triggered and IpduMCon- tainerTxTriggerMode is set to IPDUM_TRIGGERTRANSMIT , IpduM shall assemble the Container PDU in the context of the API call IpduM_TriggerTransmit .

SWS_IpduM_00257 requirement

If a Container PDU has IpduMContainerTxTriggerMode set to IPDUM_TRIGGERTRANSMIT and this Container PDU has been assembled in the context of the IpduM_TriggerTransmit call, the Parameter PduInfoPtr shall be updated with the total length (according to [SWS_IpduM_00187]) in SduLength .

SWS_IpduM_00258 requirement

If a container PDU is assembled and the contained PDUs have IpduMContainedTxPduCollectionSemantics set to IPDUM_COLLECT_LAST_- IS_BEST , the IpduM shall place the contained I-PDUs in the container I-PDU with respect to the configuration and resulting order according to [SWS_IpduM_00221] and [SWS_IpduM_00249].

SWS_IpduM_00259 requirement

If a container PDU is assembled, the contained PDUs have IpduMContainedTxPduCollectionSemantics set to IPDUM_COLLECT_LAST_- IS_BEST and placing a contained I-PDU would exceed maximum size of the Container PDU, the IpduM shall finish the assembly process and keep the remaining transmission requests for the next transmission.

SWS_IpduM_00260 requirement

IpduM shall reject configurations in which contained I-PDUs have IpduMContainedTxPduCollectionSemantics set to IPDUM_COLLECT_- LAST_IS_BEST and the according Container PDU has queue ( IpduMContain- erQueueSize is available) configured.

SWS_IpduM_00261 requirement

If a PDU Container is queued for transmission, and IpduM- ContainerQueueSize is not set (or set to 1), IpduM shall call PduR_IpduMTransmit .

SWS_IpduM_00262 requirement

If a PDU Container is queued for transmission, and IpduM- ContainerQueueSize is > 1, IpduM shall call store the Container PDU in a queue.

SWS_IpduM_00265 requirement

[SWS_IpduM_00265] Handling of discarded container PDUs Upstream requirements: SRS_IpduM_02820 ⌈If an instance of a container PDU was discarded (see [SWS_IpduM_00199]), then PduR_IpduMTxConfirmation shall be called with result E_NOT_OK for every con- tained PDU that has IpduMContainedTxPduConfirmation enabled within that re- spective instance.⌋

SWS_IpduM_91003 requirement

Type of error Related error code Error value API service called with wrong parameter IPDUM_E_PARAM 0x10 NULL pointer checking IPDUM_E_PARAM_POINTER 0x11 API service (except IpduM_MainFunctionTx,Ipdu M_MainFunctionRx and IpduM_GetVersionInfo) used without module initialization IPDUM_E_UNINIT 0x20 Invalid configuration set selection IPDUM_E_INIT_FAILED 0x21

SWS_IpduM_91004 requirement

Type of error Related error code Error value Erroneous header detected IPDUM_E_HEADER 0x30 Container Queue overflow IPDUM_E_QUEUEOVFL 0x31 Partly or erroneous container received IPDUM_E_CONTAINER 0x32

The IpduMContainedTxPduPriorityHan- dling shall be set to TRUE , if at least one IpduMContainerTxPdu is referenced by at least two IpduMContainedTxPdu via IpduMContainedTxInContain- erPduRef and the configured IpduMContainedTxPduPriority of those IpduMContainedTxPdu differ from each other.

SWS_IpduM_NA requirement

These requirements are not applicable to this specification.