/*
 * Copyright (C) 2017-2019 Alibaba Group Holding Limited
 */

/******************************************************************************
 * @file     main.c
 * @brief    hello world
 * @version  V1.0
 * @date     17. Jan 2018
 ******************************************************************************/

#include <stdio.h>
#include <stdint.h>
#include <drv/uart.h>

#include "board_config.h"
#include "app_codec.h"
#include "app_queue.h"
#include "app_timer.h"
#include "app_algorithm.h"
#include "app_buffer.h"


#include "asr_config.h"

sys_console_t console;

/*
 *  关掉未用的IP
 */
void app_pmu_close_unused_ip(void)
{
#if DRV_GPIO_ENABLE == 0
	soc_clk_disable((clk_module_t)IOC_CLK);
	soc_clk_disable((clk_module_t)GPIO0_CLK);
#endif

#if DRV_TIMER_ENABLE == 0
	soc_clk_disable((clk_module_t)TIM0_CLK);
#endif
	soc_clk_disable((clk_module_t)TIM1_CLK);
	soc_clk_disable((clk_module_t)TIM2_CLK);
	soc_clk_disable((clk_module_t)TIM3_CLK);

#if DRV_WDT_ENABLE == 0
	soc_clk_disable((clk_module_t)WDT_CLK);
#endif

#if DRV_CODEC_ENABLE == 0
	soc_clk_disable((clk_module_t)CODEC_CLK);
#endif

#if DRV_IIS_ENABLE == 0
	soc_clk_disable((clk_module_t)I2S3_CLK);
	soc_clk_disable((clk_module_t)I2S2_CLK);
#endif
	soc_clk_disable((clk_module_t)I2S0_CLK);
	soc_clk_disable((clk_module_t)I2S1_CLK);
	soc_clk_disable((clk_module_t)I2S567_CLK);

#if DRV_FLASH_ENABLE == 0
	soc_clk_disable((clk_module_t)QSPI0_CLK);
#endif

#if DRV_ETB_ENABLE == 0
	soc_clk_disable((clk_module_t)ETB_CLK);
#endif

#if DRV_IIC_ENABLE == 0
	soc_clk_disable((clk_module_t)IIC0_CLK);
#endif

#if DRV_UART_ENABLE == 0
	soc_clk_disable((clk_module_t)UART0_CLK);
	soc_clk_disable((clk_module_t)UART1_CLK);
#endif

#if DRV_ADC_ENABLE == 0
	soc_clk_disable((clk_module_t)ADC_CLK);
#endif

#if DRV_EFUSE_ENABLE == 0
	soc_clk_disable((clk_module_t)EFUSE_CLK);
#endif

#if DRV_PWMR_ENABLE == 0
	soc_clk_disable((clk_module_t)PWMR_CLK);
#endif

#if DRV_PWM_ENABLE == 0
	soc_clk_disable((clk_module_t)PWM_CLK);
#endif

#if DRV_SPI_ENABLE == 0
	soc_clk_disable((clk_module_t)SPI0_CLK);
	soc_clk_disable((clk_module_t)SPI1_CLK);
#endif

#if DRV_RTC_ENABLE == 0
	soc_clk_disable((clk_module_t)RTC0_CLK);
#endif
}

void board_init(void)
{
	app_pmu_close_unused_ip();
#if APP_LOG_ENABLE
	console.uart_id = (unsigned int)CONSOLE_IDX; //设备id，串口只有两个id（0/1）
	//波特率设置
	//console.baudrate = 2400U;
	//console.baudrate = 9600U;
	//console.baudrate = 19200U;
	console.baudrate = 38400U;
	//console.baudrate = 115200U;
	console.tx.pin = CONSOLE_TXD;		//配置log输出引脚，默认PA23 （printf输出的数据就是通过PA23输出的）
	console.tx.func = CONSOLE_TXD_FUNC; //设置引脚功能，这里默认PA23 uart0
	console.rx.pin = CONSOLE_RXD;		//配置log输入引脚，默认PA24  （可以用作串口接收）
	console.rx.func = CONSOLE_RXD_FUNC; //设置引脚功能，这里默认PA24 uart0
	console.uart = NULL;				//没用，用不用管，留着，指向uart0句柄

	console_init(&console);
#endif

	app_gpio_init();
	app_uart_init();
	app_codec_init();
	app_algorithm_power_on_init();
	app_buffer_power_on_init();
	app_timer_init(0, 1, TIMER_CORE_TIMEOUT); //timer0, repeat
											  //app_wdt_init();
}
