DEENESPTFRRUARHIKOZHNL

SAE J1939 Request Manager (J1939Rm)

ModulJ1939Rm (SAE J1939 Request Manager)
BSW-Modul-ID59
Standard-Header#include "J1939Rm.h"
SWS-SpezifikationAUTOSAR_CP_SWS_SAEJ1939RequestManager.pdf, AUTOSAR_SWS_SAEJ1939RequestManager.pdf
Umfang104 Records · 17 Snippets
ClusterSAE J1939

SAE J1939 Request Manager (J1939Rm)

AUTOSAR Classic Communication Services-Modul SAE J1939 Request Manager (J1939Rm, Spezifikation: AUTOSAR_CP_SWS_SAEJ1939RequestManager.pdf, AUTOSAR_SWS_SAEJ1939RequestManager.pdf).

Funktionen — Übersicht

Typen — Übersicht

Anforderungen — Übersicht

Funktionen & Typen — Detailansicht

फ़ंक्शन J1939Rm_Init [SWS_J1939Rm_00037] 📄 PDF

void J1939Rm_Init(const J1939Rm_ConfigType* configPtr);

This function initializes the J1939 Request Manager.

फ़ंक्शन J1939Rm_DeInit [SWS_J1939Rm_00038] 📄 PDF

void J1939Rm_DeInit(void);

This function resets the J1939 Request Manager to the uninitialized state.

फ़ंक्शन J1939Rm_MainFunction [SWS_J1939Rm_00042] 📄 PDF

void J1939Rm_MainFunction(void);

Main function of the J1939 Request Manager. Used for scheduling purposes and timeout supervision.

फ़ंक्शन J1939Rm_CancelRequestTimeout [SWS_J1939Rm_00055] 📄 PDF

Std_ReturnType J1939Rm_CancelRequestTimeout(uint8 userId, NetworkHandleType channel, uint32 requestedPgn, const J1939Rm_ExtIdInfoType* extIdInfo, uint8 destAddress);

Cancels timeout monitoring of a request. If the request is not active, or timeout monitoring was not requested, this call has no effect.

फ़ंक्शन J1939Rm_TxConfirmation [SWS_J1939Rm_00059] 📄 PDF

void J1939Rm_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.

फ़ंक्शन J1939Rm_CheckReceivedComIPdu [SWS_J1939Rm_00062] 📄 PDF

boolean J1939Rm_CheckReceivedComIPdu(PduIdType PduId, const PduInfoType* PduInfoPtr);

Reports a received ComIPdu. If this ComIPdu was requested via J1939Rm_SendRequest or the SendRequest service operation, a request timeout for this request is stopped.

फ़ंक्शन <User>_RequestTimeoutIndication [SWS_J1939Rm_00065] 📄 PDF

void < User >_RequestTimeoutIndication(uint8 node, NetworkHandleType channel, uint32 requestedPgn, const J1939Rm_ExtIdInfoType* extIdInfo, uint8 destAddress); ⚠️

Indicates timeout of a request triggered with the same parameters.

टाइप J1939Rm_ConfigType [SWS_J1939Rm_00036] 📄 PDF

This is the base type for the configuration of the J1939 Request Manager. A pointer to an instance of this structure will be used in the initialization of the J1939 Request Manager. The content of this structure is defined in chapter 10 Configuration specification.

टाइप J1939Rm_ExtIdType [SWS_J1939Rm_91000] 📄 PDF

This type represents the available kinds of extended identifier usage. Variation –

requirement SWS_J1939Rm_00002 [SWS_J1939Rm_00002] 📄 PDF

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN is configured via J1939RmUserRequestPGN to trigger either the J1939 Diagnostic Communica- tion Manager or a CDD , the J1939 Request Manager shall call the corresponding User_RequestIndication .

requirement SWS_J1939Rm_00003 [SWS_J1939Rm_00003] 📄 PDF

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN is configured via J1939RmUserRequestPGN to be forwarded to the RTE , the J1939 Request Man- ager shall call the corresponding service port function.

requirement SWS_J1939Rm_00007 [SWS_J1939Rm_00007] 📄 PDF

The J1939 Request Manager shall only accept re- quests addressed to the whole network (global DA ), or to one of the configured ad- dresses of the ECU (see J1939RmNmNodeRef ).

requirement SWS_J1939Rm_00008 [SWS_J1939Rm_00008] 📄 PDF

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN or the re- quested extended identifier bytes are not configured, and the destina- tion address is not the broadcast address, the J1939 Request Manager shall call PduR_J1939RmTransmit to send a negative acknowledgement ( NACK ).

requirement SWS_J1939Rm_00009 [SWS_J1939Rm_00009] 📄 PDF

When a BSW module, a CDD , or an SW-C (via service port and RTE ) calls J1939Rm_SendAck , the J1939 Request Manager shall call PduR_J1939RmTransmit to send the required acknowledgement.

requirement SWS_J1939Rm_00011 [SWS_J1939Rm_00011] 📄 PDF

When J1939Rm_Init is called in initialized state, the J1939 Request Manager shall not re-initialize its internal variables. It shall instead call Det_ReportError with the error code J1939Rm.J1939RM_E_REINIT if DET reporting is enabled (see J1939RmDevErrorDetect ).

requirement SWS_J1939Rm_00012 [SWS_J1939Rm_00012] 📄 PDF

A call to J1939Rm_Init initializes all internal variables and sets the J1939 Request Manager to the initialized state.

requirement SWS_J1939Rm_00013 [SWS_J1939Rm_00013] 📄 PDF

A call to J1939Rm_DeInit sets the J1939 Request Manager back to the uninitialized state.

requirement SWS_J1939Rm_00014 [SWS_J1939Rm_00014] 📄 PDF

A call to J1939Rm_SetState sets the state of a node's channel to online or offline.

requirement SWS_J1939Rm_00015 [SWS_J1939Rm_00015] 📄 PDF

In the offline state, the J1939 Request Manager only processes requests for the AddressClaimed PG , while timeout supervision and ac- knowledgement handling are completely disabled.

requirement SWS_J1939Rm_00016 [SWS_J1939Rm_00016] 📄 PDF

When a BSW module, a CDD , or an SW-C (via service port and RTE ) calls J1939Rm_SendRequest , the J1939 Request Manager shall call PduR_J1939RmTransmit to send the request.

requirement SWS_J1939Rm_00017 [SWS_J1939Rm_00017] 📄 PDF

If timeout supervision is enabled for the caller of J1939Rm_SendRequest via J1939RmUserTimeoutSupervision , and the param- eter checkTimeout is TRUE, and the destination address is not the broadcast ad- dress (0xFF): The J1939 Request Manager shall start timeout supervision.

requirement SWS_J1939Rm_00018 [SWS_J1939Rm_00018] 📄 PDF

Transmission requests for the Acknowledgement PG shall be queued when a previous transmission of this PG is still pending. The size of this queue is determined by J1939RmAckQueueSize .

requirement SWS_J1939Rm_00019 [SWS_J1939Rm_00019] 📄 PDF

The J1939 Request Manager shall use the J1939Rm_- TxConfirmation with result E_OK of the associated I-PDU to trigger transmission of pending Acknowledgement PGs .

requirement SWS_J1939Rm_00020 [SWS_J1939Rm_00020] 📄 PDF

If the J1939Rm_TxConfirmation is called with result E_NOT_OK , the J1939 Request Manager shall flush the Acknowledgement PG queue.

requirement SWS_J1939Rm_00021 [SWS_J1939Rm_00021] 📄 PDF

