SOME/IP Transport Protocol (SomeIpTp)
AUTOSAR Classic Communication Services-Modul SOME/IP Transport Protocol (SomeIpTp, Spezifikation: AUTOSAR_CP_SWS_SOMEIPTransportProtocol.pdf, AUTOSAR_SWS_SOMEIPTransportProtocol.pdf).
Funktionen — Übersicht
void SomeIpTp_GetVersionInfo (Std_VersionInfoType* VersionInfo);Returns the version information of this module.void SomeIpTp_Init (const SomeIpTp_ConfigType* config);Initializes the SOME/IP TP module.Std_ReturnType SomeIpTp_Transmit (PduIdType TxPduId, const PduInfoType* PduInfoPtr);Requests transmission of a PDU.Std_ReturnType SomeIpTp_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...void SomeIpTp_RxIndication (PduIdType RxPduId, const PduInfoType* PduInfoPtr);Indication of a received PDU from a lower layer communication interface module.void SomeIpTp_MainFunctionTx (void);This function performs the processing of the AUTOSAR SOME/IP TP module's transmission activities.void SomeIpTp_MainFunctionRx (void);This function performs the processing of the AUTOSAR SOME/IP TP module's reception activities.void SomeIpTp_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.
Typen — Übersicht
struct SomeIpTp_ConfigTypeThis type shall contain at least all parameters that are post-build able according to chapter 10.
Anforderungen — Übersicht
SWS_SomeIpTp_00001The SOME/IP TP module shall remember the PDU length separately for every PDU ID which is passed by the PduInfoPtr parameter of...SWS_SomeIpTp_00002The amount of generated SOME/IP segments shall be as little as possible.SWS_SomeIpTp_00003The size of every segmented SOME/IP message shall con- sist of the sum of 12 bytes of SOME/IP header, and the Payload bytes...SWS_SomeIpTp_00004The SOME/IP TP module shall derive the maximum pos- sible size of the segmented SOME/IP PDUs using the parameter...SWS_SomeIpTp_00005The SOME/IP TP module shall generate segmented SOME/IP PDUs not larger than the size derived from the parameter SomeIpTpTxNPdu...SWS_SomeIpTp_00006Every payload of a segmented SOME/IP message except the last one has to be a multiple of 16 bytes.SWS_SomeIpTp_00007The SOME/IP TP module shall buffer the pointer to the Meta-data for every PDU ID separately which is passed by the PduInfoPtr...SWS_SomeIpTp_00008The SOME/IP TP module shall store the Request ID, Pro- tocol Version, Interface Version, Message Type, and the Return Code of...SWS_SomeIpTp_00009If the provided SDU fits into one single PDU, the provided SOME/IP header shall be used with no modification.SWS_SomeIpTp_00010The SOME/IP TP module shall create and attach the Off- set Field, the Reserved bits, and the More Segment Flag to every...SWS_SomeIpTp_00011The Offset Field of the first SOME/IP segment shall be set to '0'.SWS_SomeIpTp_00012The SOME/IP TP module shall increase the value of the Offset Field for every successfully transmitted SOME/IP segment by the...SWS_SomeIpTp_00013The SOME/IP TP module shall set the Reserved bits stati- cally to '000' by the sender and shall be ignored by the receiver.SWS_SomeIpTp_00014The SOME/IP TP module shall set the More Segment Flag to '1' except for the last SOME/IP segment.SWS_SomeIpTp_00015The SOME/IP TP module shall set the More Segment Flag to '0' for the last SOME/IP segment.SWS_SomeIpTp_00016If the API SomeIpTp_Transmit() is called, the SOME/IP TP module shall check for an ongoing segmentation for the provided PDU ID.SWS_SomeIpTp_00017If the API SomeIpTp_Transmit()is called while no segmen- tation is ongoing for this PDU ID, the SOME/IP TP module shall...SWS_SomeIpTp_00018When the API SomeIpTp_TriggerTransmit() is called, cre- ate the header for the SOME/IP segment and call the API...SWS_SomeIpTp_00019The size for consecutive SOME/IP TP segments all but not the last, shall be derived by the maximum possible size of the...SWS_SomeIpTp_00020The SOME/IP TP module shall debounce subsequent calls of the API PduR_ SomeIpTpTransmit() for the same PDU ID,using the...SWS_SomeIpTp_00021If the last SOME/IP segment of the original SOME/IP PDU has been transmitted successfully (i.SWS_SomeIpTp_00022If the API SomeIpTp_Transmit() is called with a PDU ID which is currently used for an ongoing segmentation, • E_NOT_OK shall...SWS_SomeIpTp_00023If the API SomeIpTp_TxConfirmation() is called with pa- rameter success set to FALSE, • The disassembly process for this PDU...SWS_SomeIpTp_00024In case the available buffer returned by PduR_SomeIpTpCopyTxData() via available- DataPtr does not satisfied the following...SWS_SomeIpTp_00025If an API PduR_SomeIpTpCopyTxData()returns some- thing else than BUFREQ_OK, • The disassembly process for this PDU ID shall be...SWS_SomeIpTp_00026If the API SomeIpTp_RxIndication() is called, the SOME/ IP TP module shall derive the following SOME/IP header information...SWS_SomeIpTp_00027The SOME/IP TP module shall be able to store the value of the Offset Field for every PDU ID separately.SWS_SomeIpTp_00028The SOME/IP TP module shall be able to store the number of Payload bytes for every PDU ID separately which has been passed by...SWS_SomeIpTp_00029The SOME/IP TP module shall store the status of the More Segment Flag for every PDU ID separately which is passed by a call of...SWS_SomeIpTp_00030The SOME/IP TP module shall buffer the pointer to the Meta-data for every PDU ID separately which is passed by the PduInfoPtr...SWS_SomeIpTp_00031If SomeIpTp_RxIndication() is called with TP Flag set to '0', SOME/IP TP shall call PduR_SomeIpTpStartOfReception,...SWS_SomeIpTp_00032If a SOME/IP segment is successfully received with Offset Field set to 0, the SOME/IP TP module shall store the values of the...SWS_SomeIpTp_00033If a SOME/IP segment is successfully received with Offset Field set to 0, the SOME/IP TP module shall • Start the Rx timeout...SWS_SomeIpTp_00034If a SOME/IP segment is successfully received with Offset Field set to 0 and after the SOME/IP TP module has called the API...SWS_SomeIpTp_00035The SOME/IP TP module shall set the TP-Flag contained in the Message Type back to '0' before the assembled SOME/IP header is...SWS_SomeIpTp_00036The SOME/IP TP module shall store the number of Pay- load bytes for every PDU ID separately which has been passed to the upper...SWS_SomeIpTp_00037If a SOME/IP segment is successfully received with Offset Field> 0, the SOME/IP TP module shall compare the received...SWS_SomeIpTp_00038The SOME/IP TP module shall store the number of Pay- load bytes for every PDU ID separately which has been passed to the upper...SWS_SomeIpTp_00039The SOME/IP TP module shall compare the value of the Offset Field with the sum divided by 16 of copied Payload bytes since the...SWS_SomeIpTp_00040If a SOME/IP segment is successfully received with the More Segment Flag set to '0', the SOME/IP TP module shall • Cancel the...SWS_SomeIpTp_00041If the Rx timeout time defined by SomeIpTpRxTimeout Time expires, • The current assembly process shall be interrupted as...SWS_SomeIpTp_00042If the API SomeIpTp_RxIndication() is called with the Off- set Value is > 0 but no session is currently running, • The...SWS_SomeIpTp_00043Module Header File Imported Type ComStack_Types.SWS_SomeIpTp_00045If the API SomeIpTp_RxIndication() is called and a session is currently active, the SOME/IP TP module shall check if the...SWS_SomeIpTp_00048If the API SomeIpTp_RxIndication() is called, the SOME/IP TP module shall check the value of the Offset Field.SWS_SomeIpTp_00049If the bufferSizePtr provided by the API PduR_SomeIpTp StartOfReception()or PduR_SomeIpTpCopyRxData()is smaller than the sum...SWS_SomeIpTp_00050If the API PduR_SomeIpTpCopyRxData()returns some- thing else than BUFREQ_OK, • The assembly process for this PDU ID shall be...SWS_SomeIpTp_00051If the API PduR_SomeIpTpStartOfReception() returns something else than BUFREQ_OK, • The assembly process for this PDU ID shall...SWS_SomeIpTp_00052Type of error Related error code Error value SOME/IP TP module not initialized SOMEIPTP_E_UNINIT 0x01 Null pointer has been...SWS_SomeIpTp_00054If the SOME/IP TP module interrupts the assembly pro- cess because of a detected error, the SOME/IP TP module shall • Call the...SWS_SomeIpTp_00055In case the given PduInfoPtr->SduLength is smaller than the computed size of the SOME/IP-TP segment (considering header and...SWS_SomeIpTp_00057If development error detection is enabled: SomeIpTp_Rx Indication() shall check that the service SomeIpTp_Init() was...SWS_SomeIpTp_00059A call to SomeIpTp_MainFunctionTx() shall simply return if the AUTOSAR SOME/IP TP module was not previously initialized with a...SWS_SomeIpTp_00060Det_ReportRuntimeError Det.SWS_SomeIpTp_00061Det_ReportError Det.SWS_SomeIpTp_00062If the SOME/IP TP module detects an inconsistency of the received SOME/IP TP headers (i.SWS_SomeIpTp_00063If the API SomeIpTp_RxIndication() is called, the SOME/ IP TP module shall check whether the received payload bytes are...SWS_SomeIpTp_00064If the API SomeIpTp_RxIndication() is called, the SOME/ IP TP module shall check the value of the Offset Field.SWS_SomeIpTp_00065Type of error Related error code Error value The TP-Flag (of Message Type) was set to '0' SOMEIPTP_E_MESSAGE_TYPE 0x04...SWS_SomeIpTp_00066If the parameter SomeIpTp_VersionInfoPtr of the API SomeIpTp_GetVersionInfo() equals NULL_PTR and if development error...SWS_SomeIpTp_00067If development error detection is enabled: SomeIpTp_Tx Confirmation() shall check that the service SomeIpTp_Init() was...SWS_SomeIpTp_00070A call to SomeIpTp_MainFunctionRx() shall simply return if the AUTOSAR SOME/IP TP module was not previously initialized with a...SWS_SomeIpTp_00071If SomeIpTp_RxIndication() is called with • TP Flag set to '1', • Offset Field set to '0', and • More Segment Flag set to '0',...SWS_SomeIpTp_00072If development error detection is enabled: SomeIpTp_Trig- gerTransmit() shall check that the service SomeIpTp_Init() was...SWS_SomeIpTp_00073If development error detection is enabled: SomeIpTp_ Transmit() shall check that the service SomeIpTp_Init() was previously...SWS_SomeIpTp_00074If parameter TxPduId of SomeIpTp_Transmit() has an in- valid value and if development error detection is enabled (i.SWS_SomeIpTp_00075If parameter PduInfoPtr of SomeIpTp_Transmit() equals NULL_PTR and if development error detection is enabled (i.SWS_SomeIpTp_00076If SomeIpTp_Transmit()is called before the SOME/IP TP module has been initialized with a call of SomeIpTp_Init(), the AP shall...SWS_SomeIpTp_00077If the TP flag is not set and no assembly session is active, only the following parameters shall be extracted : • Request ID...SWS_SomeIpTp_00078The SOME/IP TP module shall verify that the available buffer returned by PduR_SomeIpTpCopyTxData() via availableDataPtr is...SWS_SomeIpTp_00079After calling PduR_SomeIpTpCopyRxData() to pass the SOME/IP header (excluding the SOME/IP TP header) of the assembled SOME/IP...SWS_SomeIpTp_00080Header Inconsistency check before TP-Flag check Before checking the TP-Flag of the Message, as a condition to interrupt the...SWS_SomeIpTp_00082[SWS_SomeIpTp_00082] Handling if PduR_SomeIpTpTransmit() return some- thing different than E_OK for a PDU-ID during the...SWS_SomeIpTp_00094[SWS_SomeIpTp_00094] Each N-SDU shall have a N-SDU state Upstream requirements: RS_SOMEIP_00010 ⌈The SomeIpTp module shall...SWS_SomeIpTp_00096[SWS_SomeIpTp_00096]) is currently running, • The received PDU shall be ignored • The API Det_ReportRuntimeError() shall be...
Funktionen & Typen — Detailansicht
फ़ंक्शन SomeIpTp_GetVersionInfo [SWS_SomeIpTp_00044] 📄 PDF
void SomeIpTp_GetVersionInfo(Std_VersionInfoType* VersionInfo);
Returns the version information of this module.
फ़ंक्शन SomeIpTp_Init [SWS_SomeIpTp_00046] 📄 PDF
void SomeIpTp_Init(const SomeIpTp_ConfigType* config);
Initializes the SOME/IP TP module.
फ़ंक्शन SomeIpTp_Transmit [SWS_SomeIpTp_00047] 📄 PDF
Std_ReturnType SomeIpTp_Transmit(PduIdType TxPduId, const PduInfoType* PduInfoPtr);
Requests transmission of a PDU.
फ़ंक्शन SomeIpTp_TriggerTransmit [SWS_SomeIpTp_00053] 📄 PDF
Std_ReturnType SomeIpTp_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.
फ़ंक्शन SomeIpTp_RxIndication [SWS_SomeIpTp_00056] 📄 PDF
void SomeIpTp_RxIndication(PduIdType RxPduId, const PduInfoType* PduInfoPtr);
Indication of a received PDU from a lower layer communication interface module.
फ़ंक्शन SomeIpTp_MainFunctionTx [SWS_SomeIpTp_00058] 📄 PDF
void SomeIpTp_MainFunctionTx(void);
This function performs the processing of the AUTOSAR SOME/IP TP module's transmission activities.
फ़ंक्शन SomeIpTp_MainFunctionRx [SWS_SomeIpTp_00069] 📄 PDF
void SomeIpTp_MainFunctionRx(void);
This function performs the processing of the AUTOSAR SOME/IP TP module's reception activities.
फ़ंक्शन SomeIpTp_TxConfirmation [SWS_SomeIpTp_91001] 📄 PDF
void SomeIpTp_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.
टाइप SomeIpTp_ConfigType [SWS_SomeIpTp_91002] 📄 PDF
This type shall contain at least all parameters that are post-build able according to chapter 10.
requirement SWS_SomeIpTp_00001 [SWS_SomeIpTp_00001] 📄 PDF
The SOME/IP TP module shall remember the PDU length separately for every PDU ID which is passed by the PduInfoPtr parameter of the Some IpTp_Transmit() call.
requirement SWS_SomeIpTp_00002 [SWS_SomeIpTp_00002] 📄 PDF
The amount of generated SOME/IP segments shall be as little as possible.
requirement SWS_SomeIpTp_00003 [SWS_SomeIpTp_00003] 📄 PDF
The size of every segmented SOME/IP message shall con- sist of the sum of 12 bytes of SOME/IP header, and the Payload bytes itself.
requirement SWS_SomeIpTp_00004 [SWS_SomeIpTp_00004] 📄 PDF
The SOME/IP TP module shall derive the maximum pos- sible size of the segmented SOME/IP PDUs using the parameter SomeIpTpTxNPdu Ref.
requirement SWS_SomeIpTp_00005 [SWS_SomeIpTp_00005] 📄 PDF
The SOME/IP TP module shall generate segmented SOME/IP PDUs not larger than the size derived from the parameter SomeIpTpTxNPdu Ref.
requirement SWS_SomeIpTp_00006 [SWS_SomeIpTp_00006] 📄 PDF
Every payload of a segmented SOME/IP message except the last one has to be a multiple of 16 bytes.
requirement SWS_SomeIpTp_00007 [SWS_SomeIpTp_00007] 📄 PDF
The SOME/IP TP module shall buffer the pointer to the Meta-data for every PDU ID separately which is passed by the PduInfoPtr parameter of the API SomeIpTp_Transmit(), and forward this information when PduR_SomeIpTp Transmit() is called for each segment.
requirement SWS_SomeIpTp_00008 [SWS_SomeIpTp_00008] 📄 PDF
The SOME/IP TP module shall store the Request ID, Pro- tocol Version, Interface Version, Message Type, and the Return Code of the SOME/IP header for every PDU ID separately which is returned by the first call of PduR_Some IpTpCopyTxData() triggered by the API call SomeIpTp_Transmit().
requirement SWS_SomeIpTp_00009 [SWS_SomeIpTp_00009] 📄 PDF
If the provided SDU fits into one single PDU, the provided SOME/IP header shall be used with no modification. If the provided SDU does not fit into one single SOME/IP PDU, the SOME/IP TP module shall set the TP-Flag of the Message Type to '1' for every SOME/IP segment which is going to be sent on the bus via the PduR. All the other bits contained in the Message Type field shall stay untouched.
requirement SWS_SomeIpTp_00010 [SWS_SomeIpTp_00010] 📄 PDF
The SOME/IP TP module shall create and attach the Off- set Field, the Reserved bits, and the More Segment Flag to every SOME/IP segment which is going to be sent on the bus.
requirement SWS_SomeIpTp_00011 [SWS_SomeIpTp_00011] 📄 PDF
The Offset Field of the first SOME/IP segment shall be set to '0'.
requirement SWS_SomeIpTp_00012 [SWS_SomeIpTp_00012] 📄 PDF
The SOME/IP TP module shall increase the value of the Offset Field for every successfully transmitted SOME/IP segment by the amount of bytes which have been transmitted by the previous SOME/IP segment divided by 16.
requirement SWS_SomeIpTp_00013 [SWS_SomeIpTp_00013] 📄 PDF
The SOME/IP TP module shall set the Reserved bits stati- cally to '000' by the sender and shall be ignored by the receiver.
requirement SWS_SomeIpTp_00014 [SWS_SomeIpTp_00014] 📄 PDF
The SOME/IP TP module shall set the More Segment Flag to '1' except for the last SOME/IP segment.
requirement SWS_SomeIpTp_00015 [SWS_SomeIpTp_00015] 📄 PDF
The SOME/IP TP module shall set the More Segment Flag to '0' for the last SOME/IP segment.
requirement SWS_SomeIpTp_00016 [SWS_SomeIpTp_00016] 📄 PDF
If the API SomeIpTp_Transmit() is called, the SOME/IP TP module shall check for an ongoing segmentation for the provided PDU ID.
requirement SWS_SomeIpTp_00017 [SWS_SomeIpTp_00017] 📄 PDF
If the API SomeIpTp_Transmit()is called while no segmen- tation is ongoing for this PDU ID, the SOME/IP TP module shall perform the following steps in the following order: • Remember the provided PDU length (provided PduInfoPtr). • Derive the PDU ID which shall be used for every segmented SOME/IP PDU (see SomeIpTpTxNPduRef). • Calculate the size of the SOME/IP for the first segment (considering header and payload) • Call the API PduR_SomeIpTpTransmit() using the derived PDU ID and the calcu- lated PDU size and set the SduDataPtr to NULL_PTR.
requirement SWS_SomeIpTp_00018 [SWS_SomeIpTp_00018] 📄 PDF
When the API SomeIpTp_TriggerTransmit() is called, cre- ate the header for the SOME/IP segment and call the API PduR_SomeIpTpCopyTx Data()using the calculated payload for this segment, and set the parameter retry to NULL_PTR.
requirement SWS_SomeIpTp_00019 [SWS_SomeIpTp_00019] 📄 PDF
The size for consecutive SOME/IP TP segments all but not the last, shall be derived by the maximum possible size of the segmented SOME/ IP PDUs using the parameter SomeIpTpTxNPduRef.
requirement SWS_SomeIpTp_00020 [SWS_SomeIpTp_00020] 📄 PDF
The SOME/IP TP module shall debounce subsequent calls of the API PduR_ SomeIpTpTransmit() for the same PDU ID,using the parameter SomeIpTpNPduSep- arationTime. It defines the time span between the call of SomeIpTp_TxConfirmation(), and the sub- sequent call of the API PduR_SomeIpTpTransmit(). If SomeIpTpTxBurstSize is config- ured to a value > 1 the SOME/IP TP module shall debounce for the same PDU ID only every SomeIpTpTxBurstSize segments.
requirement SWS_SomeIpTp_00021 [SWS_SomeIpTp_00021] 📄 PDF
If the last SOME/IP segment of the original SOME/IP PDU has been transmitted successfully (i.e. the call of SomeIpTp_TxConfirmation()with pa- rameter success equals TRUE occurred for the last call of PduR_SomeIpTpCopyTx Data()), the SOME/IP TP module shall • Call the API PduR_SomeIpTpTxConfirmation().
requirement SWS_SomeIpTp_00022 [SWS_SomeIpTp_00022] 📄 PDF
If the API SomeIpTp_Transmit() is called with a PDU ID which is currently used for an ongoing segmentation, • E_NOT_OK shall be returned. • The ongoing disassembly process for this PDU ID shall be canceled. • The API PduR_SomeIpTpTxConfirmation()with result set to E_NOT_OK shall be called. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_DISASSEMBLY_INTERRUPT.
requirement SWS_SomeIpTp_00023 [SWS_SomeIpTp_00023] 📄 PDF
If the API SomeIpTp_TxConfirmation() is called with pa- rameter success set to FALSE, • The disassembly process for this PDU ID shall be canceled. • The API PduR_SomeIpTpTxConfirmation()with result set to E_NOT_OK shall be called. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_DISASSEMBLY_INTERRUPT.
requirement SWS_SomeIpTp_00024 [SWS_SomeIpTp_00024] 📄 PDF
In case the available buffer returned by PduR_SomeIpTpCopyTxData() via available- DataPtr does not satisfied the following conditions • larger or equal to 16 bytes, • larger (for all but the last segment) or equal (for the last segment) size of SOME/ IP TP segments, the SOME/IP TP module shall: • Cancel the disassembly process for this PDU ID . • Call the API PduR_SomeIpTpTxConfirmation() with result set to E_NOT_OK. • Call the API Det_ReportRuntimeError() with the runtime error code SOMEIPTP_ E_DISASSEMBLY_INTERRUPT.
requirement SWS_SomeIpTp_00025 [SWS_SomeIpTp_00025] 📄 PDF
If an API PduR_SomeIpTpCopyTxData()returns some- thing else than BUFREQ_OK, • The disassembly process for this PDU ID shall be canceled. • The API PduR_SomeIpTpTxConfirmation()with result set to E_NOT_OK shall be called. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_DISASSEMBLY_INTERRUPT.
requirement SWS_SomeIpTp_00026 [SWS_SomeIpTp_00026] 📄 PDF
If the API SomeIpTp_RxIndication() is called, the SOME/ IP TP module shall derive the following SOME/IP header information from the first 12 bytes of the received PDU: • Request ID [32 bit] • Protocol Version [8 bit] • Interface Version [8 bit] • Message Type [8 bit] • Return Code [8 bit] • Offset [28 bit] • Reserved bits [3 bit] • More Segment Flag [1 bit]
requirement SWS_SomeIpTp_00027 [SWS_SomeIpTp_00027] 📄 PDF
The SOME/IP TP module shall be able to store the value of the Offset Field for every PDU ID separately.
requirement SWS_SomeIpTp_00028 [SWS_SomeIpTp_00028] 📄 PDF
The SOME/IP TP module shall be able to store the number of Payload bytes for every PDU ID separately which has been passed by a call of Some IpTp_RxIndication().
requirement SWS_SomeIpTp_00029 [SWS_SomeIpTp_00029] 📄 PDF
The SOME/IP TP module shall store the status of the More Segment Flag for every PDU ID separately which is passed by a call of SomeIpTP_Rx Indication().
requirement SWS_SomeIpTp_00030 [SWS_SomeIpTp_00030] 📄 PDF
The SOME/IP TP module shall buffer the pointer to the Meta-data for every PDU ID separately which is passed by the PduInfoPtr parameter of the API SomeIpTp_RxIndication(), and forward this information when PduR_Some IpTpStartOfReception is called.
requirement SWS_SomeIpTp_00031 [SWS_SomeIpTp_00031] 📄 PDF
If SomeIpTp_RxIndication() is called with TP Flag set to '0', SOME/IP TP shall call PduR_SomeIpTpStartOfReception, PduR_SomeIpTpCopy RxData(), and PduR_SomeIpTpRxIndication(), directly after each other providing the received indication.
requirement SWS_SomeIpTp_00032 [SWS_SomeIpTp_00032] 📄 PDF
If a SOME/IP segment is successfully received with Offset Field set to 0, the SOME/IP TP module shall store the values of the received SOME/ IP header for each PDU ID separately.These values shall be used as reference values for the (expected) following consecutive receiving SOME/IP segments (i.e. with Offset Field set to > 0).
requirement SWS_SomeIpTp_00033 [SWS_SomeIpTp_00033] 📄 PDF
If a SOME/IP segment is successfully received with Offset Field set to 0, the SOME/IP TP module shall • Start the Rx timeout time defined by SomeIpTpRxTimeoutTime. • Call the API PduR_SomeIpTpStartOfReception() with the PDU ID derived from the parameter SomeIpTpRxSduRef and the TpSduLength set to '0'.
requirement SWS_SomeIpTp_00034 [SWS_SomeIpTp_00034] 📄 PDF
If a SOME/IP segment is successfully received with Offset Field set to 0 and after the SOME/IP TP module has called the API PduR_SomeIpTpStartOfReception(), the SOME/IP TP module shall check the size returned via bufferSizePtr. If the returned size is greater or equal to the sum of the received payload and the added SOME/IP header, the SOME/IP TP module shall call the API PduR_SomeIpT- pCopyRxData() to pass the SOME/IP header (excluding the SOME/IP TP header) of the assembled SOME/IP message to the SOME/IP TP's upper layer. This shall include the following content: • Request ID [32 bit] • Protocol Version [8 bit] • Interface Version [8 bit] • Message Type [8 bit] - see [SWS_SomeIpTp_00028] • Return Code [8 bit]
requirement SWS_SomeIpTp_00035 [SWS_SomeIpTp_00035] 📄 PDF
The SOME/IP TP module shall set the TP-Flag contained in the Message Type back to '0' before the assembled SOME/IP header is passed to the upper layer.
requirement SWS_SomeIpTp_00036 [SWS_SomeIpTp_00036] 📄 PDF
The SOME/IP TP module shall store the number of Pay- load bytes for every PDU ID separately which has been passed to the upper layer.
requirement SWS_SomeIpTp_00037 [SWS_SomeIpTp_00037] 📄 PDF
If a SOME/IP segment is successfully received with Offset Field> 0, the SOME/IP TP module shall compare the received SOME/IP header fields with the values of the stored SOME/IP header fields which has been received with the first segment (i.e. Offset was set to 0): • Request ID [32 bit] • Protocol Version [8 bit] • Interface Version [8 bit] • Message Type [8 bit] • Return Code [8 bit] If these values match restart the SomeIpTpRxTimeoutTime and continue with the as- sembly process.
requirement SWS_SomeIpTp_00038 [SWS_SomeIpTp_00038] 📄 PDF
The SOME/IP TP module shall store the number of Pay- load bytes for every PDU ID separately which has been passed to the upper layer.
requirement SWS_SomeIpTp_00039 [SWS_SomeIpTp_00039] 📄 PDF
The SOME/IP TP module shall compare the value of the Offset Field with the sum divided by 16 of copied Payload bytes since the first received SOME/IP segment (i.e. with Offset Field set to '0'). If this sum divided by 16 matches with the current Offset Value and if the bufferSize Ptr provided by the previous call of the API PduR_SomeIpTpCopyRxData()is greater or equal to the received payload, call the API PduR_SomeIpTpCopyRxData()with Sdu Length set to the received Payload bytes.
requirement SWS_SomeIpTp_00040 [SWS_SomeIpTp_00040] 📄 PDF
If a SOME/IP segment is successfully received with the More Segment Flag set to '0', the SOME/IP TP module shall • Cancel the Rx timeout time defined by SomeIpTpRxTimeoutTime. • Call the API PduR_SomeIpTpRxIndication() after it has copied the remaining re- ceived Payload bytes to the upper layer(as defined in SWS_SomeIpTp_00033).
requirement SWS_SomeIpTp_00041 [SWS_SomeIpTp_00041] 📄 PDF
If the Rx timeout time defined by SomeIpTpRxTimeout Time expires, • The current assembly process shall be interrupted as defined by SWS_SomeIp Tp_00054. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_ASSEMBLY_INTERRUPT.
requirement SWS_SomeIpTp_00042 [SWS_SomeIpTp_00042] 📄 PDF
If the API SomeIpTp_RxIndication() is called with the Off- set Value is > 0 but no session is currently running, • The received PDU shall be ignored • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_INCONSISTENT_SEQUENCE.
requirement SWS_SomeIpTp_00043 [SWS_SomeIpTp_00043] 📄 PDF
Module Header File Imported Type ComStack_Types.h BufReq_ReturnType ComStack_Types.h PduIdType ComStack_Types.h PduInfoType ComStack_Types.h PduLengthType ComStack_Types.h RetryInfoType ComStack_Types ComStack_Types.h TpDataStateType Std_Types.h Std_ReturnType Std Std_Types.h Std_VersionInfoType
requirement SWS_SomeIpTp_00045 [SWS_SomeIpTp_00045] 📄 PDF
If the API SomeIpTp_RxIndication() is called and a session is currently active, the SOME/IP TP module shall check if the TP-Flag of the Message Type is set to '1'. If the TP-Flag is not set to '1', • The current assembly process shall be interrupted as defined by SWS_SomeIp Tp_00054. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_MESSAGE_TYPE.
requirement SWS_SomeIpTp_00048 [SWS_SomeIpTp_00048] 📄 PDF
If the API SomeIpTp_RxIndication() is called, the SOME/IP TP module shall check the value of the Offset Field. If the received Offset Value equals '0' while the received Payload bytes of the previous SOME/IP segments is greater than '0', the SOME/IP TP module shall perform the following steps in the following order: • The current assembly process shall be interrupted as defined by SWS_SomeIp Tp_00054. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_INCONSISTENT_SEQUENCE. • Start the assembly process according to chapter 7.3.1 SOME/IP segment re- ceived with Offset 0
requirement SWS_SomeIpTp_00049 [SWS_SomeIpTp_00049] 📄 PDF
If the bufferSizePtr provided by the API PduR_SomeIpTp StartOfReception()or PduR_SomeIpTpCopyRxData()is smaller than the sum of the re- ceived and the added SOME/IP header (in case of the first segment) or the received payload (in case of any subsequent segment), • The current assembly process shall be interrupted as defined by SWS_SomeIp Tp_00054. • The API Det_ReportRuntimeError()shall be called with the runtime error code SOMEIPTP_E_ASSEMBLY_INTERRUPT.
requirement SWS_SomeIpTp_00050 [SWS_SomeIpTp_00050] 📄 PDF
If the API PduR_SomeIpTpCopyRxData()returns some- thing else than BUFREQ_OK, • The assembly process for this PDU ID shall be interrupted as defined by SWS_ SomeIpTp_00054. • . • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_ASSEMBLY_INTERRUPT.
requirement SWS_SomeIpTp_00051 [SWS_SomeIpTp_00051] 📄 PDF
If the API PduR_SomeIpTpStartOfReception() returns something else than BUFREQ_OK, • The assembly process for this PDU ID shall be stopped. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_ASSEMBLY_INTERRUPT.
requirement SWS_SomeIpTp_00052 [SWS_SomeIpTp_00052] 📄 PDF
Type of error Related error code Error value SOME/IP TP module not initialized SOMEIPTP_E_UNINIT 0x01 Null pointer has been passed as an argument SOMEIPTP_E_PARAM_POINTER 0x02 Unknown parameter has been passed SOMEIPTP_E_PARAM 0x03
requirement SWS_SomeIpTp_00054 [SWS_SomeIpTp_00054] 📄 PDF
If the SOME/IP TP module interrupts the assembly pro- cess because of a detected error, the SOME/IP TP module shall • Call the API PduR_SomeIpTpRxIndication()for this PDU ID with E_NOT_OK. • The Rx timeout time defined by SomeIpTpRxTimeoutTime shall be canceled (if still running) for this PDU ID.
requirement SWS_SomeIpTp_00055 [SWS_SomeIpTp_00055] 📄 PDF
In case the given PduInfoPtr->SduLength is smaller than the computed size of the SOME/IP-TP segment (considering header and payload), SomeIpTp_TriggerTransmit() shall not copy any data and return E_NOT_OK.
requirement SWS_SomeIpTp_00057 [SWS_SomeIpTp_00057] 📄 PDF
If development error detection is enabled: SomeIpTp_Rx Indication() shall check that the service SomeIpTp_Init() was previously called. If the check fails, SomeIpTp_RxIndication()shall raise the development error SOMEIPTP_E_ UNINIT.
requirement SWS_SomeIpTp_00059 [SWS_SomeIpTp_00059] 📄 PDF
A call to SomeIpTp_MainFunctionTx() shall simply return if the AUTOSAR SOME/IP TP module was not previously initialized with a call to Some IpTp_Init().
requirement SWS_SomeIpTp_00060 [SWS_SomeIpTp_00060] 📄 PDF
Det_ReportRuntimeError Det.h Service to report runtime errors. If a callout has been configured then this callout shall be called. PduR_SomeIpTpCopyRxData PduR_SomeIpTp.h This function is called to provide the received data of an I-PDU segment (N-PDU) to the upper layer. Each call to this function provides the next part of the I-PDU data. The size of the remaining buffer is written to the position indicated by bufferSizePtr. PduR_SomeIpTpCopyTxData PduR_SomeIpTp.h This function is called to acquire the transmit data of an I-PDU segment (N-PDU). Each call to this function provides the next part of the I-PDU data unless retry->TpDataState is TP_DATARETRY. In this case the function restarts to copy the data beginning at the offset from the current position indicated by retry->TxTpDataCnt. The size of the remaining data is written to the position indicated by availableDataPtr. API Function Header File Description PduR_SomeIpTpRxIndication PduR_SomeIpTp.h Called after an I-PDU has been received via the TP API, the result indicates whether the transmission was successful or not. PduR_SomeIpTpStartOfReception PduR_SomeIpTp.h This function is called at the start of receiving an N-SDU. The N-SDU might be fragmented into multiple N-PDUs (FF with one or more following CFs) or might consist of a single N-PDU (SF). The service shall provide the currently available maximum buffer size when invoked with TpSdu Length equal to 0. PduR_SomeIpTpTransmit PduR_SomeIpTp.h Requests transmission of a PDU. PduR_SomeIpTpTxConfirmation PduR_SomeIpTp.h This function is called after the I-PDU has been transmitted on its network, the result indicates whether the transmission was successful or not.
requirement SWS_SomeIpTp_00061 [SWS_SomeIpTp_00061] 📄 PDF
Det_ReportError Det.h Service to report development errors.
requirement SWS_SomeIpTp_00062 [SWS_SomeIpTp_00062] 📄 PDF
If the SOME/IP TP module detects an inconsistency of the received SOME/IP TP headers (i.e.: Request ID, Protocol Version, Interface Version, Message Type or Return Code are not equal for all received segments), • The current assembly process shall be interrupted as defined by SWS_SomeIp Tp_00054. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_INCONSISTENT_HEADER.
requirement SWS_SomeIpTp_00063 [SWS_SomeIpTp_00063] 📄 PDF
If the API SomeIpTp_RxIndication() is called, the SOME/ IP TP module shall check whether the received payload bytes are dividable by16 in case the More Segment Flag is set to '1'. If the received payload bytes are not dividable by 16 in this case, • The current assembly process shall be interrupted as defined by SWS_SomeIp Tp_00054. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_ASSEMBLY_INTERRUPT.
requirement SWS_SomeIpTp_00064 [SWS_SomeIpTp_00064] 📄 PDF
If the API SomeIpTp_RxIndication() is called, the SOME/ IP TP module shall check the value of the Offset Field. If the Offset Value in units of 16 bytes does not match to the sum of the received Payload bytes of the previous SOME/ IP segments, • The current assembly process shall be interrupted as defined by SWS_SomeIp Tp_00054. • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_INCONSISTENT_SEQUENCE.
requirement SWS_SomeIpTp_00065 [SWS_SomeIpTp_00065] 📄 PDF
Type of error Related error code Error value The TP-Flag (of Message Type) was set to '0' SOMEIPTP_E_MESSAGE_TYPE 0x04 Inconsistent subsequent segment received SOMEIPTP_E_INCONSISTENT_SEQUENCE 0x05 Inconsistent header received SOMEIPTP_E_INCONSISTENT_HEADER 0x06 Disassembly Interrupt due to the upper layer SOMEIPTP_E_DISASSEMBLY_INTERRUPT 0x07 Assembly Interrupt due to the upper layer SOMEIPTP_E_ASSEMBLY_INTERRUPT 0x08
requirement SWS_SomeIpTp_00066 [SWS_SomeIpTp_00066] 📄 PDF
If the parameter SomeIpTp_VersionInfoPtr of the API SomeIpTp_GetVersionInfo() equals NULL_PTR and if development error detection is enabled (i.e. SomeIpTpDevErrorDetect is set to TRUE), the function SomeIpTp_Get VersionInfo, the API Det_ReportError()shall be called with the development error code SOMEIPTP_E_PARAM_POINTER.
requirement SWS_SomeIpTp_00067 [SWS_SomeIpTp_00067] 📄 PDF
If development error detection is enabled: SomeIpTp_Tx Confirmation() shall check that the service SomeIpTp_Init() was previously called. If the check fails, SomeIpTp_TxConfirmation()shall raise the development error SOMEIPTP_E_UNINIT.
requirement SWS_SomeIpTp_00070 [SWS_SomeIpTp_00070] 📄 PDF
A call to SomeIpTp_MainFunctionRx() shall simply return if the AUTOSAR SOME/IP TP module was not previously initialized with a call to Some IpTp_Init().
requirement SWS_SomeIpTp_00071 [SWS_SomeIpTp_00071] 📄 PDF
If SomeIpTp_RxIndication() is called with • TP Flag set to '1', • Offset Field set to '0', and • More Segment Flag set to '0', SOME/IP TP shall call PduR_SomeIpTpStartOfReception(), PduR_SomeIpTpCopyRx Data(), and SomeIpTp_RxIndication(), directly after each other providing the received indication.
requirement SWS_SomeIpTp_00072 [SWS_SomeIpTp_00072] 📄 PDF
If development error detection is enabled: SomeIpTp_Trig- gerTransmit() shall check that the service SomeIpTp_Init() was previously called. If the check fails, SomeIpTp_TriggerTransmit()shall raise the development error SOMEIPTP_E_ UNINIT.
requirement SWS_SomeIpTp_00073 [SWS_SomeIpTp_00073] 📄 PDF
If development error detection is enabled: SomeIpTp_ Transmit() shall check that the service SomeIpTp_Init() was previously called. If the check fails, SomeIpTp_Transmit()shall raise the development error SOMEIPTP_E_ UNINIT.
requirement SWS_SomeIpTp_00074 [SWS_SomeIpTp_00074] 📄 PDF
If parameter TxPduId of SomeIpTp_Transmit() has an in- valid value and if development error detection is enabled (i.e. SomeIpTpDevErrorDe- tect is set to TRUE), the API Det_ReportError() shall be called with the development error code SOMEIPTP_E_PARAM.
requirement SWS_SomeIpTp_00075 [SWS_SomeIpTp_00075] 📄 PDF
If parameter PduInfoPtr of SomeIpTp_Transmit() equals NULL_PTR and if development error detection is enabled (i.e. SomeIpTpDevError Detect is set to TRUE), the API Det_ReportError() shall be called with the development error code SOMEIPTP_E_PARAM_POINTER.
requirement SWS_SomeIpTp_00076 [SWS_SomeIpTp_00076] 📄 PDF
If SomeIpTp_Transmit()is called before the SOME/IP TP module has been initialized with a call of SomeIpTp_Init(), the AP shall return with E_ NOT_OK and stop the new session.
requirement SWS_SomeIpTp_00077 [SWS_SomeIpTp_00077] 📄 PDF
If the TP flag is not set and no assembly session is active, only the following parameters shall be extracted : • Request ID [32 bit] • Protocol Version [8 bit] • Interface Version [8 bit] • Message Type [8 bit] • Return Code [8 bit]
requirement SWS_SomeIpTp_00078 [SWS_SomeIpTp_00078] 📄 PDF
The SOME/IP TP module shall verify that the available buffer returned by PduR_SomeIpTpCopyTxData() via availableDataPtr is larger (for all but the last segment) or equal (for the last segment) size of SOME/IP TP segments.
requirement SWS_SomeIpTp_00079 [SWS_SomeIpTp_00079] 📄 PDF
After calling PduR_SomeIpTpCopyRxData() to pass the SOME/IP header (excluding the SOME/IP TP header) of the assembled SOME/IP message to the SOME/IP TP's upper layer (see [SWS_SomeIpTp_00034]), the SOME/IP TP module shall call the API PduR_SomeIpTpCopyRxData() again, to provide the payload of the assembled SOME/ IP message.
requirement SWS_SomeIpTp_00080 [SWS_SomeIpTp_00080] 📄 PDF
Header Inconsistency check before TP-Flag check Before checking the TP-Flag of the Message, as a condition to interrupt the as- sembly process, (see [SWS_SomeIpTp_00045]), the SOME/IP TP module shall check for inconsistencies of the received SOME/IP TP headers according to [SWS_SomeIpTp_00062].
requirement SWS_SomeIpTp_00082 [SWS_SomeIpTp_00082] 📄 PDF
[SWS_SomeIpTp_00082] Handling if PduR_SomeIpTpTransmit() return some- thing different than E_OK for a PDU-ID during the process of an ongoing seg- mentation Upstream requirements: RS_SOMEIP_00010 ⌈If PduR_SomeIpTpTransmit() returns something different than E_OK during the pro- cess of ongoing segmentation. • The ongoing disassembly process for this PDU ID shall be canceled. • The API PduR_SomeIpTpTxConfirmation() with result set to E_NOT_OK shall be called. • Set the corresponding SomeIpTpTxNSdu to state NSDU_AVAILABLE, after PduR_SomeIpTpTxConfirmation() returns • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_DISASSEMBLY_INTERRUPT. ⌋
requirement SWS_SomeIpTp_00094 [SWS_SomeIpTp_00094] 📄 PDF
[SWS_SomeIpTp_00094] Each N-SDU shall have a N-SDU state Upstream requirements: RS_SOMEIP_00010 ⌈The SomeIpTp module shall maintain for each N-SDU of all configured SomeIpT- pRxNSdu and SomeIpTpTxNSdu at each SomeIpTpRxChannel and SomeIpTpTx- Channel two states: state NSDU_AVAILABLE and state NSDU_IN_USE⌋ Specification on SOME/IP Transport Protocol
requirement SWS_SomeIpTp_00096 [SWS_SomeIpTp_00096] 📄 PDF
[SWS_SomeIpTp_00096]) is currently running, • The received PDU shall be ignored • The API Det_ReportRuntimeError() shall be called with the runtime error code SOMEIPTP_E_INCONSISTENT_SEQUENCE. ⌋ Note: This check identifies that at least the first segment has not been received.
Request a governed re-review of this record. The record is not changed immediately.
- Record
AUTOSAR/AP/record/CP_MOD_SomeIpTp- Status
- unspecified
- Version
AUTOSAR/AP/record/CP_MOD_SomeIpTp@rel:R20-11#af3166ab- Content hash
af3166ab- Source
- https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_SOMEIPTransportProtocol.pdf#nameddest=SWS_SomeIpTp_00044