314 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			314 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/****************************************************************************
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
							 | 
						||
| 
								 | 
							
								be copied by any method or incorporated into another program without
							 | 
						||
| 
								 | 
							
								the express written consent of Aerospace C.Power. This Information or any portion
							 | 
						||
| 
								 | 
							
								thereof remains the property of Aerospace C.Power. The Information contained herein
							 | 
						||
| 
								 | 
							
								is believed to be accurate and Aerospace C.Power assumes no responsibility or
							 | 
						||
| 
								 | 
							
								liability for its use in any way and conveys no license or title under
							 | 
						||
| 
								 | 
							
								any patent or copyright and makes no representation or warranty that this
							 | 
						||
| 
								 | 
							
								Information is free from patent or copyright infringement.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								****************************************************************************/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef IOT_MATRIX_API_H
							 | 
						||
| 
								 | 
							
								#define IOT_MATRIX_API_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** \defgroup AFFT_APIs AFFT APIs
							 | 
						||
| 
								 | 
							
								 *  @brief AFFT APIs
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** @addtogroup AFFT_APIs
							 | 
						||
| 
								 | 
							
								 * @{
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief Usage:
							 | 
						||
| 
								 | 
							
								    // AFFT apis are used for FFT calculation.
							 | 
						||
| 
								 | 
							
								    FFT size support 256, 512, 1024, 2048 read data, and 128, 256, 512, 1024
							 | 
						||
| 
								 | 
							
								    complex data.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // test case : calculate 2048 FFT, data format is low 24 bits valid.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // the pointer of input data
							 | 
						||
| 
								 | 
							
								    uint32_t *src = ...;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // the pointer of output data
							 | 
						||
| 
								 | 
							
								    uint32_t *dst = ...;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // the length of data
							 | 
						||
| 
								 | 
							
								    uint32_t data_len = ...;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // get fft/ifft result
							 | 
						||
| 
								 | 
							
								    iot_afft_real_fft(dst, src, 2048, AFFT_FMT_LOW_24BIT, AFFT_REAL_2048);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // another calling function:
							 | 
						||
| 
								 | 
							
								    uint32_t addr = iot_afft_get_address();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    iot_real_fft_cfg(AFFT_FMT_LOW_24BIT, AFFT_REAL_2048);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // move data into afft addr
							 | 
						||
| 
								 | 
							
								    ...;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // start
							 | 
						||
| 
								 | 
							
								    iot_afft_start();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // get the output data from afft addr
							 | 
						||
| 
								 | 
							
								    ...;
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief afft_data_fmt_t - input word format
							 | 
						||
| 
								 | 
							
								 * @param AFFT_FMT_LOW_24BIT    low 24 bit valid
							 | 
						||
| 
								 | 
							
								 * @param AFFT_FMT_HIGH_24BIT   high 24 bit valid
							 | 
						||
| 
								 | 
							
								 * @param AFFT_FMT_FLOAT_32BIT  32 bit valid
							 | 
						||
| 
								 | 
							
								 * @param AFFT_FMT_16BIT        data[0]: low 16 bit, data[1]: high 16 bit
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								/* [TODO]: KL3 need to adapt the previous program */
							 | 
						||
| 
								 | 
							
								typedef enum {
							 | 
						||
| 
								 | 
							
								    /* KL2 */
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_LOW_24BIT = 0,
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_HIGH_24BIT,
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_FLOAT_32BIT,
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_16BIT,
							 | 
						||
| 
								 | 
							
								    /* KL3 */
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_KL3_32BIT = 0,
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_KL3_LOW_28BIT,
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_KL3_FLOAT_32BIT,
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_KL3_DOUBLE_16BIT_0,  //high 16bits is data1, low 16bits is data0
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_KL3_LOW_24BIT,
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_KL3_LOW_20BIT,
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_KL3_LOW_18BIT,
							 | 
						||
| 
								 | 
							
								    AFFT_FMT_KL3_DOUBLE_16BIT_1,  //high 16bits is data0, low 16bits is data1
							 | 
						||
| 
								 | 
							
								} afft_data_fmt_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef enum {
							 | 
						||
| 
								 | 
							
								    AFFT_REAL_256 = 0,
							 | 
						||
| 
								 | 
							
								    AFFT_REAL_512,
							 | 
						||
| 
								 | 
							
								    AFFT_REAL_1024,
							 | 
						||
| 
								 | 
							
								    AFFT_REAL_2048,
							 | 
						||
| 
								 | 
							
								    AFFT_REAL_64,
							 | 
						||
| 
								 | 
							
								    AFFT_REAL_128,
							 | 
						||
| 
								 | 
							
								} afft_real_mode_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef enum {
							 | 
						||
| 
								 | 
							
								    AFFT_COMPLEX_128 = 0,
							 | 
						||
| 
								 | 
							
								    AFFT_COMPLEX_256,
							 | 
						||
| 
								 | 
							
								    AFFT_COMPLEX_512,
							 | 
						||
| 
								 | 
							
								    AFFT_COMPLEX_1024,
							 | 
						||
| 
								 | 
							
								    AFFT_COMPLEX_32,
							 | 
						||
| 
								 | 
							
								    AFFT_COMPLEX_64,
							 | 
						||
| 
								 | 
							
								} afft_complex_mode_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef enum {
							 | 
						||
| 
								 | 
							
								    AFFT_WIN_RECTANGULAR = 0,
							 | 
						||
| 
								 | 
							
								    AFFT_WIN_HANNING,
							 | 
						||
| 
								 | 
							
								    AFFT_WIN_HAMMING,
							 | 
						||
| 
								 | 
							
								} afft_win_sel_t;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_afft_real_fft() - calculate real data fft
							 | 
						||
| 
								 | 
							
								                        input format as below:
							 | 
						||
| 
								 | 
							
								                        0       31 0      31 0 ...  31 0      31
							 | 
						||
| 
								 | 
							
								                        |---------|---------|---------|---------|
							 | 
						||
| 
								 | 
							
								                        | real[0] | real[1] |   ...   | real[n] |,
							 | 
						||
| 
								 | 
							
								                        data type is real, n is the number of input real data,
							 | 
						||
| 
								 | 
							
								                        support 256,512,1024,2048 FFT calculation, reference
							 | 
						||
| 
								 | 
							
								                        to afft_real_mode_t struct.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                        Output format as below:
							 | 
						||
| 
								 | 
							
								                        0       31 0      31 0 ...  31 0      31 0      31
							 | 
						||
| 
								 | 
							
								                        |---------|---------|---------|---------|---------|
							 | 
						||
| 
								 | 
							
								                        | real[0] | imag[1] |   ...   | real[m] | imag[m] |,
							 | 
						||
| 
								 | 
							
								                        ouput complex data, include real and imaginary part.
							 | 
						||
| 
								 | 
							
								                        m is the number of complex data, m = n/2.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 * @param dst           the destination pointer of FFT
							 | 
						||
| 
								 | 
							
								 * @param src           the source pointer of real data
							 | 
						||
| 
								 | 
							
								 * @param len           the length of source data, uint is word
							 | 
						||
| 
								 | 
							
								 * @param bit           the format of data, reference to afft_data_fmt_t
							 | 
						||
| 
								 | 
							
								 * @param mode          the mode of TTF, reference to afft_real_mode_t
							 | 
						||
| 
								 | 
							
								 * @param stage         the right shift bits of twiddle stage
							 | 
						||
| 
								 | 
							
								 * @param lsf_in        the left-shift bits of fft/ifft input
							 | 
						||
| 
								 | 
							
								 * @param rsf_out       the right-shift bits of fft/ifft output
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_afft_real_fft(uint32_t *dst, uint32_t *src, uint32_t len,
							 | 
						||
| 
								 | 
							
								        uint8_t bit, uint8_t mode, uint8_t stage, uint8_t lsf_in, uint8_t rsf_out);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_afft_real_ifft() - calculate real data ifft
							 | 
						||
| 
								 | 
							
								                        input format as below:
							 | 
						||
| 
								 | 
							
								                        0       31 0      31 0 ...  31 0      31
							 | 
						||
| 
								 | 
							
								                        |---------|---------|---------|---------|
							 | 
						||
| 
								 | 
							
								                        | real[0] | real[1] |   ...   | real[n] |,
							 | 
						||
| 
								 | 
							
								                        data type is real, n is the number of input real data,
							 | 
						||
| 
								 | 
							
								                        support 256,512,1024,2048 FFT calculation, reference
							 | 
						||
| 
								 | 
							
								                        to afft_real_mode_t struct.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                        Output format as below:
							 | 
						||
| 
								 | 
							
								                        0       31 0      31 0 ...  31 0      31 0      31
							 | 
						||
| 
								 | 
							
								                        |---------|---------|---------|---------|---------|
							 | 
						||
| 
								 | 
							
								                        | real[0] | imag[1] |   ...   | real[m] | imag[m] |,
							 | 
						||
| 
								 | 
							
								                        ouput complex data, include real and imaginary part.
							 | 
						||
| 
								 | 
							
								                        m is the number of complex data, m = n/2.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 * @param dst           the destination pointer of IFFT
							 | 
						||
| 
								 | 
							
								 * @param src           the source pointer of real data
							 | 
						||
| 
								 | 
							
								 * @param len           the length of source data, uint is word
							 | 
						||
| 
								 | 
							
								 * @param bit           the format of data, reference to afft_data_fmt_t
							 | 
						||
| 
								 | 
							
								 * @param mode          the mode of TTF, reference to afft_real_mode_t
							 | 
						||
| 
								 | 
							
								 * @param stage         the right shift bits of twiddle stage
							 | 
						||
| 
								 | 
							
								 * @param lsf_in        the left-shift bits of fft/ifft input
							 | 
						||
| 
								 | 
							
								 * @param rsf_out       the right-shift bits of fft/ifft output
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_afft_real_ifft(uint32_t *dst, uint32_t *src, uint32_t len,
							 | 
						||
| 
								 | 
							
								        uint8_t bit, uint8_t mode, uint8_t stage, uint8_t lsf_in, uint8_t rsf_out);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_afft_complex_fft() - calculate complex data fft
							 | 
						||
| 
								 | 
							
								                        input format as below:
							 | 
						||
| 
								 | 
							
								                        0       31 0      31 0 ...  31 0      31 0      31
							 | 
						||
| 
								 | 
							
								                        |---------|---------|---------|---------|---------|
							 | 
						||
| 
								 | 
							
								                        | real[0] | imag[1] |   ...   | real[n] | imag[n] |,
							 | 
						||
| 
								 | 
							
								                        data type is complex,n is the number of input real data,
							 | 
						||
| 
								 | 
							
								                        support 128,256,512,1024 FFT calculation, reference
							 | 
						||
| 
								 | 
							
								                        to afft_complex_mode_t struct.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                        Output format as below:
							 | 
						||
| 
								 | 
							
								                        0       31 0      31 0 ...  31 0      31 0      31
							 | 
						||
| 
								 | 
							
								                        |---------|---------|---------|---------|---------|
							 | 
						||
| 
								 | 
							
								                        | real[0] | imag[1] |   ...   | real[m] | imag[m] |,
							 | 
						||
| 
								 | 
							
								                        ouput complex data, include real and imaginary part.
							 | 
						||
| 
								 | 
							
								                        m is the number of complex data, m = n.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 * @param dst           the destination pointer of FFT
							 | 
						||
| 
								 | 
							
								 * @param src           the source pointer of complex data
							 | 
						||
| 
								 | 
							
								 * @param len           the length of source data, uint is word
							 | 
						||
| 
								 | 
							
								 * @param bit           the format of data, reference to afft_data_fmt_t
							 | 
						||
| 
								 | 
							
								 * @param mode          the mode of TTF, reference to afft_complex_mode_t
							 | 
						||
| 
								 | 
							
								 * @param stage         the right shift bits of twiddle stage
							 | 
						||
| 
								 | 
							
								 * @param lsf_in        the left-shift bits of fft/ifft input
							 | 
						||
| 
								 | 
							
								 * @param rsf_out       the right-shift bits of fft/ifft output
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_afft_complex_fft(uint32_t *dst, uint32_t *src, uint32_t len,
							 | 
						||
| 
								 | 
							
								        uint8_t bit, uint8_t mode, uint8_t stage, uint8_t lsf_in, uint8_t rsf_out);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_afft_complex_ifft() - calculate complex data ifft
							 | 
						||
| 
								 | 
							
								                        input format as below:
							 | 
						||
| 
								 | 
							
								                        0       31 0      31 0 ...  31 0      31 0      31
							 | 
						||
| 
								 | 
							
								                        |---------|---------|---------|---------|---------|
							 | 
						||
| 
								 | 
							
								                        | real[0] | imag[1] |   ...   | real[n] | imag[n] |,
							 | 
						||
| 
								 | 
							
								                        data type is complex,n is the number of input real data,
							 | 
						||
| 
								 | 
							
								                        support 128,256,512,1024 FFT calculation, reference
							 | 
						||
| 
								 | 
							
								                        to afft_complex_mode_t struct.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                        Output format as below:
							 | 
						||
| 
								 | 
							
								                        0       31 0      31 0 ...  31 0      31 0      31
							 | 
						||
| 
								 | 
							
								                        |---------|---------|---------|---------|---------|
							 | 
						||
| 
								 | 
							
								                        | real[0] | imag[1] |   ...   | real[m] | imag[m] |,
							 | 
						||
| 
								 | 
							
								                        ouput complex data, include real and imaginary part.
							 | 
						||
| 
								 | 
							
								                        m is the number of complex data, m = n.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 * @param dst           the destination pointer of IFFT
							 | 
						||
| 
								 | 
							
								 * @param src           the source pointer of complex data
							 | 
						||
| 
								 | 
							
								 * @param len           the length of source data, uint is word
							 | 
						||
| 
								 | 
							
								 * @param bit           the format of data, reference to afft_data_fmt_t
							 | 
						||
| 
								 | 
							
								 * @param mode          the mode of TTF, reference to afft_complex_mode_t
							 | 
						||
| 
								 | 
							
								 * @param stage         the right shift bits of twiddle stage
							 | 
						||
| 
								 | 
							
								 * @param lsf_in        the left-shift bits of fft/ifft input
							 | 
						||
| 
								 | 
							
								 * @param rsf_out       the right-shift bits of fft/ifft output
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_afft_complex_ifft(uint32_t *dst, uint32_t *src, uint32_t len,
							 | 
						||
| 
								 | 
							
								        uint8_t bit, uint8_t mode, uint8_t stage, uint8_t lsf_in, uint8_t rsf_out);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void iot_afft_init();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_real_fft_cfg() - real data fft configuration
							 | 
						||
| 
								 | 
							
								 * @param bit           the format of data, reference to afft_data_fmt_t
							 | 
						||
| 
								 | 
							
								 * @param mode          the mode of TTF, reference to afft_real_mode_t
							 | 
						||
| 
								 | 
							
								 * @param stage         the right shift bits of twiddle stage
							 | 
						||
| 
								 | 
							
								 * @param lsf_in        the left-shift bits of fft/ifft input
							 | 
						||
| 
								 | 
							
								 * @param rsf_out       the right-shift bits of fft/ifft output
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_real_fft_cfg(uint8_t bit, uint8_t mode, uint8_t stage, uint8_t lsf_in, uint8_t rsf_out);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_real_ifft_cfg() - real data ifft configuration
							 | 
						||
| 
								 | 
							
								 * @param bit           the format of data, reference to afft_data_fmt_t
							 | 
						||
| 
								 | 
							
								 * @param mode          the mode of TTF, reference to afft_real_mode_t
							 | 
						||
| 
								 | 
							
								 * @param stage         the right shift bits of twiddle stage
							 | 
						||
| 
								 | 
							
								 * @param lsf_in        the left-shift bits of fft/ifft input
							 | 
						||
| 
								 | 
							
								 * @param rsf_out       the right-shift bits of fft/ifft output
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_real_ifft_cfg(uint8_t bit, uint8_t mode, uint8_t stage, uint8_t lsf_in, uint8_t rsf_out);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_complex_fft_cfg() - complex data fft configuration
							 | 
						||
| 
								 | 
							
								 * @param bit           the format of data, reference to afft_data_fmt_t
							 | 
						||
| 
								 | 
							
								 * @param mode          the mode of TTF, reference to afft_real_mode_t
							 | 
						||
| 
								 | 
							
								 * @param stage         the right shift bits of twiddle stage
							 | 
						||
| 
								 | 
							
								 * @param lsf_in        the left-shift bits of fft/ifft input
							 | 
						||
| 
								 | 
							
								 * @param rsf_out       the right-shift bits of fft/ifft output
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_complex_fft_cfg(uint8_t bit, uint8_t mode, uint8_t stage, uint8_t lsf_in, uint8_t rsf_out);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_complex_ifft_cfg() - complex data ifft configuration
							 | 
						||
| 
								 | 
							
								 * @param bit           the format of data, reference to afft_data_fmt_t
							 | 
						||
| 
								 | 
							
								 * @param mode          the mode of TTF, reference to afft_real_mode_t
							 | 
						||
| 
								 | 
							
								 * @param stage         the right shift bits of twiddle stage
							 | 
						||
| 
								 | 
							
								 * @param lsf_in        the left-shift bits of fft/ifft input
							 | 
						||
| 
								 | 
							
								 * @param rsf_out       the right-shift bits of fft/ifft output
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_complex_ifft_cfg(uint8_t bit, uint8_t mode, uint8_t stage, uint8_t lsf_in, uint8_t rsf_out);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_complex_fft_win() - select window
							 | 
						||
| 
								 | 
							
								 * @param win           window, see afft_win_sel_t
							 | 
						||
| 
								 | 
							
								 * @return ERR_OK - success; ERR_NOSUPP - not support
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint8_t iot_complex_fft_win(afft_win_sel_t win);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_afft_start() - start to run afft module
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_afft_start();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_afft_get_address() - get afft address to read or write
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 * @return              return the afft address
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint32_t iot_afft_get_address();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_afft_real_mode_id_get() - get afft mode id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 * @return              return the afft mode id, see afft_real_mode_t
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint8_t iot_afft_real_mode_id_get(uint32_t data_len);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief iot_afft_complex_mode_id_get() - get complex fft mode id
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 * @return              return the complex mode id, see afft_complex_mode_t
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint8_t iot_afft_complex_mode_id_get(uint32_t data_len);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif //IOT_AFFT_API_H
							 |