diff options
-rw-r--r-- | src/common/includes/Audio/audio.h | 12 | ||||
-rw-r--r-- | src/common/sourcelist.txt | 2 | ||||
-rw-r--r-- | src/common/src/Audio/audio.c | 18 | ||||
-rw-r--r-- | src/glutt-o-logique/audio.c | 11 | ||||
-rw-r--r-- | src/glutt-o-logique/cw.c | 1 | ||||
-rw-r--r-- | src/simulator/src/Audio/audio.c | 36 | ||||
-rw-r--r-- | src/simulator/src/Audio/cw.c | 24 |
7 files changed, 79 insertions, 25 deletions
diff --git a/src/common/includes/Audio/audio.h b/src/common/includes/Audio/audio.h index 006f82e..6531879 100644 --- a/src/common/includes/Audio/audio.h +++ b/src/common/includes/Audio/audio.h @@ -6,6 +6,18 @@ typedef void AudioCallbackFunction(void *context,int buffer); +// Variables used by both glutt-o-logique and simulator +extern AudioCallbackFunction *callback_function; +extern void *callback_context; +extern int16_t *next_buffer_samples; +extern int next_buffer_length; +extern int buffer_number; +extern bool dma_running; + +void audio_initialize_platform(int plln, int pllr, int i2sdiv, int i2sodd, int rate); +void audio_start_dma_and_request_buffers(); +void audio_stop_dma(); + #define Audio8000HzSettings 256,5,12,1,8000 #define Audio16000HzSettings 213,2,13,0,16000 #define Audio32000HzSettings 213,2,6,1,32000 diff --git a/src/common/sourcelist.txt b/src/common/sourcelist.txt index 97cb298..4c85b65 100644 --- a/src/common/sourcelist.txt +++ b/src/common/sourcelist.txt @@ -1,3 +1,5 @@ src/GPIO/usart.c src/GPS/gps.c src/Core/common.c +src/Audio/cw.c +src/Audio/audio.c diff --git a/src/common/src/Audio/audio.c b/src/common/src/Audio/audio.c index 40f0e76..f68f867 100644 --- a/src/common/src/Audio/audio.c +++ b/src/common/src/Audio/audio.c @@ -26,18 +26,12 @@ #include <stdlib.h> -static void audio_write_register(uint8_t address, uint8_t value); -static void audio_start_dma_and_request_buffers(); -static void audio_stop_dma(); - -static AudioCallbackFunction *callback_function; -static void *callback_context; -static int16_t * volatile next_buffer_samples; -static volatile int next_buffer_length; -static volatile int buffer_number; -static volatile bool dma_running; - -void audio_initialize_platform(int plln, int pllr, int i2sdiv, int i2sodd, int rate); +AudioCallbackFunction *callback_function; +void *callback_context; +int16_t * next_buffer_samples; +int next_buffer_length; +int buffer_number; +bool dma_running; void audio_initialize(int plln, int pllr, int i2sdiv, int i2sodd, int rate) { diff --git a/src/glutt-o-logique/audio.c b/src/glutt-o-logique/audio.c index 87bd896..bf41169 100644 --- a/src/glutt-o-logique/audio.c +++ b/src/glutt-o-logique/audio.c @@ -23,10 +23,11 @@ */ #include "GPIO/i2c.h" +#include "Audio/audio.h" #include "stm32f4xx_conf.h" #include "stm32f4xx.h" -#include "../common/src/Audio/audio.c" +static void audio_write_register(uint8_t address, uint8_t value); void audio_initialize_platform(int plln, int pllr, int i2sdiv, int i2sodd, int rate) { @@ -164,7 +165,7 @@ void audio_stop() { audio_stop_dma(); SPI3 ->CR2 &= ~SPI_CR2_TXDMAEN; // Disable I2S TX DMA request. NVIC_DisableIRQ(DMA1_Stream7_IRQn); - callback_function = NULL; + callback_function = (AudioCallbackFunction*)0; } void audio_provide_buffer(void *samples, int numsamples) { @@ -189,7 +190,7 @@ bool audio_provide_buffer_without_blocking(void *samples, int numsamples) { return true; } -static void audio_start_dma_and_request_buffers() { +void audio_start_dma_and_request_buffers() { // Configure DMA stream. DMA1_Stream7 ->CR = (0 * DMA_SxCR_CHSEL_0 ) | // Channel 0 (1 * DMA_SxCR_PL_0 ) | // Priority 1 @@ -205,7 +206,7 @@ static void audio_start_dma_and_request_buffers() { DMA1_Stream7 ->CR |= DMA_SxCR_EN; // Update state. - next_buffer_samples = NULL; + next_buffer_samples = (void*)0; buffer_number ^= 1; dma_running = true; @@ -214,7 +215,7 @@ static void audio_start_dma_and_request_buffers() { callback_function(callback_context, buffer_number); } -static void audio_stop_dma() { +void audio_stop_dma() { DMA1_Stream7 ->CR &= ~DMA_SxCR_EN; // Disable DMA stream. while (DMA1_Stream7 ->CR & DMA_SxCR_EN ) ; // Wait for DMA stream to stop. diff --git a/src/glutt-o-logique/cw.c b/src/glutt-o-logique/cw.c index a54ca83..c362f6a 100644 --- a/src/glutt-o-logique/cw.c +++ b/src/glutt-o-logique/cw.c @@ -22,7 +22,6 @@ * SOFTWARE. */ -#include "../common/src/Audio/cw.c" #include "GPIO/usart.h" // Function to display message in GUI, unused on STM32 firmware diff --git a/src/simulator/src/Audio/audio.c b/src/simulator/src/Audio/audio.c index e4a0129..51a7f3d 100644 --- a/src/simulator/src/Audio/audio.c +++ b/src/simulator/src/Audio/audio.c @@ -1,15 +1,39 @@ -#include "../../../common/src/Audio/audio.c" - +/* + * The MIT License (MIT) + * + * Copyright (c) 2016 Matthias P. Braendli, Maximilien Cuony + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ + +#include <stdio.h> #include <pulse/simple.h> +#include "Audio/audio.h" #include "FreeRTOS.h" #include "task.h" - pa_simple *s = NULL; int current_buffer_length = 0; int16_t * current_buffer_samples; +static void audio_buffer_sent(); static void audio_buffer_sender(void *args); extern char gui_audio_on; @@ -60,7 +84,7 @@ static void audio_buffer_sender(void *args) { } -void audio_buffer_sent() { +static void audio_buffer_sent() { if (next_buffer_samples) { audio_start_dma_and_request_buffers(); @@ -119,7 +143,7 @@ bool audio_provide_buffer_without_blocking(void *samples, int numsamples) { return true; } -static void audio_start_dma_and_request_buffers() { +void audio_start_dma_and_request_buffers() { current_buffer_length = next_buffer_length; current_buffer_samples = next_buffer_samples; @@ -134,7 +158,7 @@ static void audio_start_dma_and_request_buffers() { callback_function(callback_context, buffer_number); } -static void audio_stop_dma() { +void audio_stop_dma() { dma_running = false; } diff --git a/src/simulator/src/Audio/cw.c b/src/simulator/src/Audio/cw.c index 0f37be4..e9321da 100644 --- a/src/simulator/src/Audio/cw.c +++ b/src/simulator/src/Audio/cw.c @@ -1,4 +1,26 @@ -#include "../../../common/src/Audio/cw.c" +/* + * The MIT License (MIT) + * + * Copyright (c) 2016 Matthias P. Braendli, Maximilien Cuony + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ extern char gui_cw_text[4096]; int gui_cw_text_pointer = 0; |