#ifndef _CODEC_IIS_H_
#define _CODEC_IIS_H_

#include "platform.h"
#include "hal_headfile.h"
#include "debug.h"
#include "audio.h"
#include "config.h"
#include "codec_iis.h"

typedef struct iis_init_struct_t
{
    asi_master_mode_t       mode;           /**ASI_MASTER_MODE or ASI_SLAVE_MODE **/
    asi_sample_bit_t        fifo_width;     /** ASI_FIFO_WIDTH_16BITS、ASI_FIFO_WIDTH_24BITS、ASI_FIFO_WIDTH_32BITS **/
    asi_data_mode_t         data_mode;
    asi_tx_src_t            tx_stc_t;
    asi_rx_src_t            rx_stc_t;
    int asi_sample_rate;
} iis_init_struct_t;

typedef union audio_asi_handle_typedef_t
{
    asi_handle_typedef_t    audio_iis;
    iis_init_struct_t       iis_init_struct;

} audio_asi_handle_typedef_t;

typedef struct audio_asi_handle_t
{
    audio_asi_handle_typedef_t  *init_struct;
    DMA_HandleTypeDef           *dma_tx_handle; /*!< Pointer DMA Handler */
    DMA_HandleTypeDef           *dma_rx_handle;
    audio_state_type_def        state;
    uint32_t                    err_code;
} audio_asi_handle_t;


void iis_tx_data_half_cplt(DMA_HandleTypeDef dma, void *param);
void iis_tx_data_full_cplt(DMA_HandleTypeDef dma, void *param);

void iis_rx_data_half_cplt(DMA_HandleTypeDef dma, void *param);
void iis_rx_data_full_cplt(DMA_HandleTypeDef dma, void *param);

void audio_iis_init(void);
void iis_dma_init(void);




#endif /* _CODEC_IIS_H_ */
