ref: a80af55313ca99a442b2574dd53ebedfb9e736fc
dir: /LEAF/Inc/audiostream.h/
/** ****************************************************************************** * @file Audio_playback_and_record/inc/waveplayer.h * @author MCD Application Team * @version V1.1.0 * @date 26-June-2014 * @brief Header for waveplayer.c module. ****************************************************************************** * @attention * * <h2><center>© COPYRIGHT(c) 2014 STMicroelectronics</center></h2> * * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.st.com/software_license_agreement_liberty_v2 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __AUDIOSTREAM_H #define __AUDIOSTREAM_H /* Includes ------------------------------------------------------------------*/ #include "stm32h7xx_hal.h" #include "leaf.h" #include "main.h" #define AUDIO_FRAME_SIZE 128 #define HALF_BUFFER_SIZE AUDIO_FRAME_SIZE * 2 //number of samples per half of the "double-buffer" (twice the audio frame size because there are interleaved samples for both left and right channels) #define AUDIO_BUFFER_SIZE AUDIO_FRAME_SIZE * 4 //number of samples in the whole data structure (four times the audio frame size because of stereo and also double-buffering/ping-ponging) extern int32_t audioOutBuffer[AUDIO_BUFFER_SIZE]; extern int32_t audioInBuffer[AUDIO_BUFFER_SIZE]; extern tMempool smallPool; extern tMempool largePool; extern uint8_t codecReady; extern float sample; extern float rightOut; extern float rightIn; extern tRamp adc[6]; extern float smoothedADC[6]; extern float audioDisplayBuffer[128]; extern uint8_t displayBufferIndex; /* Exported types ------------------------------------------------------------*/ typedef enum { BUFFER_OFFSET_NONE = 0, BUFFER_OFFSET_HALF, BUFFER_OFFSET_FULL, }BUFFER_StateTypeDef; #ifdef SAMPLERATE96K #define SAMPLE_RATE 96000.f #else #define SAMPLE_RATE 48000.f #endif typedef enum BOOL { FALSE = 0, TRUE } BOOL; #define INV_SAMPLE_RATE 1.f/SAMPLE_RATE #define SAMPLE_RATE_MS (SAMPLE_RATE / 1000.f) #define INV_SR_MS 1.f/SAMPLE_RATE_MS #define SAMPLE_RATE_DIV_PARAMS SAMPLE_RATE / 3 #define SAMPLE_RATE_DIV_PARAMS_MS (SAMPLE_RATE_DIV_PARAMS / 1000.f) #define INV_SR_DIV_PARAMS_MS 1.f/SAMPLE_RATE_DIV_PARAMS_MS /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ void audioInit(I2C_HandleTypeDef* hi2c, SAI_HandleTypeDef* hsaiOut, SAI_HandleTypeDef* hsaiIn); void initFunctionPointers(void); void audioFrame(uint16_t buffer_offset); void DMA1_TransferCpltCallback(DMA_HandleTypeDef *hdma); void DMA1_HalfTransferCpltCallback(DMA_HandleTypeDef *hdma); #endif /* __AUDIOSTREAM_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/