CAN CoreX 2.3.1
Table-driven CAN, CAN FD, ISO-TP, network simulation, and bus monitoring library
Loading...
Searching...
No Matches
ISO-TP

ISO 15765-2 transport over classic CAN and CAN FD. More...

Data Structures

struct  CCX_ISOTP_Padding_t
 ISO-TP padding configuration. More...
struct  CCX_ISOTP_TX_Config_t
 ISO-TP TX configuration structure. More...
struct  CCX_ISOTP_RX_Config_t
 ISO-TP RX configuration structure. More...
struct  CCX_ISOTP_TX_t
 ISO-TP TX instance structure. More...
struct  CCX_ISOTP_RX_t
 ISO-TP RX instance structure. More...

Macros

#define CCX_ISOTP_MAX_CLASSIC_DATA_SIZE   4095U
 Maximum ISO-TP payload for classic CAN instances.
#define CCX_ISOTP_MAX_FD_DATA_SIZE   UINT32_MAX
 Maximum ISO-TP payload for CAN FD instances.
#define CCX_ISOTP_MAX_DATA_SIZE   CCX_ISOTP_MAX_FD_DATA_SIZE
 Build-wide compatibility alias for the active default limit.
#define CCX_ISOTP_NO_PADDING   ((CCX_ISOTP_Padding_t){.Enable = CCX_ISOTP_PADDING_DISABLED, .PaddingByte = 0U})
#define CCX_ISOTP_PADDING(byte)
#define CCX_ISOTP_STMIN_100US   0xF1U
#define CCX_ISOTP_STMIN_200US   0xF2U
#define CCX_ISOTP_STMIN_300US   0xF3U
#define CCX_ISOTP_STMIN_400US   0xF4U
#define CCX_ISOTP_STMIN_500US   0xF5U
#define CCX_ISOTP_STMIN_600US   0xF6U
#define CCX_ISOTP_STMIN_700US   0xF7U
#define CCX_ISOTP_STMIN_800US   0xF8U
#define CCX_ISOTP_STMIN_900US   0xF9U
#define CCX_ISOTP_RX_TABLE_ENTRY(isotp_rx_ptr, can_id, ide_flag)
 Macro to generate CAN CoreX RX table entry for ISO-TP RX instance.
#define CCX_ISOTP_TX_FC_TABLE_ENTRY(isotp_tx_ptr, fc_can_id, ide_flag)
 Macro to generate CAN CoreX RX table entry for ISO-TP TX Flow Control.
#define CCX_ISOTP_RX_TABLE_ENTRY_EX(isotp_rx_ptr, can_id, ide_flag, frame_format)
#define CCX_ISOTP_TX_FC_TABLE_ENTRY_EX(isotp_tx_ptr, fc_can_id, ide_flag, frame_format)

Typedefs

typedef uint32_t CCX_ISOTP_Length_t
typedef struct CCX_ISOTP_TX_t CCX_ISOTP_TX_t
typedef struct CCX_ISOTP_RX_t CCX_ISOTP_RX_t

Enumerations

enum  CCX_ISOTP_PCI_t { CCX_ISOTP_PCI_SF = 0x00 , CCX_ISOTP_PCI_FF = 0x10 , CCX_ISOTP_PCI_CF = 0x20 , CCX_ISOTP_PCI_FC = 0x30 }
 ISO-TP length type. More...
enum  CCX_ISOTP_LengthFormat_t { CCX_ISOTP_LENGTH_FORMAT_STANDARD = 0 , CCX_ISOTP_LENGTH_FORMAT_EXTENDED }
enum  CCX_ISOTP_TxDL_t {
  CCX_ISOTP_TX_DL_8 = 8 , CCX_ISOTP_TX_DL_12 = 12 , CCX_ISOTP_TX_DL_16 = 16 , CCX_ISOTP_TX_DL_20 = 20 ,
  CCX_ISOTP_TX_DL_24 = 24 , CCX_ISOTP_TX_DL_32 = 32 , CCX_ISOTP_TX_DL_48 = 48 , CCX_ISOTP_TX_DL_64 = 64
}
enum  CCX_ISOTP_FC_FS_t { CCX_ISOTP_FC_CTS = 0x00 , CCX_ISOTP_FC_WAIT = 0x01 , CCX_ISOTP_FC_OVFLW = 0x02 }
 Legal CAN FD link-layer payload sizes for ISO-TP sessions. More...
