Skip to content

File syn_ccp.h

FileList > proto > syn_ccp.h

Go to the source code of this file

ASAM CAN Calibration Protocol v2.1 (CCP) Slave Implementation. More...

  • #include <stdbool.h>
  • #include <stddef.h>
  • #include <stdint.h>

Classes

Type Name
struct SYN_CCP_DAQList
DAQ List structure.
struct SYN_CCP_ODT
ODT (Object Descriptor Table) structure.
struct SYN_CCP_ODTEntry
ODT Element mapping entry.
struct SYN_CCP_Slave
CCP Slave Instance Handle.

Public Types

Type Name
typedef bool(* SYN_CCP_EraseFn
CCP Memory Erase callback.
typedef uint32_t(* SYN_CCP_SeedFn
CCP Security Seed Generator callback.
typedef bool(* SYN_CCP_UnlockFn
CCP Security Unlock Key verification callback.

Public Functions

Type Name
void syn_ccp_init (SYN_CCP_Slave * slave, uint16_t station_addr)
Initialize CCP slave instance.
bool syn_ccp_process_cro (SYN_CCP_Slave * slave, const uint8_t cro, uint8_t dto_out)
Process incoming Command Receive Object (CRO) frame.
bool syn_ccp_service_daq (SYN_CCP_Slave * slave, uint8_t event_channel, uint8_t dto_out, uint8_t * list_idx, uint8_t * odt_idx)
Service periodic DAQ sampling tick.
void syn_ccp_set_mta (SYN_CCP_Slave * slave, uint8_t mta_num, uint8_t ext, uintptr_t addr)
Set Memory Transfer Address (MTA0 or MTA1).

Macros

Type Name
define SYN_CCP_CMD_BUILD_PKT 0x10U
define SYN_CCP_CMD_CLEAR_MEMORY 0x18U
define SYN_CCP_CMD_CONNECT 0x01U
define SYN_CCP_CMD_DISCONNECT 0x17U
define SYN_CCP_CMD_DNLOAD 0x03U
define SYN_CCP_CMD_DNLOAD_6 0x23U
define SYN_CCP_CMD_EXCHANGE_ID 0x02U
define SYN_CCP_CMD_GET_ACTIVE_CAL_PAGE 0x09U
define SYN_CCP_CMD_GET_CCP_VERSION 0x1BU
define SYN_CCP_CMD_GET_DAQ_SIZE 0x1AU
define SYN_CCP_CMD_GET_SEED 0x12U
define SYN_CCP_CMD_PROGRAM 0x22U
define SYN_CCP_CMD_SET_CAL_PAGE 0x14U
define SYN_CCP_CMD_SET_DAQ_SIZE 0x15U
define SYN_CCP_CMD_SET_MTA 0x08U
define SYN_CCP_CMD_SHORT_UP 0x0FU
define SYN_CCP_CMD_START_STOP 0x11U
define SYN_CCP_CMD_START_STOP_ALL 0x06U
define SYN_CCP_CMD_UNLOCK 0x13U
define SYN_CCP_CMD_UPLOAD 0x04U
define SYN_CCP_ERR_ACCESS_DENIED 0x11U
define SYN_CCP_ERR_CMD_SYNTAX 0x02U
define SYN_CCP_ERR_CMD_UNKNOWN 0x01U
define SYN_CCP_ERR_NOT_CONNECTED 0x12U
define SYN_CCP_ERR_PARAM_OUT_OF_RANGE 0x10U
define SYN_CCP_ERR_RESOURCE_LOCKED 0x18U
define SYN_CCP_ERR_SUCCESS 0x00U
define SYN_CCP_MAX_DAQ_LISTS 4U
Maximum number of DAQ lists per CCP node.
define SYN_CCP_MAX_ENTRIES_PER_ODT 7U
Maximum entries per ODT.
define SYN_CCP_MAX_ODT_PER_DAQ 8U
Maximum ODTs per DAQ list.
define SYN_CCP_PID_CRM 0xFFU
define SYN_CCP_PID_EVENT 0xFEU
define SYN_CCP_RESOURCE_CAL 0x01U
define SYN_CCP_RESOURCE_DAQ 0x02U
define SYN_CCP_RESOURCE_PGM 0x40U

Detailed Description

Provides a lightweight, zero-allocation CCP v2.1 slave protocol stack for ECU calibration, live parameter tuning, memory upload/download, and DAQ (Data Acquisition) list streaming over CAN 2.0B.

Public Types Documentation

typedef SYN_CCP_EraseFn

CCP Memory Erase callback.

typedef bool(* SYN_CCP_EraseFn) (uint32_t addr, uint32_t size, void *ctx);


typedef SYN_CCP_SeedFn

CCP Security Seed Generator callback.

typedef uint32_t(* SYN_CCP_SeedFn) (uint8_t resource, void *ctx);


typedef SYN_CCP_UnlockFn

CCP Security Unlock Key verification callback.

typedef bool(* SYN_CCP_UnlockFn) (uint8_t resource, uint32_t key, void *ctx);


Public Functions Documentation

function syn_ccp_init

Initialize CCP slave instance.

void syn_ccp_init (
    SYN_CCP_Slave * slave,
    uint16_t station_addr
) 

Parameters:

  • slave Pointer to CCP slave handle.
  • station_addr 16-bit CCP station address.

function syn_ccp_process_cro

Process incoming Command Receive Object (CRO) frame.

bool syn_ccp_process_cro (
    SYN_CCP_Slave * slave,
    const uint8_t cro,
    uint8_t dto_out
) 

Parameters:

  • slave Pointer to CCP slave handle.
  • cro 8-byte CRO input CAN payload.
  • dto_out 8-byte buffer to receive Command Return Message (DTO/CRM).

Returns:

True if DTO response frame is ready to transmit.


function syn_ccp_service_daq

Service periodic DAQ sampling tick.

bool syn_ccp_service_daq (
    SYN_CCP_Slave * slave,
    uint8_t event_channel,
    uint8_t dto_out,
    uint8_t * list_idx,
    uint8_t * odt_idx
) 

Parameters:

  • slave Pointer to CCP slave handle.
  • event_channel Trigger event channel index.
  • dto_out Output buffer for DAQ DTO packet.
  • list_idx Output index of transmitting DAQ list.
  • odt_idx Output index of transmitting ODT.

Returns:

True if a DAQ packet is ready to send.


function syn_ccp_set_mta

Set Memory Transfer Address (MTA0 or MTA1).

void syn_ccp_set_mta (
    SYN_CCP_Slave * slave,
    uint8_t mta_num,
    uint8_t ext,
    uintptr_t addr
) 

Parameters:

  • slave Pointer to CCP slave handle.
  • mta_num 0 for MTA0, 1 for MTA1.
  • ext Address extension.
  • addr Target memory address.

Macro Definition Documentation

define SYN_CCP_CMD_BUILD_PKT

#define SYN_CCP_CMD_BUILD_PKT `0x10U`

Build DAQ packet


define SYN_CCP_CMD_CLEAR_MEMORY

#define SYN_CCP_CMD_CLEAR_MEMORY `0x18U`

Clear flash/RAM memory


define SYN_CCP_CMD_CONNECT

#define SYN_CCP_CMD_CONNECT `0x01U`

Establish connection


define SYN_CCP_CMD_DISCONNECT

#define SYN_CCP_CMD_DISCONNECT `0x17U`

Disconnect station


define SYN_CCP_CMD_DNLOAD

#define SYN_CCP_CMD_DNLOAD `0x03U`

Download data block


define SYN_CCP_CMD_DNLOAD_6

#define SYN_CCP_CMD_DNLOAD_6 `0x23U`

Fast 6-byte download


define SYN_CCP_CMD_EXCHANGE_ID

#define SYN_CCP_CMD_EXCHANGE_ID `0x02U`

Exchange station ID


define SYN_CCP_CMD_GET_ACTIVE_CAL_PAGE

#define SYN_CCP_CMD_GET_ACTIVE_CAL_PAGE `0x09U`

Get active calibration page


define SYN_CCP_CMD_GET_CCP_VERSION

#define SYN_CCP_CMD_GET_CCP_VERSION `0x1BU`

Get CCP protocol version


define SYN_CCP_CMD_GET_DAQ_SIZE

#define SYN_CCP_CMD_GET_DAQ_SIZE `0x1AU`

Get DAQ list size


define SYN_CCP_CMD_GET_SEED

#define SYN_CCP_CMD_GET_SEED `0x12U`

Get seed for security unlock


define SYN_CCP_CMD_PROGRAM

#define SYN_CCP_CMD_PROGRAM `0x22U`

Program flash memory


define SYN_CCP_CMD_SET_CAL_PAGE

#define SYN_CCP_CMD_SET_CAL_PAGE `0x14U`

Set calibration page


define SYN_CCP_CMD_SET_DAQ_SIZE

#define SYN_CCP_CMD_SET_DAQ_SIZE `0x15U`

Set DAQ list size


define SYN_CCP_CMD_SET_MTA

#define SYN_CCP_CMD_SET_MTA `0x08U`

Set memory transfer address


define SYN_CCP_CMD_SHORT_UP

#define SYN_CCP_CMD_SHORT_UP `0x0FU`

Short upload


define SYN_CCP_CMD_START_STOP

#define SYN_CCP_CMD_START_STOP `0x11U`

Start/stop single DAQ list


define SYN_CCP_CMD_START_STOP_ALL

#define SYN_CCP_CMD_START_STOP_ALL `0x06U`

Start/stop all DAQ lists


define SYN_CCP_CMD_UNLOCK

#define SYN_CCP_CMD_UNLOCK `0x13U`

Send key to unlock resource


define SYN_CCP_CMD_UPLOAD

#define SYN_CCP_CMD_UPLOAD `0x04U`

Upload data block


define SYN_CCP_ERR_ACCESS_DENIED

#define SYN_CCP_ERR_ACCESS_DENIED `0x11U`

Access denied


define SYN_CCP_ERR_CMD_SYNTAX

#define SYN_CCP_ERR_CMD_SYNTAX `0x02U`

Command syntax error


define SYN_CCP_ERR_CMD_UNKNOWN

#define SYN_CCP_ERR_CMD_UNKNOWN `0x01U`

Command unknown


define SYN_CCP_ERR_NOT_CONNECTED

#define SYN_CCP_ERR_NOT_CONNECTED `0x12U`

Station not connected


define SYN_CCP_ERR_PARAM_OUT_OF_RANGE

#define SYN_CCP_ERR_PARAM_OUT_OF_RANGE `0x10U`

Parameter out of range


define SYN_CCP_ERR_RESOURCE_LOCKED

#define SYN_CCP_ERR_RESOURCE_LOCKED `0x18U`

Resource locked


define SYN_CCP_ERR_SUCCESS

#define SYN_CCP_ERR_SUCCESS `0x00U`

Action succeeded


define SYN_CCP_MAX_DAQ_LISTS

Maximum number of DAQ lists per CCP node.

#define SYN_CCP_MAX_DAQ_LISTS `4U`


define SYN_CCP_MAX_ENTRIES_PER_ODT

Maximum entries per ODT.

#define SYN_CCP_MAX_ENTRIES_PER_ODT `7U`


define SYN_CCP_MAX_ODT_PER_DAQ

Maximum ODTs per DAQ list.

#define SYN_CCP_MAX_ODT_PER_DAQ `8U`


define SYN_CCP_PID_CRM

#define SYN_CCP_PID_CRM `0xFFU`

Command response message


define SYN_CCP_PID_EVENT

#define SYN_CCP_PID_EVENT `0xFEU`

Event packet


define SYN_CCP_RESOURCE_CAL

#define SYN_CCP_RESOURCE_CAL `0x01U`

Calibration resource mask


define SYN_CCP_RESOURCE_DAQ

#define SYN_CCP_RESOURCE_DAQ `0x02U`

Data acquisition resource mask


define SYN_CCP_RESOURCE_PGM

#define SYN_CCP_RESOURCE_PGM `0x40U`

Flash programming resource mask



The documentation for this class was generated from the following file src/syntropic/proto/syn_ccp.h