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

ISO-TP transport layer public API. More...

#include "can_corex.h"

Go to the source code of this file.

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-TP transport layer public API.