enum  CCX_ISOTP_Status_t {
  CCX_ISOTP_OK = 0 , CCX_ISOTP_ERROR_NULL_PTR , CCX_ISOTP_ERROR_INVALID_ARG , CCX_ISOTP_ERROR_TIMEOUT_FC ,
  CCX_ISOTP_ERROR_TIMEOUT = CCX_ISOTP_ERROR_TIMEOUT_FC , CCX_ISOTP_ERROR_OVERFLOW , CCX_ISOTP_ERROR_BUSY , CCX_ISOTP_ERROR_SEQUENCE ,
  CCX_ISOTP_ERROR_BUFFER_TOO_SMALL , CCX_ISOTP_ERROR_ABORTED , CCX_ISOTP_ERROR_WAIT_EXCEEDED , CCX_ISOTP_ERROR_TIMEOUT_CF_TX ,
  CCX_ISOTP_ERROR_TIMEOUT_CF_RX , CCX_ISOTP_ERROR_MISSING_TIMEBASE , CCX_ISOTP_ERROR_FD_NOT_SUPPORTED
}
 ISO-TP error codes.
enum  CCX_ISOTP_TX_State_t { CCX_ISOTP_TX_STATE_IDLE = 0 , CCX_ISOTP_TX_STATE_WAIT_FC , CCX_ISOTP_TX_STATE_SENDING_CF }
 ISO-TP TX state machine states.
enum  CCX_ISOTP_RX_State_t { CCX_ISOTP_RX_STATE_IDLE = 0 , CCX_ISOTP_RX_STATE_RECEIVING_CF }
 ISO-TP RX state machine states.
enum  CCX_ISOTP_PaddingEnable_t { CCX_ISOTP_PADDING_DISABLED = 0 , CCX_ISOTP_PADDING_ENABLED = 1 }

Functions

void CCX_ISOTP_TX_Config_Init (CCX_ISOTP_TX_Config_t *Config, uint32_t TxID, uint8_t IDE_TxID, CCX_TIME_t N_Bs, CCX_TIME_t N_Cs, CCX_ISOTP_Padding_t Padding, void *UserData, void(*OnTransmitComplete)(CCX_ISOTP_TX_t *Instance, void *UserData), void(*OnError)(CCX_ISOTP_TX_t *Instance, CCX_ISOTP_Status_t Error, void *UserData))
 Initialize ISO-TP TX configuration with defaults.
void CCX_ISOTP_TX_Config_InitFD (CCX_ISOTP_TX_Config_t *Config, uint32_t TxID, uint8_t IDE_TxID, CCX_frame_format_t FrameFormat, uint8_t TxDL, CCX_TIME_t N_Bs, CCX_TIME_t N_Cs, CCX_ISOTP_Padding_t Padding, void *UserData, void(*OnTransmitComplete)(CCX_ISOTP_TX_t *Instance, void *UserData), void(*OnError)(CCX_ISOTP_TX_t *Instance, CCX_ISOTP_Status_t Error, void *UserData))
 Initialize ISO-TP TX FD configuration with defaults.
CCX_ISOTP_Status_t CCX_ISOTP_TX_Init (CCX_ISOTP_TX_t *Instance, CCX_instance_t *CanInstance, const CCX_ISOTP_TX_Config_t *Config)
 Initialize ISO-TP TX instance.
CCX_ISOTP_Status_t CCX_ISOTP_TX_Abort (CCX_ISOTP_TX_t *Instance)
 Abort an active ISO-TP TX transfer.
CCX_ISOTP_Status_t CCX_ISOTP_Transmit (CCX_ISOTP_TX_t *Instance, const uint8_t *Data, CCX_ISOTP_Length_t Length)
 Transmit data using ISO-TP.
void CCX_ISOTP_TX_Poll (CCX_ISOTP_TX_t *Instance)
 Poll ISO-TP TX instance (call periodically from main loop).
void CCX_ISOTP_TX_FC_Parser (const CCX_instance_t *CanInstance, CCX_message_t *Msg, uint16_t Slot, void *UserData)
 Parser function for Flow Control frames (for TX side).
