]> Pileus Git - ~andy/csm213a-hw/blob - hw2/serial_dma.h
Fix whitespace error
[~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 #include <PinNames.h>
7
8 #ifdef __cplusplus
9 extern "C" {
10 #endif
11
12 /* Sizes */
13 #define SDMA_NUM_UART 3
14 #define SDMA_NUM_DMA  4
15
16 /* Serial Ports */
17 typedef enum {
18         SDMA_UART0,
19         SDMA_UART1,
20         SDMA_UART2,
21 } sdma_uart_t;
22
23 /* DMA Channels */
24 typedef enum {
25         SDMA_CHANNEL0,
26         SDMA_CHANNEL1,
27         SDMA_CHANNEL2,
28         SDMA_CHANNEL3,
29 } sdma_dma_t;
30
31 /* Port */
32 typedef struct sdma_t sdma_t;
33
34 /* Open */
35 sdma_t *sdma_open(sdma_uart_t uart, sdma_dma_t tx_chan, sdma_dma_t rx_chan);
36
37 /* Setup */
38 void sdma_pinmap(sdma_t *port, PinName tx, PinName rx);
39
40 /* Write */
41 void sdma_write(sdma_t *port, void *data, int len);
42 void sdma_read(sdma_t *port, void *data, int len);
43
44 /* Flush/Wait */
45 void sdma_flush(sdma_t *port, uint64_t *time);
46 void sdma_wait(sdma_t *port, uint64_t *time);
47
48 /* Print */
49 void sdma_vprintf(sdma_t *port, const char *fmt, va_list ap);
50 void sdma_printf(sdma_t *port, const char *fmt, ...);
51
52 #ifdef __cplusplus
53 }
54 #endif
55
56 #endif