Arduino AudioKit HAL
Classes | Macros | Typedefs | Enumerations | Functions
audio_hal.h File Reference
#include "AudioKitSettings.h"
#include "audio_error.h"
#include <stdint.h>
#include <stdbool.h>

Go to the source code of this file.

Classes

struct  audio_hal_codec_i2s_iface_t
 I2s interface configuration for audio codec chip. More...
 
struct  audio_hal_codec_config_t
 Configure media hal for initialization of audio codec chip. More...
 
struct  audio_hal
 Configuration of functions and variables used to operate audio codec chip. More...
 

Macros

#define portTICK_PERIOD_MS   1
 
#define portTICK_RATE_MS   portTICK_PERIOD_MS
 
#define AUDIO_HAL_VOL_DEFAULT   20
 
#define ets_printf   KIT_LOGD
 

Typedefs

typedef void * xSemaphoreHandle
 
typedef struct audio_halaudio_hal_handle_t
 
typedef struct audio_hal audio_hal_func_t
 Configuration of functions and variables used to operate audio codec chip.
 

Enumerations

enum  audio_hal_codec_mode_t { AUDIO_HAL_CODEC_MODE_ENCODE = 1 , AUDIO_HAL_CODEC_MODE_DECODE , AUDIO_HAL_CODEC_MODE_BOTH , AUDIO_HAL_CODEC_MODE_LINE_IN }
 Select media hal codec mode. More...
 
enum  audio_hal_adc_input_t { AUDIO_HAL_ADC_INPUT_LINE1 = 0x00 , AUDIO_HAL_ADC_INPUT_LINE2 , AUDIO_HAL_ADC_INPUT_ALL , AUDIO_HAL_ADC_INPUT_DIFFERENCE }
 Select adc channel for input mic signal. More...
 
enum  audio_hal_dac_output_t { AUDIO_HAL_DAC_OUTPUT_LINE1 = 0x00 , AUDIO_HAL_DAC_OUTPUT_LINE2 , AUDIO_HAL_DAC_OUTPUT_ALL }
 Select channel for dac output. More...
 
enum  audio_hal_ctrl_t { AUDIO_HAL_CTRL_STOP = 0x00 , AUDIO_HAL_CTRL_START = 0x01 }
 Select operating mode i.e. start or stop for audio codec chip. More...
 
enum  audio_hal_iface_mode_t { AUDIO_HAL_MODE_SLAVE = 0x00 , AUDIO_HAL_MODE_MASTER = 0x01 }
 Select I2S interface operating mode i.e. master or slave for audio codec chip. More...
 
enum  audio_hal_iface_samples_t {
  AUDIO_HAL_08K_SAMPLES , AUDIO_HAL_11K_SAMPLES , AUDIO_HAL_16K_SAMPLES , AUDIO_HAL_22K_SAMPLES ,
  AUDIO_HAL_24K_SAMPLES , AUDIO_HAL_32K_SAMPLES , AUDIO_HAL_44K_SAMPLES , AUDIO_HAL_48K_SAMPLES
}
 Select I2S interface samples per second. More...
 
enum  audio_hal_iface_bits_t { AUDIO_HAL_BIT_LENGTH_16BITS = 1 , AUDIO_HAL_BIT_LENGTH_24BITS , AUDIO_HAL_BIT_LENGTH_32BITS }
 Select I2S interface number of bits per sample. More...
 
enum  audio_hal_iface_format_t { AUDIO_HAL_I2S_NORMAL = 0 , AUDIO_HAL_I2S_LEFT , AUDIO_HAL_I2S_RIGHT , AUDIO_HAL_I2S_DSP }
 Select I2S interface format for audio codec chip. More...
 

Functions

audio_hal_handle_t audio_hal_init (audio_hal_codec_config_t *audio_hal_conf, audio_hal_func_t *audio_hal_func)
 Initialize media codec driver. More...
 
