#ifndef SERIAL_DMA_H #define SERIAL_DMA_H #include #include #include #ifdef __cplusplus extern "C" { #endif /* Sizes */ #define SDMA_NUM_UART 3 #define SDMA_NUM_DMA 4 /* Serial Ports */ typedef enum { SDMA_UART0, SDMA_UART1, SDMA_UART2, } sdma_uart_t; /* DMA Channels */ typedef enum { SDMA_CHANNEL0, SDMA_CHANNEL1, SDMA_CHANNEL2, SDMA_CHANNEL3, } sdma_dma_t; /* Port */ typedef struct sdma_t sdma_t; /* Open */ sdma_t *sdma_open(sdma_uart_t uart, sdma_dma_t tx_chan, sdma_dma_t rx_chan); /* Setup */ void sdma_pinmap(sdma_t *port, PinName tx, PinName rx); /* Write */ void sdma_write(sdma_t *port, void *data, int len); void sdma_read(sdma_t *port, void *data, int len); /* Flush/Wait */ void sdma_flush(sdma_t *port, uint64_t *time); void sdma_wait(sdma_t *port, uint64_t *time); /* Print */ void sdma_vprintf(sdma_t *port, const char *fmt, va_list ap); void sdma_printf(sdma_t *port, const char *fmt, ...); #ifdef __cplusplus } #endif #endif