Not well confirmed

Dependencies:   mbed shimabara unzen_quickstart_lpc4088

main.cpp

Committer:
shorie
Date:
2016-06-11
Revision:
0:2bfb84d07f90

File content as of revision 0:2bfb84d07f90:

#include "unzen.h"          // audio framework include file
#include "umb_adau1361a.h"     // audio codec contoler include file
#include "mbed.h"

#define CODEC_I2C_ADDR 0x38

    // for debug
DigitalOut myled1(LED1);



    // customer signal processing initialization call back.
void init_callback(
            unsigned int block_size     // block size [sample]
            )
{
        // place initialization code here
}


    // customer signal processing call back.
void process_callback(
            float rx_left_buffer[],     // array of the left input samples
            float rx_right_buffer[],    // array of the right input samples
            float tx_left_buffer[],     // place to write the left output samples
            float tx_right_buffer[],    // place to write the left output samples
            unsigned int block_size     // block size [sample]
            )
{
        // Sample processing
    for ( int i=0; i<block_size; i++)   // for all sample
    {
        tx_left_buffer[i] = rx_left_buffer[i];      // copy from input to output
        tx_right_buffer[i] = rx_right_buffer[i];
        
    }
}


int main() 
{    
        // I2C is essential to talk with ADAU1361
    I2C i2c(p32, p31);  // SDA, SDC of LPC4088 I2C0

        // create an audio codec contoler
    shimabara::UMB_ADAU1361A codec(shimabara::Fs_32, i2c, CODEC_I2C_ADDR ); // 
//    shimabara::UMB_ADAU1361A codec(shimabara::Fs_441, i2c, CODEC_I2C_ADDR );
//    shimabara::UMB_ADAU1361A codec(shimabara::Fs_48, i2c, CODEC_I2C_ADDR );
//    shimabara::UMB_ADAU1361A codec(shimabara::Fs_96, i2c, CODEC_I2C_ADDR );

       // create an audio framework by singlton pattern
    unzen::Framework audio;
 
         /* Set I3C clock to 100kHz*/
    i2c.frequency( 100000 );


        /* Configure the optional block size of signal processing. By default, it is 1[Sample] */ 
//    audio.set_block_size(4);

        /* for debug. Optional pre/post call backs. This block can be removed in the real application */

//    audio.set_pre_interrupt_callback(pre_int);
//    audio.set_post_interrupt_callback(post_int);
//    audio.set_pre_process_callback(pre_proc);
//    audio.set_post_process_callback(post_proc);


    
        /* Start the ADAU1361. Audio codec starts to generate the I2C signals  */
   codec.start();

        /* Start the audio framework on ARM processor.  */ 
   audio.start( init_callback, process_callback);     // path the initializaiton and process call back to framework 

   
    
    codec.set_hp_output_gain( 0, 0 );
    
    while(1)     
    {
        for ( int i=-15; i<4; i++ )
        {
            codec.set_hp_output_gain( i, i );
            codec.set_line_output_gain( i, i );
            myled1 = 1;
            wait(0.25);
            myled1 = 0;
            wait(0.25);
         }
    }
}



//*************** debug functions ******************