esp_err_t audio_hal_deinit (audio_hal_handle_t audio_hal)
 Uninitialize media codec driver. More...
 
esp_err_t audio_hal_ctrl_codec (audio_hal_handle_t audio_hal, audio_hal_codec_mode_t mode, audio_hal_ctrl_t audio_hal_ctrl)
 Start/stop codec driver. More...
 
esp_err_t audio_hal_codec_iface_config (audio_hal_handle_t audio_hal, audio_hal_codec_mode_t mode, audio_hal_codec_i2s_iface_t *iface)
 Set codec I2S interface samples rate & bit width and format either I2S or PCM/DSP. More...
 
esp_err_t audio_hal_set_mute (audio_hal_handle_t audio_hal, bool mute)
 Set voice mute. Enables or disables DAC mute of a codec. More...
 
esp_err_t audio_hal_set_volume (audio_hal_handle_t audio_hal, int volume)
 Set voice volume. More...
 
esp_err_t audio_hal_get_volume (audio_hal_handle_t audio_hal, int *volume)
 get voice volume. More...
 

Class Documentation

◆ audio_hal_codec_i2s_iface_t

struct audio_hal_codec_i2s_iface_t

I2s interface configuration for audio codec chip.

Definition at line 143 of file audio_hal.h.

Class Members
audio_hal_iface_bits_t bits

i2s interface number of bits per sample

audio_hal_iface_format_t fmt

I2S interface format

audio_hal_iface_mode_t mode

audio codec chip mode

audio_hal_iface_samples_t samples

I2S interface samples per second

◆ audio_hal_codec_config_t

struct audio_hal_codec_config_t

Configure media hal for initialization of audio codec chip.

Definition at line 153 of file audio_hal.h.

Class Members
audio_hal_adc_input_t adc_input

set adc channel

audio_hal_codec_mode_t codec_mode

select codec mode: adc, dac or both

audio_hal_dac_output_t dac_output

set dac channel

audio_hal_codec_i2s_iface_t i2s_iface

set I2S interface configuration

Enumeration Type Documentation

◆ audio_hal_adc_input_t

Select adc channel for input mic signal.

Enumerator
AUDIO_HAL_ADC_INPUT_LINE1 

mic input to adc channel 1

AUDIO_HAL_ADC_INPUT_LINE2 

mic input to adc channel 2

AUDIO_HAL_ADC_INPUT_ALL 

mic input to both channels of adc

AUDIO_HAL_ADC_INPUT_DIFFERENCE 

mic input to adc difference channel

Definition at line 75 of file audio_hal.h.

