Table of Contents

Custom variables

Custom variables can be added by clicking Add custom… in the selection after performing an init with a licensed advanced protocol by loading a specially formatted file.

This is advanced functionality for developers only and is provided AS IS without any support.

File Format

The format for each row is as follows:
ID;Description;Unit;Type;Bitmask;HiLo;A;B;C;D;Decimals;Address

Please note, it is not a CSV file - it is just a file with line break separated lines which contain semicolon separated elements. The only processing that is done is splitting by line breaks and semicolons and trimming the whitespace of each element. Quotes and escapes are not supported, so you can not use semicolon inside descriptions.

You can leave the description row at the top of the file, any lines where the ID is equal to “ID” are ignored. Blank lines are also ignored.

ID - The ID is the unique identifier. If a variable with a such ID already exists in the list, it will be replaced. The ID is shown when measuring. Keep in mind that translation also works by ID, a good idea is to prefix your IDs with something unique.

Description - Any description of your choosing. Can be seen in the selection dialog, can also be searched/filtered.

Unit - The unit for the measurement.

Type - The data type of the measurement. Applied after endianness conversion. Please refer to the following table:

Type Bytes Signed
UBYTE 1 No
SBYTE 1 Yes
UWORD 2 No
SWORD 2 Yes
ULONG 4 No
SLONG 4 Yes
A_UINT64 8 No
A_INT64 8 Yes
FLOAT32_IEEE 4 Yes
FLOAT64_IEEE 8 Yes

Bitmask - The bitmask in hexadecimal (e.g. 0x40). The converted data type is ANDed with this bitmask and the result is right shifted until the first set LSB of the bitmask. Can be left blank or set as 0x0 if no bitmask is needed.

HiLo - Either 1 or 0, defines the byte order of the variable.

A, B, C, D - Coefficients and offsets for the linearization formula to convert the internal value to the physical value. The values are expressed as floats with dot (.) as the decimal separator.
The formula is as follows: phys = (int * A - B) / (C - int * D)
int is the internal value from ECU and phys is the physical converted value.

Decimals - Specifies how many digits after decimal point the physical value should be rounded to.

Address - The hexadecimal address of the variable to read. E.g. 0xD0002000. Please note that these are not bounds checked, specifying addresses outside the valid address range will cause an ECU reset!

A2L Translation

If you have a RAT_FUNC type COMPU_METHOD with a COEFFS parameter, the COEFFS to A B C D mapping is as follows:
COEFFS - C B - D A

Example

Epm_nEng on a TriCore ECU at address 0xD0001234 would be specified as follows:
Epm_nEng;Engine Speed;u/min;SWORD;0x0;0;0.5;0;1;0;1;0xD0001234

Basic protocols

Addition of custom parameters is also enabled for a few Basic protocols. In this case the format for each row is as follows:
ID;Description;Unit;Type;Bitlength;HiLo;A;B;C;D;Decimals;Address;Byteposition;Bitoffset

Everything is as above, except Bitmask is replaced by Bitlength and Bitoffset & Byteposition are added. Address should contain the full request.

Bitlength - number of bits in the value. Decimal system.

Byteposition - offset in bytes from start of response (starts at 0)

Bitoffset - offset in bits from start of the byte specified in Byteposition (starts at 0)

Address - must have the full request in hexadecimal. E.g. 0x221234 for $22 read of PID 1234. The limitation for request length is 4 bytes at the moment.

Known issues

The Max column will show as 0 in the list, as it is not calculated - this has no effect on measuring or logging.