/*▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
   stdio_dma.h: Standard I/O with DMA-UART Header File

   Copyright (C) 2025 TechQI<techqi@126.com>

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓*/

#ifndef __STDIO_DMA_H__
#define __STDIO_DMA_H__

#include "CommCHIPConfig.h"

#ifdef configDMA_STDIO_UART_TX

#ifndef configDMA_STDIO_UART_TX_SIZE
#define configDMA_STDIO_UART_TX_SIZE 64
#endif // !configDMA_STDIO_UART_TX_SIZE

#if (configDMA_STDIO_UART_TX_PORT == 1)
#define DMA_UART_TX_TXAH   DMA_UR1T_TXAH
#define DMA_UART_TX_TXAL   DMA_UR1T_TXAL
#define DMA_UART_TX_AMNT   DMA_UR1T_AMT
#define DMA_UART_TX_DONE   DMA_UR1T_DONE
#define DMA_UART_TX_CONF   DMA_UR1T_CFG
#define DMA_UART_TX_CTRL   DMA_UR1T_CR
#define DMA_UART_TX_STAT   DMA_UR1T_STA
#define VECTOR_DMA_UART_TX VECTOR_DMA_UR1T
#elif (configDMA_STDIO_UART_TX_PORT == 2)
#define DMA_UART_TX_TXAH   DMA_UR2T_TXAH
#define DMA_UART_TX_TXAL   DMA_UR2T_TXAL
#define DMA_UART_TX_AMNT   DMA_UR2T_AMT
#define DMA_UART_TX_DONE   DMA_UR2T_DONE
#define DMA_UART_TX_CONF   DMA_UR2T_CFG
#define DMA_UART_TX_CTRL   DMA_UR2T_CR
#define DMA_UART_TX_STAT   DMA_UR2T_STA
#define VECTOR_DMA_UART_TX VECTOR_DMA_UR2T
#elif (configDMA_STDIO_UART_TX_PORT == 3)
#define DMA_UART_TX_TXAH   DMA_UR3T_TXAH
#define DMA_UART_TX_TXAL   DMA_UR3T_TXAL
#define DMA_UART_TX_AMNT   DMA_UR3T_AMT
#define DMA_UART_TX_DONE   DMA_UR3T_DONE
#define DMA_UART_TX_CONF   DMA_UR3T_CFG
#define DMA_UART_TX_CTRL   DMA_UR3T_CR
#define DMA_UART_TX_STAT   DMA_UR3T_STA
#define VECTOR_DMA_UART_TX VECTOR_DMA_UR3T
#elif (configDMA_STDIO_UART_TX_PORT == 4)
#define DMA_UART_TX_TXAH   DMA_UR4T_TXAH
#define DMA_UART_TX_TXAL   DMA_UR4T_TXAL
#define DMA_UART_TX_AMNT   DMA_UR4T_AMT
#define DMA_UART_TX_DONE   DMA_UR4T_DONE
#define DMA_UART_TX_CONF   DMA_UR4T_CFG
#define DMA_UART_TX_CTRL   DMA_UR4T_CR
#define DMA_UART_TX_STAT   DMA_UR4T_STA
#define VECTOR_DMA_UART_TX VECTOR_DMA_UR4T
#else
#error "Invalid configDMA_STDIO_UART_TX_PORT value."
#endif

void vInitalizeUart(void);
void vDmaUartTxISR(void) __interrupt(VECTOR_DMA_UART_TX);

#endif // configDMA_STDIO_UART_TX

#endif // !__STDIO_DMA_H__