Transmission requests for the Request PG shall be queued when a previous transmission of this PG is still pending. The size of this queue is determined by J1939RmRequestQueueSize .

requirement SWS_J1939Rm_00022 [SWS_J1939Rm_00022] 📄 PDF

The J1939 Request Manager shall use the J1939Rm_- TxConfirmation with result E_OK of the associated I-PDU to trigger transmission of pending Request and Request2 PGs .

requirement SWS_J1939Rm_00023 [SWS_J1939Rm_00023] 📄 PDF

If the J1939Rm_TxConfirmation is called with result E_NOT_OK , the J1939 Request Manager shall flush the corresponding request PG queue.

requirement SWS_J1939Rm_00024 [SWS_J1939Rm_00024] 📄 PDF

When J1939Rm_SendRequest is called with the param- eter checkTimeout set to TRUE and a destination address that is not the broadcast address (0xFF), and timeout handling is enabled for the caller via J1939RmUserTimeoutSupervision : The J1939 Request Manager shall store (separately for each node) the calling module's user ID, the PGN , extended iden- tifier bytes , the source address , and the destination address of the re- quest.

requirement SWS_J1939Rm_00025 [SWS_J1939Rm_00025] 📄 PDF

When a request is sent with the global destination ad- dress , it shall also be handled internally as if it was received via J1939Rm_RxIndi- cation .

requirement SWS_J1939Rm_00026 [SWS_J1939Rm_00026] 📄 PDF

The J1939 Request Manager shall only accept ac- knowledgements where the AddressAcknowledged is set to one of the configured ad- dresses of the ECU (see J1939RmNmNodeRef ).

requirement SWS_J1939Rm_00027 [SWS_J1939Rm_00027] 📄 PDF

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of an acknowledgement which does not match a pending request, and the acknowledged PGN is configured via J1939RmUserAckPGN to trigger a CDD , the J1939 Request Manager shall call the corresponding User_AckIndi- cation .

requirement SWS_J1939Rm_00028 [SWS_J1939Rm_00028] 📄 PDF

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of an acknowledgement which does not match a pend- ing request, and the acknowledged PGN is configured via J1939RmUserAckPGN to be forwarded to the RTE , the J1939 Request Manager shall call the corresponding service port function.

requirement SWS_J1939Rm_00029 [SWS_J1939Rm_00029] 📄 PDF

When an acknowledgement matching the request is re- ceived, when a configured COM RxIPduCallout is triggered which matches the request, or when a CDD or an application SW-C calls J1939Rm_CancelRequestTimeout , the timeout supervision of the request is stopped.

requirement SWS_J1939Rm_00030 [SWS_J1939Rm_00030] 📄 PDF

If the timeout supervision for a request reaches 1.25s, the J1939 Request Manager shall call the User_RequestTimeoutIndication cor- responding to the userId parameter of the initial J1939Rm_SendRequest .

requirement SWS_J1939Rm_00031 [SWS_J1939Rm_00031] 📄 PDF

Type of error Related error code Error value An API was called while the module was uninitialized J1939RM_E_UNINIT 0x01 The Init API was called twice J1939RM_E_REINIT 0x02 J1939Rm_Init was called with an invalid configuration pointer J1939RM_E_INIT_FAILED 0x03 An API service was called with a NULL pointer J1939RM_E_PARAM_POINTER 0x10 An API service was called with a wrong ID J1939RM_E_INVALID_PDU_SDU_ID 0x11 An API service was called with wrong network handle J1939RM_E_INVALID_NETWORK_ID 0x12 The API J1939Rm_SetState was called with a wrong state J1939RM_E_INVALID_STATE 0x13 An API was called with an illegal user ID J1939RM_E_INVALID_USER 0x14 An API was called with an unknown or illegal PGN J1939RM_E_INVALID_PGN 0x15 An API was called with an illegal priority J1939RM_E_INVALID_PRIO 0x16 An API was called with an illegal node address J1939RM_E_INVALID_ADDRESS 0x17 An API was called with an illegal Boolean option J1939RM_E_INVALID_OPTION 0x18 An API was called with an illegal AckCode J1939RM_E_INVALID_ACK_CODE 0x19 An API was called with an illegal node ID J1939RM_E_INVALID_NODE_ID 0x1a An API was called with invalid extended identifier bytes J1939RM_E_INVALID_EXTID_INFO 0x1b

requirement SWS_J1939Rm_00033 [SWS_J1939Rm_00033] 📄 PDF

If DET reporting is enabled via J1939RmDevErrorDetect , the J1939 Request Manager shall check PduIdType parameters ( PDU IDs) of its API functions against the configured IDs, and shall report the development error J1939Rm.J1939RM_E_INVALID_PDU_SDU_ID when an unknown ID is provided by the call.

requirement SWS_J1939Rm_00035 [SWS_J1939Rm_00035] 📄 PDF

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

requirement SWS_J1939Rm_00040 [SWS_J1939Rm_00040] 📄 PDF

The J1939 Request Manager shall reject the state change by returning E_NOT_OK when the newState is not in the valid range. If DET is enabled via J1939RmDevErrorDetect , the development error J1939Rm.- J1939RM_E_INVALID_STATE shall be reported.

requirement SWS_J1939Rm_00041 [SWS_J1939Rm_00041] 📄 PDF

If DET reporting is enabled via J1939RmDevErrorDetect , the J1939 Request Manager shall check NetworkHandleType parameters (network handles) of its API functions against the referenced network handles of ComM, and shall report the development error J1939Rm.J1939RM_E_INVALID_NETWORK_ID when an unknown handle is provided by the call.

requirement SWS_J1939Rm_00043 [SWS_J1939Rm_00043] 📄 PDF

The frequency of invocations of J1939Rm_MainFunction is determined by the configuration parameter J1939RmMainFunctionPeriod .

requirement SWS_J1939Rm_00045 [SWS_J1939Rm_00045] 📄 PDF

Com_TriggerIPDUSendWithMetaData Com.h By a call to Com_TriggerIPDUSendWithMetaData the AUTOSAR COM module updates its internal metadata for the I-PDU with the given ID by copying the metadata from the given position and with respect to length of the globally configured Meta DataType of this I-PDU. Then the I-PDU is triggered for transmission. Det_ReportError Det.h Service to report development errors. J1939Dcm_RequestIndication J1939Dcm.h Indicates reception of a Request or Request2 PG. J1939Nm_RequestIndication J1939Nm.h Indicates reception of a Request or Request2 PG.

requirement SWS_J1939Rm_00066 [SWS_J1939Rm_00066] 📄 PDF

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of an acknowledgement which matches a pending re- quest (acknowledged PGN , source address , acknowledged address), the J1939 Request Manager shall call the User_AckIndication or the service port function corresponding to the stored user ID.

requirement SWS_J1939Rm_00067 [SWS_J1939Rm_00067] 📄 PDF

The J1939 Request Manager shall reject transmission of a request by returning E_NOT_OK when the requestedPgn , the extIdType element within the extIdInfo , the destAddress , or the priority are not in the valid range, or when the userId is not one of the configured user IDs (see J1939RmUserId ), or when checkTimeout is true but timeout handling is disabled for the calling module (see J1939RmUserTimeoutSupervision ). If DET is enabled via J1939RmDevErrorDetect , the corresponding development error shall be reported: J1939Rm.J1939RM_E_INVALID_USER for userId , J1939Rm.J1939RM_E_IN- VALID_EXTID_INFO for extIdInfo , J1939Rm.J1939RM_E_INVALID_PGN for re- questedPgn , J1939Rm.J1939RM_E_INVALID_PRIO for priority , J1939Rm.- J1939RM_E_INVALID_ADDRESS for destAddress , and J1939Rm.J1939RM_E_- INVALID_OPTION for checkTimeout .

