ClearCore Library
Loading...
Searching...
No Matches
DmaManager.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Teknic, Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
30#ifndef __DMAMANAGER_H__
31#define __DMAMANAGER_H__
32
33#include <stdint.h>
34#include <sam.h>
35
36#ifndef HIDE_FROM_DOXYGEN
37namespace ClearCore {
38
39/* DMA channels */
40typedef enum {
41 DMA_ADC_RESULTS,
42 DMA_ADC_SEQUENCE,
43 DMA_SERCOM0_SPI_RX,
44 DMA_SERCOM0_SPI_TX,
45 DMA_SERCOM7_SPI_RX,
46 DMA_SERCOM7_SPI_TX,
47 DMA_CHANNEL_COUNT, // Keep at end
48 DMA_INVALID_CHANNEL // Placeholder for unset values
49} DmaChannels;
50
56class DmaManager {
57 friend class SysManager;
58
59public:
60 static DmacChannel *Channel(DmaChannels index);
61 static DmacDescriptor *BaseDescriptor(DmaChannels index);
62
66 static DmaManager &Instance();
67private:
68
69 static DmacDescriptor writeBackDescriptor[DMA_CHANNEL_COUNT] __attribute__((
70 aligned(16)));
71 static DmacDescriptor descriptorBase[DMA_CHANNEL_COUNT] __attribute__((aligned(
72 16)));
73
81 DmaManager() {};
82
89 static void Initialize();
90}; // DmaManager
91
92} // ClearCore namespace
93
94#endif // HIDE_FROM_DOXYGEN
95#endif // __DMAMANAGER_H__
Namespace to encompass the ClearCore board API.
Definition AdcManager.h:36