// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #ifndef PUREPHONE_DRIVERDMA_HPP #define PUREPHONE_DRIVERDMA_HPP #include #include namespace drivers { enum class DMAInstances { DMA_0, COUNT }; struct DriverDMAParams {}; class DriverDMAHandle { public: virtual void *GetHandle() = 0; }; class DriverDMA { public: static std::shared_ptr Create(const DMAInstances inst, const DriverDMAParams ¶ms); DriverDMA(const DriverDMAParams ¶ms) : parameters(params) {} virtual ~DriverDMA() {} virtual std::unique_ptr CreateHandle(const uint32_t channel, std::function callback = nullptr) = 0; protected: const DriverDMAParams parameters; private: static std::weak_ptr singleton[static_cast(DMAInstances::COUNT)]; }; } // namespace drivers #endif // PUREPHONE_DRIVERDMA_HPP