#include <f4ll/console_handler.h>
#include <f4ll/crc_handler.h>
#include <f4ll/memcpy_dma.h>

#include <config.h>
#include <globals.h>
#include <irq_bridge.h>

void usart1_rx_dma_isr(void)
{
    f4ll::packet_usart::rx_dma_isr(g_usarts[USART1_OFFSET]);
}

void usart1_tx_dma_isr(void)
{
    f4ll::packet_usart::tx_dma_isr(g_usarts[USART1_OFFSET]);
}
void usart1_isr(void)
{
    f4ll::packet_usart::usart_isr(g_usarts[USART1_OFFSET]);
}

//
void usart2_rx_dma_isr(void)
{
    f4ll::packet_usart::rx_dma_isr(g_usarts[USART2_OFFSET]);
}

void usart2_tx_dma_isr(void)
{
    f4ll::packet_usart::tx_dma_isr(g_usarts[USART2_OFFSET]);
}
void usart2_isr(void)
{
    f4ll::packet_usart::usart_isr(g_usarts[USART2_OFFSET]);
}

//
void usart3_rx_dma_isr(void)
{
    f4ll::packet_usart::rx_dma_isr(g_usarts[USART3_OFFSET]);
}

void usart3_tx_dma_isr(void)
{
    f4ll::packet_usart::tx_dma_isr(g_usarts[USART3_OFFSET]);
}
void usart3_isr(void)
{
    f4ll::packet_usart::usart_isr(g_usarts[USART3_OFFSET]);
}

//
void usart4_rx_dma_isr(void) {} //  console
void usart4_tx_dma_isr(void)
{
    f4ll::console_handler::tx_dma_isr(&f4ll::console_handler::instance());
} //  console
void usart4_isr(void)
{
    f4ll::console_handler::usart_isr(&f4ll::console_handler::instance());
}

//
void usart6_rx_dma_isr(void)
{
    f4ll::packet_usart::rx_dma_isr(g_usarts[USART6_OFFSET]);
}

void usart6_tx_dma_isr(void)
{
    f4ll::packet_usart::tx_dma_isr(g_usarts[USART6_OFFSET]);
}
void usart6_isr(void)
{
    f4ll::packet_usart::usart_isr(g_usarts[USART6_OFFSET]);
}

void m2m1_dma_isr(void)
{
    f4ll::memcpy_dma::instance().dma_transfer_completed();
} //  m2mcpy

void m2m2_dma_isr(void)
{
    f4ll::crc_handler::instance().dma_transfer_completed();
} //  crc