void CCX_ISOTP_RX_Config_Init (CCX_ISOTP_RX_Config_t *Config, uint32_t TxID, uint8_t IDE_TxID, uint8_t BS, uint8_t STmin, CCX_TIME_t N_Cr, uint8_t *RxBuffer, CCX_ISOTP_Length_t RxBufferSize, CCX_ISOTP_Padding_t Padding, CCX_ISOTP_Length_t ProgressCallbackInterval, void *UserData, void(*OnReceiveStart)(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Length_t TotalLength, void *UserData), void(*OnReceiveComplete)(CCX_ISOTP_RX_t *Instance, const uint8_t *Data, CCX_ISOTP_Length_t Length, void *UserData), void(*OnReceiveProgress)(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Length_t BytesReceived, CCX_ISOTP_Length_t TotalLength, void *UserData), void(*OnError)(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Status_t Error, void *UserData))
 Initialize ISO-TP RX configuration with defaults.
void CCX_ISOTP_RX_Config_InitFD (CCX_ISOTP_RX_Config_t *Config, uint32_t TxID, uint8_t IDE_TxID, CCX_frame_format_t FrameFormat, uint8_t FC_TxDL, uint8_t BS, uint8_t STmin, CCX_TIME_t N_Cr, uint8_t *RxBuffer, CCX_ISOTP_Length_t RxBufferSize, CCX_ISOTP_Padding_t Padding, CCX_ISOTP_Length_t ProgressCallbackInterval, void *UserData, void(*OnReceiveStart)(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Length_t TotalLength, void *UserData), void(*OnReceiveComplete)(CCX_ISOTP_RX_t *Instance, const uint8_t *Data, CCX_ISOTP_Length_t Length, void *UserData), void(*OnReceiveProgress)(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Length_t BytesReceived, CCX_ISOTP_Length_t TotalLength, void *UserData), void(*OnError)(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Status_t Error, void *UserData))
 Initialize ISO-TP RX FD configuration with defaults.
CCX_ISOTP_Status_t CCX_ISOTP_RX_Init (CCX_ISOTP_RX_t *Instance, CCX_instance_t *CanInstance, const CCX_ISOTP_RX_Config_t *Config)
 Initialize ISO-TP RX instance.
CCX_ISOTP_Status_t CCX_ISOTP_RX_Abort (CCX_ISOTP_RX_t *Instance)
 Abort an active ISO-TP RX transfer.
void CCX_ISOTP_RX_Parser (const CCX_instance_t *CanInstance, CCX_message_t *Msg, uint16_t Slot, void *UserData)
 Parser function for CAN CoreX RX table.
void CCX_ISOTP_RX_Poll (CCX_ISOTP_RX_t *Instance)
 Poll ISO-TP RX instance (call periodically from main loop).

Detailed Description

ISO 15765-2 transport over classic CAN and CAN FD.

Macro Definition Documentation

◆ CCX_ISOTP_MAX_CLASSIC_DATA_SIZE

#define CCX_ISOTP_MAX_CLASSIC_DATA_SIZE   4095U

Maximum ISO-TP payload for classic CAN instances.

Applies to sessions configured with FrameFormat = CCX_FRAME_FORMAT_CLASSIC, even in builds where CCX_ENABLE_CANFD=1.

◆ CCX_ISOTP_MAX_FD_DATA_SIZE

#define CCX_ISOTP_MAX_FD_DATA_SIZE   UINT32_MAX

Maximum ISO-TP payload for CAN FD instances.

This limit applies only to ISO-TP sessions configured for FrameFormat = CCX_FRAME_FORMAT_FD or CCX_FRAME_FORMAT_FD_BRS. Override it if the application wants to cap FD transfers below the protocol's 32-bit length field.

◆ CCX_ISOTP_PADDING

#define CCX_ISOTP_PADDING ( byte)
Value:
((CCX_ISOTP_Padding_t){.Enable = CCX_ISOTP_PADDING_ENABLED, .PaddingByte = (uint8_t)(byte)})
ISO-TP padding configuration.
Definition can_corex_isotp.h:189

