SAI_IO class for using CODEC (MW8994) as analog input and output. このライブラリを登録した際のプログラム:「F746_AudioIO_Demo」

Dependencies:   Array_Matrix

Dependents:   F746_SD_WavPlayer F746_SD_GraphicEqualizer_ren0620 Joerg_turbo_ede CW_Decoder_using_FFT_on_DiscoF746NG ... more

Revision:
2:1aef7b703249
Parent:
1:48ed86c8430a
Child:
3:3bfdd8be834f
--- a/SAI_InOut.cpp	Mon May 09 08:32:03 2016 +0000
+++ b/SAI_InOut.cpp	Mon May 09 13:31:36 2016 +0000
@@ -22,12 +22,14 @@
             inOffset_ = 0;
             captured_ = false;
         }
-        outBuffer_ = new int16_t[(size*2)*2];
-        tmp_ = new int16_t[size*2];
-        tmpIndex_ = 0;
-        xferred_ = false;
-
-        ClearBuffer();
+        if (ioBoth != INPUT)
+        {
+            outBuffer_ = new int16_t[(size*2)*2];
+            tmp_ = new int16_t[size*2];
+            tmpIndex_ = 0;
+            xferred_ = false;
+            ClearBuffer();
+        }
         InitCodec(inputDevice);
     }
 
@@ -38,11 +40,12 @@
         if (IOBOTH_ != OUTPUT) delete[] inBuffer_;
     }
 
-    // Stop audio input
-    void SaiIO::StopAudioIn()
+    // Input start
+    void SaiIO::RecordIn()
     {
-        if (BSP_AUDIO_IN_Stop(CODEC_PDWN_SW) == AUDIO_ERROR)
-            ErrorTrap();    
+        if (BSP_AUDIO_IN_Record((uint16_t*)inBuffer_,
+                                bufferSize_) == AUDIO_ERROR)
+            ErrorTrap();
     }
 
     // Switching input device and run
@@ -72,10 +75,10 @@
 
     void SaiIO::PlayOut()
     {
+        ClearBuffer();
         if (BSP_AUDIO_OUT_Play((uint16_t *)outBuffer_,
                                bufferSize_*AUDIODATA_SIZE) == AUDIO_ERROR)
             ErrorTrap();
-        ClearBuffer();
     }
 
     bool SaiIO::IsXferred()
@@ -92,21 +95,6 @@
         tmp_[tmpIndex_++] = xR; // Right
     }
 
-    void SaiIO::Pause()
-    {
-        BSP_AUDIO_OUT_SetMute(AUDIO_MUTE_ON);
-        BSP_AUDIO_IN_Pause();
-        BSP_AUDIO_OUT_Pause();
-        ClearBuffer();
-    }
-
-    void SaiIO::Resume()
-    {
-        BSP_AUDIO_IN_Resume();
-        BSP_AUDIO_OUT_Resume();
-        BSP_AUDIO_OUT_SetMute(AUDIO_MUTE_OFF);
-    }
-
     void SaiIO::ErrorTrap()
     {
         DigitalOut led1(LED1);
@@ -149,10 +137,6 @@
     {
         NVIC_SetVector(AUDIO_IN_SAIx_DMAx_IRQ,
                        (uint32_t)AUDIO_IN_SAIx_DMAx_IRQHandler);
-
-        if (BSP_AUDIO_IN_Record((uint16_t*)inBuffer_,
-                                bufferSize_) == AUDIO_ERROR)
-            ErrorTrap();
     }
 
     void SaiIO::InitOutput()
@@ -166,8 +150,6 @@
         //      AUDIO_I2C_ADDRESS is defined in "stm32746g_discovery.h"
         AUDIO_IO_Write(AUDIO_I2C_ADDRESS, 0x1C, 0x17F); // 0x1C: R28 of WM8994
         AUDIO_IO_Write(AUDIO_I2C_ADDRESS, 0x1D, 0x17F); // 0x1D: R29 of WM8994
-
-        PlayOut();
     }
 
     void SaiIO::ClearBuffer()
@@ -202,3 +184,4 @@
     int16_t* SaiIO::tmp_;       
     __IO bool SaiIO::xferred_;
 }
+