requirement SWS_J1939Rm_00068 [SWS_J1939Rm_00068] 📄 PDF

The J1939 Request Manager shall reject transmission of a request by returning E_NOT_OK when another request is pending and the request queue is full.

requirement SWS_J1939Rm_00069 [SWS_J1939Rm_00069] 📄 PDF

The J1939 Request Manager shall ignore the time- out cancellation request when the requestedPgn , the extIdType element within the extIdInfo , or the destAddress are not in the valid range, or when the userId is not one of the configured user IDs (see J1939RmUserId ), or if no suitable entry can be found in the list of pending requests. If DET is enabled via J1939RmDevErrorDetect , the corresponding development error shall be re- ported: J1939Rm.J1939RM_E_INVALID_USER for userId , J1939Rm.J1939RM_- E_INVALID_PGN for requestedPgn , J1939Rm.J1939RM_E_INVALID_EXTID_- INFO for extIdInfo , and J1939Rm.J1939RM_E_INVALID_ADDRESS for destAd- dress .

requirement SWS_J1939Rm_00070 [SWS_J1939Rm_00070] 📄 PDF

The J1939 Request Manager shall reject transmission of an acknowledgement by returning E_NOT_OK when the ackPgn , the extId- Type element within the extIdInfo , the ackAddress , or the priority are not in the valid range, or when the userId is not one of the configured user IDs (see J1939RmUserId ). If DET is enabled via J1939RmDevErrorDetect , the corre- sponding development error shall be reported: J1939Rm.J1939RM_E_INVALID_- USER for userId , J1939Rm.J1939RM_E_INVALID_EXTID_INFO for extId- Info , J1939Rm.J1939RM_E_INVALID_PGN for ackPgn , J1939Rm.J1939RM_E_- INVALID_ACK_CODE for ackCode , J1939Rm.J1939RM_E_INVALID_ADDRESS for ackAddress , and J1939Rm.J1939RM_E_INVALID_PRIO for priority .

requirement SWS_J1939Rm_00071 [SWS_J1939Rm_00071] 📄 PDF

The J1939 Request Manager shall reject transmission of an acknowledgement by returning E_NOT_OK when another acknowledgement is pending and the acknowledgement queue is full.

requirement SWS_J1939Rm_00072 [SWS_J1939Rm_00072] 📄 PDF

The J1939 Request Manager shall use the J1939Rm_- MainFunction for timing related purposes.

requirement SWS_J1939Rm_00073 [SWS_J1939Rm_00073] 📄 PDF

During initialization via J1939Rm_Init , the J1939 Re- quest Manager assumes the offline state for all nodes on all channels.

requirement SWS_J1939Rm_00074 [SWS_J1939Rm_00074] 📄 PDF

The J1939Rm_SendRequest API function shall only be available if J1939RmUserSendRequest is set for at least one user.

requirement SWS_J1939Rm_00075 [SWS_J1939Rm_00075] 📄 PDF

The J1939Rm_CancelRequestTimeout API function shall only be available if J1939RmUserTimeoutSupervision is set for at least one user.

requirement SWS_J1939Rm_00076 [SWS_J1939Rm_00076] 📄 PDF

The J1939Rm_SendAck API function shall only be avail- able if J1939RmUserSendAck is set for at least one user.

requirement SWS_J1939Rm_00079 [SWS_J1939Rm_00079] 📄 PDF

The J1939Rm_CheckReceivedComIPdu call back func- tion shall only be available if J1939RmUserTimeoutSupervision is set for at least one user.

requirement SWS_J1939Rm_00080 [SWS_J1939Rm_00080] 📄 PDF

The J1939Rm_RxIndication call back func- tion shall only be available if J1939RmUserAckIndication or J1939RmUserRequestIndication is set for at least one user.

requirement SWS_J1939Rm_00081 [SWS_J1939Rm_00081] 📄 PDF

The J1939Rm_TxConfirmation call back function shall only be available if J1939RmUserSendAck or J1939RmUserSendRequest is set for at least one user.

requirement SWS_J1939Rm_00082 [SWS_J1939Rm_00082] 📄 PDF

The Com_TriggerIPDUSendWithMetaData function is only required if at least one J1939RmComUser is configured.

requirement SWS_J1939Rm_00083 [SWS_J1939Rm_00083] 📄 PDF

The J1939Dcm_RequestIndication function is only re- quired if at least one J1939RmDcmUser is configured.

requirement SWS_J1939Rm_00084 [SWS_J1939Rm_00084] 📄 PDF

The J1939Nm_RequestIndication function is only re- quired if at least one J1939RmNmUser is configured.

requirement SWS_J1939Rm_00085 [SWS_J1939Rm_00085] 📄 PDF

The configured User_RequestIndication function shall be available for each user that has J1939RmUserRequestIndication enabled.

requirement SWS_J1939Rm_00086 [SWS_J1939Rm_00086] 📄 PDF

The configured User_AckIndication function shall be available for each user that has J1939RmUserAckIndication enabled.

requirement SWS_J1939Rm_00087 [SWS_J1939Rm_00087] 📄 PDF

The configured User_RequestTime- outIndication function shall be available for each user that has J1939RmUserTimeoutSupervision enabled.

requirement SWS_J1939Rm_00096 [SWS_J1939Rm_00096] 📄 PDF

If DET reporting is enabled via J1939RmDevErrorDetect , the J1939 Request Manager shall check node handle parameters of its API func- tions against the node handles of J1939Nm referenced via J1939RmNmNodeRef , and shall report the development error J1939Rm.J1939RM_E_INVALID_NODE_ID when an unknown handle is provided by the call.

requirement SWS_J1939Rm_00097 [SWS_J1939Rm_00097] 📄 PDF

Type uint8 Port Defined Argument Value(s) Value {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser/J1939Rm RteUser/J1939RmUserId.value)} Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportRequestTransmission)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

requirement SWS_J1939Rm_00098 [SWS_J1939Rm_00098] 📄 PDF

Type uint8 Port Defined Argument Value(s) Value {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser/J1939Rm RteUser/J1939RmUserId.value)} Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportAckTransmission)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

requirement SWS_J1939Rm_00099 [SWS_J1939Rm_00099] 📄 PDF

Type uint8 Port Defined Argument Value(s) Value {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser/J1939Rm RteUser/J1939RmUserId.value)} Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportTimeoutSupervision)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

requirement SWS_J1939Rm_00100 [SWS_J1939Rm_00100] 📄 PDF

Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportRequestIndication)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

requirement SWS_J1939Rm_00101 [SWS_J1939Rm_00101] 📄 PDF

Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportAckIndication)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

requirement SWS_J1939Rm_00102 [SWS_J1939Rm_00102] 📄 PDF

Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportTimeoutSupervision)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

requirement SWS_J1939Rm_00103 [SWS_J1939Rm_00103] 📄 PDF

Name AppSendAck Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportAckTransmission)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation SendAck Comment Requests transmission of an Acknowledgement PG. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the acknowledgement shall be sent. Variation – ackPgn Type uint32 Direction IN Comment Acknowledged PGN. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Direction IN Comment – Variation – ackCode Type J1939Rm_AckCode Direction IN Comment Type of acknowledgement, see definition of J1939Rm_AckCode for available codes. Variation – ackAddress Type uint8 Direction IN Comment Address of the node that sent the request. Variation – priority Parameters Type uint8 Direction IN Comment Priority of the Acknowledgement PG. Variation – broadcast Type boolean Direction IN Comment Indicates whether the ACKM is a response to a broadcast request. Variation – Possible Errors E_OK E_NOT_OK

