#include "dac_wav.h"

/**定时器驱动播放线程**/
AT(.com_text.isr)
void timer3_isq(void)
{
    static uint8_t test_flag = 0;
    if (tmr_get_flag(TMR3, TMR_FLAG_UPDATE2) != RESET) {
        tmr_clear_flag(TMR3, TMR_FLAG_UPDATE2);
        wav_res_play_user_kick();
    }
}

void timer3_init(u32 period)
{
    tmr_base_init_typedef tmr_base_init_struct;

    clock_gate1_cmd(CLOCK_GATE1_TMR3, ENABLE);

    tmr_base_init_struct.clock_source = TMR_INC_SOURCE;
    tmr_base_init_struct.increase_clock = TMR_COUNTER_RISING;
    tmr_base_init_struct.period = period;
    tmr_base_init_struct.pwm_mode = TMR_PWM_MODE_NULL;

    tmr_base_init(TMR3, &tmr_base_init_struct);

    tmr_pic_config(TMR3, timer3_isq, 0, TMR_IT_UPDATE2, ENABLE);

    tmr_cmd(TMR3, ENABLE);
}
/************************/

/**测试函数**/
void gpio_input_init(void)
{
    gpio_init_typedef gpio_init_structure;

    gpio_init_structure.gpio_pin = GPIO_PIN_5;
    gpio_init_structure.gpio_dir = GPIO_DIR_INPUT;
    gpio_init_structure.gpio_fen = GPIO_FEN_GPIO;
    gpio_init_structure.gpio_mode = GPIO_MODE_DIGITAL;
    gpio_init_structure.gpio_pupd = GPIO_PUPD_UP;

    gpio_init(GPIOB_REG, &gpio_init_structure);
}
/**音频初始化函数**/
void dac_wav_init(void)
{
    dac_init();
    dacr_output(1); //DAC0固定输出高电平
    sys_cb.vol = 10;    //默认音量10
    gpio_input_init();
}

u8 selector=0;
void my_dac_wav_example(void)
{
    if (!wav_res_is_play()) //音频播放完后，返回0，此时才会进入下一条的播放
    {
        switch (selector)
        {
            case 1:
                wav_res_play_user_init(RES_BUF_WAV_1234_NEWNEW_WAV,RES_LEN_WAV_1234_NEWNEW_WAV);
                printf("running...%d",selector);
                break;
            case 2:
                wav_res_play_user_init(RES_BUF_WAV_123_NEWNEW_WAV,RES_LEN_WAV_123_NEWNEW_WAV);
                printf("running...%d",selector);
                break;
            default:
                break;
        }
    }

    if (gpio_read_bit(GPIOB_REG, GPIO_PIN_5) == RESET)
    {
        selector = 2;
    }
    else
    {
        selector = 1;
    }
}
