LINKTYPE_LIN

This document is based on email conversation with Hannes Kaelber

Hannes Kaelber translated the original documentation from German

Frame Format

0 1 2 3
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Header msg_format_rev reserved
payload_length message type checksum type PID checksum errors
Payload payload1 payload2 payload3 payload4
payload5 payload6 payload7 payload8

Fields

Field Length in Bits Meaning
msg_format_rev 8 LIN Message Format Revision, this field must always be set to 1, 0 is invalid value
payload_length 4 Number of LIN payload bytes
message_type 2 Message type (0=LIN-Frame, 3=LIN-Event, 1 and 2=undefined)
checksum_type 2 Checksum type (0=unknown/error, 1=classic, 2=enhanced, 3=undefined)
unknown/error means that either the checksum is incorrect (usually the case) or that a checksum algorithm we do not know has been used (should not happen). Since we detect which checksum variant has been used and we cannot say that for sure if the checksum is incorrect, we have introduced this value.
PID 8 Protected Identifier, as described in section 5.2.2.5 "PID field" of ISO 17987-3:2016
checksum 8 Checksum, as described in section 5.2.2.7 "Checksum" of ISO 17987-3:2016
errors 8 Error Bits (see below)
payload[n] 8 Payload Byte n. Payload 5-8 exists only if payload_length is larger than 4

Error Bits

The Error Bits are as follows:

Error Bit Bits Bitmask Meaning
reserved 0x80 Reserved
reserved 0x40 Reserved
e_overflow 0x20 Overflow Error, we have lost at least one message during reception because there was no space in the receiving controller's buffer
e_invalidid 0x10 Invalid ID, i.e. a frame ID of 0x3E or 0x3F has been received
e_cksum 0x08 Checksum Error
e_parity 0x04 Parity Error in the Protected Identifier field
e_framing 0x02 Framing Error, low-level transmissions/reception error
e_noslaveresp 0x01 No Slave Response Error; no slave wrote the Response part of the frame, as per section 4.2.2 "Frames" of ISO 17987-3:2016

LIN Frame

If a message is a LIN-Frame, the payload is a LIN N_PDU, as described in section 7.4 "Transport layer protocol data units" of ISO 17987-2.

LIN Event

If a message is a LIN-Event, the following rules apply:
  • payload_length is always 4.
  • The fields checksum_type, PID, checksum and errors are set to 0 and must be ignored.
  • The payload bytes 1-4 contain the type of the LIN event (big endian)

Event Types

Payload Event Type
0xB0B00001 Go-to-Sleep Event caused by a Go-to-Sleep Frame
0xB0B00002 Go-to-Sleep Event caused by bus inactivity for more than 4s
0xB0B00004 Wake-up Event caused by a Wake-up Signal