requirement SWS_J1939Rm_00104 [SWS_J1939Rm_00104] 📄 PDF

Name AppSendRequest Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportRequestTransmission)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation SendRequest Comment Requests transmission of a Request or Request2 PG. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the request shall be sent. Variation – requestedPgn Type uint32 Direction IN Comment PGN of the requested PG. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Direction IN Comment – Variation – destAddress Type uint8 Parameters Direction IN Comment Address of the destination node or 0xFF for broadcast. Variation – priority Type uint8 Direction IN Comment Priority of the Request PG. Variation – checkTimeout Type boolean Direction IN Comment TRUE: Timeout supervision will be performed FALSE: No timeout supervision will be started Variation – Possible Errors E_OK E_NOT_OK

requirement SWS_J1939Rm_00105 [SWS_J1939Rm_00105] 📄 PDF

Name AppCancelRequestTimeout Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportTimeoutSupervision)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation CancelRequestTimeout Comment Cancels timeout monitoring of a request. If the request is not active, or timeout monitoring was not requested, this call has no effect. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the request was sent. Variation – requestedPgn Type uint32 Direction IN Comment PGN of the requested PG. Variation – extIdInfo Parameters Type J1939Rm_ExtIdInfoType Direction IN Comment – Variation – destAddress Type uint8 Direction IN Comment Address of the destination node or 0xFF for broadcast. Variation – Possible Errors E_OK E_NOT_OK

requirement SWS_J1939Rm_00106 [SWS_J1939Rm_00106] 📄 PDF

Name AppAckIndication Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportAckIndication)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation AckIndication Comment Indicates reception of an Acknowledgement PG. Variation – node Type uint8 Direction IN Comment Node by which the acknowledgement was received. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the acknowledgement was received. Variation – ackPgn Type uint32 Direction IN Comment Acknowledged PGN. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Parameters Direction IN Comment Extended identifier bytes. Variation – ackCode Type J1939Rm_AckCode Direction IN Comment Type of acknowledgement, see definition of J1939Rm_AckCode for available codes. Variation – ackAddress Type uint8 Direction IN Comment Address of this node. Variation – sourceAddress Type uint8 Direction IN Comment Address of the node that sent the Acknowledgement PG. Variation – priority Type uint8 Direction IN Comment Priority of the Acknowledgement PG. Variation – Possible Errors E_OK E_NOT_OK

requirement SWS_J1939Rm_00107 [SWS_J1939Rm_00107] 📄 PDF

Name AppRequestIndication Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportRequestIndication)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation RequestIndication Comment Indicates reception of a Request or Request2 PG. Variation – node Type uint8 Parameters Direction IN Comment Node by which the request was received. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the request was received. Variation – requestedPgn Type uint32 Direction IN Comment PGN of the requested PG. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Direction IN Comment Extended identifier bytes. Variation – sourceAddress Type uint8 Direction IN Comment Address of the node that sent the Request PG. Variation – destAddress Type uint8 Direction IN Comment Address of this node or 0xFF for broadcast. Variation – priority Type uint8 Direction IN Comment Priority of the Request PG. Variation – Possible Errors E_OK E_NOT_OK

requirement SWS_J1939Rm_00108 [SWS_J1939Rm_00108] 📄 PDF

Name AppRequestTimeoutIndication Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportTimeoutSupervision)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation RequestTimeoutIndication Comment Indicates timeout of a request triggered with the same parameters. Variation – node Type uint8 Direction IN Comment Node by which the request was sent. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the request was sent. Variation – requestedPgn Type uint32 Direction IN Comment PGN of the requested PG. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Direction IN Comment Extended identifier bytes. Variation – destAddress Type uint8 Direction IN Comment Address of the destination node or 0xFF for broadcast. Parameters Variation – Possible Errors E_OK E_NOT_OK

requirement SWS_J1939Rm_00111 [SWS_J1939Rm_00111] 📄 PDF

J1939Rm shall include the header file J1939Nm.h if at least one J1939RmNmUser is configured.

requirement SWS_J1939Rm_00112 [SWS_J1939Rm_00112] 📄 PDF

J1939Rm shall include the header file J1939Dcm.h if at least one J1939RmDcmUser is configured.

requirement SWS_J1939Rm_00113 [SWS_J1939Rm_00113] 📄 PDF

J1939Rm shall include a header file named <apiSer- vicePrefix>_Cbk.h for every configured J1939RmCddUser .

requirement SWS_J1939Rm_00114 [SWS_J1939Rm_00114] 📄 PDF

J1939Rm shall include the header file Com.h if at least one J1939RmComUser is configured.

requirement SWS_J1939Rm_00115 [SWS_J1939Rm_00115] 📄 PDF

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN is configured via J1939RmComIPduPGN to be handled via COM , and when the extended identi- fier bytes of an RQST2 match the multiplexor values of a multiplexed message, the J1939 Request Manager shall prepare the MetaData from the given information and provide it to COM via Com_TriggerIPDUSendWithMetaData together with the PduId of the transmitted COM I-PDU referenced by J1939RmComIPduRef .

requirement SWS_J1939Rm_00116 [SWS_J1939Rm_00116] 📄 PDF

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN is AddressClaimed ( AC , 0x0EE00), the J1939 Request Manager shall call J1939Nm_RequestIndication .

requirement SWS_J1939Rm_00117 [SWS_J1939Rm_00117] 📄 PDF

When no extended identifier bytes are provided with J1939Rm_SendRequest , J1939Rm shall send an RQST PG . When one or more extended identifier bytes are provided, an RQST2 PG shall be sent.

requirement SWS_J1939Rm_00118 [SWS_J1939Rm_00118] 📄 PDF

Transmission requests for the Request2 PG shall be queued when a previous transmission of this PG is still pending. The size of this queue is determined by J1939RmRequestQueue2Size .

requirement SWS_J1939Rm_00119 [SWS_J1939Rm_00119] 📄 PDF

Meta data items of type CAN_ID_32 contain the source address in the fourth (least significant) byte.

requirement SWS_J1939Rm_00120 [SWS_J1939Rm_00120] 📄 PDF

Meta data items of type CAN_ID_32 contain the destina- tion address in the third byte.

requirement SWS_J1939Rm_00121 [SWS_J1939Rm_00121] 📄 PDF

Meta data items of type CAN_ID_32 contain the priority in the bits 2-4 of the first (most significant) byte, where bit 0 is the least significant bit of a byte.

requirement SWS_J1939Rm_00122 [SWS_J1939Rm_00122] 📄 PDF

The J1939 Request Manager shall use a meta data item of type CAN_ID_32 to determine the source address , destination ad- dress , and priority of received request PGs .

requirement SWS_J1939Rm_00123 [SWS_J1939Rm_00123] 📄 PDF

The J1939 Request Manager shall use a meta data item of type CAN_ID_32 to provide the source address and priority of transmitted Acknowledgement PGs .

requirement SWS_J1939Rm_00124 [SWS_J1939Rm_00124] 📄 PDF

The J1939 Request Manager shall use a meta data item of type CAN_ID_32 to provide the source address , destination address , and priority of transmitted Request and Request2 PGs .

requirement SWS_J1939Rm_00125 [SWS_J1939Rm_00125] 📄 PDF

The J1939 Request Manager shall use a meta data item of type CAN_ID_32 to determine the source address and priority of received Acknowledgement PGs .

requirement SWS_J1939Rm_00126 [SWS_J1939Rm_00126] 📄 PDF

