Skip to content

File syn_spi_queue.h

FileList > drivers > syn_spi_queue.h

Go to the source code of this file

Non-blocking SPI transaction queue driver with CS management & parameter switching.

  • #include "../common/syn_defs.h"
  • #include "../port/syn_port_gpio.h"
  • #include "../port/syn_port_spi.h"
  • #include "syn_spi.h"
  • #include <stdbool.h>
  • #include <stddef.h>
  • #include <stdint.h>

Classes

Type Name
struct SYN_SPI_Queue
SPI Transaction Queue instance handle.
struct SYN_SPI_Transaction
SPI Transaction Descriptor.

Public Types

Type Name
typedef void(* SYN_SPI_Queue_Callback
SPI queue completion callback signature.

Public Functions

Type Name
SYN_Status syn_spi_queue_cancel_all (SYN_SPI_Queue * q)
Cancel all pending transactions in queue.
size_t syn_spi_queue_count (const SYN_SPI_Queue * q)
Query current pending transaction count.
SYN_Status syn_spi_queue_enqueue (SYN_SPI_Queue * q, const SYN_SPI_Transaction * tx)
Enqueue an SPI transaction for non-blocking execution.
SYN_Status syn_spi_queue_init (SYN_SPI_Queue * q, uint8_t bus)
Initialize an SPI transaction queue for a bus.
SYN_Status syn_spi_queue_process (SYN_SPI_Queue * q)
Process queue state machine (triggers pending transaction if idle).

Macros

Type Name
define SYN_SPI_QUEUE_MAX_DEPTH 16

Public Types Documentation

typedef SYN_SPI_Queue_Callback

SPI queue completion callback signature.

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

Parameters:

  • bus SPI 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_spi_queue_cancel_all

Cancel all pending transactions in queue.

SYN_Status syn_spi_queue_cancel_all (
    SYN_SPI_Queue * q
) 

Parameters:

  • q Pointer to initialized queue handle.

Returns:

SYN_OK on success.


function syn_spi_queue_count

Query current pending transaction count.

size_t syn_spi_queue_count (
    const SYN_SPI_Queue * q
) 

Parameters:

  • q Pointer to queue handle.

Returns:

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


function syn_spi_queue_enqueue

Enqueue an SPI transaction for non-blocking execution.

SYN_Status syn_spi_queue_enqueue (
    SYN_SPI_Queue * q,
    const SYN_SPI_Transaction * tx
) 

Parameters:

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

Returns:

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


function syn_spi_queue_init

Initialize an SPI transaction queue for a bus.

SYN_Status syn_spi_queue_init (
    SYN_SPI_Queue * q,
    uint8_t bus
) 

Parameters:

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

Returns:

SYN_OK on success, SYN_INVALID_PARAM if q is NULL.


function syn_spi_queue_process

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

SYN_Status syn_spi_queue_process (
    SYN_SPI_Queue * q
) 

Parameters:

  • q Pointer to initialized queue handle.

Returns:

SYN_OK on success.


Macro Definition Documentation

define SYN_SPI_QUEUE_MAX_DEPTH

#define SYN_SPI_QUEUE_MAX_DEPTH `16`

Maximum pending transactions per SPI queue instance



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