Skip to content

File syn_xcp.h

FileList > proto > syn_xcp.h

Go to the source code of this file

ASAM Universal Measurement and Calibration Protocol v1.x (XCP) Slave. More...

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

Classes

Type Name
struct SYN_XCP_DAQList
DAQ List structure.
struct SYN_XCP_ODT
ODT (Object Descriptor Table) structure.
struct SYN_XCP_ODTEntry
ODT Element mapping entry.
struct SYN_XCP_Slave
XCP Slave instance context.

Public Functions

Type Name
bool syn_xcp_init (SYN_XCP_Slave * slave, uint16_t station_id)
Initialize XCP slave instance context.
bool syn_xcp_process_cto (SYN_XCP_Slave * slave, const uint8_t cto, uint8_t dto_out)
Process incoming XCP CTO command packet and prepare response.
bool syn_xcp_service_daq (SYN_XCP_Slave * slave, uint8_t event_channel, uint8_t dto_out, uint8_t * list_idx, uint8_t * odt_idx)
Service periodic XCP DAQ sampling event channel tick.
bool syn_xcp_set_mta (SYN_XCP_Slave * slave, uint8_t ext, uintptr_t addr)
Set XCP Memory Transfer Address (MTA).

Macros

Type Name
define SYN_XCP_CMD_CONNECT 0xFFU
define SYN_XCP_CMD_DISCONNECT 0xFEU
define SYN_XCP_CMD_DOWNLOAD 0xF0U
define SYN_XCP_CMD_DOWNLOAD_MAX 0xEEU
define SYN_XCP_CMD_GET_COMM_MODE_INFO 0xFBU
define SYN_XCP_CMD_GET_ID 0xFAU
define SYN_XCP_CMD_GET_SEED 0xF8U
define SYN_XCP_CMD_GET_STATUS 0xFDU
define SYN_XCP_CMD_SET_DAQ_LIST_MODE 0xE0U
define SYN_XCP_CMD_SET_DAQ_PTR 0xE2U
define SYN_XCP_CMD_SET_MTA 0xF6U
define SYN_XCP_CMD_SET_REQUEST 0xF9U
define SYN_XCP_CMD_SHORT_UPLOAD 0xF4U
define SYN_XCP_CMD_START_STOP_DAQ_LIST 0xDEU
define SYN_XCP_CMD_START_STOP_SYNCH 0xDDU
define SYN_XCP_CMD_SYNCH 0xFCU
define SYN_XCP_CMD_UNLOCK 0xF7U
define SYN_XCP_CMD_UPLOAD 0xF5U
define SYN_XCP_CMD_WRITE_DAQ 0xE1U
define SYN_XCP_ERR_ACCESS_DENIED 0x24U
define SYN_XCP_ERR_CMD_SYNTAX 0x20U
define SYN_XCP_ERR_CMD_UNKNOWN 0x30U
define SYN_XCP_ERR_NOT_CONNECTED 0x28U
define SYN_XCP_ERR_OUT_OF_RANGE 0x22U
define SYN_XCP_ERR_SUCCESS 0x00U
define SYN_XCP_ERR_WRITE_PROTECTED 0x23U
define SYN_XCP_MAX_DAQ_LISTS 4U
define SYN_XCP_MAX_ENTRIES_PER_ODT 7U
define SYN_XCP_MAX_ODT_PER_DAQ 8U
define SYN_XCP_PID_ERR 0xFEU
define SYN_XCP_PID_EV 0xFDU
define SYN_XCP_PID_RES 0xFFU
define SYN_XCP_PID_SERV 0xFCU
define SYN_XCP_RESOURCE_CAL_PAG 0x01U
define SYN_XCP_RESOURCE_DAQ 0x04U
define SYN_XCP_RESOURCE_PGM 0x10U
define SYN_XCP_RESOURCE_STIM 0x08U

Detailed Description

Provides a zero-allocation, lightweight XCP v1.x slave protocol stack for ECU calibration, live parameter measurement, memory upload/download, and DAQ (Data Acquisition) list streaming over CAN.

Public Functions Documentation

function syn_xcp_init

Initialize XCP slave instance context.

bool syn_xcp_init (
    SYN_XCP_Slave * slave,
    uint16_t station_id
) 

Parameters:

  • slave Pointer to XCP slave structure.
  • station_id XCP slave node/station ID.

Returns:

true on success, false if slave is NULL.


function syn_xcp_process_cto

Process incoming XCP CTO command packet and prepare response.

bool syn_xcp_process_cto (
    SYN_XCP_Slave * slave,
    const uint8_t cto,
    uint8_t dto_out
) 

Parameters:

  • slave Pointer to XCP slave structure.
  • cto 8-byte input CTO CAN frame buffer.
  • dto_out 8-byte output response DTO/CRM frame buffer.

Returns:

true if response frame populated, false on invalid parameters.


function syn_xcp_service_daq

Service periodic XCP DAQ sampling event channel tick.

bool syn_xcp_service_daq (
    SYN_XCP_Slave * slave,
    uint8_t event_channel,
    uint8_t dto_out,
    uint8_t * list_idx,
    uint8_t * odt_idx
) 

Parameters:

  • slave Pointer to XCP slave structure.
  • event_channel Event channel index triggered.
  • dto_out 8-byte output CAN telemetry buffer.
  • list_idx In/Out pointer to DAQ list state iterator.
  • odt_idx In/Out pointer to ODT state iterator.

Returns:

true if a DAQ DTO packet was generated, false if no packet pending.


function syn_xcp_set_mta

Set XCP Memory Transfer Address (MTA).

bool syn_xcp_set_mta (
    SYN_XCP_Slave * slave,
    uint8_t ext,
    uintptr_t addr
) 