When an acknowledgement is sent, it shall also be handled internally as if it was received via J1939Rm_RxIndication .

requirement SWS_J1939Rm_00127 [SWS_J1939Rm_00127] 📄 PDF

If J1939RmGatewaySupport is enabled, and a J1939RmChannel is linked to another J1939RmChannel via a J1939NmSharedAddressSpace : All Request , Request2 , and Acknowledgement PGs that are received on the first J1939RmChannel shall be forwarded to the second J1939RmChannel .

requirement SWS_J1939Rm_00128 [SWS_J1939Rm_00128] 📄 PDF

If J1939RmGatewaySupport is enabled, and a J1939RmChannel is referenced by another J1939RmChannel via a J1939NmExternalNodeGatewayedChannelRef : All Request , Request2 , and Acknowledgement PGs that are received on the first J1939RmChannel shall be forwarded to the second J1939RmChannel .

requirement SWS_J1939Rm_00129 [SWS_J1939Rm_00129] 📄 PDF

Request and Request2 PGs shall only be forwarded if the destination address of the PG is the global address (0xFF) or a destination address that does not correspond to any J1939NmNodePreferredAddress refer- enced by a J1939RmNode that references the J1939RmChannel on which the PG was received.

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

Record
AUTOSAR/AP/record/CP_MOD_J1939Rm
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_J1939Rm@rel:R20-11#ae4037cd
Content hash
ae4037cd
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_SAEJ1939RequestManager.pdf#nameddest=SWS_J1939Rm_00037

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

आरंभीकरण और स्थिति

3

चक्रीय

1

विवरण दृश्य

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

आरंभीकरण और स्थिति

J1939Rm_DeInit फ़ंक्शन

This function resets the J1939 Request Manager to the uninitialized state.

void J1939Rm_DeInit(void);
J1939Rm_GetVersionInfo फ़ंक्शन

Returns the version information of this module.

void J1939Rm_GetVersionInfo(Std_VersionInfoType* versionInfo);
J1939Rm_Init फ़ंक्शन

This function initializes the J1939 Request Manager.

void J1939Rm_Init(const J1939Rm_ConfigType* configPtr);

सेवाएँ

J1939Rm_CancelRequestTimeout फ़ंक्शन

Cancels timeout monitoring of a request. If the request is not active, or timeout monitoring was not requested, this call has no effect.

Std_ReturnType J1939Rm_CancelRequestTimeout(uint8 userId, NetworkHandleType channel, uint32 requestedPgn, const J1939Rm_ExtIdInfoType* extIdInfo, uint8 destAddress);
J1939Rm_CheckReceivedComIPdu फ़ंक्शन

Reports a received ComIPdu. If this ComIPdu was requested via J1939Rm_SendRequest or the SendRequest service operation, a request timeout for this request is stopped.

boolean J1939Rm_CheckReceivedComIPdu(PduIdType PduId, const PduInfoType* PduInfoPtr);
J1939Rm_SendAck फ़ंक्शन

Requests transmission of an Acknowledgement PG.

Std_ReturnType J1939Rm_SendAck(uint8 userId, NetworkHandleType channel, uint32 ackPgn, const J1939Rm_ExtIdInfoType* extIdInfo, J1939Rm_AckCode ackCode, uint8 ackAddress, uint8 priority, boolean broadcast);
J1939Rm_SendRequest फ़ंक्शन

Requests transmission of a Request or Request2 PG.

Std_ReturnType J1939Rm_SendRequest(uint8 userId, NetworkHandleType channel, uint32 requestedPgn, const J1939Rm_ExtIdInfoType* extIdInfo, uint8 destAddress, uint8 priority, boolean checkTimeout);
J1939Rm_SetState फ़ंक्शन

Changes the communication state of J1939Rm to offline (only Request for AC supported) or online.

Std_ReturnType J1939Rm_SetState(NetworkHandleType channel, uint8 node, J1939Rm_StateType newState);
User_AckIndication फ़ंक्शन

Indicates reception of an Acknowledgement PG.

void < User >_AckIndication(uint8 node, NetworkHandleType channel, uint32 ackPgn, const J1939Rm_ExtIdInfoType* extIdInfo, J1939Rm_AckCode ackCode, uint8 ackAddress, uint8 sourceAddress, uint8 priority); ⚠️
User_RequestIndication फ़ंक्शन

Indicates reception of a Request or Request2 PG.

void < User >_RequestIndication(uint8 node, NetworkHandleType channel, uint32 requestedPgn, const J1939Rm_ExtIdInfoType* extIdInfo, uint8 sourceAddress, uint8 destAddress, uint8 priority); ⚠️
User_RequestTimeoutIndication फ़ंक्शन

Indicates timeout of a request triggered with the same parameters.

void < User >_RequestTimeoutIndication(uint8 node, NetworkHandleType channel, uint32 requestedPgn, const J1939Rm_ExtIdInfoType* extIdInfo, uint8 destAddress); ⚠️

कॉलबैक

J1939Rm_RxIndication फ़ंक्शन

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

void J1939Rm_RxIndication(PduIdType RxPduId, const PduInfoType* PduInfoPtr);
J1939Rm_TxConfirmation फ़ंक्शन

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

void J1939Rm_TxConfirmation(PduIdType TxPduId, Std_ReturnType result);

चक्रीय

J1939Rm_MainFunction फ़ंक्शन

Main function of the J1939 Request Manager. Used for scheduling purposes and timeout supervision.

void J1939Rm_MainFunction(void);

टाइप

J1939Rm_AckCode टाइप

This type represents the available kinds of acknowledgements. Variation –

J1939Rm_ConfigType टाइप

This is the base type for the configuration of the J1939 Request Manager. A pointer to an instance of this structure will be used in the initialization of the J1939 Request Manager. The content of this structure is defined in chapter 10 Configuration specification.

This type represents a set of extended identifiers. Variation –

J1939Rm_ExtIdType टाइप

This type represents the available kinds of extended identifier usage. Variation –

J1939Rm_StateType टाइप

This type represents the communication state of the J1939 Request Manager.

आवश्यकताएँ

SWS_J1939Rm_00002 requirement

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN is configured via J1939RmUserRequestPGN to trigger either the J1939 Diagnostic Communica- tion Manager or a CDD , the J1939 Request Manager shall call the corresponding User_RequestIndication .

SWS_J1939Rm_00003 requirement

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN is configured via J1939RmUserRequestPGN to be forwarded to the RTE , the J1939 Request Man- ager shall call the corresponding service port function.

SWS_J1939Rm_00007 requirement

The J1939 Request Manager shall only accept re- quests addressed to the whole network (global DA ), or to one of the configured ad- dresses of the ECU (see J1939RmNmNodeRef ).

SWS_J1939Rm_00008 requirement

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN or the re- quested extended identifier bytes are not configured, and the destina- tion address is not the broadcast address, the J1939 Request Manager shall call PduR_J1939RmTransmit to send a negative acknowledgement ( NACK ).

SWS_J1939Rm_00009 requirement

When a BSW module, a CDD , or an SW-C (via service port and RTE ) calls J1939Rm_SendAck , the J1939 Request Manager shall call PduR_J1939RmTransmit to send the required acknowledgement.

SWS_J1939Rm_00011 requirement

When J1939Rm_Init is called in initialized state, the J1939 Request Manager shall not re-initialize its internal variables. It shall instead call Det_ReportError with the error code J1939Rm.J1939RM_E_REINIT if DET reporting is enabled (see J1939RmDevErrorDetect ).

SWS_J1939Rm_00012 requirement

