Callout
- Callout 是在 ECU 整合期间必须添加到 Dcm 的代码片段,大多数 Callout 的内容是手工编写的代码,对于一些 Callout,Dcm 配置工具将生成一个默认的实现,由整合者手动编辑。从概念上讲,Callout 属于 ECU 固件
- 因为 Callout 不是 Dcm 的服务,所以它们没有指定的服务 ID
- Dcm 不能完全支持要求物理内存访问的 ISO14229-1 服务的实现,因此,Dcm 定义了Callout 来实现这种存储器的访问
- Callout 实现可以简单地通过定义 BlockId 和物理内存地址之间的映射来实现
- Callout 包含如下 API:
- Dcm_ReadMemory
- Dcm_WriteMemory
- Dcm_SetProgConditions
- Dcm_GetProgConditions
- Dcm_ProcessRequestAddFile
- Dcm_ProcessRequestDeleteFile
- Dcm_ProcessRequestReplaceFile
- Dcm_ProcessRequestReadFile
- Dcm_ProcessRequestReadDir
- Dcm_WriteFile
- Dcm_ReadFileOrDir
- ProcessRequestDownload
- ProcessRequestTransferExit
- ProcessRequestUpload
- ProcessTransferDataRead
- ProcessTransferDataWrite
Dcm_ReadMemory
Dcm_ReturnReadMemoryTypeDcm_ReadMemory(Dcm_OpStatusTypeOpStatus,
uint8MemoryIdentifier,
uint32MemoryAddress,
uint32MemorySize,
uint8*MemoryData,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ReadMemory | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL / DCM_PENDING / DCM_CANCEL / DCM_FORCE_RCRRP_OK | ||
MemoryIdentifier | 内存块标识符(如需要区分内存段时使用) 注:不使用时,此参数设为 0 | |||
MemoryAddress | 内存起始地址 | |||
MemorySize | MemoryData 的长度 | |||
输出参数 | MemoryData | 读取数据(指向 DCM 中的诊断缓冲区) | ||
ErrorCode | 如果操作 Dcm_ReadMemory 返回值为 DCM_READ_FAILED,则 Dcm 模块将发送一个与参数 ErrorCode 值相等的 NRC 否定响应码 | |||
返回值 | Dcm_ReturnReadMemoryType | DCM_READ_OK: 读取成功 | DCM_READ_FAILED: 读取失败 | DCM_READ_PENDING: 读取尚未完成 | DCM_READ_FORCE_RCRRP: 读取挂起,立即发送 Respone Pending(NRC 0x78) 响应 | ||
描述 | 用于从 UDS 请求消息中请求以 memoryAddress 和 memorySize 参数标识的内存数据。用于的 UDS 服务:ReadMemoryByAddress / RequestUpload / ReadDataByIdentifier (in case of Dynamical DID defined by memory address) / TransferData | |||
声明 | Dcm_Externals.h |
Dcm_WriteMemory
Dcm_ReturnWriteMemoryTypeDcm_WriteMemory(Dcm_OpStatusTypeOpStatus,
uint8MemoryIdentifier,
uint32MemoryAddress,
uint32MemorySize,
constuint8*MemoryData,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_WriteMemory | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL / DCM_PENDING / DCM_CANCEL / DCM_FORCE_RCRRP_OK | ||
MemoryIdentifier | 内存块的标识符(如 WriteDataByIdentifier 服务使用)。注:不使用时,此参数设置为 0 | |||
MemoryAddress | 要复制数据的服务端内存的起始地址。注:如果不使用(例如,如果数据被压缩),此参数应设置为 0 | |||
MemorySize | MemoryData 的长度 | |||
MemoryData | 要写入的数据(指向 DCM 中的诊断缓冲区) | |||
输出参数 | ErrorCode | 如果操作 Dcm_WriteMemory 返回值为 DCM_WRITE_FAILED,则 Dcm 模块将发送一个与参数 ErrorCode 值相等的 NRC 否定响应码 | ||
返回值 | Dcm_ReturnWriteMemoryType | DCM_WRITE_OK: 写入成功 | DCM_WRITE_FAILED: 写入失败 | DCM_WRITE_PENDING: 写入尚未完成 | DCM_WRITE_FORCE_RCRRP: 写入挂起,立即发送 Respone Pending(NRC 0x78) 响应 | ||
描述 | 用于写入由参数 memoryAddress 和 memorySize 标识的内存数据。用于的 UDS 服务: WriteMemoryByAddress / RequestDownload / TransferData | |||
声明 | Dcm_Externals.h |
Dcm_SetProgConditions
Std_ReturnTypeDcm_SetProgConditions(Dcm_OpStatusTypeOpStatus,
constDcm_ProgConditionsType*ProgConditions)
名称 | Dcm_SetProgConditions | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL / DCM_PENDING / DCM_CANCEL / DCM_FORCE_RCRRP_OK | ||
ProgConditions | 请求跳转到引导加载程序的条件 | |||
输出参数 | None | |||
返回值 | Std_ReturnType | E_OK: 条件已正确设置 | E_NOT_OK: 条件不能设置 | DCM_E_PENDING: 条件设置正在进行中,则需要进一步调用此 API 以结束设置 | DCM_E_FORCE_RCRRP: 应用程序请求发送相应 Response Pending (NRC 0x78) | ||
描述 | Dcm_SetProgConditions 允许集成商在由于 ECUReset 请求跳转到 bootloader 之前存储相关信息。相关信息在 Dcm_ProgConditionsType 中定义 | |||
声明 | Dcm_Externals.h |
Dcm_GetProgConditions
Dcm_EcuStartModeTypeDcm_GetProgConditions(Dcm_ProgConditionsType*ProgConditions)
名称 | Dcm_GetProgConditions | |||
同步/异步 | 同步 | |||
可重入性 | 非可重入 | |||
输入参数 | None | |||
输出参数 | ProgConditions | 请求从引导加载程序跳转的条件 | ||
返回值 | Dcm_EcuStartModeType | - | ||
描述 | Dcm_GetProgConditions 在 Dcm 初始化时调用,并允许确定是否必须发送响应(50或50或51)。上下文参数在 Dcm_ProgConditionsType 中定义 | |||
声明 | Dcm_Externals.h |
Dcm_ProcessRequestAddFile
Std_ReturnTypeDcm_ProcessRequestAddFile(Dcm_OpStatusTypeOpStatus,
uint16filePathAndNameLength,
constuint8*filePathAndName,
uint8dataFormatIdentifier,
uint64fileSizeUncompressed,
uint64fileSizeCompressed,
uint64*maxNumberOfBlockLength,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessRequestAddFile | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL: 所有输入参数都是有效的 | DCM_PENDING: 所有输入参数设置为 0x00 | DCM_CANCEL: 所有输入参数设置为 0x00 | DCM_FORCE_RCRRP_OK: 所有输入参数设置为 0x00 | ||
filePathAndNameLength | 定义参数 filePathAndName 的字节长度 | |||
filePathAndName | 根据参数 modeOfOperation 参数,定义服务端的文件系统位置,其中将添加、删除、替换或读取文件。此外,该参数还包括要添加、删除、替换或读取文件的文件名,作为文件路径的一部分 | |||
dataFormatIdentifier | 这个数据参数是一个单独编码的字节值。高 4 位表示压缩方法,低 4 位表示加密方法。为 0x00 表示不使用压缩算法/加密算法。0x00 以外的值是特定于汽车制造商的 | |||
fileSizeUncompressed | 以字节为单位定义要下载的未压缩文件的大小 | |||
fileSizeCompressed | 以字节为单位定义要下载的压缩文件的大小 | |||
输出参数 | maxNumberOfBlockLength | 每个 TransferData 请求中包含的最大字节数,不包括 SID 和 blockSequenceCounter | ||
ErrorCode | 如果 Dcm_ProcessRequestAddFile 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | |||
返回值 | Std_ReturnType | E_OK: 请求成功 | E_NOT_OK: 请求失败 | DCM_E_PENDING: 请求尚未完成 | DCM_E_FORCE_RCRRP: 应用程序请求发送响应 Response Pending (NRC 0x78) | ||
描述 | DCM 应该调用这个函数来启动一个 RequestFileTransfer 进程,其模式 OfOperation 等于 0x01 (AddFile) | |||
声明 | Dcm_Externals.h |
Dcm_ProcessRequestDeleteFile
Std_ReturnTypeDcm_ProcessRequestDeleteFile(Dcm_OpStatusTypeOpStatus,
uint16filePathAndNameLength,
constuint8*filePathAndName,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessRequestDeleteFile | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL: 所有输入参数都是有效的 | DCM_PENDING: 所有输入参数设置为 0x00 | DCM_CANCEL: 所有输入参数设置为 0x00 | DCM_FORCE_RCRRP_OK: 所有输入参数设置为 0x00 | ||
filePathAndNameLength | 定义参数 filePathAndName 的字节长度 | |||
filePathAndName | 根据参数 modeOfOperation 参数,定义服务端的文件系统位置,其中将添加、删除、替换或读取文件。此外,该参数还包括要添加、删除、替换或读取文件的文件名,作为文件路径的一部分 | |||
输出参数 | ErrorCode | 如果 Dcm_ProcessRequestDeleteFile 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | ||
返回值 | Std_ReturnType | E_OK: 请求成功 | E_NOT_OK: 请求失败 | DCM_E_PENDING: 请求尚未完成 | DCM_E_FORCE_RCRRP: 应用程序请求发送响应 Response Pending (NRC 0x78) | ||
描述 | DCM 应该调用这个函数来启动一个 RequestFileTransfer 进程,其模式 OfOperation 等于 0x02 (DeleteFile) | |||
声明 | Dcm_Externals.h |
Dcm_ProcessRequestReplaceFile
Std_ReturnTypeDcm_ProcessRequestReplaceFile(Dcm_OpStatusTypeOpStatus,
uint16filePathAndNameLength,
constuint8*filePathAndName,
uint8dataFormatIdentifier,
uint64fileSizeUncompressed,
uint64fileSizeCompressed,
uint64*maxNumberOfBlockLength,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessRequestReplaceFile | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL: 所有输入参数都是有效的 | DCM_PENDING: 所有输入参数设置为 0x00 | DCM_CANCEL: 所有输入参数设置为 0x00 | DCM_FORCE_RCRRP_OK: 所有输入参数设置为 0x00 | ||
filePathAndNameLength | 定义参数 filePathAndName 的字节长度 | |||
filePathAndName | 根据参数 modeOfOperation 参数,定义服务端的文件系统位置,其中将添加、删除、替换或读取文件。此外,该参数还包括要添加、删除、替换或读取文件的文件名,作为文件路径的一部分 | |||
dataFormatIdentifier | 这个数据参数是一个单独编码的字节值。高 4 位表示压缩方法,低 4 位表示加密方法。为 0x00 表示不使用压缩算法/加密算法。0x00 以外的值是特定于汽车制造商的 | |||
fileSizeUncompressed | 以字节为单位定义要下载的未压缩文件的大小 | |||
fileSizeCompressed | 以字节为单位定义要下载的压缩文件的大小 | |||
输出参数 | maxNumberOfBlockLength | 每个 TransferData 请求中包含的最大字节数,不包括 SID 和 blockSequenceCounter | ||
ErrorCode | 如果 Dcm_ProcessRequestReplaceFile 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | |||
返回值 | Std_ReturnType | E_OK: 请求成功 | E_NOT_OK: 请求失败 | DCM_E_PENDING: 请求尚未完成 | DCM_E_FORCE_RCRRP: 应用程序请求发送响应 Response Pending (NRC 0x78) | ||
描述 | DCM 应该调用这个函数来启动一个 RequestFileTransfer 进程,其模式 OfOperation 等于 0x03 (ReplaceFile) | |||
声明 | Dcm_Externals.h |
Dcm_ProcessRequestReadFile
Std_ReturnTypeDcm_ProcessRequestReadFile(Dcm_OpStatusTypeOpStatus,
uint16filePathAndNameLength,
constuint8*filePathAndName,
uint8dataFormatIdentifier,
uint64fileSizeUncompressed,
uint64fileSizeCompressed,
uint64*maxNumberOfBlockLength,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessRequestReadFile | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL: 所有输入参数都是有效的 | DCM_PENDING: 所有输入参数设置为 0x00 | DCM_CANCEL: 所有输入参数设置为 0x00 | DCM_FORCE_RCRRP_OK: 所有输入参数设置为 0x00 | ||
filePathAndNameLength | 定义参数 filePathAndName 的字节长度 | |||
filePathAndName | 根据参数 modeOfOperation 参数,定义服务端的文件系统位置,其中将添加、删除、替换或读取文件。此外,该参数还包括要添加、删除、替换或读取文件的文件名,作为文件路径的一部分 | |||
dataFormatIdentifier | 这个数据参数是一个单独编码的字节值。高 4 位表示压缩方法,低 4 位表示加密方法。为 0x00 表示不使用压缩算法/加密算法。0x00 以外的值是特定于汽车制造商的 | |||
输出参数 | fileSizeUncompressed | 以字节为单位定义要上传的未压缩文件的大小 | ||
fileSizeCompressed | 以字节为单位定义要上传的压缩文件的大小 | |||
maxNumberOfBlockLength | 每个 TransferData 响应中包含的最大字节数,不包括 SID 和 blockSequenceCounter | |||
ErrorCode | 如果 Dcm_ProcessRequestReadFile 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | |||
返回值 | Std_ReturnType | E_OK: 请求成功 | E_NOT_OK: 请求失败 | DCM_E_PENDING: 请求尚未完成 | DCM_E_FORCE_RCRRP: 应用程序请求发送响应 Response Pending (NRC 0x78) | ||
描述 | DCM 应该调用这个函数来启动一个 RequestFileTransfer 进程,其模式 OfOperation 等于 0x04 (ReadFile) | |||
声明 | Dcm_Externals.h |
Dcm_ProcessRequestReadDir
Std_ReturnTypeDcm_ProcessRequestReadDir(Dcm_OpStatusTypeOpStatus,
uint16filePathAndNameLength,
constuint8*filePathAndName,
uint64*dirInfoLength,
uint64*maxNumberOfBlockLength,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessRequestReadDir | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL: 所有输入参数都是有效的 | DCM_PENDING: 所有输入参数设置为 0x00 | DCM_CANCEL: 所有输入参数设置为 0x00 | DCM_FORCE_RCRRP_OK: 所有输入参数设置为 0x00 | ||
filePathAndNameLength | 定义参数 filePathAndName 的字节长度 | |||
filePathAndName | 根据参数 modeOfOperation 参数,定义服务端的文件系统位置,其中将添加、删除、替换或读取文件。此外,该参数还包括要添加、删除、替换或读取文件的文件名,作为文件路径的一部分 | |||
输出参数 | dirInfoLength | 以字节为单位定义要上传的目录信息的大小 | ||
maxNumberOfBlockLength | 每个 TransferData 请求中包含的最大字节数,不包括 SID 和 blockSequenceCounter | |||
ErrorCode | 如果 Dcm_ProcessRequestReadDir 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | |||
返回值 | Std_ReturnType | E_OK: 请求成功 | E_NOT_OK: 请求失败 | DCM_E_PENDING: 请求尚未完成 | DCM_E_FORCE_RCRRP: 应用程序请求发送响应 Response Pending (NRC 0x78) | ||
描述 | DCM 应该调用这个函数来启动一个 RequestFileTransfer 进程,其模式 OfOperation 等于 0x05 (ReadDir) | |||
声明 | Dcm_Externals.h |
Dcm_WriteFile
Std_ReturnTypeDcm_WriteFile(Dcm_OpStatusTypeOpStatus,
uint64DataLength,
uint8*Data,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_WriteFile | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL: 所有输入参数都是有效的 | DCM_PENDING: 所有输入参数设置为 0x00 | DCM_CANCEL: 所有输入参数设置为 0x00 | DCM_FORCE_RCRRP_OK: 所有输入参数设置为 0x00 | ||
DataLength | 定义参数 Data 的字节长度。与 Dcm_ProcessRequestFileTransfer 中返回的 maxNumberOfBlockLength 值相比,该值不会超过,但可能会更少 | |||
Data | 指向要写入的数据 | |||
输出参数 | ErrorCode | 如果 Dcm_WriteFile 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | ||
返回值 | Std_ReturnType | E_OK: 请求成功 | E_NOT_OK: 请求失败 | DCM_E_PENDING: 请求尚未完成 | DCM_E_FORCE_RCRRP: 应用程序请求发送响应 Response Pending (NRC 0x78) | ||
描述 | 当使用 UDS 服务 TransferData 接收数据时,如果存在子功能为 0x01 (AddFile) 或 0x03 (ReplaceFile) 开始的 RequestFileTransfer 进程,DCM 将调用此函数 | |||
声明 | Dcm_Externals.h |
Dcm_ReadFileOrDir
Std_ReturnTypeDcm_ReadFileOrDir(Dcm_OpStatusTypeOpStatus,
uint64*DataLength,
uint8*Data,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ReadFileOrDir | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL: 所有输入参数都是有效的 | DCM_PENDING: 所有输入参数设置为 0x00 | DCM_CANCEL: 所有输入参数设置为 0x00 | DCM_FORCE_RCRRP_OK: 所有输入参数设置为 0x00 | ||
DataLength | 定义参数 Data 的字节长度。与 Dcm_ProcessRequestFileTransfer 中返回的 maxNumberOfBlockLength 值相比,该值不会超过,但可能会更少 | |||
Data | 指向要写入的数据 | |||
输入/输出参数 | DataLength | 用作输入参数时,该参数定义了要使用的最大块长度,即在 RequestFileTransfer 响应中发送给客户端的 maxNumberOfBlockLength 的值;| 用作输出参数时,该参数以字节为单位定义参数 Data 的实际长度。该值不得超过,但可以小于参数中提供的值 | ||
输出参数 | ErrorCode | 如果 Dcm_ReadFileOrDir 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | ||
返回值 | Std_ReturnType | E_OK: 请求成功 | E_NOT_OK: 请求失败 | DCM_E_PENDING: 请求尚未完成 | DCM_E_FORCE_RCRRP: 应用程序请求发送响应 Response Pending (NRC 0x78) | ||
描述 | 当使用 UDS 服务 TransferData 发送数据时,如果存在子功能为 0x04 (ReadFile) 或 0x05 (ReadDir) 的 RequestFileTransfer 进程,DCM 将调用此函数 | |||
声明 | Dcm_Externals.h |
ProcessRequestDownload
Std_ReturnTypeDcm_ProcessRequestDownload(Dcm_OpStatusTypeOpStatus,
uint8DataFormatIdentifier,
uint8MemoryIdentifier,
uint32MemoryAddress,
uint32MemorySize,
uint32*BlockLength,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessRequestDownload | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL / DCM_PENDING / DCM_CANCEL | ||
DataFormatIdentifier | 这个数据参数是一个单独编码的字节值。高 4 位表示压缩方法,低 4 位表示加密方法。为 0x00 表示不使用压缩算法/加密算法。0x00 以外的值是特定于汽车制造商的 | |||
MemoryIdentifier | 内存块的标识符,如果不使用该参数,则将其设置为 0 | |||
MemoryAddress | 服务端要写入数据的内存的起始地址 | |||
MemorySize | 未压缩的内存大小 | |||
输入/输出参数 | BlockLength | Dcm_WriteMemory 的最大字节数 | ||
输出参数 | ErrorCode | 如果 Dcm_ProcessRequestDownload 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | ||
返回值 | Std_ReturnType | E_OK: 请求成功 | E_NOT_OK: 请求失败 | DCM_E_PENDING: 请求尚未完成 | ||
描述 | DCM 将调用该函数来启动下载进程。该函数用于实现 UDS 的 RequestDownload 服务 | |||
声明 | Dcm_Externals.h |
ProcessRequestTransferExit
Std_ReturnTypeDcm_ProcessRequestTransferExit(Dcm_OpStatusTypeOpStatus,
constuint8*transferRequestParameterRecord,
uint32transferRequestParameterRecordSize,
constuint8*transferResponseParameterRecord,
uint32*transferResponseParameterRecordSize,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessRequestTransferExit | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL / DCM_PENDING / DCM_CANCEL | ||
transferRequestParameterRecord | 指向车辆制造商特定的 transferRequestParameterRecord | |||
transferRequestParameterRecordSize | transferRequestParameterRecord 的长度 | |||
输入/输出参数 | transferResponseParameterRecordSize | 当调用该函数时,此参数包含可以写入缓冲区的最大数据字节数。该函数返回 transferResponseParameterRecord 中写入的实际数据字节数 | ||
输出参数 | transferResponseParameterRecord | 指向车辆制造商特定的transferResponseParameterRecord | ||
ErrorCode | 如果 Dcm_ProcessRequestTransferExit 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | |||
返回值 | Std_ReturnType | E_OK: 转移成功 | E_NOT_OK: 转移失败或者响应缓冲区太小 | DCM_E_PENDING: 转移尚未完成 | ||
描述 | DCM 将调用此函数来终止下载或上传过程。此函数用于实现 UDS 的 RequestTransferExit 服务 | |||
声明 | Dcm_Externals.h |
Dcm_ProcessRequestUpload
Std_ReturnTypeDcm_ProcessRequestUpload(Dcm_OpStatusTypeOpStatus,
uint8DataFormatIdentifier,
uint8MemoryIdentifier,
uint32MemoryAddress,
uint32MemorySize,
uint32*BlockLength,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessRequestUpload | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL / DCM_PENDING / DCM_CANCEL / DCM_FORCE_RCRRP_OK | ||
DataFormatIdentifier | 这个数据参数是一个单独编码的字节值。高 4 位表示压缩方法,低 4 位表示加密方法。为 0x00 表示不使用压缩算法/加密算法。0x00 以外的值是特定于汽车制造商的 | |||
MemoryIdentifier | 内存块的标识符,如果不使用该参数,则将其设置为 0 | |||
MemoryAddress | 要从服务端拷贝数据的内存的起始地址 | |||
MemorySize | 未压缩的内存大小 | |||
输入/输出参数 | BlockLength | Dcm_ReadMemory 的最大字节数 | ||
输出参数 | ErrorCode | 如果 Dcm_ProcessRequestUpload 操作返回值 E_NOT_OK, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | ||
返回值 | Std_ReturnType | E_OK: 请求成功 | E_NOT_OK: 请求失败 | DCM_E_PENDING: 请求尚未完成 | ||
描述 | DCM 将调用该函数来启动上传进程。该函数用于实现 UDS RequestUpload 服务 | |||
声明 | Dcm_Externals.h |
ProcessTransferDataRead
Dcm_ReturnReadMemoryTypeDcm_ProcessTransferDataRead(Dcm_OpStatusTypeOpStatus,
uint8MemoryIdentifier,
uint32MemoryAddress,
uint32MemorySize,
Dcm_RequestDataArrayTypeMemoryData,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessTransferDataRead | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL / DCM_PENDING / DCM_CANCEL / DCM_FORCE_RCRRP_OK | ||
MemoryIdentifier | 内存块的标识符,如果不使用该参数,则将其设置为 0 | |||
MemoryAddress | 服务端数据的内存起始地址 | |||
MemorySize | MemoryData 字节大小 | |||
输出参数 | MemoryData | 读取数据(指向 DCM 中的诊断缓冲区) | ||
ErrorCode | 如果 Dcm_ReadMemory 操作返回值 DCM_READ_FAILED, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | |||
返回值 | Dcm_ReturnReadMemoryType | DCM_READ_OK: 读取成功 | DCM_READ_FAILED: 读取失败 | DCM_READ_PENDING: 读取尚未完成 | DCM_READ_FORCE_RCRRP: 读取挂起,立即发送 Respone Pending(NRC 0x78) 响应 | ||
描述 | 用于从 UDS 请求消息中请求内存数据,这些内存数据由参数m emoryAddress 和 memorySize 标识。该函数用于 UDS 服务: ReadMemoryByAddress / RequestUpload / ReadDataByIdentifier / TransferData | |||
声明 | Dcm_Externals.h |
ProcessTransferDataWrite
Dcm_ReturnWriteMemoryTypeDcm_ProcessTransferDataWrite(Dcm_OpStatusTypeOpStatus,
uint8MemoryIdentifier,
uint32MemoryAddress,
uint32MemorySize,
constDcm_RequestDataArrayTypeMemoryData,
Dcm_NegativeResponseCodeType*ErrorCode)
名称 | Dcm_ProcessTransferDataWrite | |||
同步/异步 | 异步 | |||
可重入性 | 非可重入 | |||
输入参数 | OpStatus | DCM_INITIAL / DCM_PENDING / DCM_CANCEL / DCM_FORCE_RCRRP_OK | ||
MemoryIdentifier | 内存块的标识符,如果不使用该参数,则将其设置为 0 | |||
MemoryAddress | 要从服务端拷贝数据的内存的起始地址 | |||
MemorySize | MemoryData 字节大小 | |||
MemoryData | 要写入的数据(指向 DCM 中的诊断缓冲区) | |||
输出参数 | ErrorCode | 如果 Dcm_WriteMemory 操作返回值 DCM_WRITE_FAILED, DCM 模块将发送一个与参数 ErrorCode 参数值相等的 NRC 否定响应码 | ||
返回值 | Dcm_ReturnWriteMemoryType | DCM_WRITE_OK: 写入成功 | DCM_WRITE_FAILED: 写入失败 | DCM_WRITE_PENDING: 写入尚未完成 | DCM_WRITE_FORCE_RCRRP: 写入挂起,立即发送 Respone Pending(NRC 0x78) 响应 | ||
描述 | ProcessTransferDataWrite 用于写入由参数 memoryAddress 和 memorySize 标识的内存数据。该函数用于 UDS 服务: WriteMemoryByAddress / RequestDownload / TransferData | |||
声明 | Dcm_Externals.h |