Diagnostic Communication Manager (DCM)
The DCM implements unified diagnostic services according to ISO 14229-1 (UDS) and ISO 15765-4 (OBD). It manages diagnostic sessions, security levels, and service routing.
Funktionen — Übersicht
void Dcm_Init (const Dcm_ConfigType* ConfigPtr);Service for basic initialization of DCM module.void Dcm_GetVersionInfo (Std_VersionInfoType* versionInfo);Returns the version information of this moduleStd_ReturnType Dcm_DemTriggerOnDTCStatus (uint32 DTC, Dem_UdsStatusByteType DTCStatusOld, Dem_UdsStatusByteType DTCStatusNew);Triggers on changes of the UDS status byte.Std_ReturnType Dcm_GetVin (uint8* Data);Function to get the VIN (as defined in SAE J1979-DA)void Dcm_BndMWriteBlockFinish (BndM_BlockIdType BlockId, BndM_ResultType result);Called by BndM to indicate that a block write operation has finished.Std_ReturnType Dcm_SetDeauthenticatedRole (uint16 connectionId, Dcm_AuthenticationRoleType deauthenticatedRole);Sets a new role used in deauthenticated state for that connection.Std_ReturnType Dcm_GetSecurityLevel (Dcm_SecLevelType* SecLevel);This function provides the active security level value.Std_ReturnType Dcm_GetSesCtrlType (Dcm_SesCtrlType* SesCtrlType);This function provides the active session control type value.Std_ReturnType Dcm_GetActiveProtocol (Dcm_ProtocolType* ActiveProtocolType, uint16* ConnectionId, uint16* TesterSourceAddress);This function returns the active UDS protocol detailsStd_ReturnType Dcm_ResetToDefaultSession (void);The call to this function allows the application to reset the current session to Default session.Std_ReturnType Dcm_TriggerOnEvent (uint8 RoeEventId);The call to this function allows to trigger an event linked to a ResponseOnEvent request.Std_ReturnType Dcm_SetActiveDiagnostic (boolean active);Allows to activate and deactivate the call of ComM_DCM_ActiveDiagnostic() function.BufReq_ReturnType Dcm_StartOfReception (PduIdType id, const PduInfoType* info, PduLengthType TpSduLength, PduLengthType* bufferSizePtr);This function is called at the start of receiving an N-SDU.BufReq_ReturnType Dcm_CopyRxData (PduIdType id, const PduInfoType* info, PduLengthType* bufferSizePtr);This function is called to provide the received data of an I-PDU segment (N-PDU) to the upper layer.void Dcm_TpRxIndication (PduIdType id, Std_ReturnType result);Called after an I-PDU has been received via the TP API, the result indicates whether the transmission was successful or not.BufReq_ReturnType Dcm_CopyTxData (PduIdType id, const PduInfoType* info, const RetryInfoType* retry, PduLengthType* availableDataPtr);This function is called to acquire the transmit data of an I-PDU segment (N-PDU).void Dcm_TpTxConfirmation (PduIdType id, Std_ReturnType result);This function is called after the I-PDU has been transmitted on its network, the result indicates whether the transmission was...void Dcm_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.void Dcm_ComM_NoComModeEntered (uint8 NetworkId);This call informs the Dcm module about a ComM mode change to COMM_NO_ COMMUNICATION.void Dcm_ComM_SilentComModeEntered (uint8 NetworkId);This call informs the Dcm module about a ComM mode change to COMM_SILENT_ COMMUNICATION.void Dcm_ComM_FullComModeEntered (uint8 NetworkId);This call informs the Dcm module about a ComM mode change to COMM_FULL_ COMMUNICATION.Std_ReturnType Dcm_CsmAsyncJobFinished (Csm_ResultType result);Can be called from Csm upon finishing an asynchronous job processing.Std_ReturnType Dcm_KeyMAsyncCertificateVerifyFinished (KeyM_CertificateIdType CertID, KeyM_CertificateStatusType Result);Can be called from Key upon finishing an asynchronous certificate verification.Dcm_ReturnReadMemoryType Dcm_ReadMemory (Dcm_OpStatusType OpStatus, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, uint8* MemoryData, Dcm_NegativeResponseCodeType* ErrorCode);The Dcm_ReadMemory callout is used to request memory data identified by the parameter memoryAddress and memorySize from the...Dcm_ReturnWriteMemoryType Dcm_WriteMemory (Dcm_OpStatusType OpStatus, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, const uint8* MemoryData, Dcm_NegativeResponseCodeType* ErrorCode);The Dcm_WriteMemory callout is used to write memory data identified by the parameter memoryAddress and memorySize.Std_ReturnType Dcm_SetProgConditions (Dcm_OpStatusType OpStatus, const Dcm_ProgConditionsType* ProgConditions);The Dcm_SetProgConditions callout allows the integrator to store relevant information prior to jumping to bootloader / jump...Dcm_EcuStartModeType Dcm_GetProgConditions (Dcm_ProgConditionsType* ProgConditions);The Dcm_GetProgConditions callout is called upon Dcm initialization and allows to determine if a response ($50 or $51) has to...Std_ReturnType Dcm_ProcessRequestAddFile (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, uint8 dataFormatIdentifier, uint64 fileSizeUncompressed, uint64 fileSizeCompressed, uint64* maxNumberOfBlockLength, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.Std_ReturnType Dcm_ProcessRequestDeleteFile (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.Std_ReturnType Dcm_ProcessRequestReplaceFile (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, uint8 dataFormatIdentifier, uint64 fileSizeUncompressed, uint64 fileSizeCompressed, uint64* maxNumberOfBlockLength, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.Std_ReturnType Dcm_ProcessRequestReadFile (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, uint8 dataFormatIdentifier, uint64 fileSizeUncompressed, uint64 fileSizeCompressed, uint64* maxNumberOfBlockLength, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.Std_ReturnType Dcm_ProcessRequestReadDir (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, uint64* dirInfoLength, uint64* maxNumberOfBlockLength, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.Std_ReturnType Dcm_WriteFile (Dcm_OpStatusType OpStatus, uint64 DataLength, uint8* Data, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.Std_ReturnType Dcm_ReadFileOrDir (Dcm_OpStatusType OpStatus, uint64* DataLength, uint8* Data, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.void Dcm_MainFunction (void);This service is used for processing the tasks of the main loop.Std_ReturnType Xxx_GetSeed (const uint8* SecurityAccessDataRecord, Dcm_OpStatusType OpStatus, uint8* Seed, Dcm_NegativeResponseCodeType* ErrorCode);Request to application for asynchronous provision of seed valueStd_ReturnType Xxx_GetSeed (Dcm_OpStatusType OpStatus, uint8* Seed, Dcm_NegativeResponseCodeType* ErrorCode);Request to application for asynchronous provision of seed valueStd_ReturnType Xxx_CompareKey (const uint8* Key, Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);Request to application for asynchronous comparing key (DcmDspSecurityUsePort = USE_ ASYNCH_CLIENT_SERVER)Std_ReturnType Xxx_GetSecurityAttemptCounter (Dcm_OpStatusType OpStatus, uint8* AttemptCounter);Read the attempt counter for a specific security level from the applicationStd_ReturnType Xxx_SetSecurityAttemptCounter (Dcm_OpStatusType OpStatus, uint8 AttemptCounter);Set the attempt counter for a specific security level in the applicationStd_ReturnType Xxx_ReadData (uint8* Data);This function requests to the application a data value of a DID/PID if DcmDspDataUsePort is set to USE_DATA_SYNCH_CLIENT_SERVER.Std_ReturnType Xxx_ReadData (Dcm_OpStatusType OpStatus, uint8* Data);This function requests to the application a data value of a DID/PID if DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER.Std_ReturnType Xxx_ReadData (Dcm_OpStatusType OpStatus, uint8* Data, Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application a data value of a DID/PID if DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER.Std_ReturnType Xxx_WriteData (const uint8* Data, Dcm_NegativeResponseCodeType* ErrorCode);This function requests the application to write a data value of a DID.Std_ReturnType Xxx_WriteData (const uint8* Data, uint16 DataLength, Dcm_NegativeResponseCodeType* ErrorCode);This function requests the application to write a data value of a DID.Std_ReturnType Xxx_WriteData (const uint8* Data, Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);This function requests the application to write a data value of a DID.Std_ReturnType Xxx_WriteData (const uint8* Data, uint16 DataLength, Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);This function requests the application to write a data value of a DID.Std_ReturnType Xxx_ReadDataLength (uint16* DataLength);This function requests the application to return the data length in byte of a Data.Std_ReturnType Xxx_ReadDataLength (Dcm_OpStatusType OpStatus, uint16* DataLength);This function requests the application to return the data length in byte of a Data.Std_ReturnType Xxx_ConditionCheckRead (Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application if the conditions to read the Data are correct.Std_ReturnType Xxx_ConditionCheckRead (Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application if the conditions to read the Data are correct.Std_ReturnType Xxx_GetScalingInformation (uint8* ScalingInfo, Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application for the scaling information of a Data.Std_ReturnType Xxx_GetScalingInformation (Dcm_OpStatusType OpStatus, uint8* ScalingInfo, Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application for the scaling information of a Data.Std_ReturnType Xxx_ReturnControlToECU ([ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application to return control to ECU of an IOControl.Std_ReturnType Xxx_ResetToDefault ([ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application to reset an IOControl to default value.Std_ReturnType Xxx_ResetToDefault (Dcm_OpStatusType OpStatus, [ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application to reset an IOControl to default value.Std_ReturnType Xxx_FreezeCurrentStateManager ([ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application to freeze the current state of an IOControl.Std_ReturnType Xxx_FreezeCurrentStateManager (Dcm_OpStatusType OpStatus, [ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application to freeze the current state of an IOControl.Std_ReturnType Xxx_ShortTermAdjustment (const uint8* ControlStateInfo, [ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application to adjust the IO signal.Std_ReturnType Xxx_ShortTermAdjustment (const uint8* ControlStateInfo, uint16 DataLength, Dcm_OpStatusType OpStatus, [ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application to adjust the IO signal.Std_ReturnType Xxx_IsDidAvailable (uint16 DID, Dcm_OpStatusType OpStatus, Dcm_DidSupportedType* supported);This function requests if a specific DID is available within the range or not.Std_ReturnType Xxx_ReadDidData (uint16 DID, uint8* Data, Dcm_OpStatusType OpStatus, uint16 DataLength, Dcm_NegativeResponseCodeType ErrorCode);This function requests to the application a data value of a DIDStd_ReturnType Xxx_WriteDidData (uint16 DID, const uint8* Data, Dcm_OpStatusType OpStatus, uint16 DataLength, Dcm_NegativeResponseCodeType ErrorCode);This function requests the application to write a data value of a DID.Std_ReturnType Xxx_ReadDidRangeDataLength (uint16 DID, Dcm_OpStatusType OpStatus, uint16* DataLength);This function requests the application to return the data length of a DID Range.Std_ReturnType Xxx_GetInfotypeValueData (Dcm_OpStatusType OpStatus, uint8* DataValueBuffer, uint8* DataValueBufferSize);The function provides the data related to the requested Infotype.Std_ReturnType Xxx_Start ([ DcmDspRoutineSignalType dataIn_1, ... DcmDspRoutineSignalType dataIn_n ], [ const uint8* dataInVar ], Manager Dcm_OpStatusType OpStatus, [ DcmDspRoutineSignalType dataOut_1, ... DcmDspRoutineSignalType dataOut_n ], [ uint8* dataOutVar ], [ uint16* currentDataLength ], Dcm_NegativeResponseCodeType ErrorCode); ⚠️This function requests to the application to start the execution of a routine.Std_ReturnType Xxx_StartConfirmation (Dcm_ConfirmationStatusType ConfirmationStatus);This function indicates the transmission of a response to a StartRoutine requestStd_ReturnType Xxx_Stop ([ DcmDspRoutineSignalType dataIn_1, ... DcmDspRoutineSignalType dataIn_n ], [ const uint8* dataInVar ], [ DcmDspRoutineSignalType dataOut_1, ... DcmDspRoutineSignalType dataOut_n ], [ uint8* dataOutVar ], [ uint16* currentDataLength ], Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application to stop the execution of a routineStd_ReturnType Xxx_StopConfirmation (Dcm_ConfirmationStatusType ConfirmationStatus);This function indicates the transmission of a response to a StopRoutine requestStd_ReturnType Xxx_RequestResults (Dcm_OpStatusType OpStatus, [ DcmDspRoutineSignalType* dataIn_1, ... DcmDspRoutineSignalType* dataIn_n ], [ const uint8* dataInVar ], [ DcmDspRoutineSignalType* dataOut_1, ... DcmDspRoutineSignalType* dataOut_n ], [ uint8* dataOutVar ], [ uint16* variableDataLength ], Dcm_NegativeResponseCodeType* ErrorCode);This function requests to the application the result of a routine executionStd_ReturnType Xxx_RequestResultsConfirmation (Dcm_ConfirmationStatusType ConfirmationStatus);This function indicates the transmission of a response to a RequestRoutineResults requestStd_ReturnType Xxx_RequestControl (uint8* OutBuffer, const uint8* InBuffer);Invokes a TID-specific function taking a configured number of bytes as input and returing a fixed number of bytes as output.Std_ReturnType Xxx_StartProtocol (Dcm_ProtocolType ProtocolType, uint16 TesterSourceAddress, uint16 ConnectionId);This function allows the application to examine the environment conditions and enable/disable further processing of the protocol.Std_ReturnType Xxx_StopProtocol (Dcm_ProtocolType ProtocolType, uint16 TesterSourceAddress, uint16 ConnectionId);This function informs the application of the protocol stop.Std_ReturnType Xxx_Indication (uint8 SID, const uint8* RequestData, uint32 DataSize, uint8 ReqType, uint16 ConnectionId, Dcm_NegativeResponseCodeType* ErrorCode, Dcm_ProtocolType ProtocolType, uint16 TesterSourceAddress);This function indicates to the application that a service is about to be executed and allows the application to reject the...Std_ReturnType Xxx_Confirmation (uint8 SID, uint8 ReqType, uint16 ConnectionId, Dcm_ConfirmationStatusType ConfirmationStatus, Dcm_ProtocolType ProtocolType, uint16 TesterSourceAddress);This function confirms to the application the successful transmission or a transmission error of a diagnostic service.Std_ReturnType Xxx_ClearDTCCheckFnc (uint32 GoDTC, Dcm_NegativeResponseCodeType* ErrorCode);Callout function for condition check, manufacturer / supplier specific checks on the groupOf DTC, which is requested to clear.Std_ReturnType Xxx_ProcessRequestDownload (Dcm_OpStatusType OpStatus, uint8 DataFormatIdentifier, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, uint32* BlockLength, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.Std_ReturnType Xxx_ProcessRequestTransferExit (Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.Std_ReturnType Xxx_ProcessRequestUpload (Dcm_OpStatusType OpStatus, uint8 DataFormatIdentifier, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, uint32* BlockLength, Dcm_NegativeResponseCodeType* ErrorCode);Callout function.Dcm_ReturnReadMemoryType Xxx_ProcessTransferDataRead (Dcm_OpStatusType OpStatus, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, Dcm_RequestDataArrayType MemoryData, Dcm_NegativeResponseCodeType* ErrorCode);The ProcessTransferDataRead callout is used to request memory data identified by the parameter memoryAddress and memorySize...Dcm_ReturnWriteMemoryType Xxx_ProcessTransferDataWrite (Dcm_OpStatusType OpStatus, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, const Dcm_RequestDataArrayType MemoryData, Dcm_NegativeResponseCodeType* ErrorCode);The ProcessTransferDataWrite callout is used to write memory data identified by the parameter memoryAddress and memorySize.
Typen — Übersicht
enum Dcm_StatusTypeBase item type to transport status information.enum Dcm_CommunicationModeType Managerstruct Dcm_ConfigTypeThis type defines a data structure for the post build parameters of the DCM.Dcm_ReturnReadMemoryTypeReturn values of Callout Dcm_ReadMemoryDcm_ReturnWriteMemoryTypeReturn type of callout Dcm_WriteMemoryenum Dcm_EcuStartModeTypeAllows the DCM to know if a diagnostic response shall be sent in the case of a jump from bootloaderDcm_ProgConditionsTypeUsed in Dcm_SetProgConditions() to allow the integrator to store relevant information prior to jumping to bootloader / jump...Dcm_MsgItemTypeBase type for diagnostic message itemDcm_MsgTypeBase type for diagnostic message (request, positive or negative response)Dcm_MsgLenTypeLength of diagnostic message (request, positive or negative response).struct Dcm_MsgAddInfoTypeAdditional information on message request.Dcm_IdContextTypeThis message context identifier can be used to determine the relation between request and response confirmation.struct Dcm_MsgContextTypeThis data structure contains all information which is necessary to process a diagnostic message from request to response and...enum Dcm_ExtendedOpStatusTypeenum Dcm_OpStatusTypeenum Dcm_ConfirmationStatusTypeDcm_SecLevelTypeSecurity Level type definitionDcm_SesCtrlTypeSession type definition.Dcm_ProtocolTypeType Dcm_ProtocolType.Dcm_NegativeResponseCodeTypeType Dcm_NegativeResponseCodeType.Dcm_DataArrayTypeDcm_InfoTypeDcm_RequestDataArrayTypeDcm_InputOutputControlParameterTypeDcm_IOOperationResponseTypeDcm_DidSupportedTypeDcm_FileAndDirNameTypeDcm_ResponseDataArrayTypeDcm_AuthenticationRoleTypeDiagnosticSessionControlModeSwitchInterfaceA ModeSwitchInterface PPortPrototype used to notify SW-Cs about the current Diagnostic SessionEcuResetModeSwitchInterfaceA ModeSwitchInterface PPortPrototype used to notify SW-Cs about an upcoming ECU Reset and its typeModeRapidPowerShutDownModeSwitchInterfaceA ModeSwitchInterface PPortPrototype used to notify SW-Cs about the rapid power shut down modeControlDTCSettingModeSwitchInterfaceA ModeSwitchInterface PPortPrototype used to notify SW-Cs about the DTC Setting modeSecurityAccessModeSwitchInterfaceA ModeSwitchInterface PPortPrototype used to notify SW-Cs about the current Security LevelDcmDiagnosticSessionControlModeDeclarationGroup representing the different diagnostic sessions Further modes to be added:...DcmEcuResetModeDeclarationGroup representing the different ECU reset typesDcmModeRapidPowerShutDownModeDeclarationGroup representing the enable/disable state of rapid power shutdownDcmCommunicationControlModeDeclarationGroup representing the different communication control statesDcmControlDTCSettingModeDeclarationGroup representing the enable/disable state for DTC storageDcmResponseOnEventModeDeclarationGroup representing the state of a Response On EventDcmSecurityAccessModeDeclarationGroup representing the different diagnostic security levels Further modes to be added:...
Funktionen & Typen — Detailansicht
函数 Dcm_Init [SWS_Dcm_00037] 📄 PDF
void Dcm_Init (const Dcm_ConfigType* ConfigPtr);
Service for basic initialization of DCM module.
同步且不可重入的函数 Dcm_Init 用于 DCM 模块的基础初始化 [SWS_Dcm_00037]。对于 post-build 变体,它通过参数 ConfigPtr 接收指向配置集的指针,并且没有返回值 [SWS_Dcm_00037]。在执行期间,该模块使用配置中的值初始化所有 DCM 全局变量 [SWS_Dcm_00334]。
在初始化流程中,将配置各个功能区域和状态:
- DDDID 管理:如果配置参数
DcmDDDIDStorage设置为FALSE,DCM 在启动时将所有动态定义的数据标识符(DDDID)初始化为不存在 [SWS_Dcm_00866]。如果该参数设置为TRUE,则从 NvM 恢复 DDDID 定义 [SWS_Dcm_00867]。 - Response on Event (ROE):DCM 在
Dcm_Init期间将每个事件的状态转换为“ROE cleared”状态 [SWS_Dcm_00872]。 - 认证状态:若未配置
DcmDspAuthenticationPersistStateModeRuleRef或引用的模式规则求值结果为false,则该模块将所有认证状态置为“deauthenticated”状态 [SWS_Dcm_01480]。 - 通信状态:
Dcm_Init完成后,DCM 将参数ActiveDiagnostic设置为“DCM_COMM_ACTIVE” [SWS_Dcm_01069]。
关于执行环境,规定 Dcm_Init 为不可重入 [SWS_Dcm_00037]。在接口规范中,未针对该初始化服务指出特定的错误码以及向 DET 或 DEM 发送的标准化错误报告 [SWS_Dcm_00037]。
此使用说明基于AUTOSAR规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_GetVersionInfo [SWS_Dcm_00065] 📄 PDF
void Dcm_GetVersionInfo (Std_VersionInfoType* versionInfo);
Returns the version information of this module
函数 Dcm_DemTriggerOnDTCStatus [SWS_Dcm_00614] 📄 PDF
Std_ReturnType Dcm_DemTriggerOnDTCStatus (uint32 DTC, Dem_UdsStatusByteType DTCStatusOld, Dem_UdsStatusByteType DTCStatusNew);
Triggers on changes of the UDS status byte. Allows to trigger on ROE Event for subservice On DTCStatusChanged.
使用
同步接口 Dcm_DemTriggerOnDTCStatus(服务 ID 0x2B)通过头文件 Dcm_Dem.h 提供,用于向 DCM 报告 UDS 状态字节的更改 [SWS_Dcm_00614]。这允许 DCM 针对诊断服务子服务 OnDTCStatusChanged 触发事件响应(ROE)事件 [SWS_Dcm_00614]。在调用时,该函数接收三个输入参数:受影响的故障代码 DTC(uint32)、先前状态 DTCStatusOld(Dem_UdsStatusByteType)以及更新后的状态 DTCStatusNew(Dem_UdsStatusByteType)[SWS_Dcm_00614]。不存在输入/输出参数 [SWS_Dcm_00614]。
返回值与错误处理
作为返回值,该函数提供类型 Std_ReturnType,其中根据规范无例外地返回 E_OK [SWS_Dcm_00614]。该调用未标明特定错误代码、回退值或向 DEM 或 DET 发送的单独通知。
并发性与交互
该函数被归类为可重入,并具有同步执行语义 [SWS_Dcm_00614]。关于与诊断请求的交互,存在一个固定的约束条件:如果 DCM 中当前正在处理清除事件内存(EventMemory)的请求,则 DCM 必须忽略回调 Dcm_DemTriggerOnDTCStatus 的传入调用 [SWS_Dcm_01410]。
本使用说明基于 AUTOSAR Classic Release R20-11 规范。
实现者指南即将推出(复杂度 I2)
函数 Dcm_GetVin [SWS_Dcm_00950] 📄 PDF
Std_ReturnType Dcm_GetVin (uint8* Data);
Function to get the VIN (as defined in SAE J1979-DA)
函数 Dcm_BndMWriteBlockFinish [SWS_Dcm_91088] 📄 PDF
void Dcm_BndMWriteBlockFinish (BndM_BlockIdType BlockId, BndM_ResultType result);
Called by BndM to indicate that a block write operation has finished.
函数 Dcm_BndMWriteBlockFinish 用作 BndM 向 DCM 的通知接口,以指示块写入操作的完成 [SWS_Dcm_91088]。该函数在头文件 Dcm.h 中声明,具有服务 ID 0x7a,不返回任何返回值(void)并同步执行 [SWS_Dcm_91088]。
该接口需要两个传递参数 [SWS_Dcm_91088]:
BlockId(类型:BndM_BlockIdType):标识写入过程已完成的块。result(类型:BndM_ResultType):将写入操作的结果传递给 DCM。
功能交互及错误情况下的行为与先前由 DCM 触发的原子性 BndM 写入操作相绑定:
- 如果带有状态
result = E_OK调用Dcm_BndMWriteBlockFinish,DCM 会对挂起的请求发送肯定诊断响应 [SWS_Dcm_01584]。 - 如果带有
result = E_NOT_OK调用该函数,DCM 在出错时会以否定诊断响应0x72(generalProgrammingFailure)做出反应 [SWS_Dcm_01585]。
关于并发性,Dcm_BndMWriteBlockFinish 被指定为不可重入(Non Reentrant)[SWS_Dcm_91088]。因此调用者必须确保该函数不会被多个上下文并行或中断式调用。
本使用说明由 AI 生成,并基于 AUTOSAR 规范 R20-11。
函数 Dcm_SetDeauthenticatedRole [SWS_Dcm_91069] 📄 PDF
Std_ReturnType Dcm_SetDeauthenticatedRole (uint16 connectionId, Dcm_AuthenticationRoleType deauthenticatedRole);
Sets a new role used in deauthenticated state for that connection. The set role is valid until the connection switches into authenticated state or the ECU is reset.
用法与调用上下文
函数 Dcm_SetDeauthenticatedRole 为同步且可重入执行([SWS_Dcm_91069])。它允许软件组件为通过 connectionId 标识的连接分配一个类型为 Dcm_AuthenticationRoleType 的新角色 deauthenticatedRole,以用于去认证状态([SWS_Dcm_91069]、[SWS_Dcm_01486])。作为返回值,无一例外地返回 E_OK([SWS_Dcm_91069])。
状态条件与错误处理
仅当连接处于去认证状态(deauthenticated state)时,DCM 才会处理调用([SWS_Dcm_01487])。由于签名未提供其他错误值且始终返回 E_OK([SWS_Dcm_91069]),在此状态之外的调用推测可能会在没有错误消息的情况下被丢弃。 问题 Q-6f14770eae6ce896 (未决)规范中未定义具体的 DET 或 DEM 事件。
有效期限与生命周期
如果成功采用了用于去认证状态的角色([SWS_Dcm_01486]),该分配将临时保持:
- 一旦连接转换到认证状态(authenticated state),所设置的角色将被丢弃([SWS_Dcm_01488])。
- 有效期至迟在电子控制单元(ECU)复位时结束([SWS_Dcm_91069])。
本使用说明是基于 AUTOSAR 规范自动生成的。
实现者指南即将推出(复杂度 I2)
函数 Dcm_GetSecurityLevel [SWS_Dcm_00338] 📄 PDF
Std_ReturnType Dcm_GetSecurityLevel (Dcm_SecLevelType* SecLevel);
This function provides the active security level value.
同步且可重入的函数Dcm_GetSecurityLevel查询 DCM 当前活动的安全级别并将其提供[SWS_Dcm_00338]。该函数通过头文件Dcm.h声明,并通过类型为Dcm_SecLevelType*的输出参数SecLevel将确定的状态值传递给调用方。根据规范,返回值无一例外地返回E_OK [SWS_Dcm_00338]。
内部安全级别的确定基于测试仪在 SecurityAccess 服务框架内根据固定转换公式SecurityLevel = (SecurityAccessType + 1) / 2传输的参数SecurityAccessType [SWS_Dcm_00338]。
在与上层诊断服务处理的交互中,DSP 子模块等会使用该值:如果该模块接收到具有子功能类型“requestSeed”(奇数值)的已配置请求,并且根据Dcm_GetSecurityLevel对应的访问级别已处于活动状态,则 DSP 子模块将种子内容设置为0x00 [SWS_Dcm_00323]。
在并发性和错误处理方面,该函数被定义为可重入的[SWS_Dcm_00338]。由于未指定特定的错误代码或 DET 检查,且始终返回E_OK,因此大概不会进行空指针检查;调用方因此推测必须始终为SecLevel传递指向有效内存空间的指针。 问题 Q-5402d82ac0151b22 (未决)
本文档由 AI 生成。内容可能不完整;请以 AUTOSAR 规范为准。
实现者指南即将推出(复杂度 I1)
函数 Dcm_GetSesCtrlType [SWS_Dcm_00339] 📄 PDF
Std_ReturnType Dcm_GetSesCtrlType (Dcm_SesCtrlType* SesCtrlType);
This function provides the active session control type value.
函数 Dcm_GetActiveProtocol [SWS_Dcm_00340] 📄 PDF
Std_ReturnType Dcm_GetActiveProtocol (Dcm_ProtocolType* ActiveProtocolType, uint16* ConnectionId, uint16* TesterSourceAddress);
This function returns the active UDS protocol details
函数 Dcm_ResetToDefaultSession [SWS_Dcm_00520] 📄 PDF
Std_ReturnType Dcm_ResetToDefaultSession (void);
The call to this function allows the application to reset the current session to Default session. Example: Automatic termination of an extended diagnostic session upon exceeding of a speed limit.
同步函数 Dcm_ResetToDefaultSession 允许应用程序将活动诊断会话复位为默认会话(Default Session)[SWS_Dcm_00520]。一个典型的应用场景是,一旦车辆超过预设的速度门限,便自动终止扩展诊断会话 [SWS_Dcm_00520]。
使用与错误处理
-
接口与参数:该函数可通过
Dcm.h使用,服务 ID 为0x2a,具有签名Std_ReturnType Dcm_ResetToDefaultSession (void),且不需要传入参数 [SWS_Dcm_00520]。 -
返回值与错误:作为返回类型返回
Std_ReturnType,其中无一例外地返回值E_OK[SWS_Dcm_00520]。在针对该调用的需求中,未指定特定的错误码、DET 运行时检查或 DEM 事件。
并发性与交互
执行以同步方式进行,并声明为可重入 [SWS_Dcm_00520]。
除了实际的会话切换外,Dcm_ResetToDefaultSession 还必须为 ModeDeclarationGroupPrototype DcmDiagnosticSessionControl 触发模式切换 [SWS_Dcm_01062]。在此过程中,该函数在内部调用 SchM_Switch_<bsnp>_DcmDiagnosticSessionControl(RTE_MODE_DcmDiagnosticSessionControl_DCM_DEFAULT_SESSION),以通知系统环境已切换至默认会话 [SWS_Dcm_01062]。
此使用说明基于 AUTOSAR Classic R20-11 规范自动生成。
实现者指南即将推出(复杂度 I1)
函数 Dcm_TriggerOnEvent [SWS_Dcm_00521] 📄 PDF
Std_ReturnType Dcm_TriggerOnEvent (uint8 RoeEventId);
The call to this function allows to trigger an event linked to a ResponseOnEvent request. On the function call, the DCM will execute the associated service if the corresponding Mode of the Roe EventId is 'ROE started'.
同步函数Dcm_TriggerOnEvent(服务 ID 0x2D)通过头文件Dcm.h提供,用于触发与 ResponseOnEvent 请求(ROE)关联的事件[SWS_Dcm_00521]。
调用与工作方式
调用方传递的唯一参数为RoeEventId(类型为uint8的输入参数),该参数标识要触发的事件;不存在输入或输出参数[SWS_Dcm_00521]。调用该函数后,DCM 会检查事件的状态:如果传入的RoeEvent处于活动状态,DCM 将触发相应的事件[SWS_Dcm_00920]。只要RoeEventId的关联模式处于“ROE started”,DCM 就会执行与该事件关联的服务[SWS_Dcm_00521]。
返回值与校验
调用会同步返回一个类型为Std_ReturnType的状态,该状态提供有关参数有效性的信息[SWS_Dcm_00521]:
E_OK:传递给RoeEventId的值有效[SWS_Dcm_00521]。E_NOT_OK:RoeEventId的值无效[SWS_Dcm_00521]。
并发性与属性
该接口被指定为可重入的[SWS_Dcm_00521]。因此,可以并发调用它以向 DCM 同步报告事件[SWS_Dcm_00521]。
此使用说明基于 AUTOSAR CP R20-11 规范自动生成。
实现者指南即将推出(复杂度 I1)
函数 Dcm_SetActiveDiagnostic [SWS_Dcm_01068] 📄 PDF
Std_ReturnType Dcm_SetActiveDiagnostic (boolean active);
Allows to activate and deactivate the call of ComM_DCM_ActiveDiagnostic() function.
函数 Dcm_StartOfReception [SWS_Dcm_00094] 📄 PDF
BufReq_ReturnType Dcm_StartOfReception (PduIdType id, const PduInfoType* info, PduLengthType TpSduLength, PduLengthType* bufferSizePtr);
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. This function might be called in interrupt context.
同步且可重入的函数 Dcm_StartOfReception([SWS_Dcm_00094])在传输协议模块开始接收 N-SDU 时被调用——无论是对于单帧消息(Single Frame, SF)还是分段消息(First Frame, FF)。它可在中断上下文中调用([SWS_Dcm_00094])。该调用会在开始接收时触发停止 S3Server 定时器等操作([SWS_Dcm_00141])。
通过 info 传递有效负载数据与元数据;对于通用连接,除其他操作外,还会通过它存储 SOURCE_ADDRESS_16([SWS_Dcm_00848])并检查 TARGET_ADDRESS_16([SWS_Dcm_01347])。如果既不存在有效负载也不存在元数据,则传递 NULL_PTR([SWS_Dcm_00094])。通过 bufferSizePtr,该函数返回用于计算块大小(BS)的可用缓冲区([SWS_Dcm_00094])。如果成功接受,它将返回 BUFREQ_OK,随后通过 Dcm_CopyRxData 复制后续数据([SWS_Dcm_00443])。
错误情况和拒绝情况通过返回值发出信号:
BUFREQ_E_OVFL:当请求的长度TpSduLength大于 DCM 中的可用缓冲区时返回([SWS_Dcm_00094], [SWS_Dcm_00444])。bufferSizePtr保持不变([SWS_Dcm_00094])。BUFREQ_E_NOT_OK:当TpSduLength等于 0([SWS_Dcm_00642])或同一连接上正在进行的请求发生阻塞时返回([SWS_Dcm_00557])。对于另一连接,参数DcmDslDiagRespOnSecondDeclinedRequest决定是以BUFREQ_E_NOT_OK拒绝([SWS_Dcm_00790])还是以BUFREQ_OK接受([SWS_Dcm_00788])。并发的 TesterPresent 请求同样以BUFREQ_OK进行应答([SWS_Dcm_00557])。
本段文本由 AI 生成。所有说明完全基于 AUTOSAR R20-11 规范摘录。
实现者指南即将推出(复杂度 I2)
函数 Dcm_CopyRxData [SWS_Dcm_00556] 📄 PDF
BufReq_ReturnType Dcm_CopyRxData (PduIdType id, const PduInfoType* info, PduLengthType* bufferSizePtr);
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. This function might be called in interrupt context.
使用
调用同步函数 Dcm_CopyRxData,以将接收到的 I-PDU 段(N-PDU)数据传递给 DCM 中的上层 [SWS_Dcm_00556]。每次调用都会提供 I-PDU 数据的下一部分 [SWS_Dcm_00556]。通过参数 id 标识接收到的 I-PDU [SWS_Dcm_00556]。指针 info 通过 SduDataPtr 提供源缓冲区,并通过 SduLength 提供要复制的字节数 [SWS_Dcm_00556]。复制过程完成后,DCM 中剩余的空闲缓冲区大小将通过 bufferSizePtr 反馈 [SWS_Dcm_00556],[SWS_Dcm_00443]。
如果调用 Dcm_CopyRxData 时 SduLength 为 0,则仅用于缓冲区查询 [SWS_Dcm_00556]。在这种情况下,SduDataPtr 允许为 NULL_PTR;该函数返回 BUFREQ_OK,并将接收缓冲区的剩余大小填入 bufferSizePtr [SWS_Dcm_00556],[SWS_Dcm_00996]。
相互作用
在复制之前,必须已以 BUFREQ_OK 完成 Dcm_StartOfReception;后续对 Dcm_CopyRxData 的调用会将数据从提供的缓冲区复制到 DCM 缓冲区中,并更新 bufferSizePtr [SWS_Dcm_00443]。
错误处理
该函数将状态作为 BufReq_ReturnType 返回:BUFREQ_OK 确认复制成功或缓冲区查询成功,而 BUFREQ_E_NOT_OK 指示由于错误未复制任何数据 [SWS_Dcm_00556],[SWS_Dcm_00996]。
并发性与限制
Dcm_CopyRxData 被指定为可重入,且允许在中断上下文中调用 [SWS_Dcm_00556]。该接口通过 Dcm.h 提供 [SWS_Dcm_00556]。
本使用说明由 AI 基于 AUTOSAR CP R20-11 规范生成。
实现者指南即将推出(复杂度 I1)
函数 Dcm_TpRxIndication [SWS_Dcm_00093] 📄 PDF
void Dcm_TpRxIndication (PduIdType id, Std_ReturnType result);
Called after an I-PDU has been received via the TP API, the result indicates whether the transmission was successful or not. This function might be called in interrupt context.
用法与调用上下文
在通过 TP API 接收到 I-PDU 后,通常由模块 PduR 调用同步函数 Dcm_TpRxIndication [SWS_Dcm_00093], [SWS_Dcm_00112]。它传递 PDU 标识(id)及接收结果(result),并且不返回任何返回值 [SWS_Dcm_00093]。由于该函数具有可重入性且可在中断上下文中调用,因此调用者和模块状态必须针对相应的并发性进行设计 [SWS_Dcm_00093]。
接收出错时的行为
如果调用 Dcm_TpRxIndication 时传入的结果值偏离 E_OK,则模块 Dcm 不得对分配给所引用 I-PDU 的缓冲区进行求值 [SWS_Dcm_00344]。
子模块间的相互作用
子模块 DSL 仅在以参数值 result = E_OK 调用时,才将接收到的数据转发至子模块 DSD [SWS_Dcm_00111]。诊断请求在此适用特定规则:
- 如果成功接收到的请求(
Result = E_OK)是设置了suppressPosRspMsgIndicationBit的TesterPresent命令(SID0x3E,子功能0x80),则 DSL 子模块重置会话超时定时器S3Server[SWS_Dcm_00112]。 - 在这种情况下,DSL 子模块不会将该请求转发给 DSD 子模块进行进一步解释 [SWS_Dcm_00113]。
此使用说明基于 AUTOSAR Classic R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_CopyTxData [SWS_Dcm_00092] 📄 PDF
BufReq_ReturnType Dcm_CopyTxData (PduIdType id, const PduInfoType* info, const RetryInfoType* retry, PduLengthType* availableDataPtr);
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. This function might be called in interrupt context.
用法与语义
同步且可重入的函数 Dcm_CopyTxData 由下层模块(如传输协议)调用,以获取用于传输的 I-PDU 段(N-PDU)数据 [SWS_Dcm_00092]。调用方通过参数 info 传递目标缓冲区 SduDataPtr 和所需的字节长度 SduLength。SduLength 的值设为 0 可用于通过 retry 发出状态更改信号或查询可用数据量;在这种情况下,SduDataPtr 允许为 NULL_PTR [SWS_Dcm_00092]。DCM 通过 availableDataPtr 报告发送缓冲区中的剩余字节数,该字节数可由 TP 模块用于确定后续段大小,且不得超过尚待发送的字节数 [SWS_Dcm_00092],[SWS_Dcm_00350]。
缓冲区管理与传输重试
通过参数 retry 控制数据的确认或重试 [SWS_Dcm_00092]:
- 如果
retry为NULL_PTR,则允许在复制过程之后直接从缓冲区中移除数据 [SWS_Dcm_00092]。 - 对于
TP_CONFPENDING,先前复制的数据必须保留在 TP 缓冲区中,以便进行可能的错误恢复 [SWS_Dcm_00092]。 TP_DATACONF确认释放此调用之前复制的所有数据 [SWS_Dcm_00092]。TP_DATARETRY从相对于当前位置的偏移量TxTpDataCnt开始重新复制数据 [SWS_Dcm_00092]。
返回值与错误处理
如果数据已成功且完全复制,则该函数返回 BUFREQ_OK [SWS_Dcm_00092],[SWS_Dcm_00346]。如果没有足够的发送数据可用,则不执行复制过程并返回 BUFREQ_E_BUSY;下层可以在稍后重试该调用 [SWS_Dcm_00092]。如果请求失败,该函数将返回 BUFREQ_E_NOT_OK [SWS_Dcm_00092]。在这种情况下,来自 PduR_DcmTransmit() 的发送请求尚未完成;只有对 Dcm_TpTxConfirmation 的最终调用才会结束该过程并允许进行新的传输 [SWS_Dcm_00350]。
并发性
该函数是可重入的,也允许在中断上下文中调用 [SWS_Dcm_00092]。
此使用说明基于 AUTOSAR Classic 平台 Release R20-11 的规范。
实现者指南即将推出(复杂度 I2)
函数 Dcm_TpTxConfirmation [SWS_Dcm_00351] 📄 PDF
void Dcm_TpTxConfirmation (PduIdType id, Std_ReturnType result);
This function is called after the I-PDU has been transmitted on its network, the result indicates whether the transmission was successful or not. This function might be called in interrupt context.
在诊断 I-PDU 已在网络上传输后,回调函数 Dcm_TpTxConfirmation([SWS_Dcm_00351])由下层传输层同步调用。通过参数 id 标识受影响的 I-PDU,而 result 报告发送过程的成功或失败([SWS_Dcm_00351])。该函数没有返回值,具有可重入性,并明确允许在中断上下文中执行([SWS_Dcm_00351])。
在调用 Dcm_TpTxConfirmation 时,DCM 模块执行核心的清理与状态转换:
- 分配的发送缓冲区被解锁([SWS_Dcm_00352])。
- 正在运行的错误监控(如页面缓冲区超时以及
P2ServerMax和P2*ServerMax超时)被停止([SWS_Dcm_00353])。 - 释放自接收(
Dcm_TpRxIndication)以来一直被阻塞的连接的DcmPduId,以便能够接收后续请求([SWS_Dcm_00241])。 - 当前协议不会因确认 DSL 响应而终止(不调用
xxx_StopProtocol)([SWS_Dcm_00624])。
在发生错误时(当 result 指示错误,或在失败的 Dcm_CopyTxData 之后确认中止时),[SWS_Dcm_00350] 强制要求进行该最终调用,以便正式完成发送作业并通过 PduR_DcmTransmit() 允许新的传输。如果确认指示出错,DSD 子模块不得重新发送诊断响应([SWS_Dcm_00118])。
此外,对响应(非 NRC 0x78)的确认标志着诊断请求的常规结束([SWS_Dcm_01378])。在确认对 EcuReset 的肯定响应后,DCM 在复位处理期间忽略所有后续请求([SWS_Dcm_00834])。
本文由 AI 创建;无法保证准确性。
实现者指南即将推出(复杂度 I2)
函数 Dcm_TxConfirmation [SWS_Dcm_01092] 📄 PDF
void Dcm_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. This function might be called in interrupt context.
使用
根据 [SWS_Dcm_01092],同步接口 Dcm_TxConfirmation(服务 ID 0x40,在 Dcm.h 中声明)由下层通信接口模块调用,以确认 PDU 的发送或报告传输失败。该函数无返回值并处理两个输入参数:
TxPduId:已发送 PDU 的标识符(PduIdType)。result:传输状态(Std_ReturnType)。有效值为成功传输时的E_OK,以及 PDU 传输失败时的E_NOT_OK。
错误处理和状态反馈
传输结果通过参数 result 直接通知 DCM([SWS_Dcm_01092])。在提供的规范摘录中未为该函数定义具体的 DET 或 DEM 错误消息。
并发与调用上下文
关于可重入性,Dcm_TxConfirmation 对于使用不同 PDU ID 的调用是可重入的,但对于相同的 TxPduId 不可重入([SWS_Dcm_01092])。需要注意的是,下层模块的调用可在中断上下文中进行([SWS_Dcm_01092])。
相互作用
在周期性传输(PeriodicTransmission)的情况下,根据 [SWS_Dcm_01073] 通过 Dcm_TxConfirmation 调用 DCM,以便向其通告各自的发送结果。
本使用说明基于针对 R20-11 的 AUTOSAR 规范自动创建。
实现者指南即将推出(复杂度 I1)
函数 Dcm_ComM_NoComModeEntered [SWS_Dcm_00356] 📄 PDF
void Dcm_ComM_NoComModeEntered (uint8 NetworkId);
This call informs the Dcm module about a ComM mode change to COMM_NO_ COMMUNICATION.
同步且可重入的函数 Dcm_ComM_NoComModeEntered(服务 ID 0x21)向 DCM 模块通知通信网络转换至状态 COMM_NO_COMMUNICATION [SWS_Dcm_00356]。该接口通过头文件 Dcm_ComM.h 提供,没有返回值,并通过 uint8 类型的输入参数 NetworkId 标识受影响的网络 [SWS_Dcm_00356]。
通过该调用,DCM 关闭指定网络上的所有通信,从而完全停用消息的接收与发送 [SWS_Dcm_00148]。这强制包括以下传输类型:
- 阻止 ResponseOnEvent 传输 [SWS_Dcm_00149],
- 停用通过
ReadDataByPeriodicIdentifier(periodicId)进行的周期性传输 [SWS_Dcm_00150] 以及 - 关闭正常传输 [SWS_Dcm_00151]。
因此,在执行 Dcm_ComM_NoComModeEntered 后,DCM 模块不得再针对该上下文调用 PduR 函数 PduR_DcmTransmit() [SWS_Dcm_00152]。
如果调用该函数时传入的 NetworkId 不对应于 DCM 中通过配置参数 DcmDslProtocolComMChannelRef 引用的任何 ComM 通道,则 DCM 模块不执行任何操作并立即返回 [SWS_Dcm_01324]。
本段文本由 AI 生成并由 autodocs 进行质量保证。
实现者指南即将推出(复杂度 I2)
函数 Dcm_ComM_SilentComModeEntered [SWS_Dcm_00358] 📄 PDF
void Dcm_ComM_SilentComModeEntered (uint8 NetworkId);
This call informs the Dcm module about a ComM mode change to COMM_SILENT_ COMMUNICATION.
同步且可重入的函数 Dcm_ComM_SilentComModeEntered([SWS_Dcm_00358])用于向 DCM 模块通知通信网络转换至状态 COMM_SILENT_COMMUNICATION。该接口的服务 ID 为 0x22,不返回任何返回值,并期望将受影响网络的标识符作为输入参数 NetworkId([SWS_Dcm_00358])。它通过头文件 Dcm_ComM.h 提供([SWS_Dcm_00358])。
一旦进行此调用,DCM 必须完全停止受影响网络通道上的所有发送活动([SWS_Dcm_00153])。具体包括以下措施:
- 停用所有正常传输([SWS_Dcm_00156]),
- 阻止 Response-on-Event 传输([SWS_Dcm_00154])以及
- 停用
ReadDataByPeriodicIdentifier范围内的周期性发送([SWS_Dcm_00155])。
关于错误处理和边界条件,规定若传入的 NetworkId 对应的 ComM 通道未在 DCM 中通过配置参数 DcmDslProtocolComMChannelRef 被引用,则 DCM 必须在不执行任何进一步操作的情况下直接返回([SWS_Dcm_01325])。对于该调用,未指定特定的开发错误或错误返回值。
Interpretation: 一旦完成向静默通信模式的转换,该调用通常可能由模块 ComM 进行。 问题 Q-fc9b6303ae0c0e41 (未决)
本使用说明由 AI 系统生成,完全基于 AUTOSAR 规范 R20-11。
实现者指南即将推出(复杂度 I2)
函数 Dcm_ComM_FullComModeEntered [SWS_Dcm_00360] 📄 PDF
void Dcm_ComM_FullComModeEntered (uint8 NetworkId);
This call informs the Dcm module about a ComM mode change to COMM_FULL_ COMMUNICATION.
同步且可重入的函数 Dcm_ComM_FullComModeEntered 通过头文件 Dcm_ComM.h 提供,并向 DCM 模块通知通信网络转换至状态 COMM_FULL_COMMUNICATION [SWS_Dcm_00360]。输入参数为 NetworkId,用于标识受模式切换影响的网络 [SWS_Dcm_00360]。
通过该调用,激活该网络的所有通信,从而使消息接收和发送均被启用 [SWS_Dcm_00157]。这包括以下传输类型:
- 正常传输 [SWS_Dcm_00161],
- Response-on-Event 传输 [SWS_Dcm_00159] 以及
- 通过
ReadDataByPeriodicIdentifier进行的周期性传输 [SWS_Dcm_00160]。
一旦 Dcm_ComM_FullComModeEntered 被调用,DCM 无限制地处理内部功能 DslInternal_ResponseOnOneDataByPeriodicId() 和 DslInternal_ResponseOnOneEvent() [SWS_Dcm_00162]。在时间时序上,DCM 必须等待该调用,然后才发起诊断响应的传输;从请求接收的时间点起算,等待时间不得长于 P2ServerMax [SWS_Dcm_01142]。
在错误情况下,如果传入的 NetworkId 涉及未在 DCM 中配置的 ComM 通道(参数 DcmDslProtocolComMChannelRef),则该函数立即返回且不执行进一步操作 [SWS_Dcm_01326]。
本使用说明由 AI 基于 AUTOSAR CP R20-11 规范生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_CsmAsyncJobFinished [SWS_Dcm_91076] 📄 PDF
Std_ReturnType Dcm_CsmAsyncJobFinished (Csm_ResultType result);
Can be called from Csm upon finishing an asynchronous job processing. The integrator will configure this name as callback function within the Csm ECUC configuration for asynchronous jobs. Only one such callback is available, the Dcm detects the job that has finished by evaluating the job parameter. API availability: This API will be available only if ({ecuc(Dcm/Dcm Dsp/DcmDspAuthentication/DcmDspAuthenticationConnection} != null).
用法与语义
一旦异步作业处理完成,Crypto Service Manager (CSM) 便会调用同步且可重入的回调函数 Dcm_CsmAsyncJobFinished [SWS_Dcm_91076]。它通过类型为 Csm_ResultType 的 result 接收已完成 CSM 作业的结果作为输入参数 [SWS_Dcm_91076]。作为返回值,该函数始终返回 E_OK [SWS_Dcm_91076]。
配置与约束条件
集成人员必须在 CSM 的 ECUC 配置中将此函数名称配置为异步作业的回调 [SWS_Dcm_91076]。对于 DCM,仅有唯一一个此类回调可用;根据规范,已完成作业的标识通过评估作业参数 [SWS_Dcm_91076] 来进行。然而,由于 C 函数签名仅传递 result,DCM 可能会在内部通过当前认证的事务状态来确定相关作业。 问题 Q-04ad1d5fb514f467 (未决)
仅当配置中设置了参数 DcmDspAuthenticationConnection(不等于 null)时,该接口才可用 [SWS_Dcm_91076]。针对该调用未指定特定错误处理或 DET 报告,因为返回值恒为 E_OK [SWS_Dcm_91076]。
本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。
实现者指南即将推出(复杂度 I1)
函数 Dcm_KeyMAsyncCertificateVerifyFinished [SWS_Dcm_91077] 📄 PDF
Std_ReturnType Dcm_KeyMAsyncCertificateVerifyFinished (KeyM_CertificateIdType CertID, KeyM_CertificateStatusType Result);
Can be called from Key upon finishing an asynchronous certificate verification. The integrator will configure this name as callback function within the KeyM ECUC configuration for asynchronous jobs. Only one such callback is available, the Dcm detects the certificate that has finished by evaluating the certId parameter. API availability: This API will be available only if ({ecuc(Dcm/DcmDsp/DcmDspAuthentication/DcmDspAuthenticationConnection} != null).
在异步证书验证完成后,模块 KeyM 会调用同步且可重入的回调函数 Dcm_KeyMAsyncCertificateVerifyFinished [SWS_Dcm_91077]。它向 DCM 通知校验过程的完成情况及结果,并始终返回 E_OK 作为返回值 [SWS_Dcm_91077]。
参数与工作机制
CertID:已完成验证的证书标识符。DCM 根据此标识符确定哪个校验作业已完成 [SWS_Dcm_91077]。Result:来自 KeyM 的异步验证作业的返回值和状态 [SWS_Dcm_91077]。
配置与约束条件
集成人员必须在 KeyM 的 ECUC 配置中将此函数名称配置为异步作业的回调 [SWS_Dcm_91077]。由于该通知仅提供一个回调,DCM 依赖于通过参数 CertID 解析相应证书 [SWS_Dcm_91077]。
仅当在路径 Dcm/DcmDsp/DcmDspAuthentication 中配置了配置参数 DcmDspAuthenticationConnection(!= null)时,该接口才可用 [SWS_Dcm_91077]。针对该调用未指定特殊错误代码或 DET 报告 [SWS_Dcm_91077]。
本使用说明自动生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_ReadMemory [SWS_Dcm_00539] 📄 PDF
Dcm_ReturnReadMemoryType Dcm_ReadMemory (Dcm_OpStatusType OpStatus, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, uint8* MemoryData, Dcm_NegativeResponseCodeType* ErrorCode);
The Dcm_ReadMemory callout is used to request memory data identified by the parameter memoryAddress and memorySize from the UDS request message. This service is needed for the implementation of UDS services: • ReadMemoryByAddress • RequestUpload • ReadDataByIdentifier (in case of Dynamical DID defined by memory address) • TransferData
在 Dcm_Externals.h 中声明的标注函数 Dcm_ReadMemory([SWS_Dcm_00539])用于 DCM 根据起始地址(MemoryAddress)和字节大小(MemorySize)读取服务器内存数据。该函数用于 UDS 服务 ReadMemoryByAddress (0x23)([SWS_Dcm_00495])、地址范围在 0xF200 至 0xF3FF 内针对动态 DID 的 ReadDataByIdentifier (0x22)([SWS_Dcm_00653])、RequestUpload 以及 TransferData([SWS_Dcm_00539])。如果不使用参数 MemoryIdentifier,则必须将其设置为 0([SWS_Dcm_00539])。
该接口是异步且不可重入的([SWS_Dcm_00539])。调用状态通过 OpStatus 传递,其取值为 DCM_INITIAL、DCM_PENDING、DCM_CANCEL 或 DCM_FORCE_RCRRP_OK。只要读取过程持续,函数就返回 DCM_READ_PENDING([SWS_Dcm_00985])。如果调用返回 DCM_READ_FORCE_RCRRP,DCM 会立即触发发送 RCR-RP 消息(NRC 0x78),并在收到发送确认前暂停进一步的调用([SWS_Dcm_00839])。在确认 RCR-RP 后,DCM 会使用 OpStatus = DCM_FORCE_RCRRP_OK 重新调用来自 Dcm_MainFunction 的函数([SWS_Dcm_00840])。
在成功的情况下,读取的数据被写入缓冲区 MemoryData 并返回 DCM_READ_OK([SWS_Dcm_00539],[SWS_Dcm_00985])。如果操作失败,函数将返回 DCM_READ_FAILED 并设置 ErrorCode。随后 DCM 发送带有相应 NRC 值的否定响应([SWS_Dcm_00644])。
基于 AUTOSAR 规范自动生成的使用说明。
实现者指南即将推出(复杂度 I2)
函数 Dcm_WriteMemory [SWS_Dcm_00540] 📄 PDF
Dcm_ReturnWriteMemoryType Dcm_WriteMemory (Dcm_OpStatusType OpStatus, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, const uint8* MemoryData, Dcm_NegativeResponseCodeType* ErrorCode);
The Dcm_WriteMemory callout is used to write memory data identified by the parameter memoryAddress and memorySize. This service is needed for the implementation of UDS services : • WriteMemoryByAddress • RequestDownload • TransferData
在 Dcm_Externals.h 中声明的标注函数 Dcm_WriteMemory 由 DCM 异步且不可重入地调用,以根据起始地址和字节大小写入内存数据 [SWS_Dcm_00540]。它用于实现 UDS 服务 WriteMemoryByAddress (0x3D)、RequestDownload 和 TransferData [SWS_Dcm_00540]。在接收到 WriteMemoryByAddress 时,DCM 仅在检查请求后才调用该标注 [SWS_Dcm_00491]。
为了控制流程,传递 OpStatus(可能的值:DCM_INITIAL、DCM_PENDING、DCM_CANCEL 或 DCM_FORCE_RCRRP_OK)[SWS_Dcm_00540]。参数 MemoryAddress 和 MemorySize 确定目标内存区域,而 MemoryData 指向 DCM 的诊断缓冲区 [SWS_Dcm_00540]。如果不使用 MemoryIdentifier 或 MemoryAddress(例如在压缩数据的情况下),则必须将它们设置为 0 [SWS_Dcm_00540]。
返回值 Dcm_ReturnWriteMemoryType [SWS_Dcm_00986] 定义了 DCM 中的进一步处理:
DCM_WRITE_OK:写入操作成功 [SWS_Dcm_00540],[SWS_Dcm_00986]。DCM_WRITE_PENDING:操作尚未完成,需要后续调用 [SWS_Dcm_00540],[SWS_Dcm_00986]。DCM_WRITE_FORCE_RCRRP:DCM 立即启动发送 Response Pending(NRC 0x78),并暂停进一步调用直至发送确认 [SWS_Dcm_00837]。此后,使用DCM_FORCE_RCRRP_OK从Dcm_MainFunction重新调用 [SWS_Dcm_00838]。DCM_WRITE_FAILED:发生错误时,DCM 发送带有通过输出参数ErrorCode传递的 NRC 值的否定响应 [SWS_Dcm_00540],[SWS_Dcm_00643]。
本段文本由 AI 基于 AUTOSAR Classic R20-11 规范生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_SetProgConditions [SWS_Dcm_00543] 📄 PDF
Std_ReturnType Dcm_SetProgConditions (Dcm_OpStatusType OpStatus, const Dcm_ProgConditionsType* ProgConditions);
The Dcm_SetProgConditions callout allows the integrator to store relevant information prior to jumping to bootloader / jump due to ECUReset request. The context parameter are defined in Dcm_ProgConditionsType.
标注函数 Dcm_SetProgConditions 使集成商能够在因 ECUReset 请求而进入引导加载程序或复位之前持久保存相关信息 [SWS_Dcm_00543]。相关上下文数据通过指向结构 Dcm_ProgConditionsType 的指针传递,该结构等汇总了连接和测试仪源地址、服务和子功能 ID 以及诸如 ReprogramingRequest 和 ResponseRequired 等控制标志 [SWS_Dcm_00988]。在接收到带有子功能 0x02 的 UDS 服务 0x10 时,DCM 会设置这些标志并调用该接口 [SWS_Dcm_01182]。
调用以异步方式进行并且不可重入(Non Reentrant)[SWS_Dcm_00543]。通过参数 OpStatus 控制状态 DCM_INITIAL、DCM_PENDING、DCM_CANCEL 或 DCM_FORCE_RCRRP_OK [SWS_Dcm_00543]。如果执行仍在持续且函数返回 DCM_E_PENDING,则 DCM 会在下一个主函数周期中再次调用该接口以完成设置 [SWS_Dcm_00543],[SWS_Dcm_01184]。借助 DCM_E_FORCE_RCRRP 可以强制传输 Response-Pending 响应(NRC 0x78)[SWS_Dcm_00543]。根据配置,DCM 仅在成功传输 NRC 0x78 后才进行调用 [SWS_Dcm_00535]。
如果条件已正确设置且标注返回 E_OK,则 DCM 将触发 ModeDeclarationGroupPrototype DcmEcuReset 向 EXECUTE 的模式切换 [SWS_Dcm_00719],[SWS_Dcm_01163],[SWS_Dcm_01180]。相反,如果无法保存状态且函数响应 E_NOT_OK,则复位以及引导加载程序跳转将被忽略,模式切换将被阻止,并且 DCM 发送否定响应 NRC 0x22(Conditions not correct)[SWS_Dcm_00715],[SWS_Dcm_01181]。
本使用说明由 AI 基于 AUTOSAR Classic Release R20-11 规范生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_GetProgConditions [SWS_Dcm_00544] 📄 PDF
Dcm_EcuStartModeType Dcm_GetProgConditions (Dcm_ProgConditionsType* ProgConditions);
The Dcm_GetProgConditions callout is called upon Dcm initialization and allows to determine if a response ($50 or $51) has to be sent. The context parameters are defined in Dcm_Prog ConditionsType.
具有服务 ID 0x62 的标注函数 Dcm_GetProgConditions 在 DCM 初始化期间被调用,以确定是否必须发送对服务 $50 或 $51 的待处理诊断响应 [SWS_Dcm_00544]。该接口的声明通过头文件 Dcm_Externals.h 提供 [SWS_Dcm_00544]。
用法与参数
函数执行同步进行,不传递常规的输入或输入/输出参数 [SWS_Dcm_00544]:
- 输出参数:通过类型为
Dcm_ProgConditionsType*的指针ProgConditions,标注返回在其中请求先前从引导加载程序跳转的条件 [SWS_Dcm_00544]。相关上下文参数保存在数据类型Dcm_ProgConditionsType中 [SWS_Dcm_00544]。 - 返回值:函数向调用方返回类型为
Dcm_EcuStartModeType的状态值 [SWS_Dcm_00544]。
并发与错误处理
该函数被归类为不可重入(Non Reentrant),因此不得并发执行 [SWS_Dcm_00544]。在接口规范中未为此标注定义针对 DET 或 DEM 的特定错误代码 [SWS_Dcm_00544]。
本使用说明由 AI 基于 AUTOSAR 规范 R20-11 生成。
实现者指南即将推出(复杂度 I1)
函数 Dcm_ProcessRequestAddFile [SWS_Dcm_91078] 📄 PDF
Std_ReturnType Dcm_ProcessRequestAddFile (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, uint8 dataFormatIdentifier, uint64 fileSizeUncompressed, uint64 fileSizeCompressed, uint64* maxNumberOfBlockLength, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this function to start a RequestFileTransfer process with mode OfOperation equal to 0x01 (AddFile).
Callout 函数 Dcm_ProcessRequestAddFile 由 DCM 调用,以启动采用操作模式 0x01(AddFile)的服务 RequestFileTransfer([SWS_Dcm_91078])。它可通过 Dcm_Externals.h 获得,具有服务 ID 0x72,并被指定为不可重入(Non Reentrant)和异步([SWS_Dcm_91078])。
异步调用流程的控制通过参数 OpStatus 进行:
DCM_INITIAL:所有输入参数均有效。这包括文件路径与名称(filePathAndName带有filePathAndNameLength)、字节dataFormatIdentifier(高半字节用于压缩,低半字节用于加密)以及未压缩和压缩后的文件大小(fileSizeUncompressed、fileSizeCompressed)([SWS_Dcm_91078])。DCM_PENDING、DCM_CANCEL和DCM_FORCE_RCRRP_OK:在这些后续调用中,所有输入参数均设置为0x00([SWS_Dcm_91078])。
作为返回值,该函数在成功执行时返回 E_OK,在仍在处理中时返回 DCM_E_PENDING,或者在应用程序请求发送临时响应(NRC 0x78)时返回 DCM_E_FORCE_RCRRP([SWS_Dcm_91078]、[SWS_Dcm_91086])。在成功的情况下,maxNumberOfBlockLength 定义后续 TransferData 消息的最大允许块长度(不含 SID 和块计数器)([SWS_Dcm_91078])。
在出错时,函数返回 E_NOT_OK。在此情况下,必须通过参数 ErrorCode 传递否定响应码(NRC),DCM 将其在发往客户端的否定诊断响应中发送([SWS_Dcm_91078])。如果激活了配置 DcmRequestFileTransferUsePort,则该功能作为接口 RequestFileTransfer 的端口操作 ProcessRequestAddFile 备选提供([SWS_Dcm_91086])。
本使用说明基于 AUTOSAR CP R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_ProcessRequestDeleteFile [SWS_Dcm_91079] 📄 PDF
Std_ReturnType Dcm_ProcessRequestDeleteFile (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this function to start a RequestFileTransfer process with mode OfOperation equal to 0x02 (DeleteFile). Manager
使用与调用语义
Callout 函数 Dcm_ProcessRequestDeleteFile 由 DCM 调用,以在诊断服务 RequestFileTransfer 的上下文中启动服务器上文件(modeOfOperation = 0x02)的删除 [SWS_Dcm_91079]。该函数在 Dcm_Externals.h 中声明,并以异步且不可重入(Non Reentrant)的方式工作 [SWS_Dcm_91079]。
传递和评估根据参数 OpStatus 进行:
DCM_INITIAL:指示操作开始。此时所有输入参数均有效;filePathAndName传递要删除文件的存储位置和名称,其字节长度通过filePathAndNameLength指定 [SWS_Dcm_91079]。DCM_PENDING、DCM_CANCEL或DCM_FORCE_RCRRP_OK:在继续处理或中止时,所有输入参数均设置为0x00[SWS_Dcm_91079]。
作为返回值,该函数在成功执行时返回 E_OK,在执行仍在进行且需要进一步调用时返回 DCM_E_PENDING,或者在应用程序请求发送带有 NRC 0x78(Response Pending)的中间消息时返回 DCM_E_FORCE_RCRRP [SWS_Dcm_91079],与服务 RequestFileTransfer 类似 [SWS_Dcm_91086]。
错误处理
若处理失败,函数返回 E_NOT_OK。在此情况下,必须通过输出参数 ErrorCode 提供否定响应码,DCM 将其作为否定响应(NRC)发送给测试仪 [SWS_Dcm_91079]。
此使用说明基于 AUTOSAR Classic R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_ProcessRequestReplaceFile [SWS_Dcm_91080] 📄 PDF
Std_ReturnType Dcm_ProcessRequestReplaceFile (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, uint8 dataFormatIdentifier, uint64 fileSizeUncompressed, uint64 fileSizeCompressed, uint64* maxNumberOfBlockLength, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this function to start a RequestFileTransfer process with mode OfOperation equal to 0x03 (ReplaceFile).
Callout 函数 Dcm_ProcessRequestReplaceFile 由 DCM 调用,以启动采用操作模式 0x03(ReplaceFile)针对 RequestFileTransfer 的诊断过程 [SWS_Dcm_91080]。该函数被定义为不可重入(Non Reentrant)且异步,并通过头文件 Dcm_Externals.h 提供 [SWS_Dcm_91080]。
异步处理流程的控制通过参数 OpStatus 进行:
- 在带有
DCM_INITIAL的初始调用中,DCM 传递所有有效的输入参数,其中包括路径和文件名(filePathAndName带有长度信息filePathAndNameLength)、压缩与加密标识(dataFormatIdentifier)以及未压缩和压缩后的文件大小(fileSizeUncompressed、fileSizeCompressed)[SWS_Dcm_91080]。 - 在后续调用或中止时(
DCM_PENDING、DCM_CANCEL、DCM_FORCE_RCRRP_OK),所有 In 参数均设置为0x00[SWS_Dcm_91080]。 - 在成功的情况下,该函数通过 Out 参数
maxNumberOfBlockLength向 DCM 返回后续TransferData请求的最大有效负载长度(不含 SID 和块序列计数器)[SWS_Dcm_91080]。
预期的返回值包括:成功执行时的 E_OK、仍在处理中的 DCM_E_PENDING 以及用于请求 Response-Pending 响应(NRC 0x78)的 DCM_E_FORCE_RCRRP [SWS_Dcm_91080]、[SWS_Dcm_91086]。若执行失败,函数返回 E_NOT_OK 并为参数 ErrorCode 分配相应的否定诊断响应码(NRC),DCM 将其发送给测试仪 [SWS_Dcm_91080]。
此使用说明基于 AUTOSAR CP R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_ProcessRequestReadFile [SWS_Dcm_91081] 📄 PDF
Std_ReturnType Dcm_ProcessRequestReadFile (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, uint8 dataFormatIdentifier, uint64 fileSizeUncompressed, uint64 fileSizeCompressed, uint64* maxNumberOfBlockLength, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this function to start a RequestFileTransfer process with mode OfOperation equal to 0x04 (ReadFile).
Callout 函数 Dcm_ProcessRequestReadFile 由 DCM 调用,以启动采用操作模式 ReadFile(modeOfOperation 0x04)的文件传输过程(服务 RequestFileTransfer)[SWS_Dcm_91081]。该函数在头文件 Dcm_Externals.h 中声明,以异步方式工作且不可重入(Non Reentrant)[SWS_Dcm_91081]。
调用通过状态参数 OpStatus 进行:在初始调用 DCM_INITIAL 时所有输入参数均有效,而在通过 DCM_PENDING、DCM_CANCEL 或 DCM_FORCE_RCRRP_OK 进行的后续调用中它们被设置为 0x00 [SWS_Dcm_91081]。应用程序通过 filePathAndName(长度在 filePathAndNameLength 中)获取路径和文件名,通过 dataFormatIdentifier 获取压缩和加密格式,并通过 fileSizeUncompressed 和 fileSizeCompressed 获取文件大小 [SWS_Dcm_91081]。作为输出参数,应用程序必须使用后续 TransferData 响应的最大字节数(不含 SID 和块序列计数器)来设置 maxNumberOfBlockLength [SWS_Dcm_91081]。
Std_ReturnType 的返回值定义为:成功执行时的 E_OK、异步处理仍在进行时的 DCM_E_PENDING 或用于请求“Response Pending”响应(NRC 0x78)的 DCM_E_FORCE_RCRRP [SWS_Dcm_91081]。若操作失败,它返回 E_NOT_OK;在此情况下,DCM 向测试仪发送带有在输出参数 ErrorCode 中设置的 NRC 值的否定响应 [SWS_Dcm_91081]。该交互对应于服务 RequestFileTransfer 的常规处理流程,这与针对诸如 ProcessRequestAddFile 等其他文件操作的配置类似 [SWS_Dcm_91086]。
此文本由 AI 系统生成,仅基于 AUTOSAR Classic R20-11 规范。
实现者指南即将推出(复杂度 I2)
函数 Dcm_ProcessRequestReadDir [SWS_Dcm_91082] 📄 PDF
Std_ReturnType Dcm_ProcessRequestReadDir (Dcm_OpStatusType OpStatus, uint16 filePathAndNameLength, const uint8* filePathAndName, uint64* dirInfoLength, uint64* maxNumberOfBlockLength, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this function to start a RequestFileTransfer process with mode OfOperation equal to 0x05 (ReadDir).
使用
Callout 函数 Dcm_ProcessRequestReadDir 通过头文件 Dcm_Externals.h 声明并由 DCM 调用,以异步启动采用操作模式 0x05(ReadDir)的服务 RequestFileTransfer [SWS_Dcm_91082]。处理进度通过传递参数 OpStatus 控制 [SWS_Dcm_91082]。在带有 DCM_INITIAL 的首次调用中,DCM 通过 filePathAndName 连同字节长度 filePathAndNameLength 传递路径或名称 [SWS_Dcm_91082]。在后续调用或中止时(DCM_PENDING、DCM_CANCEL、DCM_FORCE_RCRRP_OK),所有输入参数均设置为 0x00 [SWS_Dcm_91082]。
作为输出值,应用程序必须通过 dirInfoLength 提供目录数据的大小,并通过 maxNumberOfBlockLength 提供后续传输的最大允许块大小 [SWS_Dcm_91082]。除了成功执行时的 E_OK 之外,当操作仍在进行时函数可以返回 DCM_E_PENDING,或者返回 DCM_E_FORCE_RCRRP 以触发中间响应(NRC 0x78)的发送 [SWS_Dcm_91082]。
错误处理
如果发生错误,函数必须返回 E_NOT_OK。在此情况下,DCM 读取参数 ErrorCode 并将其值作为否定响应码(NRC)发送给测试仪 [SWS_Dcm_91082]。该接口未规定具体的 DET 或 DEM 报告;因此,所传递路径的错误检查可能完全由特定于应用程序的实现负责。 问题 Q-278dbc3db7b4363b (未决)
并发性与交互
该函数被指定为不可重入(Non Reentrant),因此不得针对多个诊断请求并发调用 [SWS_Dcm_91082]。它是服务 RequestFileTransfer 接口组的一部分,其接入可以通过配置参数进行影响 [SWS_Dcm_91086]。
本使用说明基于 AUTOSAR CP R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 Dcm_WriteFile [SWS_Dcm_91083] 📄 PDF
Std_ReturnType Dcm_WriteFile (Dcm_OpStatusType OpStatus, uint64 DataLength, uint8* Data, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this function when data is received using UDS service Transfer Data if there's an ongoing RequestFileTransfer process started with 0x01 (AddFile) or 0x03 (ReplaceFile).
用法与调用上下文
当通过 UDS 服务 TransferData (0x36) 接收到数据且先前通过带有模式 0x01(AddFile)或 0x03(ReplaceFile)的 RequestFileTransfer 启动的下载过程处于活动状态时,Callout 函数 Dcm_WriteFile 由 DCM 调用 [SWS_Dcm_01444]。该接口可通过 Dcm_Externals.h 获取 [SWS_Dcm_91083]。
参数赋值取决于进度状态 OpStatus [SWS_Dcm_91083]:
DCM_INITIAL:所有输入参数均有效。指针Data指向要写入的有效数据,DataLength指定其字节长度。DataLength的值不超过先前在Dcm_ProcessRequestFileTransfer协商的最大块长度(NumberOfBlockLength)。DCM_PENDING、DCM_CANCEL和DCM_FORCE_RCRRP_OK:所有输入参数均设置为0x00。
异步语义与返回值
该函数以异步且不可重入(Non Reentrant)方式工作 [SWS_Dcm_91083]。它返回以下状态值:
E_OK:写入过程已成功完成。DCM_E_PENDING:处理尚未完成,需要进一步调用。DCM_E_FORCE_RCRRP:应用程序请求发送等待响应(Response Pending,NRC 0x78)。E_NOT_OK:操作失败。
错误处理
若 Dcm_WriteFile 返回值 E_NOT_OK,则 DCM 模块发送否定 UDS 响应,其 NRC 对应于通过输出参数 ErrorCode 提供的值 [SWS_Dcm_91083]。
此文本由基于 AI 的系统生成,须根据 AUTOSAR 规范进行核实。
实现者指南即将推出(复杂度 I2)
函数 Dcm_ReadFileOrDir [SWS_Dcm_91085] 📄 PDF
Std_ReturnType Dcm_ReadFileOrDir (Dcm_OpStatusType OpStatus, uint64* DataLength, uint8* Data, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this function when data shall be sent as a response to UDS service TransferData if there's an ongoing RequestFileTransfer process started with 0x04 (ReadFile) or 0x05 (ReadDir).
当在当前文件或目录上传(先前通过 UDS 服务 RequestFileTransfer 带有用于 ReadFile 的模式 0x04 或用于 ReadDir 的模式 0x05 启动)的上下文中收到符合格式的 UDS 服务 TransferData (0x36) 请求时,DCM 模块调用 Callout 函数 Dcm_ReadFileOrDir [SWS_Dcm_01445]。该函数用于提供作为响应发送给客户端的数据 [SWS_Dcm_91085]。接口声明可通过头文件 Dcm_Externals.h 获取 [SWS_Dcm_91085]。
执行为异步进行,并被指定为不可重入(Non Reentrant)[SWS_Dcm_91085]。交互与参数赋值取决于所传递的操作状态:
- 操作状态(
OpStatus):在带有DCM_INITIAL的初始调用中,所有输入参数均有效。在带有DCM_PENDING、DCM_CANCEL或DCM_FORCE_RCRRP_OK的后续或中止调用中,所有输入参数均设置为0x00[SWS_Dcm_91085]。 - 缓冲区和块长度:参数
DataLength在输入侧传递最大允许块长度(对应于向客户端报告的值maxNumberOfBlockLength),并在输出侧返回实际在Data中提供的字节长度,该长度不得超过输入值 [SWS_Dcm_91085]。解释:尽管Data在接口中形式上被声明为 In 参数,但它应该用于传递要读取的有效数据。 问题 Q-53de8a0bdbc4a2b4 (未决) - 返回值:该操作在成功提供数据时返回
E_OK,在处理尚未完成时返回DCM_E_PENDING,或者在应用程序想要强制发送中间消息(Response Pending,NRC 0x78)时返回DCM_E_FORCE_RCRRP[SWS_Dcm_91085]。
若应用程序中的处理失败,则返回 E_NOT_OK。在此错误情况下,DCM 模块向客户端发送否定 UDS 响应(NRC),其错误代码对应于在输出参数 ErrorCode 中设置的值 [SWS_Dcm_91085]。
此文本由 AI 生成,仅供参考。一切以官方 AUTOSAR 规范为准。
实现者指南即将推出(复杂度 I2)
函数 Dcm_MainFunction [SWS_Dcm_00053] 📄 PDF
void Dcm_MainFunction (void);
This service is used for processing the tasks of the main loop.
函数 Dcm_MainFunction 用于处理 Diagnostic Communication Manager([SWS_Dcm_00053])主循环的核心任务。其签名具有 void Dcm_MainFunction(void) 且不提供返回值。由于它通过头文件 SchM_Dcm.h 提供,其调用推测可能周期性地在基础软件调度器任务的上下文中进行。 问题 Q-e083a72aae447ab5 (未决)
一项关键任务是控制并跨周期继续进行异步流程:
- 如果带有
Dcm_OpStatusType的操作返回返回值DCM_E_PENDING,则只要该状态持续存在,DCM 就会在每次调用Dcm_MainFunction时使用OpStatus = DCM_PENDING再次调用该操作([SWS_Dcm_00530])。 - 如果
Dem_ClearDTC()返回状态DEM_PENDING,则该函数将在Dcm_MainFunction的下一个周期中再次被调用;DCM 会在需要时发送 NRC 78(ResponsePending)([SWS_Dcm_00703])。 - 在设置了参数
FilterForFault-DetectionCounter的情况下调用Dem_SetDTCFilter(),必须强制在Dcm_MainFunction的上下文中进行([SWS_Dcm_00519])。 - 在确认 RCR-RP 传输后,DCM 会从
Dcm_MainFunction中再次使用OpStatus = DCM_FORCE_RCRRP_OK调用诸如Dcm_WriteMemory或Dcm_ReadMemory等操作([SWS_Dcm_00529]、[SWS_Dcm_00838]、[SWS_Dcm_00840])。 - 如果对于
Xxx_GetSecurityAttemptCounter报告了值DCM_E_PENDING,则调用将被中断并在下一个周期中继续([SWS_Dcm_01351]);在超过配置的超时时间时,DCM 会使用OpStatus = DCM_CANCEL中止挂起的操作([SWS_Dcm_01352])。
本使用说明是基于 AUTOSAR 规范自动生成的。
实现者指南即将推出(复杂度 I2)
函数 Xxx_GetSeed [SWS_Dcm_01151] 📄 PDF
Std_ReturnType Xxx_GetSeed (const uint8* SecurityAccessDataRecord, Dcm_OpStatusType OpStatus, uint8* Seed, Dcm_NegativeResponseCodeType* ErrorCode);
Request to application for asynchronous provision of seed value
函数 Xxx_GetSeed(通过 Dcm_Externals.h 提供)用于由应用程序异步向 DCM 模块提供种子值 [SWS_Dcm_01151]。一旦接收到子功能类型为“requestSeed”的服务 SecurityAccess (0x27) 的 UDS 请求,且请求的安全级别尚未激活,该函数即被调用 [SWS_Dcm_00862],[SWS_Dcm_00324]。
调用上下文与参数
该接口定义为不可重入(Non Reentrant)并以异步方式运行 [SWS_Dcm_01151]:
SecurityAccessDataRecord:指向用于种子计算的附加输入数据的指针;根据DcmDspSecurityADRSize,最小大小为一字节 [SWS_Dcm_01151]。OpStatus:指示异步操作的当前状态 [SWS_Dcm_01151]。Seed:输出指针,应用程序通过其提供计算出的种子 [SWS_Dcm_01151]。ErrorCode:用于返回否定错误码(NRC)的输出参数 [SWS_Dcm_01151]。
返回值与错误处理
E_OK:种子已成功计算并提供 [SWS_Dcm_01151]。DCM_E_PENDING:计算尚未完成;完成需要后续计算或调用 [SWS_Dcm_01151]。E_NOT_OK:请求失败。在此情况下,DCM 模块发送带有在参数ErrorCode中传递的 NRC 值的否定 UDS 响应 [SWS_Dcm_01151],[SWS_Dcm_00659]。
集成说明
根据 DcmDspSecurityUsePort 的配置,在 USE_ASYNCH_FNC 时作为 C 函数连接(通过 DcmDspSecurityGetSeedFnc 引用)[SWS_Dcm_00862],或在 USE_ASYNCH_CLIENT_SERVER 时作为 Rte 操作连接 [SWS_Dcm_00324]。只要无需传递附加访问数据,就会使用不带参数 SecurityAccessDataRecord 的替代函数签名 [SWS_Dcm_91003]。
此使用说明基于 AUTOSAR CP R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_GetSeed [SWS_Dcm_91003] 📄 PDF
Std_ReturnType Xxx_GetSeed (Dcm_OpStatusType OpStatus, uint8* Seed, Dcm_NegativeResponseCodeType* ErrorCode);
Request to application for asynchronous provision of seed value
函数 Xxx_GetSeed 作为模块 DCM 面向应用程序的异步接口,用于在 UDS 服务 SecurityAccess(0x27)中遇到类型为“requestSeed”的请求时提供种子值 [SWS_Dcm_91003]、[SWS_Dcm_00862]。只要安全级别尚未激活且配置规定了 USE_ASYNCH_CLIENT_SERVER 或 USE_ASYNCH_FNC,调用便由 DCM DSP 子模块发起 [SWS_Dcm_00324]、[SWS_Dcm_00862]。
该接口设计为异步且不可重入(Non Reentrant)[SWS_Dcm_91003]。处理进度的控制通过输入参数 OpStatus(类型 Dcm_OpStatusType)进行 [SWS_Dcm_91003]。定义的返回值包括成功提供时的 E_OK、出错时的 E_NOT_OK,以及在种子生成仍在进行且需要进一步调用时的 DCM_E_PENDING [SWS_Dcm_91003]。生成的值通过指针 Seed(输入输出/输出缓冲区)传递 [SWS_Dcm_91003]。
如果操作失败且 Xxx_GetSeed 返回 E_NOT_OK,则 DCM 模块必须发送带有错误码的否定响应(NRC),该错误码通过输出参数 ErrorCode(Dcm_NegativeResponseCodeType)设定 [SWS_Dcm_91003]、[SWS_Dcm_00659]。该服务通过头文件 Dcm_Externals.h 声明 [SWS_Dcm_91003]。
本段文本由人工智能基于 AUTOSAR 标准 R20-11 生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_CompareKey [SWS_Dcm_91004] 📄 PDF
Std_ReturnType Xxx_CompareKey (const uint8* Key, Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);
Request to application for asynchronous comparing key (DcmDspSecurityUsePort = USE_ ASYNCH_CLIENT_SERVER)
函数 Xxx_CompareKey 由 Diagnostic Communication Manager([SWS_Dcm_91004])以异步且非重入的方式调用,以便在 UDS 服务 SecurityAccess(0x27,子功能 sendKey)的框架内将接收到的密钥与应用程序的内部逻辑进行比对([SWS_Dcm_00863])。当访问状态尚未激活、种子请求成功且配置参数 DcmDspSecurityUsePort 设置为 USE_ASYNCH_CLIENT_SERVER([SWS_Dcm_00324]),或者根据 [SWS_Dcm_00863] 该函数接口通过 USE_ASYNCH_FNC/DcmDspSecurityCompareKeyFnc 配置时,使用该函数。该接口在 Dcm_Externals.h 中声明([SWS_Dcm_91004])。
传递内容包括待检查的密钥指针 Key、当前操作状态 OpStatus(类型为 Dcm_OpStatusType)以及用于在发生错误时输出否定响应码的指针 ErrorCode([SWS_Dcm_91004])。指定的返回值包括:
E_OK:密钥检查成功([SWS_Dcm_91004])。DCM_E_PENDING:检查尚未完成;需要由 DCM 模块进一步调用以完成处理([SWS_Dcm_91004])。E_NOT_OK:处理未成功。随后 DCM 发送带有在ErrorCode中设置的 NRC 的 UDS 否定响应,而不会更改内部安全等级或增加失败尝试计数器(AttemptCounter)([SWS_Dcm_01150])。DCM_E_COMPARE_KEY_FAILED:密钥不匹配([SWS_Dcm_91004])。
如果密钥比对失败(DCM_E_COMPARE_KEY_FAILED),则在配置了 DcmDspSecurityNumAttDelay 的情况下,AttemptCounter 将递增([SWS_Dcm_01397])。如果计数器低于限值,DCM 发送 NRC 0x35(InvalidKey)([SWS_Dcm_00660])。如果失败尝试次数达到或超过配置的限制 DcmDspSecurityNumAttDelay,DCM 将启动时长为 DcmDspSecurityDelayTime 的 SecurityDelayTimer,并发送 NRC 0x36(exceededNumberOfAttempts)([SWS_Dcm_01349])。在这两种情况下,安全等级均保持不变。
本使用说明由自动化生成,基于 AUTOSAR Classic R20-11 DCM 模块的规范。
实现者指南即将推出(复杂度 I3)
函数 Xxx_GetSecurityAttemptCounter [SWS_Dcm_01152] 📄 PDF
Std_ReturnType Xxx_GetSecurityAttemptCounter (Dcm_OpStatusType OpStatus, uint8* AttemptCounter);
Read the attempt counter for a specific security level from the application
异步且不可重入的函数 [SWS_Dcm_01152] 在 DCM 初始化时从应用程序中读取已配置安全级别的当前失败尝试计数器。对 DcmDspSecurityRow 中配置参数 DcmDspSecurityAttemptCounterEnabled 设置为 TRUE 的每个条目均进行调用 [SWS_Dcm_01154]。
流程控制通过带有值 DCM_INITIAL、DCM_PENDING 或 DCM_CANCEL 的参数 OpStatus 进行管理 [SWS_Dcm_01152]。如果函数返回 DCM_E_PENDING,DCM 将中断调用链并在 Dcm_MainFunction() 的下一个周期中继续该调用链 [SWS_Dcm_01351]。如果超过了在第一个周期后配置的超时监控 DcmDspSecurityMaxAttemptCounterReadoutTime,DCM 将以 DCM_CANCEL 中止尚待处理的过程 [SWS_Dcm_01352]。
成功时,接口返回 E_OK 并通过输出参数 AttemptCounter 传递计数器数值 [SWS_Dcm_01152]。如果调用返回 E_NOT_OK,DCM 会自动将计数器设置为针对该安全级别配置的值 DcmDspSecurityNumAttDelay [SWS_Dcm_01156]。
只要并非所有计数器值都已最终确定或中止,DCM 就会以否定响应码 conditionsNotCorrect (0x22) 拒绝用于请求种子的对 SecurityAccess (0x27) 的任何请求 [SWS_Dcm_01354]。查询链完成后,DCM 会检查计数器值:如果有至少一个计数器达到或超过阈值 DcmDspSecurityNumAttDelay,DCM 将使用 DcmDspSecurityDelayTimeOnBoot 和 DcmDspSecurityDelayTime 中的较大值启动 SecurityDelayTimer [SWS_Dcm_01355]。
本使用说明基于 AUTOSAR 规范 R20-11 自动生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_SetSecurityAttemptCounter [SWS_Dcm_01153] 📄 PDF
Std_ReturnType Xxx_SetSecurityAttemptCounter (Dcm_OpStatusType OpStatus, uint8 AttemptCounter);
Set the attempt counter for a specific security level in the application
函数 Xxx_SetSecurityAttemptCounter 用于设置应用程序中特定安全级别的尝试计数器([SWS_Dcm_01153])。它通过头文件 Dcm_Externals.h 提供。
调用与语义
执行方式为异步,并指定为不可重入(Non Reentrant)([SWS_Dcm_01153])。该调用通过带有值 DCM_INITIAL、DCM_PENDING 或 DCM_CANCEL 的参数 OpStatus 控制流程。新的计数器值通过输入参数 AttemptCounter(uint8)传递。
返回值与错误处理
使用 Std_ReturnType 作为返回类型([SWS_Dcm_01153]):
E_OK:请求已成功完成。E_NOT_OK:执行未成功。DCM_E_PENDING:处理尚未结束;需要进一步调用以完成。
若正在运行的异步操作被中止,DCM 将传递状态 DCM_CANCEL([SWS_Dcm_01153])。
交互与约束条件
DCM 模块一旦更改了尝试计数器,就会调用 Xxx_SetSecurityAttemptCounter,以通知应用程序该更新([SWS_Dcm_01155])。这要求对应 DcmDspSecurityRow 的配置参数 DcmDspSecurityAttemptCounterEnabled 配置为 TRUE([SWS_Dcm_01155])。由于该接口不可重入,应用程序必须排除对同一实例的并发执行([SWS_Dcm_01153])。
本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ReadData [SWS_Dcm_00793] 📄 PDF
Std_ReturnType Xxx_ReadData (uint8* Data);
This function requests to the application a data value of a DID/PID if DcmDspDataUsePort is set to USE_DATA_SYNCH_CLIENT_SERVER.
当配置参数DcmDspDataUsePort设置为USE_DATA_SYNCH_CLIENT_SERVER时,同步函数Xxx_ReadData向应用程序请求 DID 或 PID 的当前数据值[SWS_Dcm_00793]。该接口通过头文件Dcm_Externals.h提供,并具有服务 ID 0x34 [SWS_Dcm_00793]。被调用的应用程序将请求的有效负载数据直接复制到传入的缓冲区Data中[SWS_Dcm_00793]。
关于返回值,规定该调用无一例外地返回E_OK [SWS_Dcm_00793]。此签名未指定特定的错误代码、否定响应或 DET/DEM 消息。解释:在此接口层面上推测不考虑数据提供失败的情况,因为与异步变体[SWS_Dcm_91005]不同,既不存在用于否定响应码(NRC)的参数ErrorCode,也不存在诸如E_NOT_OK或DCM_E_PENDING之类的返回值。 问题 Q-adcf0171ecfd37c4 (未决)
关于并发性和边界条件,该函数被指定为不可重入(Non Reentrant),并且完全同步工作[SWS_Dcm_00793]。与诊断请求的交互发生在多个场景中:
- 当接收到带有不可用 PID 的 OBD 服务 $01 请求时,DCM 为该 PID 的所有数据调用各自配置的
Xxx_ReadData函数,以采集响应值[SWS_Dcm_00408]。 - 当接收到带有不可用标识符的服务 0x22(ReadDataByIdentifier)的 UDS 请求时,DCM 为
OBDDataIdentifier[SWS_Dcm_01380]以及OBDInfoTypeDataIdentifier[SWS_Dcm_01389]的所有数据调用这些函数。 - 相反,如果需要异步行为,则根据[SWS_Dcm_91006]或[SWS_Dcm_91005]采用带有
OpStatus的独立签名。
本文档由 AI 生成,完全基于 Release R20-11 的规范。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ReadData [SWS_Dcm_91006] 📄 PDF
Std_ReturnType Xxx_ReadData (Dcm_OpStatusType OpStatus, uint8* Data);
This function requests to the application a data value of a DID/PID if DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER.
只要参数DcmDspDataUsePort配置为USE_DATA_ASYNCH_CLIENT_SERVER([SWS_Dcm_91006]),函数Xxx_ReadData便用于从应用程序异步查询 DID 或 PID 的数据值。它通过头文件Dcm_Externals.h声明([SWS_Dcm_91006])。
调用时,参数OpStatus(类型Dcm_OpStatusType)控制正在进行的操作的进度,而通过指针Data(类型uint8*)传递输出缓冲区,所请求的数据将被复制到该缓冲区中([SWS_Dcm_91006])。定义的返回值包括成功完成时的E_OK,以及在处理仍在继续且需要进一步调用以完成时的DCM_E_PENDING([SWS_Dcm_91006])。
DCM 模块将该函数集成到以下诊断流程中:
- 在接收到 OBD Service $01 时,DCM 通过配置的
Xxx_ReadData函数读取当前 PID 值(可用性 PID 除外)([SWS_Dcm_00408])。 - 在 UDS Service 0x22(
ReadDataByIdentifier)时,DCM 为 OBDDataIdentifier([SWS_Dcm_01380])和 OBDInfoTypeDataIdentifier([SWS_Dcm_01389])调用该函数。
在执行方面,该函数被指定为不可重入(Non Reentrant)([SWS_Dcm_91006])。与同步接口([SWS_Dcm_00793])或带有附加ErrorCode参数的异步变体([SWS_Dcm_91005])不同,此函数形式不提供否定响应码的直接返回。
本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。
实现者指南即将推出(复杂度 I3)
函数 Xxx_ReadData [SWS_Dcm_91005] 📄 PDF
Std_ReturnType Xxx_ReadData (Dcm_OpStatusType OpStatus, uint8* Data, Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application a data value of a DID/PID if DcmDspDataUsePort is set to USE_DATA_ASYNCH_CLIENT_SERVER.
只要配置参数 DcmDspDataUsePort 设置为 USE_DATA_ASYNCH_CLIENT_SERVER,函数 Xxx_ReadData 便向应用程序异步请求 DID 或 PID 的数据值 [SWS_Dcm_91005]。函数声明通过接口文件 Dcm_Externals.h 提供 [SWS_Dcm_91005]。
该接口具有以下调用和运行特性:
- 语义和参数:输入参数
OpStatus控制正在进行的操作的进度 [SWS_Dcm_91005]。成功完成时,请求的有效数据被复制到输出缓冲区Data中,并返回E_OK[SWS_Dcm_91005]。如果应用程序需要更多处理时间,则发出DCM_E_PENDING信号,随后需要进行后续调用 [SWS_Dcm_91005]。 - 错误处理:如果操作失败并返回
E_NOT_OK,则 DCM 模块评估输出参数ErrorCode并发送带有此 NRC 代码的否定诊断响应 [SWS_Dcm_91005]。 - 并发性:该函数被定义为不可重入(
Non Reentrant)[SWS_Dcm_91005]。解释:挂起处理时的重复调用应在 DCM 主处理循环中按序进行。 问题 Q-541226d5f242f7c2 (未决) - 交互:DCM 模块在 OBD 服务 $01 针对不可用 PID 发出请求时 [SWS_Dcm_00408],以及在 UDS 服务 ReadDataByIdentifier (0x22) 针对
OBDDataIdentifier[SWS_Dcm_01380] 和OBDInfoTypeDataIdentifier[SWS_Dcm_01389] 时调用该函数。与同步变体 [SWS_Dcm_00793] 或没有 NRC 参数的异步接口 [SWS_Dcm_91006] 相比,该签名允许传输特定的否定错误。
本段文本由人工智能生成,并完全基于 AUTOSAR 版本 R20-11 的规范要求。
实现者指南即将推出(复杂度 I3)
函数 Xxx_WriteData [SWS_Dcm_00794] 📄 PDF
Std_ReturnType Xxx_WriteData (const uint8* Data, Dcm_NegativeResponseCodeType* ErrorCode);
This function requests the application to write a data value of a DID.
使用
函数 Xxx_WriteData 由 Diagnostic Communication Manager (DCM) 调用,以请求应用程序写入 DID 数据值(Data Identifier)([SWS_Dcm_00794])。声明通过头文件 Dcm_Externals.h 提供。调用在服务 ID 0x51 下同步进行([SWS_Dcm_00794])。
参数与返回值:
Data(in):指向带有待写入有效载荷数据的缓冲区的指针([SWS_Dcm_00794])。ErrorCode(out):指向在失败时写入否定诊断代码(NRC)的变量的指针([SWS_Dcm_00794])。- 返回值(
Std_ReturnType):E_OK指示写入成功,E_NOT_OK指示操作失败([SWS_Dcm_00794])。
错误处理
如果函数返回 E_NOT_OK,则 DCM 模块读取参数 ErrorCode 并发送带有此 NRC 代码的否定诊断响应([SWS_Dcm_00794])。
并发性与限制
该函数被指定为不可重入(Non Reentrant)([SWS_Dcm_00794]),不得并发执行。
相互作用
由于不存在长度参数,该变体可能旨在用于具有固定数据长度的 DID。 问题 Q-ebc074ac1cb66aaa (未决)对于具有可变长度的 DID,AUTOSAR 提供了带有参数 DataLength 的同步签名([SWS_Dcm_91007])。此外,对于耗时的过程,存在带有 OpStatus 且可能返回 DCM_E_PENDING 的异步变体,既包括固定数据长度([SWS_Dcm_91008]),也包括可变长度参数([SWS_Dcm_91009])。
此文本由 AI 基于 AUTOSAR CP R20-11 规范生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_WriteData [SWS_Dcm_91007] 📄 PDF
Std_ReturnType Xxx_WriteData (const uint8* Data, uint16 DataLength, Dcm_NegativeResponseCodeType* ErrorCode);
This function requests the application to write a data value of a DID.
回调函数Xxx_WriteData用于请求应用程序写入数据标识符(DID)的数据值[SWS_Dcm_91007]。该接口通过头文件Dcm_Externals.h声明,并具有服务 ID 0x52 [SWS_Dcm_91007]。该调用同步执行,并被指定为不可重入(Non Reentrant),因此不得对同一函数进行并发调用[SWS_Dcm_91007]。
在参数方面,该函数接收包含待写入有效负载数据的缓冲区Data以及包含以字节为单位的长度规范的DataLength [SWS_Dcm_91007]。作为返回值,它提供类型Std_ReturnType,成功执行时返回E_OK,出错时返回E_NOT_OK [SWS_Dcm_91007]。如果操作失败并返回E_NOT_OK,则 DCM 模块必须向诊断测试仪发送否定响应;此时否定响应码(NRC)对应于通过指针参数ErrorCode传递的值[SWS_Dcm_91007]。
在整个系统中,[SWS_Dcm_91007]代表具有显式长度规范的 DID 的同步变体。此外,还存在没有参数DataLength的同步变体[SWS_Dcm_00794](服务 ID 0x51)。对于较长的写入过程,标准提供了异步接口:不带长度规范的[SWS_Dcm_91008](服务 ID 0x35)以及带有DataLength的[SWS_Dcm_91009](服务 ID 0x3e)。这两个异步函数均通过OpStatus控制,除E_OK和E_NOT_OK外,还可以返回DCM_E_PENDING [SWS_Dcm_91008] [SWS_Dcm_91009]。
本使用说明基于 AUTOSAR Classic Release R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_WriteData [SWS_Dcm_91008] 📄 PDF
Std_ReturnType Xxx_WriteData (const uint8* Data, Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);
This function requests the application to write a data value of a DID.
使用
函数Xxx_WriteData请求应用程序写入数据标识符(DID)的数据值[SWS_Dcm_91008]。它在头文件Dcm_Externals.h中声明,并具有带服务 ID 0x35的异步执行语义[SWS_Dcm_91008]。
参数和返回值划分如下[SWS_Dcm_91008]:
Data(IN):指向包含待写入数据的缓冲区的指针。OpStatus(IN):当前操作的状态,用于控制异步调用流程。ErrorCode(OUT):指向错误代码(NRC)的指针,该代码在发生错误时设置。- 返回值(
Std_ReturnType):E_OK确认写入过程成功,E_NOT_OK报告失败,DCM_E_PENDING表示操作仍在进行中且需要进一步调用以完成。
错误处理与并发
如果调用返回值E_NOT_OK,则 DCM 模块必须发送带有输出参数ErrorCode中传递的 NRC 值的否定响应[SWS_Dcm_91008]。该函数被指定为不可重入[SWS_Dcm_91008],因此针对同一实例的并发或重叠调用是不允许的。
交互与变体
符合[SWS_Dcm_91008]的此接口涵盖了没有独立长度参数的异步写入访问。AUTOSAR 为此在 DCM 中定义了相关变体:不带长度规范的同步签名[SWS_Dcm_00794],以及带有用于同步流程[SWS_Dcm_91007]和异步流程[SWS_Dcm_91009]的附加参数DataLength的签名。
本使用说明是由 AI 系统基于 AUTOSAR CP R20-11 规范生成的。
实现者指南即将推出(复杂度 I2)
函数 Xxx_WriteData [SWS_Dcm_91009] 📄 PDF
Std_ReturnType Xxx_WriteData (const uint8* Data, uint16 DataLength, Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);
This function requests the application to write a data value of a DID.
用法与语义
函数Xxx_WriteData请求应用程序写入数据标识符(DID)的数据值[SWS_Dcm_91009]。它通过头文件Dcm_Externals.h声明,并具有服务 ID 0x3e [SWS_Dcm_91009]。执行是异步进行的(Asynchronous),为此传递以下参数:
Data(in):指向包含待写入有效负载数据的缓冲区的指针[SWS_Dcm_91009]。DataLength(in):待写入数据的长度,以字节为单位[SWS_Dcm_91009]。OpStatus(in):操作状态(Dcm_OpStatusType),用于控制异步处理进度[SWS_Dcm_91009]。ErrorCode(out):用于在发生错误时接收否定响应码(NRC)的指针[SWS_Dcm_91009]。
作为类型为Std_ReturnType的返回值,定义了E_OK(写入请求成功完成)、E_NOT_OK(请求失败)以及DCM_E_PENDING [SWS_Dcm_91009]。状态DCM_E_PENDING表明该过程尚未完成,需要进一步的后续调用才能完成[SWS_Dcm_91009]。解释:当返回DCM_E_PENDING且带有继续的OpStatus时,DCM 大概会循环重新调用该函数,直到得出最终结果。 问题 Q-fdbd734dab052f5c (未决)
错误处理与并发
如果函数返回数值E_NOT_OK,则必须通过参数ErrorCode提供相应的错误代码;DCM 模块随后发送带有此 NRC 值的否定响应[SWS_Dcm_91009]。针对该接口的有效负载中未定义特定的 DET 或 DEM 消息。关于并发性,该函数被指定为不可重入(Non Reentrant)[SWS_Dcm_91009]。
交互与接口变体
签名[SWS_Dcm_91009]涵盖具有显式长度规范的异步写入访问。DCM 中存在Xxx_WriteData的其他变体:
- 不带长度规范的同步执行:[SWS_Dcm_00794](服务 ID
0x51)。 - 带长度规范的同步执行:[SWS_Dcm_91007](服务 ID
0x52)。 - 不带长度规范的异步执行:[SWS_Dcm_91008](服务 ID
0x35)。
注意:本使用说明是基于 AUTOSAR Classic Release R20-11 规范自动生成的。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ReadDataLength [SWS_Dcm_00796] 📄 PDF
Std_ReturnType Xxx_ReadDataLength (uint16* DataLength);
This function requests the application to return the data length in byte of a Data.
使用
通过函数 Xxx_ReadDataLength,DCM 模块请求应用程序确定并返回某项数据的字节长度 [SWS_Dcm_00796]。该接口在头文件 Dcm_Externals.h 中声明,并具有服务 ID 0x36 [SWS_Dcm_00796]。该查询同步执行 [SWS_Dcm_00796]。应用程序通过类型为 uint16* 的输出参数 DataLength 将要读取的数据的字节长度传递给 DCM [SWS_Dcm_00796]。未定义输入参数或输入/输出参数 [SWS_Dcm_00796]。作为返回值,该函数始终提供类型为 Std_ReturnType 的 E_OK [SWS_Dcm_00796]。
并发性与限制
该接口被指定为不可重入(Non Reentrant)[SWS_Dcm_00796]。由于该函数同步工作且根据规范始终报告 E_OK,因此未针对此调用规定特定的错误代码或不同的状态返回值 [SWS_Dcm_00796]。
相互作用
除同步函数外,还存在一个同名的异步变体,其服务 ID 为 0x4c,同样通过 Dcm_Externals.h 提供 [SWS_Dcm_91010]。同步版本 [SWS_Dcm_00796] 不需要操作状态,而异步对应项则要求类型为 Dcm_OpStatusType 的输入参数 OpStatus [SWS_Dcm_91010]。此外,如果请求尚未完成且需要更多调用来完成,则异步接口除了 E_OK 之外还可以提供返回值 DCM_E_PENDING [SWS_Dcm_91010]。
此文本由 AI 生成,用作参考指引。具有约束力的是相应 AUTOSAR 规范的规定。
实现者指南即将推出(复杂度 I1)
函数 Xxx_ReadDataLength [SWS_Dcm_91010] 📄 PDF
Std_ReturnType Xxx_ReadDataLength (Dcm_OpStatusType OpStatus, uint16* DataLength);
This function requests the application to return the data length in byte of a Data.
函数 [SWS_Dcm_91010](服务 ID 0x4c)请求应用程序确定数据元素以字节为单位的数据长度。它在头文件 Dcm_Externals.h 中声明,用于 Diagnostic Communication Manager (DCM) 灵活查询诊断数据长度。
用法与语义
调用时,DCM 模块通过类型为 Dcm_OpStatusType 的输入参数 OpStatus 传递当前进度([SWS_Dcm_91010])。应用程序将查询结果写入输出参数 DataLength(类型 uint16*)。如果数据长度无法立即获取,函数通过返回值 DCM_E_PENDING 发出信号,表示处理仍在进行且需要进一步调用([SWS_Dcm_91010])。一旦结果就绪,应用程序便返回 E_OK 报告完成。
并发性与限制
根据规范,该函数被归类为非重入([SWS_Dcm_91010]),因此必须排除 DCM 的并发调用。由于规范除了 DCM_E_PENDING 之外未规定具体的错误值,因此在返回 E_OK 时,DCM 应该始终假定已有效设置了字节大小。 问题 Q-e7ecd3a518e2cbcb (未决)
相互作用
异步接口 [SWS_Dcm_91010] 与相关的同步变体 [SWS_Dcm_00796](服务 ID 0x36)有所不同。后者没有参数 OpStatus,以同步方式执行,并始终立即返回长度 E_OK。相反,[SWS_Dcm_91010] 允许应用程序将耗时的计算异步分散到多个调用周期中。
本文件由人工智能根据 AUTOSAR 规范生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ConditionCheckRead [SWS_Dcm_00797] 📄 PDF
Std_ReturnType Xxx_ConditionCheckRead (Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application if the conditions to read the Data are correct.
同步标注函数 Xxx_ConditionCheckRead 通过头文件 Dcm_Externals.h 提供,用于向应用程序查询读取诊断数据的条件是否满足 [SWS_Dcm_00797]。
该接口没有输入参数,并通过类型为 Std_ReturnType 的返回值指示检查状态 [SWS_Dcm_00797]:
E_OK:检查成功,满足读取数据的条件 [SWS_Dcm_00797]。E_NOT_OK:检查失败,不允许读取 [SWS_Dcm_00797]。
如果函数返回 E_NOT_OK,则 DCM 模块发送带有错误码的否定响应(Negative Response),该错误码由应用程序通过输出参数 ErrorCode(类型 Dcm_NegativeResponseCodeType*)传递 [SWS_Dcm_00797]。
关于并发性,该函数被指定为不可重入(Non Reentrant),并以服务 ID 0x49 同步执行 [SWS_Dcm_00797]。因此,在应用端应当立即评估该检查而无阻塞等待时间,以避免造成同步 DCM 调用方延迟。 问题 Q-ada29c78c29d961e (未决)
与此同步操作不同,[SWS_Dcm_91011] 在服务 ID 0x37 下定义了异步变体。该变体额外使用输入参数 OpStatus(类型 Dcm_OpStatusType),并且在需要后续步骤以完成检查时,除 E_OK 和 E_NOT_OK 外还可以返回 DCM_E_PENDING [SWS_Dcm_91011]。
此使用说明基于 AUTOSAR 规范 R20-11 自动生成。
实现者指南即将推出(复杂度 I1)
函数 Xxx_ConditionCheckRead [SWS_Dcm_91011] 📄 PDF
Std_ReturnType Xxx_ConditionCheckRead (Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application if the conditions to read the Data are correct.
用法与语义
函数 Xxx_ConditionCheckRead 通过头文件 Dcm_Externals.h 提供,用于向应用软件查询读取诊断数据的条件是否满足 [SWS_Dcm_91011]。执行在服务 ID 0x37 下以异步方式进行 [SWS_Dcm_91011]。通过输入参数 OpStatus(类型 Dcm_OpStatusType)传递正在运行的操作的当前状态 [SWS_Dcm_91011]。
返回值与错误处理
作为返回值,该函数提供类型为 Std_ReturnType 的状态[SWS_Dcm_91011]:
E_OK:请求成功且满足读取条件 [SWS_Dcm_91011]。E_NOT_OK:检查失败 [SWS_Dcm_91011]。在这种情况下,应用必须通过输出参数ErrorCode设置一个类型为Dcm_NegativeResponseCodeType的否定响应码(NRC);随后 DCM 模块发送带有该 NRC 的否定响应 [SWS_Dcm_91011]。DCM_E_PENDING:检查尚未完成,因此需要进一步调用以完成 [SWS_Dcm_91011]。
并发性与区别
该接口被指定为非重入(Non Reentrant)[SWS_Dcm_91011]。与此异步变体不同,[SWS_Dcm_00797] 在服务 ID 0x49 下定义了一个不带 OpStatus 参数的同步签名,该签名仅返回 E_OK 或 E_NOT_OK [SWS_Dcm_00797]。
此使用说明由AI基于AUTOSAR R20-11规范生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_GetScalingInformation [SWS_Dcm_00798] 📄 PDF
Std_ReturnType Xxx_GetScalingInformation (uint8* ScalingInfo, Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application for the scaling information of a Data.
函数 Xxx_GetScalingInformation [SWS_Dcm_91012] 📄 PDF
Std_ReturnType Xxx_GetScalingInformation (Dcm_OpStatusType OpStatus, uint8* ScalingInfo, Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application for the scaling information of a Data.
异步接口 Xxx_GetScalingInformation 通过头文件 Dcm_Externals.h 提供,用于从应用程序请求数据元素的缩放信息 [SWS_Dcm_91012]。一旦接收到针对 UDS 服务 ReadScalingByIdentifier 的诊断请求,DCM 模块就会针对为所请求 DID 配置的每个数据项调用此函数 [SWS_Dcm_00394]。
参数与返回值
该函数定义了以下参数和语义 [SWS_Dcm_91012]:
OpStatus(输入):传递正在运行的操作的当前状态。ScalingInfo(输出):用于接收缩放信息(scalingByte和scalingByteExtension)的缓冲区。ErrorCode(输出):在操作失败时代收否定响应码。
指定的返回值包括:成功完成时的 E_OK、发生错误时的 E_NOT_OK,以及在处理尚未完成且需要进一步调用以完成时的 DCM_E_PENDING [SWS_Dcm_91012]。
错误处理与并发
如果调用返回 E_NOT_OK,则 DCM 模块必须发送一个否定响应,其 NRC 对应于通过输出参数 ErrorCode 提供的值 [SWS_Dcm_91012]。该函数被指定为非重入(Non Reentrant)[SWS_Dcm_91012]。Interpretation:是调用带有 OpStatus 的此异步函数,还是调用备选指定的无 OpStatus 的同步变体 [SWS_Dcm_00798],应该取决于相应 DID 的配置。 问题 Q-c4054a798f17a52c (未决)
本段文本由 AI 创建;无法保证信息的正确性和完整性。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ReturnControlToECU [SWS_Dcm_01285] 📄 PDF
Std_ReturnType Xxx_ReturnControlToECU ([ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application to return control to ECU of an IOControl.
函数 Xxx_ReturnControlToECU 通过头文件 Dcm_Externals.h 提供,并请求应用程序将输入/输出控制(IOControl)的控制权交还给 ECU [SWS_Dcm_01285]。该调用同步进行,并被指定为不可重入 [SWS_Dcm_01285]。
参数和变体
函数签名取决于外部控制掩码的配置 [SWS_Dcm_01285]:
- 如果
DcmDspDidControlMask设置为DCM_CONTROLMASK_EXTERNAL且掩码大小最多为四个字节(DcmDspDidControlMaskSize <= 0x04),则传递类型为Dcm_ControlMask_{DID}Type的输入参数controlMask[SWS_Dcm_01285]。 - 如果掩码大小为 5 个或更多字节(
DcmDspDidControlMaskSize >= 0x05),则改用类型为uint8*的指针controlMask2[SWS_Dcm_01285]。 - 发生错误时,函数通过输出参数
ErrorCode(类型Dcm_NegativeResponseCodeType*)将具体的否定响应码(NRC)传递给 DCM [SWS_Dcm_01285]。
返回值与错误处理
该函数返回状态 Std_ReturnType。成功归还控制权时,应用程序报告 E_OK [SWS_Dcm_01285]。若操作失败,函数必须返回 E_NOT_OK;在这种情况下,DCM 模块会向诊断仪发送带有 ErrorCode 中存储的 NRC 的否定响应 [SWS_Dcm_01285]。
交互与调用上下文
当 DcmDspDataUsePort 配置为 USE_DATA_SYNCH_FNC、USE_DATA_ASYNCH_FNC 或 USE_DATA_ASYNCH_FNC_ERROR 时,DCM 会调用已配置的函数接口(参数 DcmDspDataReturnControlToEcuFnc)[SWS_Dcm_01435]。除常规诊断操作外,在必须中止活动的 IO 控制序列时,DCM 尤其会调用 Xxx_ReturnControlToECU [SWS_Dcm_01435]。
本使用说明基于规范自动生成。
实现者指南即将推出(复杂度 I1)
函数 Xxx_ResetToDefault [SWS_Dcm_01286] 📄 PDF
Std_ReturnType Xxx_ResetToDefault ([ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application to reset an IOControl to default value.
同步函数接口 Xxx_ResetToDefault 通过头文件 Dcm_Externals.h 提供,用于请求应用程序将 I/O 控制(IOControl)重置为默认值 [SWS_Dcm_01286]。
调用上下文与参数
该函数的服务 ID 为 0x4d,以同步方式工作,并被指定为非重入 [SWS_Dcm_01286]。根据所配置的外部控制掩码大小,将传递两个备选输入参数之一:
- 当
DcmDspDataUsePort配置为USE_DATA_SYNCH_FNC、DcmDspDidControlMask处于DCM_CONTROLMASK_EXTERNAL且DcmDspDidControlMaskSize最多为0x04时,使用controlMask(类型Dcm_ControlMask_{DID}Type)[SWS_Dcm_01286]。 - 在相同的边界条件下,如果
DcmDspDidControlMaskSize配置为大于或等于0x05,则使用controlMask2(类型uint8*)[SWS_Dcm_01286]。
返回值与错误处理
如果重置能够成功执行,函数将返回 E_OK [SWS_Dcm_01286]。如果操作失败,则必须返回 E_NOT_OK。在这种情况下,应用程序会将相应的否定响应码(NRC)填入输出参数 ErrorCode(类型 Dcm_NegativeResponseCodeType*),DCM 模块会将其作为否定反馈传输给测试仪 [SWS_Dcm_01286]。
相互协作与区分
如果系统设计为通过 USE_DATA_ASYNCH_FNC 或 USE_DATA_ASYNCH_FNC_ERROR 进行异步接口处理,则将使用带有附加参数 OpStatus 且服务 ID 为 0x3c 的异步变体来替代此同步函数 [SWS_Dcm_01314]。
本段文本由 AI 生成,基于 AUTOSAR Classic R20-11 规范。
实现者指南即将推出(复杂度 I1)
函数 Xxx_ResetToDefault [SWS_Dcm_01314] 📄 PDF
Std_ReturnType Xxx_ResetToDefault (Dcm_OpStatusType OpStatus, [ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application to reset an IOControl to default value.
异步函数 [SWS_Dcm_01314] 请求应用程序将输入/输出控制(IOControl)重置为其默认值。它在 Dcm_Externals.h 中声明,且其服务 ID 为 0x3c。通过参数 OpStatus 控制操作的进度。在处理尚未完成时,函数返回 DCM_E_PENDING;而成功完成时则通过 E_OK 确认。
根据配置和掩码大小(DcmDspDidControlMaskSize 至 4 字节或 5 字节起),在外部掩码情况下会额外传递 controlMask 或 controlMask2 [SWS_Dcm_01314]。如果重置失败,函数将返回 E_NOT_OK。在这种情况下,必须通过输出参数 ErrorCode 传递一个否定响应码(NRC),DCM 模块会将其作为否定响应发送给测试仪 [SWS_Dcm_01314]。
该函数被指定为非重入(Non Reentrant)[SWS_Dcm_01314]。当 DcmDspDataUsePort 设置为 USE_DATA_ASYNCH_FNC 或 USE_DATA_ASYNCH_FNC_ERROR 时使用它。对于同步接口配置(USE_DATA_SYNCH_FNC),可选择使用不带 OpStatus 的同步变体 [SWS_Dcm_01286]。
本段文本由 AI 创建,基于 AUTOSAR R20-11 的规范状态。
实现者指南即将推出(复杂度 I2)
函数 Xxx_FreezeCurrentStateManager [SWS_Dcm_01290] 📄 PDF
Std_ReturnType Xxx_FreezeCurrentState ([ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application to freeze the current state of an IOControl.
使用
同步函数 Xxx_FreezeCurrentState(在元素目录中列为 Xxx_FreezeCurrentStateManager)用于请求应用程序冻结输入或输出控制(IOControl)的当前状态 [SWS_Dcm_01290]。该函数可通过头文件 Dcm_Externals.h 获取,其 Service ID 为 0x4a AUTOSAR_SWS_DiagnosticCommunicationManager 第279页。(Interpretation:前缀 Xxx 可能是相应应用模块的占位符。) 问题 Q-f8c864cda732acc2 (未决)
接口参数取决于外部控制掩码的配置(DcmDspDidControlMask 设置为 DCM_CONTROLMASK_EXTERNAL)[SWS_Dcm_01290]:
controlMask(输入,类型Dcm_ControlMask_{DID}Type):当掩码大小DcmDspDidControlMaskSize配置为小于或等于 4 字节(<= 0x04)时传递。controlMask2(输入,类型uint8*):当掩码大小至少包含 5 字节(=> 0x05)时改用此项。ErrorCode(输出,类型Dcm_NegativeResponseCodeType*):用于在发生错误时接收否定响应码的指针。
错误处理与返回值
作为 Std_ReturnType,该函数在成功执行时返回 E_OK,在请求未成功时返回 E_NOT_OK [SWS_Dcm_01290]。如果发生错误并返回 E_NOT_OK,应用程序必须在参数 ErrorCode 中填入特定的否定响应码(NRC);DCM 模块随后发送带有该 NRC 码的诊断否定响应 AUTOSAR_SWS_DiagnosticCommunicationManager 第279页。
并发性与限制
该操作被指定为不可重入(Non Reentrant)[SWS_Dcm_01290]。调用方必须确保针对同一实例的调用同步执行且无并发重叠。
本文本由 AI 创建,仅供参考。具有约束力的是 AUTOSAR 规范。
实现者指南即将推出(复杂度 I1)
函数 Xxx_FreezeCurrentStateManager [SWS_Dcm_01315] 📄 PDF
Std_ReturnType Xxx_FreezeCurrentState (Dcm_OpStatusType OpStatus, [ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application to freeze the current state of an IOControl.
用法与调用上下文
异步函数 Xxx_FreezeCurrentState 由 DCM 模块调用,以请求应用软件冻结输入/输出控制(IOControl)的当前状态 [SWS_Dcm_01315]。其声明通过头文件 Dcm_Externals.h 提供 [SWS_Dcm_01315]。
参数和控制掩码
使用以下参数进行调用 [SWS_Dcm_01315]:
OpStatus:传递异步操作的当前状态(Dcm_OpStatusType)。controlMask或controlMask2:如果控制掩码被配置为外部(DcmDspDidControlMask == DCM_CONTROLMASK_EXTERNAL)并且使用异步函数接口,则 DCM 根据DcmDspDidControlMaskSize,在最多 4 字节时传递参数controlMask(类型为Dcm_ControlMask_{DID}Type),而在 5 字节及以上时传递指针controlMask2(uint8*)。ErrorCode:指向Dcm_NegativeResponseCodeType的指针,用于返回错误码。
返回值与错误处理
该函数返回类型为 Std_ReturnType 的状态 [SWS_Dcm_01315]:
E_OK:状态冻结已成功完成。DCM_E_PENDING:请求仍在处理中,需要后续调用。E_NOT_OK:操作失败。在这种情况下,DCM 会发送带有通过ErrorCode设置的 NRC 值的诊断否定响应。
并发性
该接口定义为不可重入(Non Reentrant),因此每个控制实例需要同步处理 [SWS_Dcm_01315]。
本段文本由 AI 生成并根据编辑准则整理。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ShortTermAdjustment [SWS_Dcm_00802] 📄 PDF
Std_ReturnType Xxx_ShortTermAdjustment (const uint8* ControlStateInfo, [ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application to adjust the IO signal.
同步函数 Xxx_ShortTermAdjustment 请求应用程序临时调整特定的 I/O 信号 [SWS_Dcm_00802]。它通过头文件 Dcm_Externals.h 提供,并具有服务 ID 0x50 [SWS_Dcm_00802]。
通过指针 ControlStateInfo,该函数从诊断请求的参数 ControlOptionRecord 中获取控制状态信息 InputOutputControlByIdentifier [SWS_Dcm_00802]。如果配置了外部控制掩码(DcmDspDidControlMask == DCM_CONTROLMASK_EXTERNAL),则根据 DcmDspDidControlMaskSize,还会额外传递类型为 Dcm_ControlMask_{DID}Type 的 controlMask(最多 4 字节)或作为 uint8* 的 controlMask2(5 字节及以上)[SWS_Dcm_00802]。
作为返回值,该操作提供 Std_ReturnType [SWS_Dcm_00802]:
E_OK:I/O 信号的调整已成功执行 [SWS_Dcm_00802]。E_NOT_OK:调整失败 [SWS_Dcm_00802]。在这种情况下,应用程序必须通过输出参数ErrorCode设置特定的否定响应码(Dcm_NegativeResponseCodeType),DCM 模块会在发送给测试仪的否定诊断响应中将其返回 [SWS_Dcm_00802]。
该函数为不可重入(Non Reentrant)且被同步调用 [SWS_Dcm_00802]。当数据元素配置为同步函数调用时,使用此同步变体(DcmDspDataUsePort == USE_DATA_SYNCH_FNC)[SWS_Dcm_00802]。相反,对于配置为异步的端口(USE_DATA_ASYNCH_FNC 或 USE_DATA_ASYNCH_FNC_ERROR),存在服务 ID 为 0x55 且具有包含 OpStatus 和 DataLength 在内的扩展参数集的异步变体 [SWS_Dcm_01316]。
此文本由 AI 创建,基于 AUTOSAR R20-11。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ShortTermAdjustment [SWS_Dcm_01316] 📄 PDF
Std_ReturnType Xxx_ShortTermAdjustment (const uint8* ControlStateInfo, uint16 DataLength, Dcm_OpStatusType OpStatus, [ Dcm_ControlMask_{DID}Type controlMask ], [ uint8* controlMask2 ], Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application to adjust the IO signal.
用法与调用上下文
函数 [SWS_Dcm_01316] 由 Diagnostic Communication Manager (DCM) 调用并通过 Dcm_Externals.h 提供。它异步请求应用程序在诊断服务 InputOutputControlByIdentifier 的框架内调整 IO 信号。控制数据通过指针 ControlStateInfo(来自参数 ControlOptionRecord)传递,并补充有字节长度 DataLength。执行流程通过 OpStatus 控制:只要调整仍在持续,应用就返回 DCM_E_PENDING;在成功完成后,它报告 E_OK。
变体与掩码参数
在外部配置控制掩码(DCM_CONTROLMASK_EXTERNAL)时,将传递附加参数 [SWS_Dcm_01316]:
- 若掩码大小小于或等于 4 字节,则传递类型为
Dcm_ControlMask_{DID}Type的controlMask。 - 若掩码大小至少为 5 字节,则改为传递指向
uint8的指针controlMask2。
错误处理与并发
如果信号控制失败,函数返回 E_NOT_OK 并通过指针 ErrorCode 设置否定响应码(NRC),DCM 在否定响应中传输该代码 [SWS_Dcm_01316]。该函数被指定为非重入。
相互协作与区分
当 DID 数据端口配置为 USE_DATA_ASYNCH_FNC 或 USE_DATA_ASYNCH_FNC_ERROR 且数据类型配置为 UINT8_DYN 时,使用此接口 [SWS_Dcm_01316]。它与同步变体 [SWS_Dcm_00802] 不同,后者既不使用 OpStatus 也不使用 DataLength,并且专用于静态数据类型的同步端口。
本段文本由 AI 策展助手基于 AUTOSAR 规范 R20-11 自动生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_IsDidAvailable [SWS_Dcm_00803] 📄 PDF
Std_ReturnType Xxx_IsDidAvailable (uint16 DID, Dcm_OpStatusType OpStatus, Dcm_DidSupportedType* supported);
This function requests if a specific DID is available within the range or not.
函数 Xxx_IsDidAvailable 用于异步检查请求的诊断标识符(DID)在定义的 DID 范围内是否可用 [SWS_Dcm_00803]。它通过头文件 Dcm_Externals.h 提供,并具有服务 ID 0x53 [SWS_Dcm_00803]。
用法与参数
使用以下参数进行调用 [SWS_Dcm_00803]:
DID(In):要查询的 DID 标识符值 [SWS_Dcm_00803]。OpStatus(In):用于控制异步流程的操作当前状态 [SWS_Dcm_00803]。supported(Out):指示 DID 是否在范围内可用;DCM_DID_SUPPORTED表示支持,而DCM_DID_NOT_SUPPORTED表示不支持 [SWS_Dcm_00803]。
异步语义与返回值
由于该函数是异步执行的,确定过程可能需要多个调用步骤 [SWS_Dcm_00803]。返回值 DCM_E_PENDING 指示请求尚未完成,需要进一步调用来完成 [SWS_Dcm_00803]。当检查完成时报告返回值 E_OK [SWS_Dcm_00803](解读:推测 E_OK 结束该查询,随后参数 supported 包含有效结果)。 问题 Q-22c62d306a7ac4f1 (未决)
并发性与限制
该接口被指定为不可重入(Non Reentrant)[SWS_Dcm_00803]。因此,对于同一实例内的相同或其他 DID,不允许并发调用。
此文本由 AI 创建,完全基于 AUTOSAR Classic R20-11 的规范数据。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ReadDidData [SWS_Dcm_00804] 📄 PDF
Std_ReturnType Xxx_ReadDidData (uint16 DID, uint8* Data, Dcm_OpStatusType OpStatus, uint16 DataLength, Dcm_NegativeResponseCodeType ErrorCode);
This function requests to the application a data value of a DID
使用与参数接口
函数Xxx_ReadDidData(服务 ID 0x40)可通过Dcm_Externals.h获取,并向应用程序请求诊断标识符(DID)的数据值[SWS_Dcm_00804]。传递和反馈通过以下参数进行:
DID:所请求的数据标识符的标识符[SWS_Dcm_00804]。Data:指向必须将读取的有效数据复制到其中的缓冲区的指针[SWS_Dcm_00804]。OpStatus:当前请求的进度或操作状态[SWS_Dcm_00804]。DataLength:要读取的数据长度[SWS_Dcm_00804]。ErrorCode:用于接收否定响应码(NRC)的输出参数[SWS_Dcm_00804]。
异步语义与返回值
该函数被定义为异步(Asynchronous),并返回类型为Std_ReturnType的状态[SWS_Dcm_00804]:
E_OK:数据读取成功[SWS_Dcm_00804]。DCM_E_PENDING:请求尚未完成;需要进一步调用才能完成[SWS_Dcm_00804]。E_NOT_OK:操作未成功[SWS_Dcm_00804]。
错误处理与并发
如果应用程序为Xxx_ReadDidData返回返回值E_NOT_OK,DCM 模块将向诊断仪发送带有通过参数ErrorCode设置的 NRC 码的否定响应[SWS_Dcm_00804]。该函数被指定为不可重入(Non Reentrant)[SWS_Dcm_00804]。Interpretation:由于采用DCM_E_PENDING进行异步处理,该调用通常可能发生在 DCM 的周期性任务上下文中。 问题 Q-5e41e9fb7dc261b9 (未决)
本使用说明基于 SWS_Dcm_00804 中的规范自动生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_WriteDidData [SWS_Dcm_00805] 📄 PDF
Std_ReturnType Xxx_WriteDidData (uint16 DID, const uint8* Data, Dcm_OpStatusType OpStatus, uint16 DataLength, Dcm_NegativeResponseCodeType ErrorCode);
This function requests the application to write a data value of a DID.
函数Xxx_WriteDidData由模块 DCM 调用,以请求应用程序写入 DID 的数据值[SWS_Dcm_00805]。声明可通过头文件Dcm_Externals.h获取[SWS_Dcm_00805]。
调用与语义
该调用为异步进行,并定义为不可重入(Non Reentrant)[SWS_Dcm_00805]。调用时传递以下参数[SWS_Dcm_00805]:
DID:要写入的数据标识符的标识符。Data:指向包含待写入数据缓冲区的指针。OpStatus:当前操作的状态。DataLength:要写入的数据长度(以字节为单位)。ErrorCode:用于否定响应码(NRC)的输出参数。
返回值与错误处理
作为返回值,函数提供Std_ReturnType,其含义如下[SWS_Dcm_00805]:
E_OK:写入作业已成功执行。DCM_E_PENDING:操作尚未完成;需要进一步调用以完成操作。E_NOT_OK:操作未成功。在此情况下,DCM 模块会发送带有输出参数ErrorCode中传递的 NRC 值的否定响应。
此文本由 AI 基于 AUTOSAR CP R20-11 规范生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ReadDidRangeDataLength [SWS_Dcm_01271] 📄 PDF
Std_ReturnType Xxx_ReadDidRangeDataLength (uint16 DID, Dcm_OpStatusType OpStatus, uint16* DataLength);
This function requests the application to return the data length of a DID Range.
函数 Xxx_ReadDidRangeDataLength 用于请求应用软件返回 DID 范围(DID Range)的数据长度 [SWS_Dcm_01271]。它是 AUTOSAR 模块 Dcm 的组成部分,具有服务 ID 0x5e,并通过头文件 Dcm_Externals.h 提供 [SWS_Dcm_01271]。
调用采用异步语义(Asynchronous),通过以下接口参数进行 [SWS_Dcm_01271]:
DID(IN,uint16):标识所请求 DID 范围的具体数据标识符(Data ID value)[SWS_Dcm_01271]。OpStatus(IN,Dcm_OpStatusType):指示正在运行操作的当前处理状态 [SWS_Dcm_01271]。DataLength(OUT,uint16*):指向要读取或写入的数据长度的指针 [SWS_Dcm_01271]。
类型为 Std_ReturnType 的返回值通知长度查询的结果 [SWS_Dcm_01271]:
E_OK:请求成功且已确定的长度已就绪 [SWS_Dcm_01271]。E_NOT_OK:请求未成功 [SWS_Dcm_01271]。DCM_E_PENDING:执行尚未完成,需要进一步的后续调用以完成 [SWS_Dcm_01271]。
关于并发性,该接口被规定为不可重入(Non Reentrant)[SWS_Dcm_01271]。
使用说明基于 AUTOSAR Classic R20-11 中 DCM 的规范生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_GetInfotypeValueData [SWS_Dcm_91014] 📄 PDF
Std_ReturnType Xxx_GetInfotypeValueData (Dcm_OpStatusType OpStatus, uint8* DataValueBuffer, uint8* DataValueBufferSize);
The function provides the data related to the requested Infotype.
一旦接收到 OBD Service $09 的诊断请求,且所请求的 InfoType 不是可用性 InfoType(“availability InfoType”),DCM 模块就会调用异步接口 Xxx_GetInfotypeValueData [SWS_Dcm_00423]。为了提供数据,DCM 调用为该 InfoType 配置的所有函数,并将这些值合并作为对 Service $09 的响应 [SWS_Dcm_00423]。声明可通过 Dcm_Externals.h 获取 [SWS_Dcm_91014]。
数据的传递和反馈通过定义的缓冲区和状态参数 [SWS_Dcm_91014] 进行:
OpStatus(in):指示当前正在进行的操作的进度状态。DataValueBuffer(out):用于接收特定 InfoType 有效负载的缓冲区。DataValueBufferSize(inout):在调用时包含以字节为单位的最大可写入缓冲区大小,并由被调用函数写入实际写入的数据字节数。
作为异步函数,它在成功完成时返回 E_OK,在发生错误时返回 E_NOT_OK,或者在操作尚未完成且需要进一步调用以完成时返回 DCM_E_PENDING [SWS_Dcm_91014]。由于该函数被指定为不可重入(Non Reentrant),因此不得对同一函数进行并发调用 [SWS_Dcm_91014]。
此文本由 AI 生成,仅供参考。一切以 AUTOSAR 官方规范为准。
实现者指南即将推出(复杂度 I2)
函数 Xxx_Start [SWS_Dcm_01203] 📄 PDF
Std_ReturnType Xxx_Start ([ DcmDspRoutineSignalType dataIn_1, ... DcmDspRoutineSignalType dataIn_n ], [ const uint8* dataInVar ], Manager Dcm_OpStatusType OpStatus, [ DcmDspRoutineSignalType dataOut_1, ... DcmDspRoutineSignalType dataOut_n ], [ uint8* dataOutVar ], [ uint16* currentDataLength ], Dcm_NegativeResponseCodeType ErrorCode); ⚠️
This function requests to the application to start the execution of a routine.
函数 Xxx_Start 通过头文件 Dcm_Externals.h 声明,并请求应用软件启动诊断例程的执行 [SWS_Dcm_01203]。一旦接收到针对 RoutineControl (0x31) 且带有子功能 startRoutine 的 UDS 服务请求并成功验证 [SWS_Dcm_00400],或者当接收到带有不可用性 OBDTestId 的 RoutineControl 请求时 [SWS_Dcm_01392],DCM 模块就会调用此函数。
该接口支持固定以及可变的数据格式,并以异步方式运行 [SWS_Dcm_01203]:
- 输入参数:固定输入信号
dataIn_1至dataIn_n,或通过字节数组dataInVar传递的可变数据,以及操作状态OpStatus[SWS_Dcm_01203]。 - 输出参数:固定输出信号
dataOut_1至dataOut_n,或可变输出数据dataOutVar,以及用于否定响应消息的错误码ErrorCode[SWS_Dcm_01203]。 - 长度参数:在可变数据长度情况下,输入和输出参数
currentDataLength传递dataInVar或dataOutVar中的有效字节数 [SWS_Dcm_01203]。 - 返回值:
E_OK确认成功启动,E_NOT_OK报告失败,DCM_E_PENDING表示处理步骤仍在进行中,而DCM_E_FORCE_RCRRP则请求提前发送挂起反馈(NRC 0x78)[SWS_Dcm_01203]。
关于并发性,Xxx_Start 被定义为非重入(Non Reentrant)[SWS_Dcm_01203]。在返回值为 DCM_E_PENDING 的异步流程中,DCM 模块会以继续执行的 OpStatus 周期性地再次调用该函数,直到操作完成 [SWS_Dcm_01203]。
如果操作以 E_OK 成功结束,DCM 模块将发送带有通过 dataOut 提供的数据作为 routineStatusRecord 的 UDS 肯定响应 [SWS_Dcm_00401]。若执行以 E_NOT_OK 失败,DCM 将发送带有参数 ErrorCode 中所指定 NRC 的否定响应 [SWS_Dcm_01203]。在 OBD 例程上下文中,不等于 E_OK 的返回值会导致发送 NRC 0x22 [SWS_Dcm_01394]。
本段文本由 AI 生成,仅供参考。唯一具有约束力的是 AUTOSAR 规范。
实现者指南即将推出(复杂度 I2)
函数 Xxx_StartConfirmation [SWS_Dcm_91016] 📄 PDF
Std_ReturnType Xxx_StartConfirmation (Dcm_ConfirmationStatusType ConfirmationStatus);
This function indicates the transmission of a response to a StartRoutine request
使用
根据 [SWS_Dcm_91016],函数 Xxx_StartConfirmation 明确指示对先前 StartRoutine 请求的响应传输。该接口在头文件 Dcm_Externals.h 中声明,并具有同步执行语义([SWS_Dcm_91016])。作为唯一的输入参数,传入类型为 Dcm_ConfirmationStatusType 的 ConfirmationStatus,用于描述例程传输的确认状态。根据规范,不存在其他输入和输出参数([SWS_Dcm_91016])。
错误处理与返回值
作为返回值,该函数提供类型为 Std_ReturnType 的状态值([SWS_Dcm_91016])。其中,值 E_OK 确认请求执行成功,而 E_NOT_OK 则表示处理失败。负载中未为该函数定义具体的错误码或向 Development Error Tracer (DET) 或 Diagnostic Event Manager (DEM) 发送的显式消息。
并发性与限制
关于并发性,Xxx_StartConfirmation 被归类为不可重入(Non Reentrant)([SWS_Dcm_91016])。这要求调用者严格避免并发或重叠执行。解释:该函数可能由 DCM 调用,以通知应用侧例程实现发送过程已完成。 问题 Q-be2dafd63bf2a9a5 (未决)
本段文本由 AI 生成,基于 AUTOSAR 标准版本 R20-11。
实现者指南即将推出(复杂度 I2)
函数 Xxx_Stop [SWS_Dcm_01204] 📄 PDF
Std_ReturnType Xxx_Stop ([ DcmDspRoutineSignalType dataIn_1, ... DcmDspRoutineSignalType dataIn_n ], [ const uint8* dataInVar ], [ DcmDspRoutineSignalType dataOut_1, ... DcmDspRoutineSignalType dataOut_n ], [ uint8* dataOutVar ], [ uint16* currentDataLength ], Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application to stop the execution of a routine
使用
函数 [SWS_Dcm_01204] 由 DCM 调用,以终止应用程序中正在运行的诊断例程的执行。一旦成功完成必要的预检查,便在具有子功能 stopRoutine 的 UDS 服务 RoutineControl (0x31) 的框架内执行该调用 [SWS_Dcm_00402]。该接口具有服务 ID 0x5c,并通过头文件 Dcm_Externals.h 声明 [SWS_Dcm_01204]。
参数与返回值
根据例程的配置,DCM 传递固定或可变输入数据(dataIn_1 至 dataIn_n 或 dataInVar)以及输出数据的缓冲区引用(dataOut_1 至 dataOut_n 或 dataOutVar)[SWS_Dcm_01204],[SWS_Dcm_00402]。在可变数据长度的情况下,currentDataLength 包含输入或输出数据的字节数 [SWS_Dcm_01204]。Std_ReturnType 的返回值规定如下:
E_OK:例程已成功终止;DCM 发送带有生成的输出数据作为 routineStatusRecord 的肯定 UDS 响应 [SWS_Dcm_01204],[SWS_Dcm_00403]。E_NOT_OK:中止例程失败;DCM 发送带有在ErrorCode中保存的 NRC 的否定 UDS 响应 [SWS_Dcm_01204]。DCM_E_PENDING:操作仍在处理中;DCM 再次调用该函数以完成 [SWS_Dcm_01204]。DCM_E_FORCE_RCRRP:应用程序请求 DCM 传输 Pending 响应(NRC 0x78)[SWS_Dcm_01204]。
并发性与限制
该操作被指定为异步且不可重入(Non Reentrant)[SWS_Dcm_01204]。如果在执行过程中发生错误,应用程序必须使用相应的 Dcm_NegativeResponseCodeType 写入参数 ErrorCode 并返回 E_NOT_OK [SWS_Dcm_01204]。
本使用说明基于 AUTOSAR Classic R20-11 规范自动生成。
实现者指南即将推出(复杂度 I1)
函数 Xxx_StopConfirmation [SWS_Dcm_91017] 📄 PDF
Std_ReturnType Xxx_StopConfirmation (Dcm_ConfirmationStatusType ConfirmationStatus);
This function indicates the transmission of a response to a StopRoutine request
同步函数 Xxx_StopConfirmation 用于指示对先前 StopRoutine 请求的响应传输 [SWS_Dcm_91017]。在调用时,系统通过类型为 Dcm_ConfirmationStatusType 的输入参数 ConfirmationStatus 传递例程停止的具体确认状态 [SWS_Dcm_91017]。作为返回值,该接口提供类型为 Std_ReturnType 的值:其中 E_OK 表示请求已成功处理,而 E_NOT_OK 则指示请求失败 [SWS_Dcm_91017]。
关于并发性和调用条件,该接口被指定为不可重入(Non Reentrant),且具有服务 ID 0x69 [SWS_Dcm_91017]。其声明通过头文件 Dcm_Externals.h 提供 [SWS_Dcm_91017]。解释:由于通过 Dcm_Externals.h 提供且具有可自定义的前缀 Xxx_,该函数可能由 DCM 模块调用,并由特定于应用程序的软件组件或负责的例程处理程序实现。 问题 Q-743e69ff8cf92321 (未决)
需求中未指出特定的错误码或向开发错误管理 (DET) 或 Diagnostic Event Manager (DEM) 发送的通知。在此接口级别上,错误情况下的行为形式上仅限于在处理未能成功完成时返回错误值 E_NOT_OK [SWS_Dcm_91017]。
本使用说明基于 AUTOSAR Classic R20-11 规范。
实现者指南即将推出(复杂度 I2)
函数 Xxx_RequestResults [SWS_Dcm_91013] 📄 PDF
Std_ReturnType Xxx_RequestResults (Dcm_OpStatusType OpStatus, [ DcmDspRoutineSignalType* dataIn_1, ... DcmDspRoutineSignalType* dataIn_n ], [ const uint8* dataInVar ], [ DcmDspRoutineSignalType* dataOut_1, ... DcmDspRoutineSignalType* dataOut_n ], [ uint8* dataOutVar ], [ uint16* variableDataLength ], Dcm_NegativeResponseCodeType* ErrorCode);
This function requests to the application the result of a routine execution
函数 [SWS_Dcm_91013] 由 DCM 模块调用,以便从应用程序查询例程执行结果。这是在 UDS 服务 RoutineControl(0x31)及其子功能 requestRoutineResults 的框架下进行的,前提是所有输入侧检查均已成功通过 [SWS_Dcm_00404]。该接口可通过 Dcm_Externals.h 获取,异步工作且被指定为不可重入 [SWS_Dcm_91013]。
DCM 模块通过参数 OpStatus 控制操作流程。该函数接收从 routineControlOptionRecord 派生的固定输入数据(dataIn_1 至 dataIn_n)或可变数据(dataInVar)[SWS_Dcm_00404]。应用程序通过固定输出参数(dataOut_1 至 dataOut_n)或可变输出缓冲区(dataOutVar 和 variableDataLength)将结果数据传递给 DCM [SWS_Dcm_91013]。
如果查询成功完成并返回 E_OK,DCM 模块将根据配置参数 DcmDspRequestRoutineResultsOut 将输出数据整合为一个 routineStatusRecord 并发送肯定响应 [SWS_Dcm_00405]。若操作仍在进行,应用程序可返回 DCM_E_PENDING 进行后续调用,或返回 DCM_E_FORCE_RCRRP 以发送临时响应(NRC 0x78)[SWS_Dcm_91013]。
发生错误时,函数返回 E_NOT_OK 并将 ErrorCode 设置为适用的 NRC 值,随后 DCM 模块发送相应的否定响应 [SWS_Dcm_91013]。由于该函数不可重入,因此不得针对同一例程并发调用 [SWS_Dcm_91013]。
基于 AUTOSAR R20-11 自动生成的用法说明。
实现者指南即将推出(复杂度 I2)
函数 Xxx_RequestResultsConfirmation [SWS_Dcm_91018] 📄 PDF
Std_ReturnType Xxx_RequestResultsConfirmation (Dcm_ConfirmationStatusType ConfirmationStatus);
This function indicates the transmission of a response to a RequestRoutineResults request
用法与语义
函数 Xxx_RequestResultsConfirmation 用于确认已传输针对 RequestRoutineResults 请求的诊断响应 [SWS_Dcm_91018]。它在头文件 Dcm_Externals.h 中声明,并具有服务 ID 0x70 [SWS_Dcm_91018]。通过类型为 Dcm_ConfirmationStatusType 的输入参数 ConfirmationStatus,实现可以获取例程结果传输完成时的状态信息 [SWS_Dcm_91018]。调用为同步执行并返回一个 Std_ReturnType,其中 E_OK 表示处理成功,E_NOT_OK 表示失败 [SWS_Dcm_91018]。
并发性与限制
根据规范,该函数被归类为不可重入(Non Reentrant)[SWS_Dcm_91018]。因此,不得针对同一实例进行并发调用。解释:DCM 模块的调用在响应确认的上下文中按顺序进行,因此该函数应在没有阻塞操作的情况下执行。 问题 Q-935a06744e7b9af7 (未决)
错误处理与交互
错误处理仅限于返回值 E_NOT_OK,因为未针对此调用指定单独的开发错误 (DET) 或生产错误 (DEM) [SWS_Dcm_91018]。解释:该函数用作 DCM 的应用特定确认端点(回调),以便在发送例程结果后在应用级别同步诊断作业的完成。 问题 Q-d3dd0142a30e1363 (未决)
本段文本由 AI 生成。内容基于 AUTOSAR CP R20-11。
实现者指南即将推出(复杂度 I2)
函数 Xxx_RequestControl [SWS_Dcm_01338] 📄 PDF
Std_ReturnType Xxx_RequestControl (uint8* OutBuffer, const uint8* InBuffer);
Invokes a TID-specific function taking a configured number of bytes as input and returing a fixed number of bytes as output. This is typically used to implement OBD Service $08
函数 Xxx_RequestControl 用于执行特定于 TID 的控制功能,通常用于实现 OBD Service $08([SWS_Dcm_01338])。一旦接收到测试 ID(TID)非可用性 TID(“availability TID”)的 OBD Service $08 请求,DCM 模块便会同步调用已配置的函数([SWS_Dcm_00419])。接口的声明通过头文件 Dcm_Externals.h 提供([SWS_Dcm_01338])。
参数和缓冲区处理
InBuffer:指向所接收 OBD 请求有效负载的指针。此输入数据的字节数必须与 DCM 模块中配置的大小完全一致([SWS_Dcm_00419],[SWS_Dcm_01338])。OutBuffer:指向输出缓冲区的指针,被调用的控制函数将其结果存放在该缓冲区中。缓冲区大小是固定的,取自 DCM 模块的配置([SWS_Dcm_00419],[SWS_Dcm_01338])。
返回值与错误处理
该函数返回 Std_ReturnType 作为状态值:值 E_OK 表示成功执行,而 E_NOT_OK 表示错误状态([SWS_Dcm_01338])。如果 Xxx_RequestControl 返回的结果不是 E_OK,DCM 模块会向诊断仪回复否定响应码 NRC 0x22(Conditions Not Correct)([SWS_Dcm_01192])。
并发性与限制
该函数被指定为不可重入(Non Reentrant),其 Service ID 为 0x63([SWS_Dcm_01338])。
AI 提示:本段文本基于 AUTOSAR Classic R20-11 规范自动生成。
实现者指南即将推出(复杂度 I1)
函数 Xxx_StartProtocol [SWS_Dcm_01339] 📄 PDF
Std_ReturnType Xxx_StartProtocol (Dcm_ProtocolType ProtocolType, uint16 TesterSourceAddress, uint16 ConnectionId);
This function allows the application to examine the environment conditions and enable/disable further processing of the protocol.
回调函数 Xxx_StartProtocol 通过头文件 Dcm_Externals.h 提供,使应用程序能够在诊断协议的首次请求时检查当前环境条件,并放行或拒绝进一步的协议处理 [SWS_Dcm_01339]。
调用上下文与参数
针对所有配置的函数 [SWS_Dcm_00036]、[SWS_Dcm_01339],该调用由 DCM 的 DSL 子模块以同步且非重入的方式触发。以下输入参数被传递给该函数 [SWS_Dcm_01339]:
ProtocolType:要启动的诊断协议类型,TesterSourceAddress:发出请求的测试仪源地址,ConnectionId:连接的唯一标识符。
返回值与错误处理
作为返回值,函数在成功放行时返回带有 E_OK 的 Std_ReturnType,在检查未成功时返回 E_NOT_OK,或者在协议不允许的情况下返回 E_PROTOCOL_NOT_ALLOWED [SWS_Dcm_01339]。如果至少有一个配置的 Xxx_StartProtocol 函数未返回 E_OK,则 DCM 中止协议启动并以 NRC 0x22 作出响应 [SWS_Dcm_00674]。
成功放行后的初始化
只有当所有配置的 Xxx_StartProtocol 回调均已返回 E_OK 时,DCM 才会执行后续的初始化步骤:
- 从默认会话配置中加载标准时序参数 [SWS_Dcm_00144],
- 激活服务表 [SWS_Dcm_00145],
- 重置安全状态(Security State)[SWS_Dcm_00146],
- 将会话状态重置为默认诊断会话,并通过
SchM_Switch_<bsnp>_DcmDiagnosticSessionControl执行至RTE_MODE_DcmDiagnosticSessionControl_DEFAULT_SESSION的模式切换 [SWS_Dcm_00147]。
本使用说明是基于 AUTOSAR R20-11 的规范要求自动创建的。
实现者指南即将推出(复杂度 I2)
函数 Xxx_StopProtocol [SWS_Dcm_01340] 📄 PDF
Std_ReturnType Xxx_StopProtocol (Dcm_ProtocolType ProtocolType, uint16 TesterSourceAddress, uint16 ConnectionId);
This function informs the application of the protocol stop.
同步回调函数 Xxx_StopProtocol 通知应用程序诊断协议的终止([SWS_Dcm_01340])。它通过头文件 Dcm_Externals.h 声明,并被指定为非重入(Non Reentrant)([SWS_Dcm_01340])。
在以下抢占场景中,DSL 子模块会触发对所有配置的 Xxx_StopProtocol 函数(通过参数 DcmDslCallbackDCMRequestService 配置)的调用:
- 正在运行的诊断请求被另一协议的更高优先级请求抢占([SWS_Dcm_00459])。
- 具有更低或相同优先级的请求抢占更高优先级的协议,前提是该较高优先级协议处于 Default Session 且没有处于执行阶段的活动请求([SWS_Dcm_00625])。
调用时将传递协议类型(ProtocolType)、测试仪源地址(TesterSourceAddress)以及连接标识符(ConnectionId)([SWS_Dcm_01340])。作为返回值,函数在执行成功时返回 E_OK,或返回 E_NOT_OK([SWS_Dcm_01340])。如果函数未返回 E_OK,则 DCM 以否定响应码 NRC 0x22 作出响应([SWS_Dcm_01190])。
本段文本由自动化生成,完全基于 AUTOSAR Classic R20-11 的规范要求。
实现者指南即将推出(复杂度 I1)
函数 Xxx_Indication [SWS_Dcm_01341] 📄 PDF
Std_ReturnType Xxx_Indication (uint8 SID, const uint8* RequestData, uint32 DataSize, uint8 ReqType, uint16 ConnectionId, Dcm_NegativeResponseCodeType* ErrorCode, Dcm_ProtocolType ProtocolType, uint16 TesterSourceAddress);
This function indicates to the application that a service is about to be executed and allows the application to reject the execution of the service request
同步、不可重入函数 Xxx_Indication 通过头文件 Dcm_Externals.h 声明 [SWS_Dcm_01341]。它向应用程序指示诊断服务即将执行,并允许其拒绝该服务请求的执行 [SWS_Dcm_01341]。当配置容器 DcmDsdServiceRequestManufacturerNotification [SWS_Dcm_00218] 或 DcmDsdServiceRequestSupplierNotification [SWS_Dcm_00516] 存在时,由 DSD 子模块在所有配置的 ServiceRequestIndication 端口上进行同步调用。
传入的输入参数包括服务 ID(SID)、不带 SID 的请求数据(RequestData、DataSize)、寻址类型(ReqType)、连接 ID(ConnectionId)、协议类型(ProtocolType)以及测试仪源地址(TesterSourceAddress)[SWS_Dcm_01341]。
应用程序通过类型为 Std_ReturnType 的返回值控制 DSD 子模块的响应 [SWS_Dcm_01341]:
E_OK:请求成功,并将按常规继续处理 [SWS_Dcm_01341]。E_REQUEST_NOT_ACCEPTED:请求不被接受。如果至少有一个被调用的指示函数返回E_REQUEST_NOT_ACCEPTED,则 DSD 子模块抑制向测试仪发送任何响应 [SWS_Dcm_00462]、[SWS_Dcm_00517]。E_NOT_OK:请求未成功。在这种情况下,应用程序向输出参数ErrorCode写入否定响应码 [SWS_Dcm_01341]。只要没有调用返回E_REQUEST_NOT_ACCEPTED,DSD 子模块便发送带有该 NRC 的否定响应 [SWS_Dcm_00463]、[SWS_Dcm_00518]。
如果配置了多个通知且有多个函数返回 E_NOT_OK 且没有任何函数返回 E_REQUEST_NOT_ACCEPTED,则 DSD 子模块针对否定响应强制使用首个回复 E_NOT_OK 的函数的 ErrorCode [SWS_Dcm_01321]、[SWS_Dcm_01322]。
此文本由 AI 基于 AUTOSAR CP R20-11 规范生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_Confirmation [SWS_Dcm_01342] 📄 PDF
Std_ReturnType Xxx_Confirmation (uint8 SID, uint8 ReqType, uint16 ConnectionId, Dcm_ConfirmationStatusType ConfirmationStatus, Dcm_ProtocolType ProtocolType, uint16 TesterSourceAddress);
This function confirms to the application the successful transmission or a transmission error of a diagnostic service.
回调函数 Xxx_Confirmation 用于向应用程序同步通知诊断传输的完成——无论是成功发送还是传输错误([SWS_Dcm_01342])。声明通过头文件 Dcm_Externals.h 提供([SWS_Dcm_01342])。
当由 DCM 子模块 DSD(Diagnostic Service Dispatcher)调用时,会传递诊断任务的重要上下文数据([SWS_Dcm_01342]、[SWS_Dcm_00741]):
SID:诊断服务的标识符([SWS_Dcm_01342])。ReqType:寻址类型(物理寻址为0,功能寻址为1)([SWS_Dcm_01342])。ConnectionId、ProtocolType和TesterSourceAddress:唯一的连接和协议属性以及测试仪源地址([SWS_Dcm_01342])。ConfirmationStatus:关于传输成功或错误的状态信息([SWS_Dcm_01342])。
该操作返回 Std_ReturnType 作为返回值(确认处理成功时为 E_OK,否则为 E_NOT_OK)([SWS_Dcm_01342])。DSD 会在所有使用接口 ServiceRequestNotification 的端口上调用该函数(通过 DcmDsdServiceRequestManufacturerNotification 或 DcmDsdServiceRequestSupplierNotification 配置)([SWS_Dcm_00741])。
关于调用顺序,Xxx_Confirmation 通常紧随 DspInternal_DcmConfirmation() 之后执行([SWS_Dcm_00742])。但如果存在符合 [SWS_Dcm_01172] 的特殊情况,DSD 仅调用 Xxx_Confirmation,而内部调用则被省略。
由于 Xxx_Confirmation 被指定为不可重入(Non Reentrant)且同步([SWS_Dcm_01342]),因此应用端实现不应包含阻塞流程,也不得触发对 DCM 的可重入回调用(解释)。 问题 Q-58ce3e44dc61540b (未决)
本段文本由人工智能生成。所有内容完全基于版本 R20-11 的 AUTOSAR 规范范围。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ClearDTCCheckFnc [SWS_Dcm_01270] 📄 PDF
Std_ReturnType Xxx_ClearDTCCheckFnc (uint32 GoDTC, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function for condition check, manufacturer / supplier specific checks on the groupOf DTC, which is requested to clear.
使用
同步 callout 函数 Xxx_ClearDTCCheckFnc 通过头文件 Dcm_Externals.h 提供给应用程序 [SWS_Dcm_01270]。它用于在清除请求的诊断故障码组(Group of DTC)之前进行制造商和供应商特定的条件检查。作为输入参数,向其传递类型为 uint32 的标识符 GoDTC,该标识符指定要清除的故障码组 [SWS_Dcm_01270]。
错误处理与返回值
通过类型为 Std_ReturnType 的返回值与输出参数 ErrorCode 协同释放清除请求 [SWS_Dcm_01270]:
E_OK:应用程序允许清除请求的故障码组GoDTC[SWS_Dcm_01270]。E_NOT_OK:应用程序禁止清除该组。在此错误情况下,必须通过类型为Dcm_NegativeResponseCodeType*的输出参数ErrorCode设置否定响应码。DCM 模块随后发送带有在ErrorCode中指定的 NRC 值的否定响应 [SWS_Dcm_01270]。
并发性与限制
该函数带有服务 ID 0x5f,同步工作,并定义为不可重入(Non Reentrant)[SWS_Dcm_01270]。因此,调用上下文必须确保调用按顺序执行且没有并发重叠。
本使用说明由 AI 基于 AUTOSAR R20-11 的规范 SWS_Dcm_01270 生成。
函数 Xxx_ProcessRequestDownload [SWS_Dcm_00754] 📄 PDF
Std_ReturnType Xxx_ProcessRequestDownload (Dcm_OpStatusType OpStatus, uint8 DataFormatIdentifier, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, uint32* BlockLength, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this callout function to start a download process. This service is needed for the implementation of UDS service RequestDownload.
标注函数 Xxx_ProcessRequestDownload([SWS_Dcm_00754])由模块 Dcm 调用,以便在处理 UDS 服务 RequestDownload 时启动下载过程。该函数定义为异步且不可重入,并通过头文件 Dcm_Externals.h 提供([SWS_Dcm_00754])。
用法与参数
调用通过参数 OpStatus 逐步进行,其取值为 DCM_INITIAL、DCM_PENDING 或 DCM_CANCEL([SWS_Dcm_00754])。传入的输入参数包括压缩和加密方法(DataFormatIdentifier)、内存块(MemoryIdentifier)、起始地址(MemoryAddress)以及以字节为单位的未压缩内存大小(MemorySize)([SWS_Dcm_00754])。在调用之前,Dcm 将最大可能缓冲区大小写入输入输出参数 BlockLength([SWS_Dcm_01417])。该函数将此值调整为后续写入操作所允许的最大块长度([SWS_Dcm_00754])。
返回值与相互协作
该函数在执行成功时返回 E_OK,如果处理仍在继续则返回 DCM_E_PENDING,或者在出错时返回 E_NOT_OK([SWS_Dcm_00754]):
- 如果调用返回
E_OK,且协商的值BlockLength小于或等于当前协议连接支持的缓冲区长度,则Dcm发送肯定响应,并将该值作为maxNumberOfBlockLength([SWS_Dcm_01419])。 - 如果返回的缓冲区长度超过协议连接支持的缓冲区大小,则
Dcm报告 DET 错误DCM_E_INTERFACE_BUFFER_OVERFLOW([SWS_Dcm_01418])。 - 当返回
E_NOT_OK时,Dcm发送带有输出参数ErrorCode中设定值的 UDS 否定响应(NRC)([SWS_Dcm_00754]、[SWS_Dcm_00757])。
本使用说明由系统自动生成,旨在为 AUTOSAR 规范提供参考支持。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ProcessRequestTransferExit [SWS_Dcm_00755] 📄 PDF
Std_ReturnType Xxx_ProcessRequestTransferExit (Dcm_OpStatusType OpStatus, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this callout function to terminate a download or upload process. This callout is needed for the implementation of UDS service RequestTransferExit.
标注函数(Callout-Funktion)Xxx_ProcessRequestTransferExit由 DCM 模块调用,用于在 UDS 服务 RequestTransferExit 的上下文中终止正在进行的下载或上传过程[SWS_Dcm_00755]。该接口的声明通过头文件Dcm_Externals.h提供[SWS_Dcm_00755]。
用法与语义
该函数异步运行,并定义为不可重入[SWS_Dcm_00755]。调用时需传递当前执行状态OpStatus(可能的值:DCM_INITIAL、DCM_PENDING或DCM_CANCEL)[SWS_Dcm_00755]。指定的类型为Std_ReturnType的返回值包括:
E_OK:传输已成功终止[SWS_Dcm_00755]。DCM_E_PENDING:传输终止尚未完成,需要后续调用[SWS_Dcm_00755]。E_NOT_OK:终止失败或响应缓冲区太小[SWS_Dcm_00755]。
错误处理与交互
如果操作Xxx_ProcessRequestTransferExit返回错误值E_NOT_OK,则必须通过输出参数ErrorCode传递否定响应码。随后,DCM 模块会向诊断测试仪发送带有该确切错误码的否定 UDS 响应(NRC)[SWS_Dcm_00759]。在中止调用时,DCM 模块会将状态DCM_CANCEL传递给函数[SWS_Dcm_00755]。
此文本为自动生成。所有陈述均完全基于 AUTOSAR 规范。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ProcessRequestUpload [SWS_Dcm_00756] 📄 PDF
Std_ReturnType Xxx_ProcessRequestUpload (Dcm_OpStatusType OpStatus, uint8 DataFormatIdentifier, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, uint32* BlockLength, Dcm_NegativeResponseCodeType* ErrorCode);
Callout function. DCM shall call this callout function to start an upload process. This service is needed for the implementation of UDS service RequestUpload.
标注函数Xxx_ProcessRequestUpload由 DCM 模块调用,以启动 UDS 服务 RequestUpload([SWS_Dcm_00756])。它通过Dcm_Externals.h提供,并被指定为不可重入且异步([SWS_Dcm_00756])。DCM 通过参数OpStatus(具有状态DCM_INITIAL、DCM_PENDING、DCM_CANCEL或DCM_FORCE_RCRRP_OK)控制操作流程([SWS_Dcm_00756])。
调用时,DCM 会传递压缩和加密方法(DataFormatIdentifier)、内存块(MemoryIdentifier)、起始地址(MemoryAddress)以及未压缩的内存大小(字节)(MemorySize)等([SWS_Dcm_00756])。输入/输出参数BlockLength定义后续Dcm_ReadMemory调用的最大字节数;在调用之前,DCM 会将最大可能的缓冲区大小写入此参数([SWS_Dcm_00756],[SWS_Dcm_01420])。
作为Xxx_ProcessRequestUpload的返回值,定义了请求成功时的E_OK、出错时的E_NOT_OK以及处理尚未完成时的DCM_E_PENDING([SWS_Dcm_00756]):
- 如果函数返回
E_NOT_OK,DCM 模块将发送带有在输出参数ErrorCode中设置的 NRC 值的否定 UDS 响应([SWS_Dcm_00756],[SWS_Dcm_00758])。 - 如果函数在
BlockLength中返回的请求缓冲区值小于或等于当前协议连接支持的缓冲区长度,则 DCM 会在肯定响应中将该值用作maxNumberOfBlockLength([SWS_Dcm_01422])。 - 反之,如果返回的缓冲区长度大于协议连接支持的缓冲区长度,则 DCM 报告 DET 错误
DCM_E_INTERFACE_BUFFER_OVERFLOW([SWS_Dcm_01421])。
本文由人工智能生成。其完全基于所提供的 AUTOSAR 有效负载规范。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ProcessTransferDataRead [SWS_Dcm_91070] 📄 PDF
Dcm_ReturnReadMemoryType Xxx_ProcessTransferDataRead (Dcm_OpStatusType OpStatus, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, Dcm_RequestDataArrayType MemoryData, Dcm_NegativeResponseCodeType* ErrorCode);
The ProcessTransferDataRead callout is used to request memory data identified by the parameter memoryAddress and memorySize from the UDS request message. This service is needed for the implementation of UDS services: • ReadMemoryByAddress • RequestUpload • ReadDataByIdentifier (in case of Dynamical DID defined by memory address) • TransferData
标注函数 Xxx_ProcessTransferDataRead 用于根据起始地址(MemoryAddress)和长度(MemorySize)遵照 [SWS_Dcm_91070] 异步读取 ECU 中的内存数据。它通过头文件 Dcm_Externals.h 提供,并支持 UDS 服务 ReadMemoryByAddress、RequestUpload、TransferData 以及动态通过内存地址定义的 DID 的 ReadDataByIdentifier [SWS_Dcm_91070]。
该调用以不可重入(Non Reentrant)方式进行,并通过参数 OpStatus 控制([SWS_Dcm_91070]):
DCM_INITIAL:启动读取操作。DCM_PENDING:继续尚未完成的读取过程。DCM_CANCEL:中止正在进行的操作。DCM_FORCE_RCRRP_OK:确认待处理响应的传输。
为了寻址,可以通过 MemoryIdentifier 选择内存块或内存区域;如果不使用该参数,则必须将其设置为 0 [SWS_Dcm_91070]。读取的数据通过输出参数 MemoryData 返回,该参数直接指向 DCM 的诊断缓冲区 [SWS_Dcm_91070]。
定义的返回值包括成功时的 DCM_READ_OK、读取仍在进行时的 DCM_READ_PENDING,以及当操作挂起且应立即发送响应挂起消息时的 DCM_READ_FORCE_RCRRP [SWS_Dcm_91070]。如果读取失败,该函数返回 DCM_READ_FAILED;在这种情况下,必须通过指针 ErrorCode 传递否定响应码(NRC),DCM 会在否定响应中发送该代码 [SWS_Dcm_91070]。(解释:虽然关于 ErrorCode 的规范说明提到了 Dcm_ReadMemory,但在此处按句意应指此标注失败。) 问题 Q-fe76e2599624baf7 (未决)
本使用说明基于 AUTOSAR CP R20-11 规范并自动生成。
实现者指南即将推出(复杂度 I2)
函数 Xxx_ProcessTransferDataWrite [SWS_Dcm_91071] 📄 PDF
Dcm_ReturnWriteMemoryType Xxx_ProcessTransferDataWrite (Dcm_OpStatusType OpStatus, uint8 MemoryIdentifier, uint32 MemoryAddress, uint32 MemorySize, const Dcm_RequestDataArrayType MemoryData, Dcm_NegativeResponseCodeType* ErrorCode);
The ProcessTransferDataWrite callout is used to write memory data identified by the parameter memoryAddress and memorySize. This service is needed for the implementation of UDS services : • WriteMemoryByAddress • RequestDownload • TransferData
用法与语义
异步标注 Xxx_ProcessTransferDataWrite(服务 ID 0x27)可通过 Dcm_Externals.h 获取,并由 DCM 模块调用以写入 UDS 服务 WriteMemoryByAddress、RequestDownload 和 TransferData 的内存数据 [SWS_Dcm_91071]。写入过程的流程通过参数 OpStatus 进行控制,其取值为 DCM_INITIAL、DCM_PENDING、DCM_CANCEL 或 DCM_FORCE_RCRRP_OK [SWS_Dcm_91071]。
参数与返回值
该函数处理以下参数 [SWS_Dcm_91071]:
MemoryIdentifier:内存块的标识符;如果不使用该参数,则应将其设置为 0 [SWS_Dcm_91071]。MemoryAddress:数据复制到的服务器内存的起始地址;在不使用时(例如针对压缩数据),应传递值 0 [SWS_Dcm_91071]。MemorySize:要在MemoryData中写入的字节数 [SWS_Dcm_91071]。MemoryData:指向 DCM 诊断缓冲区中待写入数据的指针 [SWS_Dcm_91071]。ErrorCode:出错时用于否定响应码(NRC)的输出参数 [SWS_Dcm_91071]。
Dcm_ReturnWriteMemoryType 类型的返回值指示操作的结果 [SWS_Dcm_91071]:
DCM_WRITE_OK:写入操作成功完成 [SWS_Dcm_91071]。DCM_WRITE_PENDING:写入过程尚未完成 [SWS_Dcm_91071]。DCM_WRITE_FORCE_RCRRP:写入过程仍处于挂起状态;待处理响应(Response Pending)的传输立即启动 [SWS_Dcm_91071]。DCM_WRITE_FAILED:写入操作失败 [SWS_Dcm_91071]。
错误处理与并发
如果标注返回值 DCM_WRITE_FAILED,则 DCM 模块发送带有参数 ErrorCode 中传递的 NRC 值的否定响应 [SWS_Dcm_91071]。该标注被指定为不可重入(Non Reentrant),因此不得并发执行 [SWS_Dcm_91071]。
本使用说明基于 AUTOSAR 规范自动创建。
实现者指南即将推出(复杂度 I2)
类型 Dcm_StatusType [SWS_Dcm_00976] 📄 PDF
Base item type to transport status information.
类型Dcm_StatusType用作在模块Dcm内传输状态信息的基本状态和返回类型,并通过头文件Dcm.h提供[SWS_Dcm_00976]。它基于标准类型uint8,并为特定 DCM 接口的反馈定义了标准化的状态值[SWS_Dcm_00976]。
定义的状态值和错误处理
规范为Dcm_StatusType定义了以下状态和错误代码[SWS_Dcm_00976]:
DCM_E_OK(0x00):指示所请求的操作已成功执行或接受[SWS_Dcm_00976]。DCM_E_ROE_NOT_ACCEPTED(0x06):表示 ResponseOnOneEvent 请求被 DCM 拒绝,例如因为先前的 ResponseOnOneEvent 过程尚未完成;该值在接口Dcm_ResponseOnOneEvent()处使用[SWS_Dcm_00976]。DCM_E_PERIODICID_NOT_ACCEPTED(0x07):表示周期性传输请求未被 DCM 接受,例如因为正在进行的周期性传输尚未结束;此状态在接口Dcm_ResponseOnOneDataByPeriodicId()处使用[SWS_Dcm_00976]。
限制与调用条件
上述接口的调用方必须评估类型为Dcm_StatusType的返回值,以确定新请求是可以立即被接受还是由于传输仍在进行中而被丢弃[SWS_Dcm_00976]。仅当前面的事件或发送过程完全完成后,重复请求才可能有成功的希望[SWS_Dcm_00976]。 问题 Q-901ec7e3aac8901c (未决)
此文本由 AI 创建,并基于 AUTOSAR 规范。
实现者指南即将推出(复杂度 I1)
类型 Dcm_CommunicationModeType [SWS_Dcm_00981] 📄 PDF
Manager
数据类型 Dcm_CommunicationModeType 是在 Dcm.h 中声明的基于 uint8([SWS_Dcm_00981])的枚举类型。它定义了用于选择性控制发送(Tx)和接收路径(Rx)的通信模式。取值范围包括用于正常应用数据(NORM)、网络管理(NM)以及两个通信分支组合(NORM_NM)的取值 0x00 至 0x0B([SWS_Dcm_00981])。
该类型在调用 BSW 接口 BswM_Dcm_CommunicationMode_CurrentState 时用作参数。在确认(Sent Confirmation)UDS 服务请求 CommunicationControl(Service 0x28)之后,DCM 通过该接口将当前模式转发给 BSW Mode Manager([SWS_Dcm_00512],[SWS_Dcm_00785])。具体的模式值在此对应于接收到的诊断请求的参数 communicationType 和 controlType([SWS_Dcm_00512])。
相互作用以及受影响的网络取决于 UDS 请求的子网参数:
- 对于子网
0x00,对DcmDspComControlAllChannel中配置的所有网络通道执行更新([SWS_Dcm_00512])。 - 对于子网
0x0F,报告当前诊断接收通道的通信模式([SWS_Dcm_00785])。 - 对于
0x01至0x0E的子网,将检查其支持情况;不支持的子网将被拒绝并返回否定响应码 0x31([SWS_Dcm_00786])。 - 对于带有扩展寻址的子功能(如
enableRxAndDisableTxWithEnhancedAddressInformation或enableRxAndTxWithEnhancedAddressInformation),针对通过子节点 ID 引用的通道执行调用([SWS_Dcm_01077],[SWS_Dcm_01079])。
本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。
实现者指南即将推出(复杂度 I2)
类型 Dcm_ConfigType [SWS_Dcm_00982] 📄 PDF
This type defines a data structure for the post build parameters of the DCM . At initialization the DCM gets a pointer to a structure of this type to get access to its configuration data, which is necessary for initialization.
类型 Dcm_ReturnReadMemoryType [SWS_Dcm_00985] 📄 PDF
Return values of Callout Dcm_ReadMemory
类型 Dcm_ReturnWriteMemoryType [SWS_Dcm_00986] 📄 PDF
Return type of callout Dcm_WriteMemory
类型 Dcm_EcuStartModeType [SWS_Dcm_00987] 📄 PDF
Allows the DCM to know if a diagnostic response shall be sent in the case of a jump from bootloader
数据类型 Dcm_EcuStartModeType 派生自 uint8,并通过头文件 Dcm.h 提供 [SWS_Dcm_00987]。它用于 Diagnostic Communication Manager(DCM)确定启动模式,并指示在从 Bootloader 切换后是否应传输诊断响应 [SWS_Dcm_00987]。
取值范围包括两个定义的状态 [SWS_Dcm_00987]:
DCM_COLD_START(0x00):ECU 在正常运行模式下常规启动 [SWS_Dcm_00987]。DCM_WARM_START(0x01):ECU 因从 Bootloader 跳转而启动 [SWS_Dcm_00987]。
在接口交互中,Dcm_EcuStartModeType 用作 Callout Dcm_GetProgConditions 的同步返回值,该 Callout 通过 Dcm_Externals.h 可用 [SWS_Dcm_00544]。该函数在 DCM 初始化期间被调用,以确定是否必须发送肯定响应($50 或 $51)[SWS_Dcm_00544]。此时,Bootloader 跳转的详细约束条件通过输出参数 ProgConditions 传递给 DCM [SWS_Dcm_00544]。
关于执行和错误处理,调用 Callout 被定义为同步且不可重入 [SWS_Dcm_00544]。未针对此数据类型指定特定错误代码或向 DET 或 DEM 发送的直接通知。
本使用说明基于 AUTOSAR Classic R20-11 规范自动生成。
实现者指南即将推出(复杂度 I1)
类型 Dcm_ProgConditionsType [SWS_Dcm_00988] 📄 PDF
Used in Dcm_SetProgConditions() to allow the integrator to store relevant information prior to jumping to bootloader / jump due to ECUReset request.
结构体 Dcm_ProgConditionsType 用于在编程流程或 ECU 复位时在应用程序与引导加载程序之间交换状态和上下文数据 [SWS_Dcm_00988]。它集中了诸如 ConnectionId 和 TesterAddress 等连接信息、诸如 Sid 和 SubFncId 等诊断标识符以及诸如 ReprogramingRequest、ApplUpdated 和 ResponseRequired 等控制标志 [SWS_Dcm_00988]。
通过两个核心接口进行使用:
- 在跳转至引导加载程序之前或复位时,DCM 将该结构体传递给异步、不可重入函数
Dcm_SetProgConditions()[SWS_Dcm_00543]。可能的返回值包括E_OK、E_NOT_OK、DCM_E_PENDING,以及在请求响应挂起消息(NRC 0x78)时的DCM_E_FORCE_RCRRP[SWS_Dcm_00543]。 - 重启后,DCM 在其初始化期间调用同步、不可重入的标注
Dcm_GetProgConditions(),以读取保存的条件并确定Dcm_EcuStartModeType[SWS_Dcm_00544]。集成商对这些数据的存储通常可能通过防复位 RAM 或非易失性存储器实现(解释)。 问题 Q-026bc7bc93f5502c (未决)
在进一步的系统交互中,DCM 对该结构体进行评估:一旦 ComM 报告具备完全通信能力,DCM 便会为 Sid 中存储的服务标识符发送待处理的诊断响应 [SWS_Dcm_00767]。如果 ApplUpdated == True 在跳转到引导加载程序后指示已通过 Flash 下载完成更新,则 DCM 通过 BswM_Dcm_ApplicationUpdated() 通知 BswM [SWS_Dcm_00768]。
本使用说明由系统自动生成,且完全基于 AUTOSAR 版本 R20-11 的规范。
实现者指南即将推出(复杂度 I1)
类型 Dcm_MsgItemType [SWS_Dcm_00989] 📄 PDF
Base type for diagnostic message item
类型 Dcm_MsgType [SWS_Dcm_00990] 📄 PDF
Base type for diagnostic message (request, positive or negative response)
使用与类型定义
数据类型 Dcm_MsgType 是 Diagnostic Communication Manager 中诊断消息的核心指针类型,并通过头文件 Dcm.h 提供 [SWS_Dcm_00990]。它被声明为指向 Dcm_MsgItemType* 的指针,并用作引用请求以及肯定和否定响应消息的通用基础 [SWS_Dcm_00990]。解读:由于基类型 Dcm_MsgItemType 在规范中未作详细说明,它推测通常表示单个数据字节(如 uint8),通过该字节按顺序访问线性消息缓冲区。 问题 Q-2b6f46b51d3cb8e0 (未决)
交互与结构上下文
Dcm_MsgType 的主要用途是在上下文结构 Dcm_MsgContextType [SWS_Dcm_00994] 内部。在该结构中,该类型引用了两个独立的数据区域:
reqData:指向诊断请求的有效负载数据,起始于服务标识符(SID)紧随其后的位置,而该服务标识符本身不属于此数据 [SWS_Dcm_00994]。resData:指向肯定响应的数据,并且同样起始于服务标识符紧随其后的位置 [SWS_Dcm_00994]。
缓冲区边界与限制
在处理和填充通过 Dcm_MsgType 寻址的响应缓冲区时,用户必须严格遵守关联的缓冲区限制 [SWS_Dcm_00994]。实际响应长度 resDataLen 绝不允许超过由 resMaxDataLen 定义的缓冲区容量,因为最大响应大小受到所分配缓冲区分配情况的严格限制 [SWS_Dcm_00994]。
本段文本由 AI 基于 AUTOSAR Classic Release R20-11 规范生成。
类型 Dcm_MsgLenType [SWS_Dcm_00991] 📄 PDF
Length of diagnostic message (request, positive or negative response). The maximum length is dependent of the underlying transport protocol/media.
数据类型 Dcm_MsgLenType 可通过头文件 Dcm.h 获取,并派生自基本类型 uint32 [SWS_Dcm_00991]。它在 Diagnostic Communication Manager(DCM)中用于描述诊断报文的长度。这既包括诊断请求(Requests),也包括肯定和否定响应报文(Responses)[SWS_Dcm_00991]。
关于取值范围限制,规范规定诊断报文的最大可传输长度取决于各自底层的传输协议或传输介质 [SWS_Dcm_00991]。解释:尽管底层数据类型 uint32 在软件端能够表示高达 4 GiB 的报文长度,但在实践中实际最大长度可能始终受到通信介质以及缓冲区大小的限制。 问题 Q-ac43639ecb32605d (未决)
Dcm_MsgLenType 在封装诊断任务上下文的结构体 Dcm_MsgContextType 中起着核心作用 [SWS_Dcm_00994]。在该结构体内,它对若干基本的长度说明进行类型化:
reqDataLen:表示请求数据(Request Data)的长度。计数紧随服务标识符之后开始,因此该长度说明中不包含服务标识符 [SWS_Dcm_00994]。resDataLen:指定肯定响应数据的长度,同样不包含服务标识符 [SWS_Dcm_00994]。resMaxDataLen:指定响应的最大可能长度,该长度受分配的缓冲区大小限制 [SWS_Dcm_00994]。
因此在实现服务处理程序时,必须严格注意对 reqDataLen 和 resDataLen 的长度计算始终不包含服务标识符,且响应数据不得超过由 resMaxDataLen 指定的缓冲区限制 [SWS_Dcm_00994]。
本使用说明由 AI 基于 AUTOSAR CP R20-11 规范生成。
类型 Dcm_MsgAddInfoType [SWS_Dcm_00992] 📄 PDF
Additional information on message request. Datastructure: Bitfield
根据 [SWS_Dcm_00992],数据类型 Dcm_MsgAddInfoType 被定义为位域结构体,用于为诊断报文提供补充的状态和控制信息。该类型在 Classic AUTOSAR 中通过头文件 Dcm.h 提供,并在上级上下文结构体 Dcm_MsgContextType([SWS_Dcm_00994])中作为元素 msgAddInfo 使用,以便一致地绑定服务请求及相关响应的附加信息。
根据 [SWS_Dcm_00992],该位域结构体指定了具有精确定位位位置的单个控制标志:
reqType(位置 LSB+0):标识诊断请求的寻址方式。值0表示物理请求(physical request),而值1表示功能请求(functional request)。suppressPosResponse(位置 LSB+1):决定关于肯定响应的行为。为0时不抑制肯定响应(do not suppress),而值1则规定不得发送肯定响应(no positive response will be sent)。
由于 Dcm_MsgAddInfoType 是仅用于参数和上下文传递的纯数据结构,因此该类型本身不存在同步或异步调用语义、返回值、重入规则或针对 DET 或 DEM 的独立错误消息。在后续流程中对所设置位的具体评估和考虑,推测在访问来自 [SWS_Dcm_00994] 的报文上下文时由 Diagnostic Communication Manager 的内部处理例程负责。 问题 Q-b27248cc452ba1b1 (未决)
本文本由 AI 生成,旨在为 AUTOSAR 环境提供参考指引。
类型 Dcm_IdContextType [SWS_Dcm_00993] 📄 PDF
This message context identifier can be used to determine the relation between request and response confirmation.
类型 Dcm_MsgContextType [SWS_Dcm_00994] 📄 PDF
This data structure contains all information which is necessary to process a diagnostic message from request to response and response confirmation.
数据结构 Dcm_MsgContextType 提供所有必要信息,以控制从处理到响应直至确认的诊断请求 [SWS_Dcm_00994]。它作为输入/输出参数 pMsgContext 传递给异步且可重入的服务例程 [SWS_Dcm_00763],[SWS_Dcm_00764]。在此过程中,有效载荷指针 reqData 和 resData 始终紧跟在服务标识符(SID)之后,并且长度规格 reqDataLen 以及 resDataLen 不包含 SID [SWS_Dcm_00994]。DSD 子模块在复制到发送缓冲区时,在第一位置重新插入响应 SID [SWS_Dcm_00223],[SWS_Dcm_00224]。
使用时应注意以下几个方面:
- 响应长度与错误情况:如果生成的响应长度超过通过与协议相关的字段
resMaxDataLen定义的缓冲区限制且为DcmPagedBufferEnabled == FALSE,则 DCM 以否定响应码 0x14(DCM_E_RESPONSETOOLONG)进行响应 [SWS_Dcm_01059]。如果服务处理程序中的处理失败,应用程序将返回带有错误代码的E_NOT_OK[SWS_Dcm_00763]。 - 附加信息与响应抑制:通过
msgAddInfo传输等suppressPosRspMsgIndicationBit;若其被置位,则 DSD 会抑制肯定响应 [SWS_Dcm_00202],[SWS_Dcm_00231]。 - 生命周期与上下文关联:一旦达到确认,结构即失效,所有消息数据均会丢失 [SWS_Dcm_00994]。应用程序必须在请求开始时就保存标识符
idContext,以便将后续的确认与原始请求相关联 [SWS_Dcm_00994]。 - 协议关联:字段
dcmRxPduId标识接收 PDU,并允许根据诊断协议进行区分处理,例如在 OBD 与扩展诊断之间 [SWS_Dcm_00994]。
解释:由于上下文在确认时失效,底层存储缓冲区在发送响应后可能立即被 DSL 释放或覆盖以用于后续通信。 问题 Q-88e3cf2f3d8f6076 (未决)
本说明由 AI 基于 AUTOSAR Classic R20-11 规范生成。
实现者指南即将推出(复杂度 I2)
类型 Dcm_ExtendedOpStatusType [SWS_Dcm_91015] 📄 PDF
类型 Dcm_ExtendedOpStatusType 基于 uint8,并通过头文件 Dcm.h 提供 [SWS_Dcm_91015]。作为输入参数 OpStatus,它控制诸如 <Module>_<DiagnosticService> [SWS_Dcm_00763] 以及 <Module>_<DiagnosticService>_<SubService> [SWS_Dcm_00764] 等异步诊断和子服务函数的执行阶段及确认。
定义的状态值表示操作进度以及来自 DCM 的反馈 [SWS_Dcm_91015]:
DCM_INITIAL(0x00):首次调用该操作。DCM_PENDING(0x01):在先前调用报告了中间状态(Pending)后的后续调用。DCM_CANCEL(0x02):DCM 请求中止正在运行的操作。DCM_FORCE_RCRRP_OK(0x03):确认待处理响应(Response Pending)的传输。DCM_POS_RESPONSE_SENT(0x04) 和DCM_POS_RESPONSE_FAILED(0x05):确认正响应传输成功或失败。DCM_NEG_RESPONSE_SENT(0x06) 和DCM_NEG_RESPONSE_FAILED(0x07):确认负响应传输成功或失败。
关于并发性,所调用的诊断接口被指定为可重入和异步的 [SWS_Dcm_00763] [SWS_Dcm_00764]。发生错误时,服务函数提供返回值 E_NOT_OK,并向输出参数 ErrorCode 分配一个否定响应码(NRC),随后 DCM 模块发送带有该代码的否定响应 [SWS_Dcm_00763] [SWS_Dcm_00764]。
本文本由 AI 基于规范生成。
实现者指南即将推出(复杂度 I2)
类型 Dcm_OpStatusType [SWS_Dcm_00984] 📄 PDF
类型 Dcm_OpStatusType 基于 uint8,并通过头文件 Rte_Dcm_Type.h 提供 [SWS_Dcm_00984]。它控制 Diagnostic Communication Manager(DCM)异步诊断操作的执行和生命周期状态,例如 Dcm_ReadMemory [SWS_Dcm_00539]、Dcm_WriteMemory [SWS_Dcm_00540] 或 Dcm_SetProgConditions [SWS_Dcm_00543]。
为控制操作流程定义了四个状态值 [SWS_Dcm_00984]:
DCM_INITIAL(0x00):标识 DCM 对某项操作的首次调用 [SWS_Dcm_00527]。DCM_PENDING(0x01):指示先前返回挂起状态后的后续调用 [SWS_Dcm_00984]。如果某项操作返回错误值DCM_E_PENDING,则 DCM 会在Dcm_MainFunction的每个后续周期中使用OpStatus = DCM_PENDING再次调用该操作,直到处理完成 [SWS_Dcm_00530]。DCM_CANCEL(0x02):显式请求被调用方中止仍处于待决状态的异步操作 [SWS_Dcm_00984]。DCM_FORCE_RCRRP_OK(0x03):确认响应挂起消息(NRC 0x78)已成功传输 [SWS_Dcm_00984]。如果操作以DCM_E_FORCE_RCRRP响应,则 DCM 会启动 RCR-RP 的发送,并暂停对该操作的进一步调用,直到发送完成 [SWS_Dcm_00528]。
关于并发性和约束条件,接收 Dcm_OpStatusType 作为传入参数的操作均设计为异步,并被指定为不可重入 [SWS_Dcm_00539] [SWS_Dcm_00754]。
此文本由 AI 生成,用作规范的参考指引。
实现者指南即将推出(复杂度 I2)
类型 Dcm_ConfirmationStatusType [SWS_Dcm_00983] 📄 PDF
使用与取值范围
数据类型 Dcm_ConfirmationStatusType 是派生自 uint8 的枚举类型,通过头文件 Rte_Dcm_Type.h 提供 [SWS_Dcm_00983]。它用于向应用程序或内部服务处理程序报告已发送诊断响应的状态——无论是成功发送还是出现传输错误 [SWS_Dcm_01342]。取值范围包含四个离散状态 [SWS_Dcm_00983]:
DCM_RES_POS_OK(0x00):解释:肯定诊断响应已成功传输。 问题 (未决)DCM_RES_POS_NOT_OK(0x01):解释:传输肯定诊断响应时发生错误。 问题 (未决)DCM_RES_NEG_OK(0x02):解释:否定诊断响应(NRC)已成功传输。 问题 (未决)DCM_RES_NEG_NOT_OK(0x03):解释:传输否定诊断响应时发生错误。 问题 (未决)
交互与接口
确认状态在同步回调函数中作为输入参数(IN)传递。在通用确认接口 Xxx_Confirmation 中,该参数与服务标识符(SID)、寻址方式(ReqType)、连接 ID(ConnectionId)、协议类型以及测试仪源地址一起传递 [SWS_Dcm_01342]。同样,接口 ServiceRequestNotification 也通过操作 Confirmation 集成了该状态 [SWS_Dcm_00694]。
在执行例程服务时,该类型被专门用于在单个例程操作完成后反馈传输状态。为此使用在 Dcm_Externals.h 中声明的回调 Xxx_StartConfirmation [SWS_Dcm_91016]、Xxx_StopConfirmation [SWS_Dcm_91017] 和 Xxx_RequestResultsConfirmation [SWS_Dcm_91018]。
并发性与执行
用于确认的函数返回 Std_ReturnType(例如 E_OK 或 E_NOT_OK)[SWS_Dcm_01342],[SWS_Dcm_91016]。所有上述接口调用均同步执行,并被声明为不可重入(Non Reentrant)[SWS_Dcm_01342],[SWS_Dcm_91016],[SWS_Dcm_91017],[SWS_Dcm_91018]。
此使用说明基于 AUTOSAR CP R20-11 规范自动生成。
实现者指南即将推出(复杂度 I2)
类型 Dcm_SecLevelType [SWS_Dcm_00977] 📄 PDF
Security Level type definition
类型 Dcm_SesCtrlType [SWS_Dcm_00978] 📄 PDF
Session type definition. 0, 127 and all values above 127 are reserved by ISO.
类型 Dcm_ProtocolType [SWS_Dcm_00979] 📄 PDF
Type Dcm_ProtocolType.
类型 Dcm_NegativeResponseCodeType [SWS_Dcm_00980] 📄 PDF
Type Dcm_NegativeResponseCodeType.
类型 Dcm_DataArrayType [SWS_Dcm_01121] 📄 PDF
类型 Dcm_InfoType [SWS_Dcm_01013] 📄 PDF
类型 Dcm_RequestDataArrayType [SWS_Dcm_01165] 📄 PDF
类型 Dcm_InputOutputControlParameterType [SWS_Dcm_01305] 📄 PDF
类型 Dcm_IOOperationResponseType [SWS_Dcm_01307] 📄 PDF
类型 Dcm_DidSupportedType [SWS_Dcm_01138] 📄 PDF
类型 Dcm_FileAndDirNameType [SWS_Dcm_91066] 📄 PDF
类型 Dcm_ResponseDataArrayType [SWS_Dcm_91064] 📄 PDF
类型 Dcm_AuthenticationRoleType [SWS_Dcm_91068] 📄 PDF
数据类型 Dcm_AuthenticationRoleType 被指定为字节数组(uint8),其大小由配置参数 DcmDspAuthenticationRoleSize 决定 [SWS_Dcm_91068]。它通过头文件 Rte_Dcm_Type.h 提供,并在 DCM 模块中用于形式化表示认证角色 [SWS_Dcm_91068]。
在实际应用中,该类型用作输入参数,以指定未认证诊断连接的角色:
- 使用与语义:该类型作为输入参数
deauthenticatedRole在 C 函数Dcm_SetDeauthenticatedRole(可通过Dcm.h获取)[SWS_Dcm_91069] 以及服务接口Authentication的操作SetDeauthenticatedRole[SWS_Dcm_91072] 中传递。由此为通过connectionId标识的连接同步分配已去认证角色 [SWS_Dcm_91069]。 - 并发与有效性:C-API
Dcm_SetDeauthenticatedRole被指定为可重入 [SWS_Dcm_91069]。分配的角色对相应连接保持有效,直至该连接转换到已认证状态或 ECU 复位 [SWS_Dcm_91069]、[SWS_Dcm_91072]。 - 错误处理:对于该类型及相关操作不存在特定错误代码;该函数按默认方式始终返回
E_OK[SWS_Dcm_91069]、[SWS_Dcm_91072]。
本文本由 AI 基于规范生成。
实现者指南即将推出(复杂度 I1)
类型 DiagnosticSessionControlModeSwitchInterface [SWS_Dcm_91033] 📄 PDF
A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the current Diagnostic Session
使用
根据 [SWS_Dcm_91033],接口元素 DiagnosticSessionControlModeSwitchInterface 被声明为模块 DCM 的提供端口(PPortPrototype 或 ProvidedPort),并使用接口 Dcm_DiagnosticSessionControlModeSwitchInterface。根据 [SWS_Dcm_91033] 中的规范,此端口用于将活动诊断会话(Diagnostic Session)的切换和当前状态通知软件组件(SW-C)。
Interpretation:在此过程中,DCM 模块可能承担发送方的角色,通过 RTE 将诊断会话的状态变更转发给感兴趣的软件组件。 问题 Q-6af0e97b6910087d (未决)连接的 SW-C 应当会通过配置好的模式切换事件接收并处理这些模式切换,以使内部流程、使能或其功能行为与当前活动的诊断会话相适应。
错误处理与边界条件
在 [SWS_Dcm_91033] 中未为此端口定义特定的错误码、返回值或向 DET 或 DEM 发送的通知。Interpretation:因此,传输过程中的任何错误状态都应当完全由 AUTOSAR RTE 和基础模块 DCM 的常规机制进行监控和处理。 问题 Q-a8055458432174f6 (未决)规范数据中未包含关于重入性或调用上下文的特殊限制,因此不再作进一步探讨。
本文由 AI 基于 AUTOSAR R20-11 规范生成。
实现者指南即将推出(复杂度 I1)
类型 EcuResetModeSwitchInterface [SWS_Dcm_91034] 📄 PDF
A ModeSwitchInterface PPortPrototype used to notify SW-Cs about an upcoming ECU Reset and its type
根据 [SWS_Dcm_91034],端口元素 EcuResetModeSwitchInterface 被指定为模块 DCM 的提供端口(ProvidedPort 或 PPortPrototype)。它使用接口 Dcm_EcuResetModeSwitchInterface,用于通知软件组件(SW-C)即将发生的 ECU 复位以及具体的复位类型 [SWS_Dcm_91034]。
对于在系统中的使用和交互,以下方面适用:
- 通信角色:DCM 充当模式切换的发送方。感兴趣的 SW-C 通过相应的接收端口(R-Port)进行连接,以对通知做出响应 [SWS_Dcm_91034]。
- 模式切换语义:作为
ModeSwitchInterface,此处不传输客户端-服务器返回值或数据参数,而是通过 RTE 指示状态变化 [SWS_Dcm_91034]。因此,通知通过接口的模式声明进行。 - 组件的反应:通过获知所通报的复位类型,SW-C 得知即将发生的重启的类型 [SWS_Dcm_91034]。这应当使应用程序能够有序地将易失性运行时数据存入非易失性存储器中,或在重启前将外设硬件置于安全状态(Interpretation)。 问题 Q-4dcf9314d84b53a0 (未决)
- 错误处理:接口定义本身不包含针对 SW-C 错误状态的错误消息或返回通道 [SWS_Dcm_91034]。
本段文本由 AI 生成,基于 AUTOSAR Release R20-11。
实现者指南即将推出(复杂度 I1)
类型 ModeRapidPowerShutDownModeSwitchInterface [SWS_Dcm_91035] 📄 PDF
A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the rapid power shut down mode
根据 [SWS_Dcm_91035],接口 ModeRapidPowerShutDownModeSwitchInterface 被指定为模块 Dcm 中用于接口 Dcm_ModeRapidPowerShutDownModeSwitchInterface 的 PPortPrototype(ProvidedPort)。它用于通知软件组件(SW-C)快速关机模式(Rapid Power Shut Down Mode)。
关于使用、行为和交互,以下方面是相关的:
- 使用与语义:DCM 通过
ModeSwitchInterface向连接的 SW-C 指示模式切换。调用上下文位于发起模式变更的 DCM 模块内部;向接收方的传输通过 RTE 异步进行 [SWS_Dcm_91035]。 - 错误处理:端口定义不包含特定的错误码、返回值或 DET/DEM 事件。因此,模式传输中的错误应当完全由 AUTOSAR RTE 针对模式切换端口的标准机制进行拦截。 问题 Q-16537a6a4e19e40b (未决)
- 并发与限制:通知在 DCM 的执行上下文中进行。接收方的 SW-C 大概会通过模式触发的可运行实体(runnable)被激活,并且必须设计为能够无阻塞延迟地执行快速关机操作。 问题 Q-20f196c7af208288 (未决)
此文本由 AI 基于 AUTOSAR 规范生成。
实现者指南即将推出(复杂度 I1)
类型 ControlDTCSettingModeSwitchInterface [SWS_Dcm_91037] 📄 PDF
A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the DTC Setting mode
使用与目的
根据 [SWS_Dcm_91037],元素 ControlDTCSettingModeSwitchInterface 是诊断通信管理器(DCM)作为提供端口(PPortPrototype)提供的 ModeSwitchInterface。其主要任务是将 DTC 设置模式(DTC Setting mode)的当前状态通知连接的软件组件(SW-C)。
此处使用 Dcm_ControlDTCSettingModeSwitchInterface 作为端口接口 [SWS_Dcm_91037]。由于 DCM 将此端口声明为提供端口,因此诊断模块承担模式管理器或发送方的角色。应用组件可以通过相应的请求端口进行连接,以接收状态切换并调整其内部行为。
交互与系统集成
在系统组合中的交互侧重于诊断命令与应用逻辑的解耦:
- 模式传播:通过提供的端口,DCM 告知 SW-C 诊断故障码的存储和更新处于激活还是被禁止状态 [SWS_Dcm_91037]。在 AUTOSAR 运行时环境中,对 SW-C 的通知应当通过 RTE 的标准模式切换事件进行。 问题 Q-8c0918099f2aa797 (未决)
- 诊断来源:DTC 设置模式的切换大概与 UDS 诊断服务(如 ControlDTCSetting,Service 0x85)有直接联系,外部诊断仪可通过该服务暂时阻止故障记录。 问题 Q-f2555e0641476955 (未决)
错误处理与边界条件
由于 [SWS_Dcm_91037] 中的规范既未定义特定错误码,也未定义 DET 消息或返回值,因此模式传输纯粹通过 RTE 的机制声明式地进行。端口声明本身未指明特殊的调用上下文或重入性要求。
本段文本由 AI 基于 AUTOSAR Classic R20-11 规范生成。
实现者指南即将推出(复杂度 I1)
类型 SecurityAccessModeSwitchInterface [SWS_Dcm_91039] 📄 PDF
A ModeSwitchInterface PPortPrototype used to notify SW-Cs about the current Security Level
端口元素 SecurityAccessModeSwitchInterface 在模块 DCM 中基于接口 Dcm_SecurityAccessModeSwitchInterface 提供一个提供端口(PPortPrototype)[SWS_Dcm_91039]。该接口的目的是将当前活动的安全级别(Security Level)通知软件组件(SW-C)[SWS_Dcm_91039]。
使用与交互
通知通过 DCM 的端口发送给连接的组件 [SWS_Dcm_91039]。其提供形式应当是作为通过 AUTOSAR RTE 的模式切换通信实现的,以便连接的 SW-C 可以通过模式切换事件对 Security Level 的状态改变做出响应(Interpretation)。 问题 Q-d86dacdb91979b87 (未决)端口描述中未定义参数、返回值或特定的同步函数调用 [SWS_Dcm_91039];因此,该传输应当符合模式管理器的异步广播语义(Interpretation)。 问题 Q-9d750df4f73b1634 (未决)
错误处理与限制
由于这纯粹是模式切换,规范中没有提及特定的错误码、参数检查或向 DET 或 DEM 发送的消息 [SWS_Dcm_91039]。通知时的直接错误处理应当未在接口本身中规定(Interpretation)。 问题 (未决)未针对该端口元素指定关于重入性或不同变体的限制 [SWS_Dcm_91039]。
本使用说明为自动生成,基于 AUTOSAR Release R20-11 的规范。
实现者指南即将推出(复杂度 I1)
类型 DcmDiagnosticSessionControl [SWS_Dcm_91019] 📄 PDF
ModeDeclarationGroup representing the different diagnostic sessions Further modes to be added: {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDspSession/ DcmDspSessionRow.SHORT-NAME)}
类型 DcmEcuReset [SWS_Dcm_91021] 📄 PDF
ModeDeclarationGroup representing the different ECU reset types
类型 DcmModeRapidPowerShutDown [SWS_Dcm_91023] 📄 PDF
ModeDeclarationGroup representing the enable/disable state of rapid power shutdown
ModeDeclarationGroup DcmModeRapidPowerShutDown 用于表示 ECU 中快速关机(Rapid Power Shutdown)的激活状态 [SWS_Dcm_91023]。该元素归属于类别 EXPLICIT_ORDER,并定义了两种具体模式:数值为 0 的初始模式 DCM_ENABLE_RAPIDPOWERSHUTDOWN 以及数值为 1 的 DCM_DISABLE_RAPIDPOWERSHUTDOWN [SWS_Dcm_91023]。对于模式切换,指定了过渡值 255(On transition value)[SWS_Dcm_91023]。
相互协作与模式管理
在整个系统中,DCM 模块充当一系列诊断模式的 Mode Manager,这也包括在诊断服务 0x11(ECU Reset)上下文中的 DcmModeRapidPowerShutDown [SWS_Dcm_00775]。在基础软件内部,DCM 基于此 ModeDeclarationGroup 在其 BSW 模块实例中为此将 ModeDeclarationGroupPrototype DcmModeRapidPowerShutDown 定义为 provided-ModeGroup [SWS_Dcm_00807]。
需要获知当前快速关机激活状态的应用程序组件(SW-C)连接到标准化服务接口 Dcm_ModeRapidPowerShutDownModeSwitchInterface [SWS_Dcm_91024]。它们通过其模式组 modeRapidPowerShutDown 在运行时接收 DCM 的相应模式切换 [SWS_Dcm_91024]。
该使用说明基于 AUTOSAR R20-11 的规范需求自动生成。
实现者指南即将推出(复杂度 I1)
类型 DcmCommunicationControl [SWS_Dcm_91025] 📄 PDF
ModeDeclarationGroup representing the different communication control states
类型 DcmControlDTCSetting [SWS_Dcm_91027] 📄 PDF
ModeDeclarationGroup representing the enable/disable state for DTC storage
类型 DcmResponseOnEvent [SWS_Dcm_91029] 📄 PDF
ModeDeclarationGroup representing the state of a Response On Event
类型 DcmSecurityAccess [SWS_Dcm_91031] 📄 PDF
ModeDeclarationGroup representing the different diagnostic security levels Further modes to be added: {ecuc(Dcm/DcmConfigSet/DcmDsp/DcmDsp Security/DcmDspSecurityRow.SHORT-NAME)}
类别 EXPLICIT_ORDER 的 ModeDeclarationGroup DcmSecurityAccess 表示 ECU 针对 UDS 服务 0x27(SecurityAccess)的不同诊断安全级别 [SWS_Dcm_91031],[SWS_Dcm_00775]。作为初始模式,默认预设为固定值为 0 的 DCM_SEC_LEV_LOCKED [SWS_Dcm_91031],[SWS_Dcm_01327]。额外的安全级别从 DCM_SEC_LEV_1 到 DCM_SEC_LEV_63,通过在 DcmDspSecurityRow 下对安全行的项目和应用特定配置进行补充 [SWS_Dcm_91031],[SWS_Dcm_01327]。
DCM 模块担任此诊断模式的 Mode Manager 核心角色 [SWS_Dcm_00775]。每次安全级别发生变化时,DCM 都会用新进入的安全状态更新模式组 DcmSecurityAccess [SWS_Dcm_01329]。在各个模式之间进行状态切换期间,系统会指示定义的过渡值 255(On transition value)[SWS_Dcm_91031]。
当前安全状态通过服务接口 Dcm_SecurityAccessModeSwitchInterface 传递给软件组件 [SWS_Dcm_91032]:
- DCM 对此通过该接口将
ModeDeclarationGroupPrototypeDcmSecurityAccess作为提供的模式组(provided-ModeGroup)提供 [SWS_Dcm_01327],[SWS_Dcm_91032]。 - 每个需要获知当前 Security Level 的软件组件(SW-C)都会声明对 ModeSwitch 接口
Dcm_SecurityAccessModeSwitchInterface的依赖,并将其作为 Required 端口引入 [SWS_Dcm_91032]。 - 接口中各个模式的可用性遵循与底层安全行相同的配置变体 [SWS_Dcm_91032]。
该文本由 AI 生成。
实现者指南即将推出(复杂度 I2)
Request a governed re-review of this record. The record is not changed immediately.
- Record
AUTOSAR/AP/record/CP_MOD_Dcm- Status
- unspecified
- Version
AUTOSAR/AP/record/CP_MOD_Dcm@rel:R20-11#d326a423- Content hash
d326a423- Source
- https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_DiagnosticCommunicationManager.pdf#nameddest=SWS_Dcm_00037
gemini-3.8-flash-low· 2026-10-13 · 德文原文