int main() { int main(void) { alt_up_audio_dev * audio_dev; /* used for audio record/playback */ unsigned int l_buf; unsigned int r_buf; // open the Audio port audio_dev = alt_up_audio_open_dev ("/dev/Audio"); if ( audio_dev == NULL) alt_printf ("Error: could not open audio device \n"); else alt_printf ("Opened audio device \n"); /* read and echo audio data */ while(1) { int fifospace = alt_up_audio_read_fifo_avail (audio_dev, ALT_UP_AUDIO_RIGHT); if ( fifospace > 0 ) // check if data is available { // read audio buffer alt_up_audio_read_fifo (audio_dev, &(r_buf), 1, ALT_UP_AUDIO_RIGHT); alt_up_audio_read_fifo (audio_dev, &(l_buf), 1, ALT_UP_AUDIO_LEFT); // write audio buffer alt_up_audio_write_fifo (audio_dev, &(r_buf), 1, ALT_UP_AUDIO_RIGHT); alt_up_audio_write_fifo (audio_dev, &(l_buf), 1, ALT_UP_AUDIO_LEFT); } } }
/* Checks if the read FIFO for the left channel has at least BUF_THRESHOLD data words * available. If it doesn't, then just returns 0. If it does, then data is read from the * FIFO up to a maximum of len words, and stored into buf. */ unsigned int alt_up_audio_record_l(alt_up_audio_dev *audio, unsigned int *buf, int len) { unsigned int data_words = alt_up_audio_read_fifo_avail (audio, ALT_UP_AUDIO_LEFT); if (data_words <= BUF_THRESHOLD) return 0; else return (alt_up_audio_read_fifo(audio, buf, len, ALT_UP_AUDIO_LEFT)); }
void audioSampling(void) { int fifospaceR,fifospaceL; U32 ptrIndexL=0,ptrIndexR=0; while(ptrIndexL<AUDIO_SAMPLING_MAX_DATA||ptrIndexR<AUDIO_SAMPLING_MAX_DATA) { fifospaceL=alt_up_audio_read_fifo_avail(audio_dev,ALT_UP_AUDIO_LEFT); if(fifospaceL>100&&ptrIndexL<AUDIO_SAMPLING_MAX_DATA) { alt_up_audio_read_fifo(audio_dev,&audioSamplingLData[ptrIndexL],100, ALT_UP_AUDIO_LEFT); ptrIndexL+=100; } fifospaceR=alt_up_audio_read_fifo_avail(audio_dev,ALT_UP_AUDIO_RIGHT); if(fifospaceR>100&&ptrIndexR<AUDIO_SAMPLING_MAX_DATA) { alt_up_audio_read_fifo(audio_dev,&audioSamplingRData[ptrIndexR],100, ALT_UP_AUDIO_RIGHT); ptrIndexR+=100; } } }