Parameters:

  • slave Pointer to XCP slave structure.
  • ext Address extension byte.
  • addr 32-bit/64-bit target memory pointer.

Returns:

true on success, false if slave is NULL.


Macro Definition Documentation

define SYN_XCP_CMD_CONNECT

#define SYN_XCP_CMD_CONNECT `0xFFU`

Connect command


define SYN_XCP_CMD_DISCONNECT

#define SYN_XCP_CMD_DISCONNECT `0xFEU`

Disconnect command


define SYN_XCP_CMD_DOWNLOAD

#define SYN_XCP_CMD_DOWNLOAD `0xF0U`

Download memory block


define SYN_XCP_CMD_DOWNLOAD_MAX

#define SYN_XCP_CMD_DOWNLOAD_MAX `0xEEU`

Fast max download


define SYN_XCP_CMD_GET_COMM_MODE_INFO

#define SYN_XCP_CMD_GET_COMM_MODE_INFO `0xFBU`

Get comm mode info


define SYN_XCP_CMD_GET_ID

#define SYN_XCP_CMD_GET_ID `0xFAU`

Get station ID


define SYN_XCP_CMD_GET_SEED

#define SYN_XCP_CMD_GET_SEED `0xF8U`

Get seed for unlock


define SYN_XCP_CMD_GET_STATUS

#define SYN_XCP_CMD_GET_STATUS `0xFDU`

Get status command


define SYN_XCP_CMD_SET_DAQ_LIST_MODE

#define SYN_XCP_CMD_SET_DAQ_LIST_MODE `0xE0U`

Set DAQ list mode


define SYN_XCP_CMD_SET_DAQ_PTR

#define SYN_XCP_CMD_SET_DAQ_PTR `0xE2U`

Set DAQ pointer


define SYN_XCP_CMD_SET_MTA

#define SYN_XCP_CMD_SET_MTA `0xF6U`

Set memory transfer address


define SYN_XCP_CMD_SET_REQUEST

#define SYN_XCP_CMD_SET_REQUEST `0xF9U`

Set request


define SYN_XCP_CMD_SHORT_UPLOAD

#define SYN_XCP_CMD_SHORT_UPLOAD `0xF4U`

Short upload


define SYN_XCP_CMD_START_STOP_DAQ_LIST

#define SYN_XCP_CMD_START_STOP_DAQ_LIST `0xDEU`

Start/stop single DAQ list


define SYN_XCP_CMD_START_STOP_SYNCH

#define SYN_XCP_CMD_START_STOP_SYNCH `0xDDU`

Start/stop synchronous DAQ


define SYN_XCP_CMD_SYNCH

#define SYN_XCP_CMD_SYNCH `0xFCU`

Synchronize command


define SYN_XCP_CMD_UNLOCK

#define SYN_XCP_CMD_UNLOCK `0xF7U`

Unlock resource with key


define SYN_XCP_CMD_UPLOAD

#define SYN_XCP_CMD_UPLOAD `0xF5U`

Upload memory block


define SYN_XCP_CMD_WRITE_DAQ

#define SYN_XCP_CMD_WRITE_DAQ `0xE1U`

Write DAQ entry


define SYN_XCP_ERR_ACCESS_DENIED

#define SYN_XCP_ERR_ACCESS_DENIED `0x24U`

Access denied


define SYN_XCP_ERR_CMD_SYNTAX

#define SYN_XCP_ERR_CMD_SYNTAX `0x20U`

Command syntax error


define SYN_XCP_ERR_CMD_UNKNOWN

#define SYN_XCP_ERR_CMD_UNKNOWN `0x30U`

Command unknown


define SYN_XCP_ERR_NOT_CONNECTED

#define SYN_XCP_ERR_NOT_CONNECTED `0x28U`

Station not connected


define SYN_XCP_ERR_OUT_OF_RANGE

#define SYN_XCP_ERR_OUT_OF_RANGE `0x22U`

Parameter out of range


define SYN_XCP_ERR_SUCCESS

#define SYN_XCP_ERR_SUCCESS `0x00U`

Action succeeded


define SYN_XCP_ERR_WRITE_PROTECTED

#define SYN_XCP_ERR_WRITE_PROTECTED `0x23U`

Memory write protected


define SYN_XCP_MAX_DAQ_LISTS

#define SYN_XCP_MAX_DAQ_LISTS `4U`

Maximum DAQ list count


define SYN_XCP_MAX_ENTRIES_PER_ODT

#define SYN_XCP_MAX_ENTRIES_PER_ODT `7U`

Maximum entries per ODT


define SYN_XCP_MAX_ODT_PER_DAQ

#define SYN_XCP_MAX_ODT_PER_DAQ `8U`

Maximum ODTs per DAQ list


define SYN_XCP_PID_ERR

#define SYN_XCP_PID_ERR `0xFEU`

Error packet


define SYN_XCP_PID_EV

#define SYN_XCP_PID_EV `0xFDU`

Event packet


define SYN_XCP_PID_RES

#define SYN_XCP_PID_RES `0xFFU`

Response packet


define SYN_XCP_PID_SERV

#define SYN_XCP_PID_SERV `0xFCU`

Service packet


define SYN_XCP_RESOURCE_CAL_PAG

#define SYN_XCP_RESOURCE_CAL_PAG `0x01U`

Calibration/paging resource mask


define SYN_XCP_RESOURCE_DAQ

#define SYN_XCP_RESOURCE_DAQ `0x04U`

Data acquisition resource mask


define SYN_XCP_RESOURCE_PGM

#define SYN_XCP_RESOURCE_PGM `0x10U`

Flash programming resource mask


define SYN_XCP_RESOURCE_STIM

#define SYN_XCP_RESOURCE_STIM `0x08U`

Data stimulation resource mask



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