75  {
76  AUDIO_HAL_ADC_INPUT_LINE1 = 0x00, /*!< mic input to adc channel 1 */
77  AUDIO_HAL_ADC_INPUT_LINE2, /*!< mic input to adc channel 2 */
78  AUDIO_HAL_ADC_INPUT_ALL, /*!< mic input to both channels of adc */
79  AUDIO_HAL_ADC_INPUT_DIFFERENCE, /*!< mic input to adc difference channel */
audio_hal_adc_input_t
Select adc channel for input mic signal.
Definition: audio_hal.h:75
@ AUDIO_HAL_ADC_INPUT_ALL
Definition: audio_hal.h:78
@ AUDIO_HAL_ADC_INPUT_LINE2
Definition: audio_hal.h:77
@ AUDIO_HAL_ADC_INPUT_LINE1
Definition: audio_hal.h:76
@ AUDIO_HAL_ADC_INPUT_DIFFERENCE
Definition: audio_hal.h:79

◆ audio_hal_codec_mode_t

Select media hal codec mode.

Enumerator
AUDIO_HAL_CODEC_MODE_ENCODE 

select adc

AUDIO_HAL_CODEC_MODE_DECODE 

select dac

AUDIO_HAL_CODEC_MODE_BOTH 

select both adc and dac

AUDIO_HAL_CODEC_MODE_LINE_IN 

set adc channel

Definition at line 65 of file audio_hal.h.

65  {
66  AUDIO_HAL_CODEC_MODE_ENCODE = 1, /*!< select adc */
67  AUDIO_HAL_CODEC_MODE_DECODE, /*!< select dac */
68  AUDIO_HAL_CODEC_MODE_BOTH, /*!< select both adc and dac */
69  AUDIO_HAL_CODEC_MODE_LINE_IN, /*!< set adc channel */
audio_hal_codec_mode_t
Select media hal codec mode.
Definition: audio_hal.h:65
@ AUDIO_HAL_CODEC_MODE_LINE_IN
Definition: audio_hal.h:69
@ AUDIO_HAL_CODEC_MODE_BOTH
Definition: audio_hal.h:68
@ AUDIO_HAL_CODEC_MODE_ENCODE
Definition: audio_hal.h:66
@ AUDIO_HAL_CODEC_MODE_DECODE
Definition: audio_hal.h:67

◆ audio_hal_ctrl_t

Select operating mode i.e. start or stop for audio codec chip.

Enumerator
AUDIO_HAL_CTRL_STOP 

set stop mode

AUDIO_HAL_CTRL_START 

set start mode

Definition at line 94 of file audio_hal.h.

94  {
95  AUDIO_HAL_CTRL_STOP = 0x00, /*!< set stop mode */
96  AUDIO_HAL_CTRL_START = 0x01, /*!< set start mode */
audio_hal_ctrl_t
Select operating mode i.e. start or stop for audio codec chip.
Definition: audio_hal.h:94
@ AUDIO_HAL_CTRL_START
Definition: audio_hal.h:96
@ AUDIO_HAL_CTRL_STOP
Definition: audio_hal.h:95

◆ audio_hal_dac_output_t

Select channel for dac output.

Enumerator
AUDIO_HAL_DAC_OUTPUT_LINE1 

dac output signal to channel 1

AUDIO_HAL_DAC_OUTPUT_LINE2 

dac output signal to channel 2

AUDIO_HAL_DAC_OUTPUT_ALL 

dac output signal to both channels

Definition at line 85 of file audio_hal.h.

85  {
86  AUDIO_HAL_DAC_OUTPUT_LINE1 = 0x00, /*!< dac output signal to channel 1 */
87  AUDIO_HAL_DAC_OUTPUT_LINE2, /*!< dac output signal to channel 2 */
88  AUDIO_HAL_DAC_OUTPUT_ALL, /*!< dac output signal to both channels */
audio_hal_dac_output_t
Select channel for dac output.
Definition: audio_hal.h:85
@ AUDIO_HAL_DAC_OUTPUT_LINE1
Definition: audio_hal.h:86
@ AUDIO_HAL_DAC_OUTPUT_LINE2
Definition: audio_hal.h:87
@ AUDIO_HAL_DAC_OUTPUT_ALL
Definition: audio_hal.h:88

◆ audio_hal_iface_bits_t

Select I2S interface number of bits per sample.

Enumerator
AUDIO_HAL_BIT_LENGTH_16BITS 

set 16 bits per sample

AUDIO_HAL_BIT_LENGTH_24BITS 

set 24 bits per sample

AUDIO_HAL_BIT_LENGTH_32BITS 

set 32 bits per sample

Definition at line 124 of file audio_hal.h.

124  {
125  AUDIO_HAL_BIT_LENGTH_16BITS = 1, /*!< set 16 bits per sample */
126  AUDIO_HAL_BIT_LENGTH_24BITS, /*!< set 24 bits per sample */
127  AUDIO_HAL_BIT_LENGTH_32BITS, /*!< set 32 bits per sample */
audio_hal_iface_bits_t
Select I2S interface number of bits per sample.
Definition: audio_hal.h:124
@ AUDIO_HAL_BIT_LENGTH_24BITS
Definition: audio_hal.h:126
@ AUDIO_HAL_BIT_LENGTH_16BITS
Definition: audio_hal.h:125
@ AUDIO_HAL_BIT_LENGTH_32BITS
Definition: audio_hal.h:127

◆ audio_hal_iface_format_t

Select I2S interface format for audio codec chip.

Enumerator
AUDIO_HAL_I2S_NORMAL 

set normal I2S format

AUDIO_HAL_I2S_LEFT 

set all left format

AUDIO_HAL_I2S_RIGHT 

set all right format

AUDIO_HAL_I2S_DSP 

set dsp/pcm format

Definition at line 133 of file audio_hal.h.

133  {
134  AUDIO_HAL_I2S_NORMAL = 0, /*!< set normal I2S format */
135  AUDIO_HAL_I2S_LEFT, /*!< set all left format */
136  AUDIO_HAL_I2S_RIGHT, /*!< set all right format */
137  AUDIO_HAL_I2S_DSP, /*!< set dsp/pcm format */
audio_hal_iface_format_t
Select I2S interface format for audio codec chip.
Definition: audio_hal.h:133
@ AUDIO_HAL_I2S_LEFT
Definition: audio_hal.h:135
@ AUDIO_HAL_I2S_DSP
Definition: audio_hal.h:137
@ AUDIO_HAL_I2S_RIGHT
Definition: audio_hal.h:136
@ AUDIO_HAL_I2S_NORMAL
Definition: audio_hal.h:134

◆ audio_hal_iface_mode_t

Select I2S interface operating mode i.e. master or slave for audio codec chip.

Enumerator
AUDIO_HAL_MODE_SLAVE 

set slave mode

AUDIO_HAL_MODE_MASTER 

set master mode

Definition at line 102 of file audio_hal.h.

102  {
103  AUDIO_HAL_MODE_SLAVE = 0x00, /*!< set slave mode */
104  AUDIO_HAL_MODE_MASTER = 0x01, /*!< set master mode */
audio_hal_iface_mode_t
Select I2S interface operating mode i.e. master or slave for audio codec chip.
Definition: audio_hal.h:102
@ AUDIO_HAL_MODE_MASTER
Definition: audio_hal.h:104
@ AUDIO_HAL_MODE_SLAVE
Definition: audio_hal.h:103

◆ audio_hal_iface_samples_t

Select I2S interface samples per second.

Enumerator
AUDIO_HAL_08K_SAMPLES 

set to 8k samples per second

AUDIO_HAL_11K_SAMPLES 

set to 11.025k samples per second

AUDIO_HAL_16K_SAMPLES 

set to 16k samples in per second

AUDIO_HAL_22K_SAMPLES 

set to 22.050k samples per second

AUDIO_HAL_24K_SAMPLES 

set to 24k samples in per second

AUDIO_HAL_32K_SAMPLES 

set to 32k samples in per second

AUDIO_HAL_44K_SAMPLES 

set to 44.1k samples per second

AUDIO_HAL_48K_SAMPLES 

set to 48k samples per second

Definition at line 110 of file audio_hal.h.

110  {
111  AUDIO_HAL_08K_SAMPLES, /*!< set to 8k samples per second */
112  AUDIO_HAL_11K_SAMPLES, /*!< set to 11.025k samples per second */
113  AUDIO_HAL_16K_SAMPLES, /*!< set to 16k samples in per second */
114  AUDIO_HAL_22K_SAMPLES, /*!< set to 22.050k samples per second */
115  AUDIO_HAL_24K_SAMPLES, /*!< set to 24k samples in per second */
116  AUDIO_HAL_32K_SAMPLES, /*!< set to 32k samples in per second */
117  AUDIO_HAL_44K_SAMPLES, /*!< set to 44.1k samples per second */
118  AUDIO_HAL_48K_SAMPLES, /*!< set to 48k samples per second */
audio_hal_iface_samples_t
Select I2S interface samples per second.
Definition: audio_hal.h:110
@ AUDIO_HAL_08K_SAMPLES
Definition: audio_hal.h:111
@ AUDIO_HAL_16K_SAMPLES
Definition: audio_hal.h:113
@ AUDIO_HAL_24K_SAMPLES
Definition: audio_hal.h:115
@ AUDIO_HAL_32K_SAMPLES
Definition: audio_hal.h:116
@ AUDIO_HAL_11K_SAMPLES
Definition: audio_hal.h:112
@ AUDIO_HAL_22K_SAMPLES
Definition: audio_hal.h:114
@ AUDIO_HAL_44K_SAMPLES
Definition: audio_hal.h:117
@ AUDIO_HAL_48K_SAMPLES
Definition: audio_hal.h:118

Function Documentation

◆ audio_hal_codec_iface_config()

esp_err_t audio_hal_codec_iface_config ( audio_hal_handle_t  audio_hal,
audio_hal_codec_mode_t  mode,
audio_hal_codec_i2s_iface_t iface 
)

Set codec I2S interface samples rate & bit width and format either I2S or PCM/DSP.

Parameters
audio_halreference function pointer for selected audio codec
modeselect media hal codec mode either encode/decode/or both to start from audio_hal_codec_mode_t
ifaceI2S sample rate (ex: 16000, 44100), I2S bit width (16, 24, 32),I2s format (I2S, PCM, DSP).
Returns
  • 0 Success
  • -1 Error

◆ audio_hal_ctrl_codec()

esp_err_t audio_hal_ctrl_codec ( audio_hal_handle_t  audio_hal,
audio_hal_codec_mode_t  mode,
audio_hal_ctrl_t  audio_hal_ctrl 
)

Start/stop codec driver.

Parameters
audio_halreference function pointer for selected audio codec
modeselect media hal codec mode either encode/decode/or both to start from audio_hal_codec_mode_t
audio_hal_ctrlselect start stop state for specific mode
Returns
int, 0–success, others–fail

◆ audio_hal_deinit()

esp_err_t audio_hal_deinit ( audio_hal_handle_t  audio_hal)

Uninitialize media codec driver.

Parameters
audio_halreference function pointer for selected audio codec
Returns
int, 0–success, others–fail

◆ audio_hal_get_volume()

esp_err_t audio_hal_get_volume ( audio_hal_handle_t  audio_hal,
int *  volume 
)

get voice volume.

Note
if volume is 0, mute is enabled, range is 0-100.
Parameters
audio_halreference function pointer for selected audio codec
volumevalue of volume in percent returned(%)
Returns
int, 0–success, others–fail

◆ audio_hal_init()

audio_hal_handle_t audio_hal_init ( audio_hal_codec_config_t audio_hal_conf,
audio_hal_func_t audio_hal_func 
)

Initialize media codec driver.

Note
If selected codec has already been installed, it'll return the audio_hal handle.
Parameters
audio_hal_confConfigure structure audio_hal_config_t
audio_hal_funcStructure containing functions used to operate audio the codec chip
Returns
int, 0–success, others–fail

◆ audio_hal_set_mute()

esp_err_t audio_hal_set_mute ( audio_hal_handle_t  audio_hal,
bool  mute 
)

Set voice mute. Enables or disables DAC mute of a codec.

Note
audio_hal_get_volume will still give a non-zero number in mute state. It will be set to that number when speaker is unmuted.
Parameters
audio_halreference function pointer for selected audio codec
mutetrue/false. If true speaker will be muted and if false speaker will be unmuted.
Returns
int, 0–success, others–fail

◆ audio_hal_set_volume()

esp_err_t audio_hal_set_volume ( audio_hal_handle_t  audio_hal,
int  volume 
)

Set voice volume.

Note
if volume is 0, mute is enabled,range is 0-100.
Parameters
audio_halreference function pointer for selected audio codec
volumevalue of volume in percent(%)
Returns
int, 0–success, others–fail