◆ CCX_ISOTP_RX_TABLE_ENTRY

#define CCX_ISOTP_RX_TABLE_ENTRY ( isotp_rx_ptr,
can_id,
ide_flag )
Value:
{ \
.ID = (can_id), .DLC = CCX_DLC_ANY, .IDE_flag = (ide_flag), .FrameFormat = CCX_FRAME_FORMAT_CLASSIC, \
.UserData = (isotp_rx_ptr), .TimeOut = 0, .Parser = CCX_ISOTP_RX_Parser, .TimeoutCallback = NULL, \
.LastTick = 0 \
}
#define CCX_DLC_ANY
Special DLC value for wildcard matching in RX table.
Definition can_corex.h:110
@ CCX_FRAME_FORMAT_CLASSIC
Classic CAN 2.0, max 8-byte payload.
Definition can_corex.h:277
void CCX_ISOTP_RX_Parser(const CCX_instance_t *CanInstance, CCX_message_t *Msg, uint16_t Slot, void *UserData)
Parser function for CAN CoreX RX table.

Macro to generate CAN CoreX RX table entry for ISO-TP RX instance.

Parameters
isotp_rx_ptrPointer to CCX_ISOTP_RX_t instance
can_idCAN ID for receiving ISO-TP data frames
ide_flag0 = Standard ID (11-bit), 1 = Extended ID (29-bit)

Note: Uses CCX_DLC_ANY to accept any DLC (wildcard matching in CAN CoreX) and defaults to classic frame format in FD-capable builds.

Usage example: CCX_ISOTP_RX_t isotp_rx; CCX_RX_table_t rx_table[] = { CCX_ISOTP_RX_TABLE_ENTRY(&isotp_rx, 0x123, 0), // Standard ID CCX_ISOTP_RX_TABLE_ENTRY(&isotp_rx, 0x18DA00F1, 1) // Extended ID };

◆ CCX_ISOTP_RX_TABLE_ENTRY_EX

#define CCX_ISOTP_RX_TABLE_ENTRY_EX ( isotp_rx_ptr,
can_id,
ide_flag,
frame_format )
Value:
{ \
.ID = (can_id), .DLC = CCX_DLC_ANY, .IDE_flag = (ide_flag), .FrameFormat = (frame_format), \
.UserData = (isotp_rx_ptr), .TimeOut = 0, .Parser = CCX_ISOTP_RX_Parser, .TimeoutCallback = NULL, \
.LastTick = 0 \
}

◆ CCX_ISOTP_TX_FC_TABLE_ENTRY

#define CCX_ISOTP_TX_FC_TABLE_ENTRY ( isotp_tx_ptr,
fc_can_id,
ide_flag )
Value:
{ \
.ID = (fc_can_id), .DLC = CCX_DLC_ANY, .IDE_flag = (ide_flag), .FrameFormat = CCX_FRAME_FORMAT_CLASSIC, \
.UserData = (isotp_tx_ptr), .TimeOut = 0, .Parser = CCX_ISOTP_TX_FC_Parser, .TimeoutCallback = NULL, \
.LastTick = 0 \
}
void CCX_ISOTP_TX_FC_Parser(const CCX_instance_t *CanInstance, CCX_message_t *Msg, uint16_t Slot, void *UserData)
Parser function for Flow Control frames (for TX side).

Macro to generate CAN CoreX RX table entry for ISO-TP TX Flow Control.

Parameters
isotp_tx_ptrPointer to CCX_ISOTP_TX_t instance
fc_can_idCAN ID for receiving Flow Control frames
ide_flag0 = Standard ID (11-bit), 1 = Extended ID (29-bit)

Note: Uses CCX_DLC_ANY - FC can be sent with or without padding. In FD-capable builds this macro defaults to classic frame format.

