Skip to content

File isotp_link.c

FileList > src > isotp_link.c

Go to the source code of this file

ISO-TP link: transmitter and receiver state machines (ISO 15765-2). More...

  • #include <string.h>
  • #include "isotp_link.h"

Public Static Functions

Type Name
void isotp_link_rx_consecutive (struct isotp_link * link, const uint8_t * data, const struct isotp_pdu * pdu, uint32_t now_us)
void isotp_link_rx_fail (struct isotp_link * link, int n_result)
void isotp_link_rx_first (struct isotp_link * link, const uint8_t * data, const struct isotp_pdu * pdu, uint32_t now_us)
void isotp_link_rx_flow_control (struct isotp_link * link, const struct isotp_pdu * pdu, uint32_t now_us)
void isotp_link_rx_interrupt (struct isotp_link * link)
void isotp_link_rx_single (struct isotp_link * link, const uint8_t * data, const struct isotp_pdu * pdu)
int isotp_link_send_fc (const struct isotp_link * link, uint8_t flow_status)
void isotp_link_tx_consecutive (struct isotp_link * link, uint32_t now_us)
void isotp_link_tx_finish (struct isotp_link * link, int n_result)
int isotp_link_write (const struct isotp_link * link, uint32_t can_id, uint8_t * frame, int length)
uint32_t isotp_min_u32 (uint32_t a, uint32_t b)
bool isotp_time_reached (uint32_t now_us, uint32_t deadline_us)

Macros

Type Name
define ISOTP_DEFAULT_PADDING_VALUE 0xCCU
define ISOTP_TIMEOUT_MAX_US 0x7FFFFFFFU /\* deadlines are compared modulo 2^32 \*/
define ISOTP_TIME_HALF_RANGE 0x80000000U

Detailed Description

Project: ISOTP-C - Hardware-Agnostic ISO 15765-2 (ISO-TP) Library Author: Anton Vynohradov Email: avynohradov@systemfromscratch.com

Copyright:

Copyright (c) 2026 Anton Vynohradov @license MIT License

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

SPDX-License-Identifier: MIT

Public Static Functions Documentation

static void isotp_link_rx_consecutive (
    struct isotp_link * link,
    const uint8_t * data,
    const struct isotp_pdu * pdu,
    uint32_t now_us
) 

static void isotp_link_rx_fail (
    struct isotp_link * link,
    int n_result
) 

static void isotp_link_rx_first (
    struct isotp_link * link,
    const uint8_t * data,
    const struct isotp_pdu * pdu,
    uint32_t now_us
) 

static void isotp_link_rx_flow_control (
    struct isotp_link * link,
    const struct isotp_pdu * pdu,
    uint32_t now_us
) 

static void isotp_link_rx_interrupt (
    struct isotp_link * link
) 

static void isotp_link_rx_single (
    struct isotp_link * link,
    const uint8_t * data,
    const struct isotp_pdu * pdu
) 

static int isotp_link_send_fc (
    const struct isotp_link * link,
    uint8_t flow_status
) 

static void isotp_link_tx_consecutive (
    struct isotp_link * link,
    uint32_t now_us
) 

static void isotp_link_tx_finish (
    struct isotp_link * link,
    int n_result
) 

static int isotp_link_write (
    const struct isotp_link * link,
    uint32_t can_id,
    uint8_t * frame,
    int length
) 

function isotp_min_u32

static uint32_t isotp_min_u32 (
    uint32_t a,
    uint32_t b
) 

function isotp_time_reached

static bool isotp_time_reached (
    uint32_t now_us,
    uint32_t deadline_us
) 

Macro Definition Documentation

define ISOTP_DEFAULT_PADDING_VALUE

#define ISOTP_DEFAULT_PADDING_VALUE `0xCCU`

define ISOTP_TIMEOUT_MAX_US

#define ISOTP_TIMEOUT_MAX_US `0x7FFFFFFFU /* deadlines are compared modulo 2^32 */`

define ISOTP_TIME_HALF_RANGE

#define ISOTP_TIME_HALF_RANGE `0x80000000U`


The documentation for this class was generated from the following file src/isotp_link.c