A call to J1939Rm_Init initializes all internal variables and sets the J1939 Request Manager to the initialized state.

SWS_J1939Rm_00013 requirement

A call to J1939Rm_DeInit sets the J1939 Request Manager back to the uninitialized state.

SWS_J1939Rm_00014 requirement

A call to J1939Rm_SetState sets the state of a node's channel to online or offline.

SWS_J1939Rm_00015 requirement

In the offline state, the J1939 Request Manager only processes requests for the AddressClaimed PG , while timeout supervision and ac- knowledgement handling are completely disabled.

SWS_J1939Rm_00016 requirement

When a BSW module, a CDD , or an SW-C (via service port and RTE ) calls J1939Rm_SendRequest , the J1939 Request Manager shall call PduR_J1939RmTransmit to send the request.

SWS_J1939Rm_00017 requirement

If timeout supervision is enabled for the caller of J1939Rm_SendRequest via J1939RmUserTimeoutSupervision , and the param- eter checkTimeout is TRUE, and the destination address is not the broadcast ad- dress (0xFF): The J1939 Request Manager shall start timeout supervision.

SWS_J1939Rm_00018 requirement

Transmission requests for the Acknowledgement PG shall be queued when a previous transmission of this PG is still pending. The size of this queue is determined by J1939RmAckQueueSize .

SWS_J1939Rm_00019 requirement

The J1939 Request Manager shall use the J1939Rm_- TxConfirmation with result E_OK of the associated I-PDU to trigger transmission of pending Acknowledgement PGs .

SWS_J1939Rm_00020 requirement

If the J1939Rm_TxConfirmation is called with result E_NOT_OK , the J1939 Request Manager shall flush the Acknowledgement PG queue.

SWS_J1939Rm_00021 requirement

Transmission requests for the Request PG shall be queued when a previous transmission of this PG is still pending. The size of this queue is determined by J1939RmRequestQueueSize .

SWS_J1939Rm_00022 requirement

The J1939 Request Manager shall use the J1939Rm_- TxConfirmation with result E_OK of the associated I-PDU to trigger transmission of pending Request and Request2 PGs .

SWS_J1939Rm_00023 requirement

If the J1939Rm_TxConfirmation is called with result E_NOT_OK , the J1939 Request Manager shall flush the corresponding request PG queue.

SWS_J1939Rm_00024 requirement

When J1939Rm_SendRequest is called with the param- eter checkTimeout set to TRUE and a destination address that is not the broadcast address (0xFF), and timeout handling is enabled for the caller via J1939RmUserTimeoutSupervision : The J1939 Request Manager shall store (separately for each node) the calling module's user ID, the PGN , extended iden- tifier bytes , the source address , and the destination address of the re- quest.

SWS_J1939Rm_00025 requirement

When a request is sent with the global destination ad- dress , it shall also be handled internally as if it was received via J1939Rm_RxIndi- cation .

SWS_J1939Rm_00026 requirement

The J1939 Request Manager shall only accept ac- knowledgements where the AddressAcknowledged is set to one of the configured ad- dresses of the ECU (see J1939RmNmNodeRef ).

SWS_J1939Rm_00027 requirement

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of an acknowledgement which does not match a pending request, and the acknowledged PGN is configured via J1939RmUserAckPGN to trigger a CDD , the J1939 Request Manager shall call the corresponding User_AckIndi- cation .

SWS_J1939Rm_00028 requirement

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of an acknowledgement which does not match a pend- ing request, and the acknowledged PGN is configured via J1939RmUserAckPGN to be forwarded to the RTE , the J1939 Request Manager shall call the corresponding service port function.

SWS_J1939Rm_00029 requirement

When an acknowledgement matching the request is re- ceived, when a configured COM RxIPduCallout is triggered which matches the request, or when a CDD or an application SW-C calls J1939Rm_CancelRequestTimeout , the timeout supervision of the request is stopped.

SWS_J1939Rm_00030 requirement

If the timeout supervision for a request reaches 1.25s, the J1939 Request Manager shall call the User_RequestTimeoutIndication cor- responding to the userId parameter of the initial J1939Rm_SendRequest .

SWS_J1939Rm_00031 requirement

Type of error Related error code Error value An API was called while the module was uninitialized J1939RM_E_UNINIT 0x01 The Init API was called twice J1939RM_E_REINIT 0x02 J1939Rm_Init was called with an invalid configuration pointer J1939RM_E_INIT_FAILED 0x03 An API service was called with a NULL pointer J1939RM_E_PARAM_POINTER 0x10 An API service was called with a wrong ID J1939RM_E_INVALID_PDU_SDU_ID 0x11 An API service was called with wrong network handle J1939RM_E_INVALID_NETWORK_ID 0x12 The API J1939Rm_SetState was called with a wrong state J1939RM_E_INVALID_STATE 0x13 An API was called with an illegal user ID J1939RM_E_INVALID_USER 0x14 An API was called with an unknown or illegal PGN J1939RM_E_INVALID_PGN 0x15 An API was called with an illegal priority J1939RM_E_INVALID_PRIO 0x16 An API was called with an illegal node address J1939RM_E_INVALID_ADDRESS 0x17 An API was called with an illegal Boolean option J1939RM_E_INVALID_OPTION 0x18 An API was called with an illegal AckCode J1939RM_E_INVALID_ACK_CODE 0x19 An API was called with an illegal node ID J1939RM_E_INVALID_NODE_ID 0x1a An API was called with invalid extended identifier bytes J1939RM_E_INVALID_EXTID_INFO 0x1b

SWS_J1939Rm_00033 requirement

If DET reporting is enabled via J1939RmDevErrorDetect , the J1939 Request Manager shall check PduIdType parameters ( PDU IDs) of its API functions against the configured IDs, and shall report the development error J1939Rm.J1939RM_E_INVALID_PDU_SDU_ID when an unknown ID is provided by the call.

SWS_J1939Rm_00035 requirement

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

SWS_J1939Rm_00040 requirement

The J1939 Request Manager shall reject the state change by returning E_NOT_OK when the newState is not in the valid range. If DET is enabled via J1939RmDevErrorDetect , the development error J1939Rm.- J1939RM_E_INVALID_STATE shall be reported.

SWS_J1939Rm_00041 requirement

If DET reporting is enabled via J1939RmDevErrorDetect , the J1939 Request Manager shall check NetworkHandleType parameters (network handles) of its API functions against the referenced network handles of ComM, and shall report the development error J1939Rm.J1939RM_E_INVALID_NETWORK_ID when an unknown handle is provided by the call.

SWS_J1939Rm_00043 requirement

The frequency of invocations of J1939Rm_MainFunction is determined by the configuration parameter J1939RmMainFunctionPeriod .

SWS_J1939Rm_00044 requirement

PduR_J1939RmTransmit PduR_J1939Rm.h Requests transmission of a PDU.

SWS_J1939Rm_00045 requirement

Com_TriggerIPDUSendWithMetaData Com.h By a call to Com_TriggerIPDUSendWithMetaData the AUTOSAR COM module updates its internal metadata for the I-PDU with the given ID by copying the metadata from the given position and with respect to length of the globally configured Meta DataType of this I-PDU. Then the I-PDU is triggered for transmission. Det_ReportError Det.h Service to report development errors. J1939Dcm_RequestIndication J1939Dcm.h Indicates reception of a Request or Request2 PG. J1939Nm_RequestIndication J1939Nm.h Indicates reception of a Request or Request2 PG.