Usage example: CCX_ISOTP_TX_t isotp_tx; CCX_ISOTP_RX_t isotp_rx; CCX_RX_table_t rx_table[] = {

CCX_ISOTP_RX_TABLE_ENTRY(&isotp_rx, 0x123, 0), // Standard ID CCX_ISOTP_TX_FC_TABLE_ENTRY(&isotp_tx, 0x321, 0) // Standard ID for FC };

◆ CCX_ISOTP_TX_FC_TABLE_ENTRY_EX

#define CCX_ISOTP_TX_FC_TABLE_ENTRY_EX ( isotp_tx_ptr,
fc_can_id,
ide_flag,
frame_format )
Value:
{ \
.ID = (fc_can_id), .DLC = CCX_DLC_ANY, .IDE_flag = (ide_flag), .FrameFormat = (frame_format), \
.UserData = (isotp_tx_ptr), .TimeOut = 0, .Parser = CCX_ISOTP_TX_FC_Parser, .TimeoutCallback = NULL, \
.LastTick = 0 \
}

Enumeration Type Documentation

◆ CCX_ISOTP_FC_FS_t

Legal CAN FD link-layer payload sizes for ISO-TP sessions.

TxDL is used only for FD ISO-TP sessions. Classic ISO-TP sessions always use 8 bytes as the link-layer payload.

ISO-TP Flow Control Flow Status values

◆ CCX_ISOTP_PCI_t

ISO-TP length type.

In classic-only builds this stays uint16_t. In FD builds it becomes uint32_t, allowing payload lengths above 4095 on FD-configured ISO-TP instances.

ISO-TP frame types (PCI - Protocol Control Information)

Function Documentation

◆ CCX_ISOTP_RX_Abort()

CCX_ISOTP_Status_t CCX_ISOTP_RX_Abort ( CCX_ISOTP_RX_t * Instance)

Abort an active ISO-TP RX transfer.

Resets the RX instance back to IDLE. If a transfer was active, OnError(..., CCX_ISOTP_ERROR_ABORTED, ...) is emitted.

Parameters
InstancePointer to RX instance
Returns
CCX_ISOTP_OK on success, error code otherwise

◆ CCX_ISOTP_RX_Config_Init()

void CCX_ISOTP_RX_Config_Init ( CCX_ISOTP_RX_Config_t * Config,
uint32_t TxID,
uint8_t IDE_TxID,
uint8_t BS,
uint8_t STmin,
CCX_TIME_t N_Cr,
uint8_t * RxBuffer,
CCX_ISOTP_Length_t RxBufferSize,
CCX_ISOTP_Padding_t Padding,
CCX_ISOTP_Length_t ProgressCallbackInterval,
void * UserData,
void(* OnReceiveStart )(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Length_t TotalLength, void *UserData),
void(* OnReceiveComplete )(CCX_ISOTP_RX_t *Instance, const uint8_t *Data, CCX_ISOTP_Length_t Length, void *UserData),
void(* OnReceiveProgress )(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Length_t BytesReceived, CCX_ISOTP_Length_t TotalLength, void *UserData),
void(* OnError )(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Status_t Error, void *UserData) )

Initialize ISO-TP RX configuration with defaults.

Fills Config with a classic/no-padding configuration and library defaults for fields that can be inferred or safely defaulted. Callers may override any fields after initialization and before CCX_ISOTP_RX_Init().

Parameters
ConfigPointer to RX configuration to initialize
TxIDCAN ID for transmitting Flow Control
IDE_TxIDCAN identifier type for TxID
BSBlock Size to request in FC
STminSeparation Time minimum to request in FC
N_CrTimeout between received CF in base ticks
RxBufferBuffer for received data
RxBufferSizeSize of RX buffer
PaddingPadding configuration
ProgressCallbackIntervalCall progress callback every N newly received bytes (0 = disabled)
UserDataUser context pointer passed to callbacks
OnReceiveStartStart callback
OnReceiveCompleteCompletion callback
OnReceiveProgressProgress callback
OnErrorError callback

◆ CCX_ISOTP_RX_Config_InitFD()

void CCX_ISOTP_RX_Config_InitFD ( CCX_ISOTP_RX_Config_t * Config,
uint32_t TxID,
uint8_t IDE_TxID,
CCX_frame_format_t FrameFormat,
uint8_t FC_TxDL,
uint8_t BS,
uint8_t STmin,
CCX_TIME_t N_Cr,
uint8_t * RxBuffer,
CCX_ISOTP_Length_t RxBufferSize,
CCX_ISOTP_Padding_t Padding,
CCX_ISOTP_Length_t ProgressCallbackInterval,
void * UserData,
void(* OnReceiveStart )(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Length_t TotalLength, void *UserData),
void(* OnReceiveComplete )(CCX_ISOTP_RX_t *Instance, const uint8_t *Data, CCX_ISOTP_Length_t Length, void *UserData),
void(* OnReceiveProgress )(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Length_t BytesReceived, CCX_ISOTP_Length_t TotalLength, void *UserData),
void(* OnError )(CCX_ISOTP_RX_t *Instance, CCX_ISOTP_Status_t Error, void *UserData) )

