165 lines
4.5 KiB
C++
165 lines
4.5 KiB
C++
/**
|
|
******************************************************************************
|
|
* File Name : STM32DMA.hpp
|
|
******************************************************************************
|
|
* @attention
|
|
*
|
|
* <h2><center>© Copyright (c) 2021 STMicroelectronics.
|
|
* All rights reserved.</center></h2>
|
|
*
|
|
* This software component is licensed by ST under Ultimate Liberty license
|
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
|
* the License. You may obtain a copy of the License at:
|
|
* www.st.com/SLA0044
|
|
*
|
|
******************************************************************************
|
|
*/
|
|
|
|
#ifndef STM32F7DMA_HPP
|
|
#define STM32F7DMA_HPP
|
|
|
|
#include <touchgfx/Bitmap.hpp>
|
|
#include <touchgfx/hal/DMA.hpp>
|
|
|
|
/**
|
|
* @class STM32F7DMA
|
|
*
|
|
* @brief This class specializes DMA_Interface for the STM32F7 processors.
|
|
*
|
|
* @sa touchgfx::DMA_Interface
|
|
*/
|
|
class STM32F7DMA : public touchgfx::DMA_Interface
|
|
{
|
|
/**
|
|
* @typedef touchgfx::DMA_Interface Base
|
|
*
|
|
* @brief Defines an alias representing the base.
|
|
*
|
|
Defines an alias representing the base.
|
|
*/
|
|
typedef touchgfx::DMA_Interface Base;
|
|
|
|
public:
|
|
/**
|
|
* @fn STM32F7DMA::STM32F7DMA();
|
|
*
|
|
* @brief Default constructor.
|
|
*
|
|
* Default constructor.
|
|
*/
|
|
STM32F7DMA();
|
|
|
|
/**
|
|
* @fn STM32F7DMA::~STM32F7DMA();
|
|
*
|
|
* @brief Destructor.
|
|
*
|
|
* Destructor.
|
|
*/
|
|
virtual ~STM32F7DMA();
|
|
|
|
/**
|
|
* @fn DMAType touchgfx::STM32F7DMA::getDMAType()
|
|
*
|
|
* @brief Function for obtaining the DMA type of the concrete DMA_Interface implementation.
|
|
*
|
|
* Function for obtaining the DMA type of the concrete DMA_Interface implementation.
|
|
* As default, will return DMA_TYPE_CHROMART type value.
|
|
*
|
|
* @return a DMAType value of the concrete DMA_Interface implementation.
|
|
*/
|
|
virtual touchgfx::DMAType getDMAType(void)
|
|
{
|
|
return touchgfx::DMA_TYPE_CHROMART;
|
|
}
|
|
|
|
/**
|
|
* @fn touchgfx::BlitOperations STM32F7DMA::getBlitCaps();
|
|
*
|
|
* @brief Gets the blit capabilities.
|
|
*
|
|
* Gets the blit capabilities.
|
|
*
|
|
* This DMA supports a range of blit caps: BLIT_OP_COPY, BLIT_OP_COPY_ARGB8888,
|
|
* BLIT_OP_COPY_ARGB8888_WITH_ALPHA, BLIT_OP_COPY_A4, BLIT_OP_COPY_A8.
|
|
*
|
|
*
|
|
* @return Currently supported blitcaps.
|
|
*/
|
|
virtual touchgfx::BlitOperations getBlitCaps();
|
|
|
|
/**
|
|
* @fn void STM32F7DMA::initialize();
|
|
*
|
|
* @brief Perform hardware specific initialization.
|
|
*
|
|
* Perform hardware specific initialization.
|
|
*/
|
|
virtual void initialize();
|
|
|
|
/**
|
|
* @fn void STM32F7DMA::signalDMAInterrupt()
|
|
*
|
|
* @brief Raises a DMA interrupt signal.
|
|
*
|
|
* Raises a DMA interrupt signal.
|
|
*/
|
|
virtual void signalDMAInterrupt()
|
|
{
|
|
executeCompleted();
|
|
}
|
|
|
|
protected:
|
|
/**
|
|
* @fn virtual void STM32F7DMA::setupDataCopy(const touchgfx::BlitOp& blitOp);
|
|
*
|
|
* @brief Configures the DMA for copying data to the frame buffer.
|
|
*
|
|
* Configures the DMA for copying data to the frame buffer.
|
|
*
|
|
* @param blitOp Details on the copy to perform.
|
|
*/
|
|
virtual void setupDataCopy(const touchgfx::BlitOp& blitOp);
|
|
|
|
/**
|
|
* @fn virtual void STM32F7DMA::setupDataFill(const touchgfx::BlitOp& blitOp);
|
|
*
|
|
* @brief Configures the DMA for "filling" the frame-buffer with a single color.
|
|
*
|
|
* Configures the DMA for "filling" the frame-buffer with a single color.
|
|
*
|
|
* @param blitOp Details on the "fill" to perform.
|
|
*/
|
|
virtual void setupDataFill(const touchgfx::BlitOp& blitOp);
|
|
|
|
private:
|
|
touchgfx::LockFreeDMA_Queue dma_queue;
|
|
touchgfx::BlitOp queue_storage[96];
|
|
|
|
/**
|
|
* @fn void STM32F7DMA::getChromARTInputFormat()
|
|
*
|
|
* @brief Convert Bitmap format to ChromART Input format.
|
|
*
|
|
* @param format Bitmap format.
|
|
*
|
|
* @return ChromART Input format.
|
|
*/
|
|
|
|
inline uint32_t getChromARTInputFormat(touchgfx::Bitmap::BitmapFormat format);
|
|
|
|
/**
|
|
* @fn void STM32F7DMA::getChromARTOutputFormat()
|
|
*
|
|
* @brief Convert Bitmap format to ChromART Output format.
|
|
*
|
|
* @param format Bitmap format.
|
|
*
|
|
* @return ChromART Output format.
|
|
*/
|
|
inline uint32_t getChromARTOutputFormat(touchgfx::Bitmap::BitmapFormat format);
|
|
};
|
|
|
|
#endif // STM32F7DMA_HPP
|
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|