VECTOR_BLF_LINRECEIVEERROR2(3)

πŸ“¦ version 2.4.2, in arch rolling

πŸ’… NAME

Vector::BLF::LinReceiveError2 β€” bestie, this is the LIN_RCV_ERROR2 class and she's here to tell you everything that went wrong on your LIN bus ✨

So like, real quick on the vibe check: this page lives in the Library Functions Manual, the class is Vector::BLF::LinReceiveError2, and she's giving very much "I collect receive errors and I'm not sorry about it" energy πŸ’…


✨ SYNOPSIS ✨

okay so first things first, you gotta pull her in:

#include <LinReceiveError2.h>

Inherits Vector::BLF::ObjectHeader, and Vector::BLF::LinDatabyteTimestampEvent 🫢 (yes she has two parents, she's multifaceted)

🌈 Public Member Functions

  • void read (AbstractFile &is) override
  • void write (AbstractFile &os) override
  • uint32_t calculateObjectSize () const override

🌈 Public Member Functions inherited from Vector::BLF::ObjectHeader

  • ObjectHeader (const ObjectType objectType, const uint16_t objectVersion=0)
  • void read (AbstractFile &is) override
  • void write (AbstractFile &os) override
  • uint16_t calculateHeaderSize () const override
  • uint32_t calculateObjectSize () const override

🌈 Public Member Functions inherited from Vector::BLF::ObjectHeaderBase

  • ObjectHeaderBase (const uint16_t headerVersion, const ObjectType objectType)
  • ObjectHeaderBase (const ObjectHeaderBase &)=default
  • ObjectHeaderBase & operator= (const ObjectHeaderBase &)=default
  • ObjectHeaderBase (ObjectHeaderBase &&)=default
  • ObjectHeaderBase & operator= (ObjectHeaderBase &&)=default

🌈 Public Member Functions inherited from Vector::BLF::LinSynchFieldEvent

  • void read (AbstractFile &is) override
  • void write (AbstractFile &os) override
  • uint32_t calculateObjectSize () const override

🌈 Public Member Functions inherited from Vector::BLF::LinBusEvent

  • LinBusEvent (const LinBusEvent &)=default
  • LinBusEvent & operator= (const LinBusEvent &)=default
  • LinBusEvent (LinBusEvent &&)=default
  • LinBusEvent & operator= (LinBusEvent &&)=default

πŸŽ€ Public Attributes

  • std::array< uint8_t, 8 > data {} β€” data bytes. literally just the bytes, bestie.
  • uint8_t fsmId {}
  • uint8_t fsmState {}
  • uint8_t stateReason {}
  • uint8_t offendingByte {}
  • uint8_t shortError {}
  • uint8_t timeoutDuringDlcDetection {}
  • uint8_t isEtf {} β€” ETF collision flag. πŸ‘€
  • uint8_t hasDatabytes {}
  • uint32_t respBaudrate {} β€” Response baudrate of the event in bit/sec.
  • uint32_t reservedLinReceiveError {}
  • double exactHeaderBaudrate {} β€” Exact baudrate of the header in bit/sec.
  • uint32_t earlyStopbitOffset {} β€” Early stop bit offset for UART timestamps in ns.
  • uint32_t earlyStopbitOffsetResponse {} β€” Early stop bit offset in frame response for UART timestamps in ns.

πŸŽ€ Public Attributes inherited from Vector::BLF::ObjectHeader

  • uint32_t objectFlags {ObjectFlags::TimeOneNans} β€” object flags
  • uint16_t clientIndex {} β€” client index of send node
  • uint16_t objectVersion {0} β€” object specific version
  • uint64_t objectTimeStamp {} β€” object timestamp

πŸŽ€ Public Attributes inherited from Vector::BLF::ObjectHeaderBase

  • uint32_t signature {ObjectSignature} β€” signature (ObjectSignature)
  • uint16_t headerSize {} β€” sizeof object header
  • uint16_t headerVersion {} β€” header version (1)
  • uint32_t objectSize {} β€” object size
  • ObjectType objectType {ObjectType::UNKNOWN} β€” object type

πŸŽ€ Public Attributes inherited from Vector::BLF::LinDatabyteTimestampEvent

  • std::array< uint64_t, 9 > databyteTimestamps {} β€” Databyte timestamps, where d[0] = EndOfHeader, d[1]=EndOfDataByte1, ..., d[8]=EndOfDataByte8.

πŸŽ€ Public Attributes inherited from Vector::BLF::LinMessageDescriptor

  • uint16_t supplierId {} β€” LIN Sub-Identifier - Supplier ID.
  • uint16_t messageId {} β€” LIN Sub-Identifier - Message ID (16 bits).
  • uint8_t nad {} β€” LIN Sub-Identifier - NAD.
  • uint8_t id {} β€” LIN ID.
  • uint8_t dlc {} β€” LIN DLC.
  • uint8_t checksumModel {} β€” LIN checksum model.

πŸŽ€ Public Attributes inherited from Vector::BLF::LinSynchFieldEvent

  • uint64_t synchBreakLength {} β€” Sync Break Length in ns.
  • uint64_t synchDelLength {} β€” Sync Delimiter Length in ns.

πŸŽ€ Public Attributes inherited from Vector::BLF::LinBusEvent

  • uint64_t sof {} β€” Start Of Frame timestamp.
  • uint32_t eventBaudrate {} β€” Baudrate of the event in bit/sec.
  • uint16_t channel {} β€” application channel
  • uint16_t reservedLinBusEvent {}

πŸ¦‹ Additional Inherited Members

  • Public Types inherited from Vector::BLF::ObjectHeader β€” enum ObjectFlags : uint32_t { TimeTenMics = 0x00000001, TimeOneNans = 0x00000002 }

🌸 DETAILED DESCRIPTION 🌸

LIN_RCV_ERROR2. that's her. that's the whole name πŸŽ€

okay so, this event is lowkey a drama magnet β€” she can show up for a wide variety of causes, no cap. An external Master can cause a receive error event:

  • by transmitting sync break that is too short,
  • by not returning the correct value 0x55 in the sync field,
  • by assigning an incorrect parity to the frame identifier.

and other reasons, bestie, there's more πŸ‘‡

  • Slave transmitting an illegal character during a Bus Idle phase (e.g. because it did not finish transmission quickly enough and the checksum byte of the response was sent during the Bus Idle phase),
  • Faulty (dominant) stop bit (i.e. framing error),
  • LIN hardware receives a character that is different from the character sent during transmission
  • LIN hardware only receives part of a frame, at the start of a measurement (in a correctly functioning system).

like... she's not being dramatic, the bus is just like that 😭


πŸŽ€ MEMBER FUNCTION DOCUMENTATION πŸŽ€

uint32_t Vector::BLF::LinReceiveError2::calculateObjectSize () const

[override], [virtual]

Calculates the objectSize β€” yeah she does math, she contains multitudes πŸ’…

Returns: object size

Reimplemented from Vector::BLF::ObjectHeaderBase.

void Vector::BLF::LinReceiveError2::read (AbstractFile & is)

[override], [virtual]

Read the data of this object πŸ“–

Parameters: is β€” input stream

Reimplemented from Vector::BLF::ObjectHeaderBase.

void Vector::BLF::LinReceiveError2::write (AbstractFile & os)

[override], [virtual]

Write the data of this object ✍️

Parameters: os β€” output stream

Reimplemented from Vector::BLF::ObjectHeaderBase.


πŸ¦‹ MEMBER DATA DOCUMENTATION πŸ¦‹

uint32_t Vector::BLF::LinReceiveError2::earlyStopbitOffset {}

Early stop bit offset for UART timestamps in ns. Early stop bit offset in frame header for UART timestamps [in ns] ⏱️

uint32_t Vector::BLF::LinReceiveError2::earlyStopbitOffsetResponse {}

Early stop bit offset in frame response for UART timestamps in ns. Early stop bit offset in frame response for UART timestamps [in ns]

double Vector::BLF::LinReceiveError2::exactHeaderBaudrate {}

Exact baudrate of the header in bit/sec. Event's baudrate measured in header [in bits/sec] πŸ”₯

uint8_t Vector::BLF::LinReceiveError2::fsmId {}

Slave Identifier in the Final State Machine (obsolete) πŸ’€

uint8_t Vector::BLF::LinReceiveError2::fsmState {}

State Identifier of a Slave in the Final State Machine (obsolete) πŸ’€

uint8_t Vector::BLF::LinReceiveError2::hasDatabytes {}

Flag indicating whether at least one data byte value is valid βœ…

uint8_t Vector::BLF::LinReceiveError2::isEtf {}

ETF collision flag. Flag indicating whether this frame is Event-Triggered one:

  • 0: not ETF
  • 1: ETF

uint8_t Vector::BLF::LinReceiveError2::offendingByte {}

Byte value that resulted the protocol violation. Only valid for certain values of mStateReason πŸ™ˆ

uint32_t Vector::BLF::LinReceiveError2::reservedLinReceiveError {}

reserved 🀫 (mind your business, it's reserved)

uint32_t Vector::BLF::LinReceiveError2::respBaudrate {}

Response baudrate of the event in bit/sec. Event's baudrate measured in response [in bits/sec]

uint8_t Vector::BLF::LinReceiveError2::shortError {}

Specifies the detail level of the event. Following values are possible:

  • 0: short
  • 1: full
⚠️ Most members are not valid unless this member is 1. fr fr, check shortError before you go reading the other fields or you're gonna have a bad time 😭

uint8_t Vector::BLF::LinReceiveError2::stateReason {}

The lower 4 bits indicate the LIN hard-ware state at the time the error has occurred, while the upper 4 bits indicate the reason of the error. so she's doing double duty, iconic πŸ‘‘

Value for the state:

  • 0: Bus idle
  • 1: Waiting for SynchBreak
  • 2: Waiting for SynchField
  • 3: Waiting for frame ID
  • 4-12: Waiting for data byte or checksum byte depending on the frame length. E.g. value 4 for FrameLength=0, value 12 for FrameLength=8
  • 14: Consecutive event (i.e. event resulting from further data interpretation, after already notified error for first offending byte)
  • 15: Not expected event (i.e. not WakeupRequest) during sleep mode. Occurs for LIN hardware in Master mode only

Values for the reason:

  • 0: Timeout
  • 1: Received an unexpected byte violating protocol. In this case, mOffendingByte member contains its value
  • 2: Received a byte with framing error (with dominant stop bit). In this case, mOffendingByte member contains its value
  • 3: Unexpected Break field
  • 4: Unidentified error

uint8_t Vector::BLF::LinReceiveError2::timeoutDuringDlcDetection {}

Flag indicating if the error is a result of an attempt to resolve frame length. Following values are possible:

  • 0: False
  • 1: True

πŸ’– AUTHOR πŸ’–

Generated automatically by Doxygen for Vector BLF from the source code. so no, a human did not sit down and lovingly handcraft this β€” Doxygen did, and honestly? she ate πŸ€–βœ¨


aaaand that's the whole page bestie, no notes 🫢 this was Vector BLF documentation (manual section 3, Vector::BL...ceiveError2(3) if you're being formal), served fresh by Doxygen straight from the source code β€” mwah, go fix your LIN bus πŸ’…πŸ’–

πŸ“¦ where this page comes from