Initialize ISO-TP RX FD configuration with defaults.

Same as CCX_ISOTP_RX_Config_Init(), but also applies the FD-specific receive/session transport fields in one step.

Parameters
ConfigPointer to RX configuration to initialize
TxIDCAN ID for transmitting Flow Control
IDE_TxIDCAN identifier type for TxID
FrameFormatExpected transport format of received ISO-TP frames
FC_TxDLFD link-layer payload size used for transmitted FC frames
BSBlock Size to request in FC
STminSeparation Time minimum to request in FC
N_CrTimeout between received CF in milliseconds
RxBufferBuffer for received data
RxBufferSizeSize of RX buffer
PaddingPadding configuration
ProgressCallbackIntervalCall progress callback every N newly received bytes (0 = disabled)
UserDataUser context pointer passed to callbacks
OnReceiveStartStart callback
OnReceiveCompleteCompletion callback
OnReceiveProgressProgress callback
OnErrorError callback

◆ CCX_ISOTP_RX_Init()

CCX_ISOTP_Status_t CCX_ISOTP_RX_Init ( CCX_ISOTP_RX_t * Instance,
CCX_instance_t * CanInstance,
const CCX_ISOTP_RX_Config_t * Config )

Initialize ISO-TP RX instance.

Parameters
InstancePointer to RX instance structure
CanInstancePointer to CAN CoreX instance
ConfigPointer to RX configuration
Returns
CCX_ISOTP_OK on success, error code otherwise
Note
In FD builds, Config->FC_TxDL is used only for transmitted Flow Control frames when the RX session itself is configured for FD.

◆ CCX_ISOTP_RX_Parser()

void CCX_ISOTP_RX_Parser ( const CCX_instance_t * CanInstance,
CCX_message_t * Msg,
uint16_t Slot,
void * UserData )

Parser function for CAN CoreX RX table.

This function should be called from CAN CoreX RX table parser. Use CCX_ISOTP_RX_TABLE_ENTRY macro to generate RX table entry.

Parameters
CanInstanceCAN CoreX instance (unused, for compatibility)
MsgReceived CAN message
SlotRX table slot (unused, for compatibility)
UserDataISO-TP RX instance pointer from the RX table entry

◆ CCX_ISOTP_RX_Poll()

void CCX_ISOTP_RX_Poll ( CCX_ISOTP_RX_t * Instance)

Poll ISO-TP RX instance (call periodically from main loop).

Parameters
InstancePointer to RX instance

◆ CCX_ISOTP_Transmit()

CCX_ISOTP_Status_t CCX_ISOTP_Transmit ( CCX_ISOTP_TX_t * Instance,
const uint8_t * Data,
CCX_ISOTP_Length_t Length )

Transmit data using ISO-TP.

Parameters
InstancePointer to TX instance
DataPointer to data to transmit
LengthLength of data in bytes
Returns
CCX_ISOTP_OK on success, error code otherwise
Note
Data pointer must remain valid until OnTransmitComplete is called
Header selection is based on ISO-TP payload length before padding. For example, in FD mode payloads 1..7 still use the standard single-frame header even if CAN padding expands the frame to a larger TxDL.

◆ CCX_ISOTP_TX_Abort()

CCX_ISOTP_Status_t CCX_ISOTP_TX_Abort ( CCX_ISOTP_TX_t * Instance)

Abort an active ISO-TP TX transfer.

Resets the TX instance back to IDLE. If a transfer was active, OnError(..., CCX_ISOTP_ERROR_ABORTED, ...) is emitted.

Parameters
InstancePointer to TX instance
Returns
CCX_ISOTP_OK on success, error code otherwise

◆ CCX_ISOTP_TX_Config_Init()

