Purpose

Executes the WriteMemoryByAddress service. Writes data to the ECU memory.

Format

        long ndWriteMemoryByAddress(
       TD1 *diagRef,
       unsigned long address,
       unsigned char size,
       unsigned char dataIn[],
       long len,
       LVBoolean *success);
      

Input

diagRef

Specifies the diagnostic session handle, obtained from ndOpenDiagnosticOnCANFD or ndOpenDiagnosticOnIPStack and passed to subsequent diagnostic functions. Normally, it is not necessary to manually manipulate the elements of this struct.

address

Defines the memory address to which data are written. Only three bytes are sent to the ECU, so the address must be in the range 0–FFFFFF (hex).

size

Defines the length of the memory block to be written.

dataIn

Defines the memory block to be written to the ECU.

len

Must contain the number of valid data bytes in dataIn. Output

success

Indicates successful receipt of a positive response message for this diagnostic service.

Return Value

The return value indicates the function call status as a signed 32-bit integer. Zero means the function executed successfully. A negative value specifies an error, which means the function did not perform the expected behavior. A positive value specifies a warning, which means the function performed as expected, but a condition arose that may require attention.

Use the ndStatusToString function to obtain a descriptive string for the return value.

Description

This function performs the KWP2000 WriteDataByAddress service and writes RecordValues (data values) to the ECU. address and size identify the data. The vehicle manufacturer must ensure the ECU conditions are met when performing this service. Typical use cases are clearing nonvolatile memory, resetting learned values, setting option content, setting the Vehicle Identification Number, or changing calibration values.

For further details about this service, refer to the ISO 14230-3 standard.