]> Pileus Git - ~andy/csm213a-hw/blob - hw2/serial_dma.h
Add dma and more tests
[~andy/csm213a-hw] / hw2 / serial_dma.h
1 #ifndef SERIAL_DMA_H
2 #define SERIAL_DMA_H
3
4 #include <stdarg.h>
5 #include <MKL46Z4.h>
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10
11 /* Sizes */
12 #define SDMA_NUM_UART 3
13 #define SDMA_NUM_DMA  4
14
15 /* Serial Ports */
16 typedef enum {
17         SDMA_UART0,
18         SDMA_UART1,
19         SDMA_UART2,
20 } sdma_uart_t;
21
22 /* DMA Channels */
23 typedef enum {
24         SDMA_CHANNEL0,
25         SDMA_CHANNEL1,
26         SDMA_CHANNEL2,
27         SDMA_CHANNEL3,
28 } sdma_dma_t;
29
30 /* Port */
31 typedef struct sdma_t sdma_t;
32
33 /* Setup */
34 sdma_t *sdma_open(sdma_uart_t uart, sdma_dma_t dma);
35
36 /* Write */
37 void sdma_write(sdma_t *port, void *data, int len);
38
39 /* Print */
40 void sdma_vprintf(sdma_t *port, const char *fmt, va_list ap);
41 void sdma_printf(sdma_t *port, const char *fmt, ...);
42
43 /* Write */
44 void sdma_flush(sdma_t *port);
45
46 #ifdef __cplusplus
47 }
48 #endif
49
50 #endif