Skip to content

File syn_i2c_queue.h

FileList > drivers > syn_i2c_queue.h

Go to the source code of this file

Non-blocking I2C transaction queue driver for multi-client bus access.

  • #include "../common/syn_defs.h"
  • #include "../port/syn_port_i2c.h"
  • #include "../port/syn_port_i2c_async.h"
  • #include <stdbool.h>
  • #include <stddef.h>
  • #include <stdint.h>

Classes

Type Name
struct SYN_I2C_Queue
I2C Transaction Queue instance handle.
struct SYN_I2C_Transaction
I2C Transaction Descriptor.

Public Types

Type Name
typedef void(* SYN_I2C_Queue_Callback
I2C queue completion callback signature.

Public Functions

Type Name
SYN_Status syn_i2c_queue_cancel_all (SYN_I2C_Queue * q)
Cancel all pending transactions in queue.
size_t syn_i2c_queue_count (const SYN_I2C_Queue * q)
Query current pending transaction count.
SYN_Status syn_i2c_queue_enqueue (SYN_I2C_Queue * q, const SYN_I2C_Transaction * tx)
Enqueue a transaction for non-blocking execution.
SYN_Status syn_i2c_queue_init (SYN_I2C_Queue * q, uint8_t bus)
Initialize an I2C transaction queue for a bus.
SYN_Status syn_i2c_queue_process (SYN_I2C_Queue * q)
Process queue state machine (triggers pending transaction if idle).

Macros

Type Name
define SYN_I2C_QUEUE_MAX_DEPTH 16

Public Types Documentation

typedef SYN_I2C_Queue_Callback

I2C queue completion callback signature.

typedef void(* SYN_I2C_Queue_Callback) (uint8_t bus, SYN_Status result, void *user_data);

Parameters:

  • bus I2C bus index.
  • result SYN_OK on success, error status code on failure.
  • user_data Context pointer passed with transaction descriptor.

Public Functions Documentation

function syn_i2c_queue_cancel_all

Cancel all pending transactions in queue.

SYN_Status syn_i2c_queue_cancel_all (
    SYN_I2C_Queue * q
) 

Parameters:

  • q Pointer to initialized queue handle.

Returns:

SYN_OK on success.


function syn_i2c_queue_count

Query current pending transaction count.

size_t syn_i2c_queue_count (
    const SYN_I2C_Queue * q
) 

Parameters:

  • q Pointer to queue handle.

Returns:

Number of queued items (0 if NULL or empty).


function syn_i2c_queue_enqueue

Enqueue a transaction for non-blocking execution.

SYN_Status syn_i2c_queue_enqueue (
    SYN_I2C_Queue * q,
    const SYN_I2C_Transaction * tx
) 

Parameters:

  • q Pointer to initialized queue handle.
  • tx Transaction descriptor.

Returns:

SYN_OK if enqueued, SYN_FULL if queue is full, SYN_INVALID_PARAM on invalid inputs.


function syn_i2c_queue_init

Initialize an I2C transaction queue for a bus.

SYN_Status syn_i2c_queue_init (
    SYN_I2C_Queue * q,
    uint8_t bus
) 

Parameters:

  • q Pointer to queue handle.
  • bus Target I2C bus index.

Returns:

SYN_OK on success, SYN_INVALID_PARAM if q is NULL.


function syn_i2c_queue_process

Process queue state machine (triggers pending transaction if idle).

SYN_Status syn_i2c_queue_process (
    SYN_I2C_Queue * q
) 

Parameters:

  • q Pointer to initialized queue handle.

Returns:

SYN_OK on success.


Macro Definition Documentation

define SYN_I2C_QUEUE_MAX_DEPTH

#define SYN_I2C_QUEUE_MAX_DEPTH `16`

Maximum pending transactions per I2C queue instance



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