void CCX_ISOTP_TX_Config_Init ( CCX_ISOTP_TX_Config_t * Config,
uint32_t TxID,
uint8_t IDE_TxID,
CCX_TIME_t N_Bs,
CCX_TIME_t N_Cs,
CCX_ISOTP_Padding_t Padding,
void * UserData,
void(* OnTransmitComplete )(CCX_ISOTP_TX_t *Instance, void *UserData),
void(* OnError )(CCX_ISOTP_TX_t *Instance, CCX_ISOTP_Status_t Error, void *UserData) )

Initialize ISO-TP TX configuration with defaults.

Fills Config with a classic/no-padding configuration and library defaults for fields that can be inferred or safely defaulted. Callers may override any fields after initialization and before CCX_ISOTP_TX_Init().

Parameters
ConfigPointer to TX configuration to initialize
TxIDCAN ID for transmitting data
IDE_TxIDCAN identifier type for TxID
N_BsTimeout for reception of FC after FF/CF in base ticks
N_CsTimeout between CF transmissions in base ticks
PaddingPadding configuration
UserDataUser context pointer passed to callbacks
OnTransmitCompleteCompletion callback
OnErrorError callback

◆ CCX_ISOTP_TX_Config_InitFD()

void CCX_ISOTP_TX_Config_InitFD ( CCX_ISOTP_TX_Config_t * Config,
uint32_t TxID,
uint8_t IDE_TxID,
CCX_frame_format_t FrameFormat,
uint8_t TxDL,
CCX_TIME_t N_Bs,
CCX_TIME_t N_Cs,
CCX_ISOTP_Padding_t Padding,
void * UserData,
void(* OnTransmitComplete )(CCX_ISOTP_TX_t *Instance, void *UserData),
void(* OnError )(CCX_ISOTP_TX_t *Instance, CCX_ISOTP_Status_t Error, void *UserData) )

Initialize ISO-TP TX FD configuration with defaults.

Same as CCX_ISOTP_TX_Config_Init(), but also applies the FD-specific transport fields in one step.

Parameters
ConfigPointer to TX configuration to initialize
TxIDCAN ID for transmitting data
IDE_TxIDCAN identifier type for TxID
FrameFormatSession transport format: CCX_FRAME_FORMAT_FD or CCX_FRAME_FORMAT_FD_BRS
TxDLFD link-layer payload size
N_BsTimeout for reception of FC after FF/CF in milliseconds
N_CsTimeout between CF transmissions in milliseconds
PaddingPadding configuration
UserDataUser context pointer passed to callbacks
OnTransmitCompleteCompletion callback
OnErrorError callback

◆ CCX_ISOTP_TX_FC_Parser()

void CCX_ISOTP_TX_FC_Parser ( const CCX_instance_t * CanInstance,
CCX_message_t * Msg,
uint16_t Slot,
void * UserData )

Parser function for Flow Control frames (for TX side).

This function should be called from CAN CoreX RX table parser. Use CCX_ISOTP_TX_FC_TABLE_ENTRY macro to generate RX table entry.

Parameters
CanInstanceCAN CoreX instance (unused, for compatibility)
MsgReceived CAN message (Flow Control)
SlotRX table slot (unused, for compatibility)
UserDataISO-TP TX instance pointer from the RX table entry

◆ CCX_ISOTP_TX_Init()

CCX_ISOTP_Status_t CCX_ISOTP_TX_Init ( CCX_ISOTP_TX_t * Instance,
CCX_instance_t * CanInstance,
const CCX_ISOTP_TX_Config_t * Config )

Initialize ISO-TP TX instance.

Parameters
InstancePointer to TX instance structure
CanInstancePointer to CAN CoreX instance
ConfigPointer to TX configuration
Returns
CCX_ISOTP_OK on success, error code otherwise
Note
In FD builds, Config->TxDL is validated only for FD sessions. Classic sessions keep the classic 4095-byte transport limit even when CCX_ENABLE_CANFD=1.

◆ CCX_ISOTP_TX_Poll()

void CCX_ISOTP_TX_Poll ( CCX_ISOTP_TX_t * Instance)

Poll ISO-TP TX instance (call periodically from main loop).

Parameters
InstancePointer to TX instance