Skip to content

File syn_kwp2000.c

FileList > proto > syn_kwp2000.c

Go to the source code of this file

ISO 14230-3 Key Word Protocol 2000 (KWP2000) Server Engine Implementation.

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

Public Functions

Type Name
SYN_Status syn_kwp2000_init (SYN_KWP2000_Server * server)
Initialize a KWP2000 diagnostic server instance.
SYN_Status syn_kwp2000_process_request (SYN_KWP2000_Server * server, const uint8_t * req_buf, uint16_t req_len, uint8_t * resp_buf, uint16_t max_resp_len, uint16_t * resp_len)
Process an incoming KWP2000 request message PDU and generate response.
SYN_Status syn_kwp2000_register_cid (SYN_KWP2000_Server * server, uint16_t cid, const void * data, uint16_t len, bool writable)
Register a Common Identifier (CID, 2-byte) for Service 0x22 reading.
SYN_Status syn_kwp2000_register_lid (SYN_KWP2000_Server * server, uint8_t lid, const void * data, uint16_t len, bool writable)
Register a Local Identifier (LID, 1-byte) for Service 0x21 reading.
SYN_Status syn_kwp2000_set_memory_handler (SYN_KWP2000_Server * server, SYN_KWP2000_MemoryHandler cb, void * user_ctx)
Register memory access handler for 0x34 RequestDownload & 0x36 TransferData.
SYN_Status syn_kwp2000_set_reset_handler (SYN_KWP2000_Server * server, SYN_KWP2000_ResetHandler cb, void * user_ctx)
Set ECU reset callback handler and deferred wait delay.
SYN_Status syn_kwp2000_set_routine_handler (SYN_KWP2000_Server * server, SYN_KWP2000_RoutineHandler cb, void * user_ctx)
Register RoutineControl handler.
SYN_Status syn_kwp2000_set_security_handler (SYN_KWP2000_Server * server, SYN_KWP2000_SeedHandler seed_cb, SYN_KWP2000_KeyHandler key_cb, void * user_ctx)
Set security access seed and key callbacks.
SYN_Status syn_kwp2000_set_session_handler (SYN_KWP2000_Server * server, SYN_KWP2000_SessionHandler cb, void * user_ctx)
Set session transition callback handler.
void syn_kwp2000_tick (SYN_KWP2000_Server * server, uint32_t dt_ms)
Tick KWP2000 server S3 timer and deferred reset state.

Public Static Functions

Type Name
void make_nrc (uint8_t sid, uint8_t nrc, uint8_t * resp_buf, uint16_t * resp_len)
Helper to format a KWP2000 Negative Response Code (NRC).

Public Functions Documentation

function syn_kwp2000_init

Initialize a KWP2000 diagnostic server instance.

SYN_Status syn_kwp2000_init (
    SYN_KWP2000_Server * server
) 

Parameters:

  • server Pointer to server instance.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if server is NULL.


function syn_kwp2000_process_request

Process an incoming KWP2000 request message PDU and generate response.

SYN_Status syn_kwp2000_process_request (
    SYN_KWP2000_Server * server,
    const uint8_t * req_buf,
    uint16_t req_len,
    uint8_t * resp_buf,
    uint16_t max_resp_len,
    uint16_t * resp_len
) 

Parameters:

  • server Pointer to server instance.
  • req_buf Pointer to request payload buffer.
  • req_len Length of request payload in bytes.
  • resp_buf Pointer to output response buffer.
  • max_resp_len Capacity of output response buffer.
  • resp_len Pointer to store output response length.

Returns:

SYN_OK on success, SYN_INVALID_PARAM or SYN_ERROR on failure.


function syn_kwp2000_register_cid

Register a Common Identifier (CID, 2-byte) for Service 0x22 reading.

SYN_Status syn_kwp2000_register_cid (
    SYN_KWP2000_Server * server,
    uint16_t cid,
    const void * data,
    uint16_t len,
    bool writable
) 

Parameters:

  • server Pointer to server instance.
  • cid 2-byte Common Identifier.
  • data Pointer to data buffer.
  • len Data length in bytes.
  • writable Is CID writable?

Returns:

SYN_OK on success, SYN_INVALID_PARAM or SYN_ERROR on error.


function syn_kwp2000_register_lid

Register a Local Identifier (LID, 1-byte) for Service 0x21 reading.

SYN_Status syn_kwp2000_register_lid (
    SYN_KWP2000_Server * server,
    uint8_t lid,
    const void * data,
    uint16_t len,
    bool writable
) 

Parameters:

  • server Pointer to server instance.
  • lid 1-byte Local Identifier.
  • data Pointer to data buffer.
  • len Data length in bytes.
  • writable Is LID writable?

Returns:

SYN_OK on success, SYN_INVALID_PARAM or SYN_ERROR on error.


function syn_kwp2000_set_memory_handler

Register memory access handler for 0x34 RequestDownload & 0x36 TransferData.

SYN_Status syn_kwp2000_set_memory_handler (
    SYN_KWP2000_Server * server,
    SYN_KWP2000_MemoryHandler cb,
    void * user_ctx
) 

Parameters:

  • server Pointer to server instance.
  • cb Memory handler callback.
  • user_ctx User context pointer.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if server is NULL.


function syn_kwp2000_set_reset_handler

Set ECU reset callback handler and deferred wait delay.

SYN_Status syn_kwp2000_set_reset_handler (
    SYN_KWP2000_Server * server,
    SYN_KWP2000_ResetHandler cb,
    void * user_ctx
) 

Parameters:

  • server Pointer to server instance.
  • cb Reset handler callback.
  • user_ctx User context pointer.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if server is NULL.


function syn_kwp2000_set_routine_handler

Register RoutineControl handler.

SYN_Status syn_kwp2000_set_routine_handler (
    SYN_KWP2000_Server * server,
    SYN_KWP2000_RoutineHandler cb,
    void * user_ctx
) 

Parameters:

  • server Pointer to server instance.
  • cb Routine handler callback.
  • user_ctx User context pointer.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if server is NULL.


function syn_kwp2000_set_security_handler

Set security access seed and key callbacks.

SYN_Status syn_kwp2000_set_security_handler (
    SYN_KWP2000_Server * server,
    SYN_KWP2000_SeedHandler seed_cb,
    SYN_KWP2000_KeyHandler key_cb,
    void * user_ctx
) 

Parameters:

  • server Pointer to server instance.
  • seed_cb Seed request callback.
  • key_cb Key verification callback.
  • user_ctx User context pointer.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if server is NULL.


function syn_kwp2000_set_session_handler

Set session transition callback handler.

SYN_Status syn_kwp2000_set_session_handler (
    SYN_KWP2000_Server * server,
    SYN_KWP2000_SessionHandler cb,
    void * user_ctx
) 

Parameters:

  • server Pointer to server instance.
  • cb Session handler callback.
  • user_ctx User context pointer.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if server is NULL.


function syn_kwp2000_tick

Tick KWP2000 server S3 timer and deferred reset state.

void syn_kwp2000_tick (
    SYN_KWP2000_Server * server,
    uint32_t dt_ms
) 

Parameters:

  • server Pointer to server instance.
  • dt_ms Elapsed time step in milliseconds.

Public Static Functions Documentation

function make_nrc

Helper to format a KWP2000 Negative Response Code (NRC).

static void make_nrc (
    uint8_t sid,
    uint8_t nrc,
    uint8_t * resp_buf,
    uint16_t * resp_len
) 

Parameters:

  • sid Service Identifier.
  • nrc Negative Response Code.
  • resp_buf Response buffer.
  • resp_len Pointer to store response length.


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