SWS_J1939Rm_00066 requirement

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of an acknowledgement which matches a pending re- quest (acknowledged PGN , source address , acknowledged address), the J1939 Request Manager shall call the User_AckIndication or the service port function corresponding to the stored user ID.

SWS_J1939Rm_00067 requirement

The J1939 Request Manager shall reject transmission of a request by returning E_NOT_OK when the requestedPgn , the extIdType element within the extIdInfo , the destAddress , or the priority are not in the valid range, or when the userId is not one of the configured user IDs (see J1939RmUserId ), or when checkTimeout is true but timeout handling is disabled for the calling module (see J1939RmUserTimeoutSupervision ). If DET is enabled via J1939RmDevErrorDetect , the corresponding development error shall be reported: J1939Rm.J1939RM_E_INVALID_USER for userId , J1939Rm.J1939RM_E_IN- VALID_EXTID_INFO for extIdInfo , J1939Rm.J1939RM_E_INVALID_PGN for re- questedPgn , J1939Rm.J1939RM_E_INVALID_PRIO for priority , J1939Rm.- J1939RM_E_INVALID_ADDRESS for destAddress , and J1939Rm.J1939RM_E_- INVALID_OPTION for checkTimeout .

SWS_J1939Rm_00068 requirement

The J1939 Request Manager shall reject transmission of a request by returning E_NOT_OK when another request is pending and the request queue is full.

SWS_J1939Rm_00069 requirement

The J1939 Request Manager shall ignore the time- out cancellation request when the requestedPgn , the extIdType element within the extIdInfo , or the destAddress are not in the valid range, or when the userId is not one of the configured user IDs (see J1939RmUserId ), or if no suitable entry can be found in the list of pending requests. If DET is enabled via J1939RmDevErrorDetect , the corresponding development error shall be re- ported: J1939Rm.J1939RM_E_INVALID_USER for userId , J1939Rm.J1939RM_- E_INVALID_PGN for requestedPgn , J1939Rm.J1939RM_E_INVALID_EXTID_- INFO for extIdInfo , and J1939Rm.J1939RM_E_INVALID_ADDRESS for destAd- dress .

SWS_J1939Rm_00070 requirement

The J1939 Request Manager shall reject transmission of an acknowledgement by returning E_NOT_OK when the ackPgn , the extId- Type element within the extIdInfo , the ackAddress , or the priority are not in the valid range, or when the userId is not one of the configured user IDs (see J1939RmUserId ). If DET is enabled via J1939RmDevErrorDetect , the corre- sponding development error shall be reported: J1939Rm.J1939RM_E_INVALID_- USER for userId , J1939Rm.J1939RM_E_INVALID_EXTID_INFO for extId- Info , J1939Rm.J1939RM_E_INVALID_PGN for ackPgn , J1939Rm.J1939RM_E_- INVALID_ACK_CODE for ackCode , J1939Rm.J1939RM_E_INVALID_ADDRESS for ackAddress , and J1939Rm.J1939RM_E_INVALID_PRIO for priority .

SWS_J1939Rm_00071 requirement

The J1939 Request Manager shall reject transmission of an acknowledgement by returning E_NOT_OK when another acknowledgement is pending and the acknowledgement queue is full.

SWS_J1939Rm_00072 requirement

The J1939 Request Manager shall use the J1939Rm_- MainFunction for timing related purposes.

SWS_J1939Rm_00073 requirement

During initialization via J1939Rm_Init , the J1939 Re- quest Manager assumes the offline state for all nodes on all channels.

SWS_J1939Rm_00074 requirement

The J1939Rm_SendRequest API function shall only be available if J1939RmUserSendRequest is set for at least one user.

SWS_J1939Rm_00075 requirement

The J1939Rm_CancelRequestTimeout API function shall only be available if J1939RmUserTimeoutSupervision is set for at least one user.

SWS_J1939Rm_00076 requirement

The J1939Rm_SendAck API function shall only be avail- able if J1939RmUserSendAck is set for at least one user.

SWS_J1939Rm_00079 requirement

The J1939Rm_CheckReceivedComIPdu call back func- tion shall only be available if J1939RmUserTimeoutSupervision is set for at least one user.

SWS_J1939Rm_00080 requirement

The J1939Rm_RxIndication call back func- tion shall only be available if J1939RmUserAckIndication or J1939RmUserRequestIndication is set for at least one user.

SWS_J1939Rm_00081 requirement

The J1939Rm_TxConfirmation call back function shall only be available if J1939RmUserSendAck or J1939RmUserSendRequest is set for at least one user.

SWS_J1939Rm_00082 requirement

The Com_TriggerIPDUSendWithMetaData function is only required if at least one J1939RmComUser is configured.

SWS_J1939Rm_00083 requirement

The J1939Dcm_RequestIndication function is only re- quired if at least one J1939RmDcmUser is configured.

SWS_J1939Rm_00084 requirement

The J1939Nm_RequestIndication function is only re- quired if at least one J1939RmNmUser is configured.

SWS_J1939Rm_00085 requirement

The configured User_RequestIndication function shall be available for each user that has J1939RmUserRequestIndication enabled.

SWS_J1939Rm_00086 requirement

The configured User_AckIndication function shall be available for each user that has J1939RmUserAckIndication enabled.

SWS_J1939Rm_00087 requirement

The configured User_RequestTime- outIndication function shall be available for each user that has J1939RmUserTimeoutSupervision enabled.

SWS_J1939Rm_00096 requirement

If DET reporting is enabled via J1939RmDevErrorDetect , the J1939 Request Manager shall check node handle parameters of its API func- tions against the node handles of J1939Nm referenced via J1939RmNmNodeRef , and shall report the development error J1939Rm.J1939RM_E_INVALID_NODE_ID when an unknown handle is provided by the call.

SWS_J1939Rm_00097 requirement

Type uint8 Port Defined Argument Value(s) Value {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser/J1939Rm RteUser/J1939RmUserId.value)} Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportRequestTransmission)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

SWS_J1939Rm_00098 requirement

Type uint8 Port Defined Argument Value(s) Value {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser/J1939Rm RteUser/J1939RmUserId.value)} Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportAckTransmission)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

SWS_J1939Rm_00099 requirement

Type uint8 Port Defined Argument Value(s) Value {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser/J1939Rm RteUser/J1939RmUserId.value)} Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportTimeoutSupervision)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

SWS_J1939Rm_00100 requirement

Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportRequestIndication)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

SWS_J1939Rm_00101 requirement

Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportAckIndication)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

SWS_J1939Rm_00102 requirement

Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportTimeoutSupervision)} == true user = {ecuc(J1939Rm/J1939RmConfigSet/J1939RmNode/J1939RmUser.SHORT-NAME)}

SWS_J1939Rm_00103 requirement

Name AppSendAck Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportAckTransmission)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation SendAck Comment Requests transmission of an Acknowledgement PG. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the acknowledgement shall be sent. Variation – ackPgn Type uint32 Direction IN Comment Acknowledged PGN. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Direction IN Comment – Variation – ackCode Type J1939Rm_AckCode Direction IN Comment Type of acknowledgement, see definition of J1939Rm_AckCode for available codes. Variation – ackAddress Type uint8 Direction IN Comment Address of the node that sent the request. Variation – priority Parameters Type uint8 Direction IN Comment Priority of the Acknowledgement PG. Variation – broadcast Type boolean Direction IN Comment Indicates whether the ACKM is a response to a broadcast request. Variation – Possible Errors E_OK E_NOT_OK

SWS_J1939Rm_00104 requirement

