/*
 * Code generated from Atmel Start.
 *
 * This file will be overwritten when reconfiguring your Atmel Start project.
 * Please copy examples or other code you want to keep to a separate file
 * to avoid losing it when reconfiguring.
 */
#ifndef DRIVER_INIT_INCLUDED
#define DRIVER_INIT_INCLUDED

#include "atmel_start_pins.h"

#ifdef __cplusplus
extern "C" {
#endif

#include <hal_atomic.h>
#include <hal_delay.h>
#include <hal_gpio.h>
#include <hal_init.h>
#include <hal_io.h>
#include <hal_sleep.h>

#include <hal_adc_async.h>
#include <hal_adc_async.h>

#include <hal_custom_logic.h>

#include <hal_ext_irq.h>

#include <hal_evsys.h>

#include <hal_pdec_async.h>

#include <hal_spi_m_dma.h>
#include <tc_lite.h>
#include <tc_lite.h>
#include <tcc_lite.h>
#include <tcc_lite.h>

extern struct adc_async_descriptor ADC_0;
extern struct adc_async_descriptor ADC_1;

extern struct pdec_async_descriptor POSITION_DECODER_0;

extern struct spi_m_dma_descriptor SPI_0;

void ADC_0_init(void);

void ADC_1_init(void);

void DIGITAL_GLUE_LOGIC_0_PORT_init(void);
void DIGITAL_GLUE_LOGIC_0_CLOCK_init(void);
void DIGITAL_GLUE_LOGIC_0_init(void);

void POSITION_DECODER_0_PORT_init(void);
void POSITION_DECODER_0_CLOCK_init(void);
void POSITION_DECODER_0_init(void);

void SPI_0_PORT_init(void);
void SPI_0_CLOCK_init(void);
void SPI_0_init(void);

void TC_SPEED_CLOCK_init(void);

int8_t TC_SPEED_init(void);

void TC_ECAT_CLOCK_init(void);

int8_t TC_ECAT_init(void);

void TCC_PWM2_CLOCK_init(void);

void TCC_PWM2_PORT_init(void);

int8_t TCC_PWM2_init(void);

void TCC_PWM_CLOCK_init(void);

void TCC_PWM_PORT_init(void);

int8_t TCC_PWM_init(void);

/**
 * \brief Perform system initialization, initialize pins and clocks for
 * peripherals
 */
void system_init(void);

#ifdef __cplusplus
}
#endif
#endif // DRIVER_INIT_INCLUDED
