diff options
author | inmarket <andrewh@inmarket.com.au> | 2014-03-11 17:13:31 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2014-03-11 17:13:31 +1000 |
commit | ea5a1b849df6e5085a92957ad387f9e653674415 (patch) | |
tree | 72ede5ed78263a6fdba25039398b5c2a55bd1d3a /drivers/gaudio/gadc | |
parent | 944c33cbff5f2cfb1c80f48193aa2161574864fd (diff) | |
download | uGFX-ea5a1b849df6e5085a92957ad387f9e653674415.tar.gz uGFX-ea5a1b849df6e5085a92957ad387f9e653674415.tar.bz2 uGFX-ea5a1b849df6e5085a92957ad387f9e653674415.zip |
Combine GAUDIN and GAUDOUT into a single GAUDIO module.
Simplify GAUDIN (now GAUDIO RECORD) api.
Update audio demo's to match.
Port Win32 driver to new audio api.
Diffstat (limited to 'drivers/gaudio/gadc')
-rw-r--r-- | drivers/gaudio/gadc/driver.mk | 5 | ||||
-rw-r--r-- | drivers/gaudio/gadc/gaudio_record_board_template.h | 50 | ||||
-rw-r--r-- | drivers/gaudio/gadc/gaudio_record_config.h | 59 | ||||
-rw-r--r-- | drivers/gaudio/gadc/gaudio_record_lld.c | 62 | ||||
-rw-r--r-- | drivers/gaudio/gadc/readme.txt | 6 |
5 files changed, 182 insertions, 0 deletions
diff --git a/drivers/gaudio/gadc/driver.mk b/drivers/gaudio/gadc/driver.mk new file mode 100644 index 00000000..4d79da25 --- /dev/null +++ b/drivers/gaudio/gadc/driver.mk @@ -0,0 +1,5 @@ +# List the required driver. +GFXSRC += $(GFXLIB)/drivers/gaudio/gadc/gaudio_record_lld.c + +# Required include directories +GFXINC += $(GFXLIB)/drivers/gaudio/gadc diff --git a/drivers/gaudio/gadc/gaudio_record_board_template.h b/drivers/gaudio/gadc/gaudio_record_board_template.h new file mode 100644 index 00000000..26e87d88 --- /dev/null +++ b/drivers/gaudio/gadc/gaudio_record_board_template.h @@ -0,0 +1,50 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/gadc/gaudio_record_board_template.h + * @brief GAUDIO Record Driver board config board file + * + * @addtogroup GAUDIO + * @{ + */ + +#ifndef _GAUDIO_RECORD_BOARD_H +#define _GAUDIO_RECORD_BOARD_H + +/*===========================================================================*/ +/* Audio inputs on this board */ +/*===========================================================================*/ + +/** + * @brief The number of audio channels supported by this driver + * @note This is an example + */ +#define GAUDIO_RECORD_NUM_CHANNELS 1 + +/** + * @brief The list of audio channels and their uses + * @note This is an example + * @{ + */ +#define GAUDIO_RECORD_MICROPHONE 0 +/** @} */ + +/** + * @brief The audio channel to GADC physical device assignment + * @note This is an example + * @{ + */ +#ifdef GAUDIO_RECORD_LLD_IMPLEMENTATION + static uint32_t gaudin_lld_physdevs[GAUDIO_RECORD_NUM_CHANNELS] = { + GADC_PHYSDEV_MICROPHONE, + }; +#endif +/** @} */ + +#endif /* _GAUDIO_RECORD_BOARD_H */ +/** @} */ diff --git a/drivers/gaudio/gadc/gaudio_record_config.h b/drivers/gaudio/gadc/gaudio_record_config.h new file mode 100644 index 00000000..22d8750f --- /dev/null +++ b/drivers/gaudio/gadc/gaudio_record_config.h @@ -0,0 +1,59 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/gadc/gaudio_record_config.h + * @brief GAUDIN Record Driver config file. + * + * @addtogroup GAUDIO + * @{ + */ + +#ifndef GAUDIO_RECORD_CONFIG_H +#define GAUDIO_RECORD_CONFIG_H + +#if GFX_USE_GAUDIO && GAUDIO_NEED_RECORD + +/*===========================================================================*/ +/* Driver hardware support. */ +/*===========================================================================*/ + +/** + * @brief The audio record sample type + * @details For this driver it matches the cpu sample type + */ +typedef adcsample_t audio_record_sample_t; + +/** + * @brief The maximum sample frequency supported by this audio device + * @details For this driver it matches the GADC maximum high speed sample rate + */ +#define GAUDIO_RECORD_MAX_SAMPLE_FREQUENCY GADC_MAX_HIGH_SPEED_SAMPLERATE + +/** + * @brief The number of bits in a sample + * @details For this driver it matches the cpu sample bits + */ +#define GAUDIO_RECORD_BITS_PER_SAMPLE GADC_BITS_PER_SAMPLE + +/** + * @brief The format of an audio sample + * @details For this driver it matches the cpu sample format + */ +#define GAUDIO_RECORD_SAMPLE_FORMAT GADC_SAMPLE_FORMAT + +/** + * For the GAUDIO driver that uses GADC - all the remaining config definitions are specific + * to the board. + */ +/* Include the user supplied board definitions */ +#include "gaudio_record_board.h" + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_RECORD */ + +#endif /* GAUDIO_RECORD_CONFIG_H */ +/** @} */ diff --git a/drivers/gaudio/gadc/gaudio_record_lld.c b/drivers/gaudio/gadc/gaudio_record_lld.c new file mode 100644 index 00000000..ee994dc1 --- /dev/null +++ b/drivers/gaudio/gadc/gaudio_record_lld.c @@ -0,0 +1,62 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +/** + * @file drivers/gaudio/gadc/gaudio_record_lld.c + * @brief GAUDIO - Record Driver file for using the cpu ADC (via GADC). + * + * @addtogroup GAUDIO + * + * @{ + */ + +/** + * We are now implementing the driver - pull in our channel table + * from the board definitions. + */ +#define GAUDIO_RECORD_IMPLEMENTATION + + +#include "gfx.h" + +#if GFX_USE_GAUDIO && GAUDIO_NEED_RECORD + +/* Double check the GADC system is turned on */ +#if !GFX_USE_GADC + #error "GAUDIO - The GADC driver for GAUDIO requires GFX_USE_GADC to be TRUE" +#endif + +/* Include the driver defines */ +#include "src/gaudio/driver_record.h" + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +void gaudin_lld_init(const gaudin_params *paud) { + /* Setup the high speed GADC */ + gadcHighSpeedInit(gaudin_lld_physdevs[paud->channel], paud->frequency, paud->buffer, paud->bufcount, paud->samplesPerEvent); + + /* Register ourselves for ISR callbacks */ + gadcHighSpeedSetISRCallback(GAUDIN_ISR_CompleteI); + + /** + * The gadc driver handles any errors for us by restarting the transaction so there is + * no need for us to setup anything for GAUDIN_ISR_ErrorI() + */ +} + +void gaudin_lld_start(void) { + gadcHighSpeedStart(); +} + +void gaudin_lld_stop(void) { + gadcHighSpeedStop(); +} + +#endif /* GFX_USE_GAUDIO && GAUDIO_NEED_RECORD */ +/** @} */ diff --git a/drivers/gaudio/gadc/readme.txt b/drivers/gaudio/gadc/readme.txt new file mode 100644 index 00000000..47d3f191 --- /dev/null +++ b/drivers/gaudio/gadc/readme.txt @@ -0,0 +1,6 @@ +This driver uses the generic GADC driver to provide a GAUDIO recording device. + +It supports whatever high speed device channels that your GADC driver and board supports. + +For stereo, the samples are interleaved. Remember to allocate enough space for two samples per +sample period. |