Name AppSendRequest Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportRequestTransmission)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation SendRequest Comment Requests transmission of a Request or Request2 PG. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the request shall be sent. Variation – requestedPgn Type uint32 Direction IN Comment PGN of the requested PG. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Direction IN Comment – Variation – destAddress Type uint8 Parameters Direction IN Comment Address of the destination node or 0xFF for broadcast. Variation – priority Type uint8 Direction IN Comment Priority of the Request PG. Variation – checkTimeout Type boolean Direction IN Comment TRUE: Timeout supervision will be performed FALSE: No timeout supervision will be started Variation – Possible Errors E_OK E_NOT_OK

SWS_J1939Rm_00105 requirement

Name AppCancelRequestTimeout Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportTimeoutSupervision)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation CancelRequestTimeout Comment Cancels timeout monitoring of a request. If the request is not active, or timeout monitoring was not requested, this call has no effect. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the request was sent. Variation – requestedPgn Type uint32 Direction IN Comment PGN of the requested PG. Variation – extIdInfo Parameters Type J1939Rm_ExtIdInfoType Direction IN Comment – Variation – destAddress Type uint8 Direction IN Comment Address of the destination node or 0xFF for broadcast. Variation – Possible Errors E_OK E_NOT_OK

SWS_J1939Rm_00106 requirement

Name AppAckIndication Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportAckIndication)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation AckIndication Comment Indicates reception of an Acknowledgement PG. Variation – node Type uint8 Direction IN Comment Node by which the acknowledgement was received. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the acknowledgement was received. Variation – ackPgn Type uint32 Direction IN Comment Acknowledged PGN. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Parameters Direction IN Comment Extended identifier bytes. Variation – ackCode Type J1939Rm_AckCode Direction IN Comment Type of acknowledgement, see definition of J1939Rm_AckCode for available codes. Variation – ackAddress Type uint8 Direction IN Comment Address of this node. Variation – sourceAddress Type uint8 Direction IN Comment Address of the node that sent the Acknowledgement PG. Variation – priority Type uint8 Direction IN Comment Priority of the Acknowledgement PG. Variation – Possible Errors E_OK E_NOT_OK

SWS_J1939Rm_00107 requirement

Name AppRequestIndication Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportRequestIndication)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation RequestIndication Comment Indicates reception of a Request or Request2 PG. Variation – node Type uint8 Parameters Direction IN Comment Node by which the request was received. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the request was received. Variation – requestedPgn Type uint32 Direction IN Comment PGN of the requested PG. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Direction IN Comment Extended identifier bytes. Variation – sourceAddress Type uint8 Direction IN Comment Address of the node that sent the Request PG. Variation – destAddress Type uint8 Direction IN Comment Address of this node or 0xFF for broadcast. Variation – priority Type uint8 Direction IN Comment Priority of the Request PG. Variation – Possible Errors E_OK E_NOT_OK

SWS_J1939Rm_00108 requirement

Name AppRequestTimeoutIndication Comment – IsService true Variation {ecuc(J1939Rm/J1939RmGeneral.J1939RmSupportTimeoutSupervision)} == true 0 E_OK Operation successful Possible Errors 1 E_NOT_OK Operation failed Operation RequestTimeoutIndication Comment Indicates timeout of a request triggered with the same parameters. Variation – node Type uint8 Direction IN Comment Node by which the request was sent. Variation – channel Type NetworkHandleType Direction IN Comment Channel on which the request was sent. Variation – requestedPgn Type uint32 Direction IN Comment PGN of the requested PG. Variation – extIdInfo Type J1939Rm_ExtIdInfoType Direction IN Comment Extended identifier bytes. Variation – destAddress Type uint8 Direction IN Comment Address of the destination node or 0xFF for broadcast. Parameters Variation – Possible Errors E_OK E_NOT_OK

SWS_J1939Rm_00111 requirement

J1939Rm shall include the header file J1939Nm.h if at least one J1939RmNmUser is configured.

SWS_J1939Rm_00112 requirement

J1939Rm shall include the header file J1939Dcm.h if at least one J1939RmDcmUser is configured.

SWS_J1939Rm_00113 requirement

J1939Rm shall include a header file named <apiSer- vicePrefix>_Cbk.h for every configured J1939RmCddUser .

SWS_J1939Rm_00114 requirement

J1939Rm shall include the header file Com.h if at least one J1939RmComUser is configured.

SWS_J1939Rm_00115 requirement

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN is configured via J1939RmComIPduPGN to be handled via COM , and when the extended identi- fier bytes of an RQST2 match the multiplexor values of a multiplexed message, the J1939 Request Manager shall prepare the MetaData from the given information and provide it to COM via Com_TriggerIPDUSendWithMetaData together with the PduId of the transmitted COM I-PDU referenced by J1939RmComIPduRef .

SWS_J1939Rm_00116 requirement

When J1939Rm_RxIndication is called by the PDU Router to indicate reception of a request, and the requested PGN is AddressClaimed ( AC , 0x0EE00), the J1939 Request Manager shall call J1939Nm_RequestIndication .

SWS_J1939Rm_00117 requirement

When no extended identifier bytes are provided with J1939Rm_SendRequest , J1939Rm shall send an RQST PG . When one or more extended identifier bytes are provided, an RQST2 PG shall be sent.

SWS_J1939Rm_00118 requirement

Transmission requests for the Request2 PG shall be queued when a previous transmission of this PG is still pending. The size of this queue is determined by J1939RmRequestQueue2Size .

SWS_J1939Rm_00119 requirement

Meta data items of type CAN_ID_32 contain the source address in the fourth (least significant) byte.

SWS_J1939Rm_00120 requirement

Meta data items of type CAN_ID_32 contain the destina- tion address in the third byte.

SWS_J1939Rm_00121 requirement

Meta data items of type CAN_ID_32 contain the priority in the bits 2-4 of the first (most significant) byte, where bit 0 is the least significant bit of a byte.

SWS_J1939Rm_00122 requirement

The J1939 Request Manager shall use a meta data item of type CAN_ID_32 to determine the source address , destination ad- dress , and priority of received request PGs .

SWS_J1939Rm_00123 requirement

The J1939 Request Manager shall use a meta data item of type CAN_ID_32 to provide the source address and priority of transmitted Acknowledgement PGs .

SWS_J1939Rm_00124 requirement

The J1939 Request Manager shall use a meta data item of type CAN_ID_32 to provide the source address , destination address , and priority of transmitted Request and Request2 PGs .

SWS_J1939Rm_00125 requirement

The J1939 Request Manager shall use a meta data item of type CAN_ID_32 to determine the source address and priority of received Acknowledgement PGs .

SWS_J1939Rm_00126 requirement

When an acknowledgement is sent, it shall also be handled internally as if it was received via J1939Rm_RxIndication .

SWS_J1939Rm_00127 requirement

If J1939RmGatewaySupport is enabled, and a J1939RmChannel is linked to another J1939RmChannel via a J1939NmSharedAddressSpace : All Request , Request2 , and Acknowledgement PGs that are received on the first J1939RmChannel shall be forwarded to the second J1939RmChannel .

SWS_J1939Rm_00128 requirement

If J1939RmGatewaySupport is enabled, and a J1939RmChannel is referenced by another J1939RmChannel via a J1939NmExternalNodeGatewayedChannelRef : All Request , Request2 , and Acknowledgement PGs that are received on the first J1939RmChannel shall be forwarded to the second J1939RmChannel .

SWS_J1939Rm_00129 requirement

Request and Request2 PGs shall only be forwarded if the destination address of the PG is the global address (0xFF) or a destination address that does not correspond to any J1939NmNodePreferredAddress refer- enced by a J1939RmNode that references the J1939RmChannel on which the PG was received.