arduino-audio-tools/_audio_kit_8h_source.html

603 lines
110 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>arduino-audio-tools: src/AudioLibs/AudioKit.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">arduino-audio-tools
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_44f75d7a35fd4e33bdaab9f4bfdc7083.html">AudioLibs</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">AudioKit.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#pragma once</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160; </div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_audio_tools_8h.html">AudioTools.h</a>&quot;</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#include &quot;AudioKitHAL.h&quot;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor">#include &quot;AudioI2S/I2SConfig.h&quot;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#include &quot;AudioTools/AudioActions.h&quot;</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; </div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#ifndef AUDIOKIT_V1</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#error Upgrade the AudioKit library</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160; </div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceaudio__tools.html">audio_tools</a> {</div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160; </div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="keyword">class </span>AudioKitStream;</div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="keyword">static</span> AudioKitStream *pt_AudioKitStream = <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream_config.html"> 23</a></span>&#160;<span class="keyword">class </span><a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html">AudioKitStreamConfig</a> : <span class="keyword">public</span> <a class="code" href="classaudio__tools_1_1_i2_s_config_e_s_p32.html">I2SConfig</a> {</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160; </div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classaudio__tools_1_1_audio_kit_stream.html">AudioKitStream</a>;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160; </div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html">AudioKitStreamConfig</a>(<a class="code" href="group__basic.html#ga8cbd91a8bac9b5ab425112be1620eb49">RxTxMode</a> mode=RXTX_MODE) { <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#a567e2afb71a4d538ed517075a55b0802">setupI2SPins</a>(mode); };</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160; <span class="comment">// set adc channel with audio_hal_adc_input_t</span></div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; audio_hal_adc_input_t input_device = AUDIOKIT_DEFAULT_INPUT;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; <span class="comment">// set dac channel </span></div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; audio_hal_dac_output_t output_device = AUDIOKIT_DEFAULT_OUTPUT;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; <span class="keywordtype">bool</span> sd_active = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; <span class="keywordtype">bool</span> default_actions_active = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; audio_kit_pins pins;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; audio_hal_func_t driver = AUDIO_DRIVER;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; </div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream_config.html#a4004138f5ff66c31ad339182f71849cd"> 39</a></span>&#160; AudioKitConfig <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#a4004138f5ff66c31ad339182f71849cd">toAudioKitConfig</a>() {</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; TRACED();</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; audiokit_config.driver = driver;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; audiokit_config.pins = pins;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; audiokit_config.i2s_num = (i2s_port_t)port_no;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; audiokit_config.adc_input = input_device;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; audiokit_config.dac_output = output_device;</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; audiokit_config.codec_mode = <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#a8be2117d809fb8e59c064703048984c9">toCodecMode</a>();</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; audiokit_config.master_slave_mode = <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#a5c825663b5d82bb99809e8db31bf626f">toMode</a>();</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; audiokit_config.fmt = <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#ad4d7dc38d584805e26499ea2cecdd5ac">toFormat</a>();</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; audiokit_config.sample_rate = <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#aba68ee2d2d4a36d1ae90069c8188ab4d">toSampleRate</a>();</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; audiokit_config.bits_per_sample = toBits();</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160;<span class="preprocessor">#if defined(ESP32)</span></div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160; audiokit_config.buffer_size = buffer_size;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; audiokit_config.buffer_count = buffer_count;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160; <span class="comment">// we use the AudioKit library only to set up the codec</span></div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; audiokit_config.i2s_active = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160;<span class="preprocessor">#if AUDIOKIT_SETUP_SD</span></div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; audiokit_config.sd_active = sd_active;</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;<span class="preprocessor">#else</span></div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;<span class="comment">// SD has been deactivated in the AudioKitConfig.h file</span></div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; audiokit_config.sd_active = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;<span class="preprocessor">#endif </span></div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; LOGW(<span class="stringliteral">&quot;sd_active = %s&quot;</span>, sd_active ? <span class="stringliteral">&quot;true&quot;</span> : <span class="stringliteral">&quot;false&quot;</span> );</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; </div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keywordflow">return</span> audiokit_config;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; }</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; </div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; </div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; AudioKitConfig audiokit_config;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; board_driver board;</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; </div>
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream_config.html#a567e2afb71a4d538ed517075a55b0802"> 74</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#a567e2afb71a4d538ed517075a55b0802">setupI2SPins</a>(<a class="code" href="group__basic.html#ga8cbd91a8bac9b5ab425112be1620eb49">RxTxMode</a> rxtx_mode) {</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; TRACED();</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; this-&gt;<a class="code" href="classaudio__tools_1_1_i2_s_config_e_s_p32.html#a31a454d24fb1f4d74779a0ff668d54cc">rx_tx_mode</a> = rxtx_mode;</div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160; i2s_pin_config_t i2s_pins = {};</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; board.setup(pins);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; board.get_i2s_pins((i2s_port_t)port_no, &amp;i2s_pins);</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; pin_mck = i2s_pins.mck_io_num;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; pin_bck = i2s_pins.bck_io_num;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160; pin_ws = i2s_pins.ws_io_num;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classaudio__tools_1_1_i2_s_config_e_s_p32.html#a31a454d24fb1f4d74779a0ff668d54cc">rx_tx_mode</a> == RX_MODE){</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160; pin_data = i2s_pins.data_in_num;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; pin_data_rx = I2S_PIN_NO_CHANGE;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; pin_data = i2s_pins.data_out_num;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; pin_data_rx = i2s_pins.data_in_num; </div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160; }</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; };</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; </div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160; <span class="comment">// convert to audio_hal_iface_samples_t</span></div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; audio_hal_iface_bits_t toBits() {</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; TRACED();</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ia[] = {16, 24, 32};</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> audio_hal_iface_bits_t oa[] = {AUDIO_HAL_BIT_LENGTH_16BITS,</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; AUDIO_HAL_BIT_LENGTH_24BITS,</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; AUDIO_HAL_BIT_LENGTH_32BITS};</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; 3; j++) {</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">if</span> (ia[j] == <a class="code" href="structaudio__tools_1_1_audio_info.html#aa65c89fa8336bfdc4f8d916d9d415a9f">bits_per_sample</a>) {</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; LOGD(<span class="stringliteral">&quot;-&gt; %d&quot;</span>,ia[j])</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160; <span class="keywordflow">return</span> oa[j];</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; }</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; }</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; LOGE(<span class="stringliteral">&quot;Bits per sample not supported: %d&quot;</span>, <a class="code" href="structaudio__tools_1_1_audio_info.html#aa65c89fa8336bfdc4f8d916d9d415a9f">bits_per_sample</a>);</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordflow">return</span> AUDIO_HAL_BIT_LENGTH_16BITS;</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; }</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; </div>
<div class="line"><a name="l00110"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream_config.html#aba68ee2d2d4a36d1ae90069c8188ab4d"> 110</a></span>&#160; audio_hal_iface_samples_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#aba68ee2d2d4a36d1ae90069c8188ab4d">toSampleRate</a>() {</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; TRACED();</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ia[] = {8000, 11025, 16000, 22050,</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; 24000, 32000, 44100, 48000};</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> audio_hal_iface_samples_t oa[] = {</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; AUDIO_HAL_08K_SAMPLES, AUDIO_HAL_11K_SAMPLES, AUDIO_HAL_16K_SAMPLES,</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; AUDIO_HAL_22K_SAMPLES, AUDIO_HAL_24K_SAMPLES, AUDIO_HAL_32K_SAMPLES,</div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; AUDIO_HAL_44K_SAMPLES, AUDIO_HAL_48K_SAMPLES};</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <span class="keywordtype">int</span> diff = 99999;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; <span class="keywordtype">int</span> result = 0;</div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; 8; j++) {</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; <span class="keywordflow">if</span> (ia[j] == <a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a>) {</div>
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; LOGD(<span class="stringliteral">&quot;-&gt; %d&quot;</span>,ia[j])</div>
<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">return</span> oa[j];</div>
<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160; <span class="keywordtype">int</span> new_diff = abs((<span class="keywordtype">int</span>)(oa[j] - <a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a>));</div>
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; <span class="keywordflow">if</span> (new_diff &lt; diff) {</div>
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; result = j;</div>
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160; diff = new_diff;</div>
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; }</div>
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; }</div>
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; }</div>
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; LOGE(<span class="stringliteral">&quot;Sample Rate not supported: %d - using %d&quot;</span>, <a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a>, ia[result]);</div>
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160; <span class="keywordflow">return</span> oa[result];</div>
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; }</div>
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; </div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream_config.html#ad4d7dc38d584805e26499ea2cecdd5ac"> 137</a></span>&#160; audio_hal_iface_format_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#ad4d7dc38d584805e26499ea2cecdd5ac">toFormat</a>() {</div>
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160; TRACED();</div>
<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> ia[] = {I2S_STD_FORMAT,</div>
<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>&#160; I2S_LSB_FORMAT,</div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; I2S_MSB_FORMAT,</div>
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; I2S_PHILIPS_FORMAT,</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; I2S_RIGHT_JUSTIFIED_FORMAT,</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; I2S_LEFT_JUSTIFIED_FORMAT,</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; I2S_PCM};</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; <span class="keyword">static</span> <span class="keyword">const</span> audio_hal_iface_format_t oa[] = {</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; AUDIO_HAL_I2S_NORMAL, AUDIO_HAL_I2S_LEFT, AUDIO_HAL_I2S_RIGHT,</div>
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; AUDIO_HAL_I2S_NORMAL, AUDIO_HAL_I2S_RIGHT, AUDIO_HAL_I2S_LEFT,</div>
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; AUDIO_HAL_I2S_DSP};</div>
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j = 0; j &lt; 8; j++) {</div>
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">if</span> (ia[j] == i2s_format) {</div>
<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160; LOGD(<span class="stringliteral">&quot;-&gt; %d&quot;</span>,j)</div>
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <span class="keywordflow">return</span> oa[j];</div>
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; }</div>
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; }</div>
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160; LOGE(<span class="stringliteral">&quot;Format not supported: %d&quot;</span>, i2s_format);</div>
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="keywordflow">return</span> AUDIO_HAL_I2S_NORMAL;</div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; }</div>
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; </div>
<div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream_config.html#a5c825663b5d82bb99809e8db31bf626f"> 162</a></span>&#160; audio_hal_iface_mode_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#a5c825663b5d82bb99809e8db31bf626f">toMode</a>() {</div>
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; <span class="keywordflow">return</span> (is_master) ? AUDIO_HAL_MODE_SLAVE : AUDIO_HAL_MODE_MASTER;</div>
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; }</div>
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; </div>
<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream_config.html#a8be2117d809fb8e59c064703048984c9"> 167</a></span>&#160; audio_hal_codec_mode_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#a8be2117d809fb8e59c064703048984c9">toCodecMode</a>() {</div>
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; <span class="keywordflow">switch</span> (<a class="code" href="classaudio__tools_1_1_i2_s_config_e_s_p32.html#a31a454d24fb1f4d74779a0ff668d54cc">rx_tx_mode</a>) {</div>
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160; <span class="keywordflow">case</span> TX_MODE:</div>
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; LOGD(<span class="stringliteral">&quot;-&gt; %s&quot;</span>,<span class="stringliteral">&quot;AUDIO_HAL_CODEC_MODE_DECODE&quot;</span>);</div>
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; <span class="keywordflow">return</span> AUDIO_HAL_CODEC_MODE_DECODE;</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">case</span> RX_MODE:</div>
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; LOGD(<span class="stringliteral">&quot;-&gt; %s&quot;</span>,<span class="stringliteral">&quot;AUDIO_HAL_CODEC_MODE_ENCODE&quot;</span>);</div>
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160; <span class="keywordflow">return</span> AUDIO_HAL_CODEC_MODE_ENCODE;</div>
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; LOGD(<span class="stringliteral">&quot;-&gt; %s&quot;</span>,<span class="stringliteral">&quot;AUDIO_HAL_CODEC_MODE_BOTH&quot;</span>);</div>
<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; <span class="keywordflow">return</span> AUDIO_HAL_CODEC_MODE_BOTH;</div>
<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160; }</div>
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; }</div>
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160;};</div>
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; </div>
<div class="line"><a name="l00189"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html"> 189</a></span>&#160;<span class="keyword">class </span><a class="code" href="classaudio__tools_1_1_audio_kit_stream.html">AudioKitStream</a> : <span class="keyword">public</span> <a class="code" href="classaudio__tools_1_1_audio_stream.html">AudioStream</a> {</div>
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keyword">public</span>:</div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html">AudioKitStream</a>() { pt_AudioKitStream = <span class="keyword">this</span>; }</div>
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; </div>
<div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a8e62ff0b232f96ea37ca156e2e6108c2"> 194</a></span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html">AudioKitStreamConfig</a> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a8e62ff0b232f96ea37ca156e2e6108c2">defaultConfig</a>(<a class="code" href="group__basic.html#ga8cbd91a8bac9b5ab425112be1620eb49">RxTxMode</a> mode = RXTX_MODE) {</div>
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; TRACED();</div>
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html">AudioKitStreamConfig</a> result{mode};</div>
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160; result.<a class="code" href="classaudio__tools_1_1_i2_s_config_e_s_p32.html#a31a454d24fb1f4d74779a0ff668d54cc">rx_tx_mode</a> = mode;</div>
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">return</span> result;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; }</div>
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160; </div>
<div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#add4d8aad406c704d324345231e74f43a"> 202</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#add4d8aad406c704d324345231e74f43a">begin</a>(<a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html">AudioKitStreamConfig</a> config) {</div>
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160; TRACED();</div>
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; cfg = config;</div>
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_stream.html#acbaca7240bc555603b0da5b7ca11ce10">AudioStream::setAudioInfo</a>(config);</div>
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; cfg.logInfo(<span class="stringliteral">&quot;AudioKitStream&quot;</span>);</div>
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; </div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; <span class="comment">// start codec</span></div>
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keyword">auto</span> kit_cfg = cfg.<a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#a4004138f5ff66c31ad339182f71849cd">toAudioKitConfig</a>();</div>
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; <span class="keywordflow">if</span> (!kit.begin(kit_cfg)){</div>
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; LOGE(<span class="stringliteral">&quot;begin faild: please verify your AUDIOKIT_BOARD setting: %d&quot;</span>, AUDIOKIT_BOARD);</div>
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <a class="code" href="group__basic.html#ga8c528baf37154d347366083f0f816846">stop</a>();</div>
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160; }</div>
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160; </div>
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>&#160; <span class="comment">// start i2s</span></div>
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160; i2s_stream.begin(cfg);</div>
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; <span class="comment">// Volume control and headphone detection</span></div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (cfg.default_actions_active){</div>
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#abb0b64a019aabee31715293f5196d3a3">setupActions</a>();</div>
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; }</div>
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; </div>
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <span class="comment">// set initial volume</span></div>
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a68eb6bc4f1a8a9ccf4e2368e39371565">setVolume</a>(volume_value);</div>
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; is_started = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; }</div>
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; </div>
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="comment">// restart after end with initial parameters</span></div>
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordtype">bool</span> begin()<span class="keyword"> override </span>{</div>
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160; <span class="keywordflow">return</span> begin(cfg);</div>
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; }</div>
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; </div>
<div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a64e9fa75beda50a9e8400ee0d4e61984"> 236</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a64e9fa75beda50a9e8400ee0d4e61984">end</a>()<span class="keyword"> override </span>{</div>
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; TRACED();</div>
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; kit.end();</div>
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; i2s_stream.<a class="code" href="classaudio__tools_1_1_i2_s_stream.html#aaf81d3fdaf258088d7692fa70cece087">end</a>();</div>
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; is_started = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div>
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160; </div>
<div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a4549a76725f2e4c013e4d57018366109"> 244</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a4549a76725f2e4c013e4d57018366109">available</a>() {</div>
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160; <span class="keywordflow">return</span> cfg.<a class="code" href="classaudio__tools_1_1_i2_s_config_e_s_p32.html#a31a454d24fb1f4d74779a0ff668d54cc">rx_tx_mode</a> == TX_MODE ? 0 : DEFAULT_BUFFER_SIZE;</div>
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; }</div>
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordtype">size_t</span> write(<span class="keyword">const</span> uint8_t *data, <span class="keywordtype">size_t</span> len)<span class="keyword"> override </span>{</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> i2s_stream.<a class="code" href="classaudio__tools_1_1_i2_s_stream.html#a8b8471dbbdc5527cdf9bfd31612cc973">write</a>(data, len);</div>
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160; }</div>
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160; </div>
<div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a4c5c6275ddee80eb02839356b6185c0b"> 253</a></span>&#160; <span class="keywordtype">size_t</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a4c5c6275ddee80eb02839356b6185c0b">readBytes</a>(uint8_t *data, <span class="keywordtype">size_t</span> len)<span class="keyword"> override </span>{</div>
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <span class="keywordflow">return</span> i2s_stream.<a class="code" href="classaudio__tools_1_1_i2_s_stream.html#a6406b16cb31ad79201459cb48b1ad6f0">readBytes</a>(data, len);</div>
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160; }</div>
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; </div>
<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#ad1fdd56031f1195cb221ab855fb6a102"> 259</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#ad1fdd56031f1195cb221ab855fb6a102">setAudioInfo</a>(<a class="code" href="structaudio__tools_1_1_audio_info.html">AudioInfo</a> info)<span class="keyword"> override </span>{</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; TRACEI();</div>
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160; </div>
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <span class="keywordflow">if</span> (cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a> != info.<a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a></div>
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160; &amp;&amp; cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#aa65c89fa8336bfdc4f8d916d9d415a9f">bits_per_sample</a> == info.<a class="code" href="structaudio__tools_1_1_audio_info.html#aa65c89fa8336bfdc4f8d916d9d415a9f">bits_per_sample</a></div>
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; &amp;&amp; cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#a1ac7822956f57069d76da865d6b33c55">channels</a> == info.<a class="code" href="structaudio__tools_1_1_audio_info.html#a1ac7822956f57069d76da865d6b33c55">channels</a></div>
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; &amp;&amp; is_started) {</div>
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160; <span class="comment">// update sample rate only</span></div>
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; LOGW(<span class="stringliteral">&quot;Update sample rate: %d&quot;</span>, info.<a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a>);</div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a> = info.<a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a>;</div>
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; i2s_stream.<a class="code" href="classaudio__tools_1_1_i2_s_stream.html#a87feead15897a49c7dccb043ac9fcddc">setAudioInfo</a>(cfg);</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; kit.setSampleRate(cfg.<a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#aba68ee2d2d4a36d1ae90069c8188ab4d">toSampleRate</a>());</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a> != info.<a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a></div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; || cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#aa65c89fa8336bfdc4f8d916d9d415a9f">bits_per_sample</a> != info.<a class="code" href="structaudio__tools_1_1_audio_info.html#aa65c89fa8336bfdc4f8d916d9d415a9f">bits_per_sample</a></div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; || cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#a1ac7822956f57069d76da865d6b33c55">channels</a> != info.<a class="code" href="structaudio__tools_1_1_audio_info.html#a1ac7822956f57069d76da865d6b33c55">channels</a></div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; || !is_started) {</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="comment">// more has changed and we need to start the processing</span></div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a> = info.<a class="code" href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">sample_rate</a>;</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#aa65c89fa8336bfdc4f8d916d9d415a9f">bits_per_sample</a> = info.<a class="code" href="structaudio__tools_1_1_audio_info.html#aa65c89fa8336bfdc4f8d916d9d415a9f">bits_per_sample</a>;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; cfg.<a class="code" href="structaudio__tools_1_1_audio_info.html#a1ac7822956f57069d76da865d6b33c55">channels</a> = info.<a class="code" href="structaudio__tools_1_1_audio_info.html#a1ac7822956f57069d76da865d6b33c55">channels</a>;</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; cfg.logInfo(<span class="stringliteral">&quot;AudioKit&quot;</span>);</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; </div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="comment">// Stop first</span></div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span>(is_started){</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a64e9fa75beda50a9e8400ee0d4e61984">end</a>();</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; }</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="comment">// start kit with new config</span></div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; i2s_stream.begin(cfg);</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; kit.begin(cfg.<a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html#a4004138f5ff66c31ad339182f71849cd">toAudioKitConfig</a>());</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; is_started = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; }</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; }</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; </div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html">AudioKitStreamConfig</a> &amp;config() { <span class="keywordflow">return</span> cfg; }</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; </div>
<div class="line"><a name="l00295"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a67ba7d52f586dfd64c8b295d57b1f9c4"> 295</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a67ba7d52f586dfd64c8b295d57b1f9c4">setActive</a>(<span class="keywordtype">bool</span> active) { <span class="keywordflow">return</span> kit.setActive(active); }</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; </div>
<div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#aa2a08d0fd7c4e897419766a5a0ebc291"> 298</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#aa2a08d0fd7c4e897419766a5a0ebc291">setMute</a>(<span class="keywordtype">bool</span> mute) { <span class="keywordflow">return</span> kit.setMute(mute); }</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; </div>
<div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a68eb6bc4f1a8a9ccf4e2368e39371565"> 301</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a68eb6bc4f1a8a9ccf4e2368e39371565">setVolume</a>(<span class="keywordtype">int</span> vol) { </div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">if</span> (vol&gt;100) LOGW(<span class="stringliteral">&quot;Volume is &gt; 100: %d&quot;</span>,vol);</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="comment">// update variable, so if called before begin we set the default value</span></div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; volume_value = vol;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">return</span> kit.setVolume(vol);</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; }</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; </div>
<div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#ae3076da1d31412e3f1ed8677494df700"> 309</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#ae3076da1d31412e3f1ed8677494df700">setVolume</a>(<span class="keywordtype">float</span> vol) { </div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">if</span> (vol&gt;1.0) LOGW(<span class="stringliteral">&quot;Volume is &gt; 1.0: %f&quot;</span>,vol);</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="comment">// update variable, so if called before begin we set the default value</span></div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; volume_value = 100.0 * vol;</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">return</span> kit.setVolume(volume_value);</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; }</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; </div>
<div class="line"><a name="l00317"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a165bc60d3744cfd8c220ed18ec4c6820"> 317</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a165bc60d3744cfd8c220ed18ec4c6820">setVolume</a>(<span class="keywordtype">double</span> vol) {</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a68eb6bc4f1a8a9ccf4e2368e39371565">setVolume</a>((<span class="keywordtype">float</span>)vol);</div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; } </div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; </div>
<div class="line"><a name="l00322"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a56fd55a21e8060769938c33ac16ee4f2"> 322</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a56fd55a21e8060769938c33ac16ee4f2">volume</a>() { <span class="keywordflow">return</span> kit.volume(); }</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
<div class="line"><a name="l00326"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a1fdd798e6ae46c5c0bd4b3f42bf18220"> 326</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a1fdd798e6ae46c5c0bd4b3f42bf18220">setSpeakerActive</a> (<span class="keywordtype">bool</span> active){</div>
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; kit.setSpeakerActive(active);</div>
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; }</div>
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; </div>
<div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#ad497d1809a653cebe8e82b625e642bb1"> 332</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#ad497d1809a653cebe8e82b625e642bb1">headphoneStatus</a>() {</div>
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160; <span class="keywordflow">return</span> kit.headphoneStatus();</div>
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>&#160; }</div>
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160; </div>
<div class="line"><a name="l00340"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a7897359154057644b97714a13fc70581"> 340</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a7897359154057644b97714a13fc70581">processActions</a>() {</div>
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160;<span class="comment">// TRACED();</span></div>
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160; actions.<a class="code" href="classaudio__tools_1_1_audio_actions.html#a7897359154057644b97714a13fc70581">processActions</a>();</div>
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160; yield();</div>
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>&#160; }</div>
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160; </div>
<div class="line"><a name="l00354"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a08e8001d4d1048b8fd9e13a5e968d453"> 354</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a08e8001d4d1048b8fd9e13a5e968d453">addAction</a>(<span class="keywordtype">int</span> pin, <span class="keywordtype">void</span> (*action)(<span class="keywordtype">bool</span>,<span class="keywordtype">int</span>,<span class="keywordtype">void</span>*), <span class="keywordtype">void</span>* ref=<span class="keyword">nullptr</span> ) {</div>
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; TRACEI();</div>
<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160; <span class="comment">// determine logic from config</span></div>
<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160; AudioActions::ActiveLogic activeLogic = <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a429791ee6aa07d099b1e2df39b688507">getActionLogic</a>(pin);</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; actions.<a class="code" href="classaudio__tools_1_1_audio_actions.html#a251a13b88d6b778ec1f5babf5cf0a894">add</a>(pin, action, activeLogic, ref);</div>
<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160; }</div>
<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; </div>
<div class="line"><a name="l00370"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a24fac46b019688e1b0993569912128a1"> 370</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a24fac46b019688e1b0993569912128a1">addAction</a>(<span class="keywordtype">int</span> pin, <span class="keywordtype">void</span> (*action)(<span class="keywordtype">bool</span>,<span class="keywordtype">int</span>,<span class="keywordtype">void</span>*), AudioActions::ActiveLogic activeLogic, <span class="keywordtype">void</span>* ref=<span class="keyword">nullptr</span> ) {</div>
<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; TRACEI();</div>
<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160; actions.<a class="code" href="classaudio__tools_1_1_audio_actions.html#a251a13b88d6b778ec1f5babf5cf0a894">add</a>(pin, action, activeLogic, ref);</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; }</div>
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>&#160; </div>
<div class="line"><a name="l00376"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a4712eb0707514d26c1f17fc09575c6ff"> 376</a></span>&#160; <a class="code" href="classaudio__tools_1_1_audio_actions.html">AudioActions</a> &amp;<a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a4712eb0707514d26c1f17fc09575c6ff">audioActions</a>() {</div>
<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> actions;</div>
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; }</div>
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; </div>
<div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a5874fbce51abb9b1a221c514da1b833a"> 385</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a5874fbce51abb9b1a221c514da1b833a">incrementVolume</a>(<span class="keywordtype">int</span> vol) { </div>
<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160; volume_value += vol;</div>
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; LOGI(<span class="stringliteral">&quot;incrementVolume: %d -&gt; %d&quot;</span>,vol, volume_value);</div>
<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; kit.setVolume(volume_value);</div>
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; }</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; </div>
<div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a89f3eeb9cbb93f78e8934bda2b390408"> 395</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a89f3eeb9cbb93f78e8934bda2b390408">actionVolumeUp</a>(<span class="keywordtype">bool</span>, <span class="keywordtype">int</span>, <span class="keywordtype">void</span>*) {</div>
<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; TRACEI();</div>
<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160; pt_AudioKitStream-&gt;<a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a5874fbce51abb9b1a221c514da1b833a">incrementVolume</a>(+2);</div>
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160; }</div>
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>&#160; </div>
<div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a0bcf39924799e8c9b98420f82754c54f"> 404</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a0bcf39924799e8c9b98420f82754c54f">actionVolumeDown</a>(<span class="keywordtype">bool</span>, <span class="keywordtype">int</span>, <span class="keywordtype">void</span>*) {</div>
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160; TRACEI();</div>
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; pt_AudioKitStream-&gt;<a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a5874fbce51abb9b1a221c514da1b833a">incrementVolume</a>(-2);</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; }</div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; </div>
<div class="line"><a name="l00413"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a11e789f0bbb3771a9af4f1bfd3c3a33f"> 413</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a11e789f0bbb3771a9af4f1bfd3c3a33f">actionStartStop</a>(<span class="keywordtype">bool</span>, <span class="keywordtype">int</span>, <span class="keywordtype">void</span>*) {</div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; TRACEI();</div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; pt_AudioKitStream-&gt;active = !pt_AudioKitStream-&gt;active;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; pt_AudioKitStream-&gt;<a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a67ba7d52f586dfd64c8b295d57b1f9c4">setActive</a>(pt_AudioKitStream-&gt;active);</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; }</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; </div>
<div class="line"><a name="l00423"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a9124340ae513f2575531cba6e490a4db"> 423</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a9124340ae513f2575531cba6e490a4db">actionStart</a>(<span class="keywordtype">bool</span>, <span class="keywordtype">int</span>, <span class="keywordtype">void</span>*) {</div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; TRACEI();</div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; pt_AudioKitStream-&gt;active = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; pt_AudioKitStream-&gt;<a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a67ba7d52f586dfd64c8b295d57b1f9c4">setActive</a>(pt_AudioKitStream-&gt;active);</div>
<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; }</div>
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; </div>
<div class="line"><a name="l00433"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#ac6263321578e2d73132c83b55b2ed14d"> 433</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#ac6263321578e2d73132c83b55b2ed14d">actionStop</a>(<span class="keywordtype">bool</span>, <span class="keywordtype">int</span>, <span class="keywordtype">void</span>*) {</div>
<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; TRACEI();</div>
<div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; pt_AudioKitStream-&gt;active = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; pt_AudioKitStream-&gt;<a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a67ba7d52f586dfd64c8b295d57b1f9c4">setActive</a>(pt_AudioKitStream-&gt;active);</div>
<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; }</div>
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; </div>
<div class="line"><a name="l00444"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a649ac2c61ceb08c2b2290898512a413a"> 444</a></span>&#160; <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a649ac2c61ceb08c2b2290898512a413a">actionHeadphoneDetection</a>(<span class="keywordtype">bool</span>, <span class="keywordtype">int</span>, <span class="keywordtype">void</span>*) {</div>
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160; AudioKit::actionHeadphoneDetection();</div>
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160; }</div>
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>&#160; </div>
<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160; </div>
<div class="line"><a name="l00455"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#af7a84eb3e214370dec7d0767c96aa7b0"> 455</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#af7a84eb3e214370dec7d0767c96aa7b0">pinAuxin</a>() { <span class="keywordflow">return</span> kit.pinAuxin(); }</div>
<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; </div>
<div class="line"><a name="l00463"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a972a05e5f5c527240cede258c765010f"> 463</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a972a05e5f5c527240cede258c765010f">pinHeadphoneDetect</a>() { <span class="keywordflow">return</span> kit.pinHeadphoneDetect(); }</div>
<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; </div>
<div class="line"><a name="l00471"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#acd91d83776f0b1386a67216add505b6b"> 471</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#acd91d83776f0b1386a67216add505b6b">pinPaEnable</a>() { <span class="keywordflow">return</span> kit.pinPaEnable(); }</div>
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; </div>
<div class="line"><a name="l00479"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#ab39eefdad7f586cd474a3d2b09216939"> 479</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#ab39eefdad7f586cd474a3d2b09216939">pinAdcDetect</a>() { <span class="keywordflow">return</span> kit.pinAdcDetect(); }</div>
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; </div>
<div class="line"><a name="l00487"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a22206058b2c9b84471c962bcd5ff8765"> 487</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a22206058b2c9b84471c962bcd5ff8765">pinEs7243Mclk</a>() { <span class="keywordflow">return</span> kit.pinEs7243Mclk(); }</div>
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160; </div>
<div class="line"><a name="l00495"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a86fb302f8fe0f5ea06542c1089586ac6"> 495</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a86fb302f8fe0f5ea06542c1089586ac6">pinInputRec</a>() { <span class="keywordflow">return</span> kit.pinInputRec(); }</div>
<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; </div>
<div class="line"><a name="l00503"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#ae9956ea27d7f2dcc838ed8dadf797096"> 503</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#ae9956ea27d7f2dcc838ed8dadf797096">pinInputMode</a>() { <span class="keywordflow">return</span> kit.pinInputMode(); }</div>
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; </div>
<div class="line"><a name="l00511"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a74d9446f4b806236b548cce9c9302d3c"> 511</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a74d9446f4b806236b548cce9c9302d3c">pinInputSet</a>() { <span class="keywordflow">return</span> kit.pinInputSet(); };</div>
<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160; </div>
<div class="line"><a name="l00519"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a37b1724885bcba6cf005e159ea9346dd"> 519</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a37b1724885bcba6cf005e159ea9346dd">pinInputPlay</a>() { <span class="keywordflow">return</span> kit.pinInputPlay(); }</div>
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160; </div>
<div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a95e5f582b5afa46c29d74c21467e7828"> 527</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a95e5f582b5afa46c29d74c21467e7828">pinVolumeUp</a>() { <span class="keywordflow">return</span> kit.pinVolumeUp(); }</div>
<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160; </div>
<div class="line"><a name="l00535"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a7077931c1f66d905759910e1ff1444ba"> 535</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a7077931c1f66d905759910e1ff1444ba">pinVolumeDown</a>() { <span class="keywordflow">return</span> kit.pinVolumeDown(); }</div>
<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160; </div>
<div class="line"><a name="l00543"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a2b298471103a45906edd52805f3a370c"> 543</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a2b298471103a45906edd52805f3a370c">pinResetCodec</a>() { <span class="keywordflow">return</span> kit.pinResetCodec(); }</div>
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; </div>
<div class="line"><a name="l00551"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a95a111c908edb8dbc5b6f7f6291038fd"> 551</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a95a111c908edb8dbc5b6f7f6291038fd">pinResetBoard</a>() { <span class="keywordflow">return</span> kit.pinResetBoard(); }</div>
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160; </div>
<div class="line"><a name="l00559"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a157e45d9219139a0b85d4bd8fd46e5e1"> 559</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a157e45d9219139a0b85d4bd8fd46e5e1">pinGreenLed</a>() { <span class="keywordflow">return</span> kit.pinGreenLed(); }</div>
<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160; </div>
<div class="line"><a name="l00567"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a4b55501189a7e8e0f7e05f8ab775a2df"> 567</a></span>&#160; int8_t <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a4b55501189a7e8e0f7e05f8ab775a2df">pinBlueLed</a>() { <span class="keywordflow">return</span> kit.pinBlueLed(); }</div>
<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; </div>
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <span class="keyword">protected</span>:</div>
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160; AudioKit kit;</div>
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; <a class="code" href="classaudio__tools_1_1_i2_s_stream.html">I2SStream</a> i2s_stream;</div>
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream_config.html">AudioKitStreamConfig</a> cfg = <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a8e62ff0b232f96ea37ca156e2e6108c2">defaultConfig</a>(RXTX_MODE);</div>
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_actions.html">AudioActions</a> actions;</div>
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keywordtype">int</span> volume_value = 40;</div>
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160; <span class="keywordtype">bool</span> active = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; <span class="keywordtype">bool</span> is_started = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160; </div>
<div class="line"><a name="l00579"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#a429791ee6aa07d099b1e2df39b688507"> 579</a></span>&#160; AudioActions::ActiveLogic <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a429791ee6aa07d099b1e2df39b688507">getActionLogic</a>(<span class="keywordtype">int</span> pin){</div>
<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160;<span class="preprocessor">#if defined(USE_EXT_BUTTON_LOGIC)</span></div>
<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; input_key_service_info_t input_key_info[] = INPUT_KEY_DEFAULT_INFO();</div>
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; <span class="keywordtype">int</span> size = <span class="keyword">sizeof</span>(input_key_info) / <span class="keyword">sizeof</span>(input_key_info[0]);</div>
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j&lt;size; j++){</div>
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <span class="keywordflow">if</span> (pin == input_key_info[j].act_id){</div>
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; <span class="keywordflow">switch</span>(input_key_info[j].type){</div>
<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">case</span> PERIPH_ID_ADC_BTN:</div>
<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160; LOGD(<span class="stringliteral">&quot;getActionLogic for pin %d -&gt; %d&quot;</span>, pin, AudioActions::ActiveHigh);</div>
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160; <span class="keywordflow">return</span> AudioActions::ActiveHigh;</div>
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>&#160; <span class="keywordflow">case</span> PERIPH_ID_BUTTON:</div>
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160; LOGD(<span class="stringliteral">&quot;getActionLogic for pin %d -&gt; %d&quot;</span>, pin, AudioActions::ActiveLow);</div>
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <span class="keywordflow">return</span> AudioActions::ActiveLow;</div>
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160; <span class="keywordflow">case</span> PERIPH_ID_TOUCH:</div>
<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160; LOGD(<span class="stringliteral">&quot;getActionLogic for pin %d -&gt; %d&quot;</span>, pin, AudioActions::ActiveTouch);</div>
<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>&#160; <span class="keywordflow">return</span> AudioActions::ActiveTouch;</div>
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160; }</div>
<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; }</div>
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; }</div>
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; LOGW(<span class="stringliteral">&quot;Undefined ActionLogic for pin: %d &quot;</span>,pin);</div>
<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; <span class="keywordflow">return</span> AudioActions::ActiveLow;</div>
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; }</div>
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; </div>
<div class="line"><a name="l00604"></a><span class="lineno"><a class="line" href="classaudio__tools_1_1_audio_kit_stream.html#abb0b64a019aabee31715293f5196d3a3"> 604</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#abb0b64a019aabee31715293f5196d3a3">setupActions</a>() {</div>
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; TRACEI();</div>
<div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; </div>
<div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; <span class="comment">// pin conflicts with the SD CS pin for AIThinker and buttons</span></div>
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="keywordflow">if</span> (! (cfg.sd_active &amp;&amp; (AUDIOKIT_BOARD==5 || AUDIOKIT_BOARD==6))){</div>
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; LOGD(<span class="stringliteral">&quot;actionStartStop&quot;</span>)</div>
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a08e8001d4d1048b8fd9e13a5e968d453">addAction</a>(kit.pinInputMode(), <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a11e789f0bbb3771a9af4f1bfd3c3a33f">actionStartStop</a>);</div>
<div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; LOGW(<span class="stringliteral">&quot;Mode Button ignored because of conflict: %d &quot;</span>,kit.pinInputMode());</div>
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; }</div>
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; </div>
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; <span class="comment">// pin conflicts with AIThinker A101 and headphone detection</span></div>
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; <span class="keywordflow">if</span> (! (cfg.sd_active &amp;&amp; AUDIOKIT_BOARD==6)) { </div>
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; LOGD(<span class="stringliteral">&quot;actionHeadphoneDetection pin:%d&quot;</span>,kit.pinHeadphoneDetect())</div>
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; actions.<a class="code" href="classaudio__tools_1_1_audio_actions.html#a251a13b88d6b778ec1f5babf5cf0a894">add</a>(kit.pinHeadphoneDetect(), <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a649ac2c61ceb08c2b2290898512a413a">actionHeadphoneDetection</a>, AudioActions::ActiveChange);</div>
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; LOGW(<span class="stringliteral">&quot;Headphone detection ignored because of conflict: %d &quot;</span>,kit.pinHeadphoneDetect());</div>
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; }</div>
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; </div>
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; <span class="comment">// pin conflicts with SD Lyrat SD CS GpioPinand buttons / Conflict on Audiokit V. 2957</span></div>
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span> (! (cfg.sd_active &amp;&amp; (AUDIOKIT_BOARD==1 || AUDIOKIT_BOARD==7))){</div>
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; LOGD(<span class="stringliteral">&quot;actionVolumeDown&quot;</span>)</div>
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a08e8001d4d1048b8fd9e13a5e968d453">addAction</a>(kit.pinVolumeDown(), <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a0bcf39924799e8c9b98420f82754c54f">actionVolumeDown</a>); </div>
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; LOGD(<span class="stringliteral">&quot;actionVolumeUp&quot;</span>)</div>
<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a08e8001d4d1048b8fd9e13a5e968d453">addAction</a>(kit.pinVolumeUp(), <a class="code" href="classaudio__tools_1_1_audio_kit_stream.html#a89f3eeb9cbb93f78e8934bda2b390408">actionVolumeUp</a>);</div>
<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; LOGW(<span class="stringliteral">&quot;Volume Buttons ignored because of conflict: %d &quot;</span>,kit.pinVolumeDown());</div>
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; }</div>
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; }</div>
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160;};</div>
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; </div>
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160;} <span class="comment">// namespace audio_tools</span></div>
<div class="ttc" id="a_audio_tools_8h_html"><div class="ttname"><a href="_audio_tools_8h.html">AudioTools.h</a></div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_actions_html"><div class="ttname"><a href="classaudio__tools_1_1_audio_actions.html">audio_tools::AudioActions</a></div><div class="ttdoc">A simple class to assign functions to gpio pins e.g. to implement a simple navigation control or volu...</div><div class="ttdef"><b>Definition:</b> AudioActions.h:29</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_actions_html_a251a13b88d6b778ec1f5babf5cf0a894"><div class="ttname"><a href="classaudio__tools_1_1_audio_actions.html#a251a13b88d6b778ec1f5babf5cf0a894">audio_tools::AudioActions::add</a></div><div class="ttdeci">void add(int pin, void(*actionOn)(bool pinStatus, int pin, void *ref), ActiveLogic activeLogic=ActiveLow, void *ref=nullptr)</div><div class="ttdoc">Adds an action.</div><div class="ttdef"><b>Definition:</b> AudioActions.h:122</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_actions_html_a7897359154057644b97714a13fc70581"><div class="ttname"><a href="classaudio__tools_1_1_audio_actions.html#a7897359154057644b97714a13fc70581">audio_tools::AudioActions::processActions</a></div><div class="ttdeci">void processActions()</div><div class="ttdoc">Execute all actions if the corresponding pin is low To minimize the runtime: With each call we proces...</div><div class="ttdef"><b>Definition:</b> AudioActions.h:174</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_config_html"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream_config.html">audio_tools::AudioKitStreamConfig</a></div><div class="ttdoc">Configuration for AudioKitStream: we use as subclass of I2SConfig.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:23</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_config_html_a4004138f5ff66c31ad339182f71849cd"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream_config.html#a4004138f5ff66c31ad339182f71849cd">audio_tools::AudioKitStreamConfig::toAudioKitConfig</a></div><div class="ttdeci">AudioKitConfig toAudioKitConfig()</div><div class="ttdoc">convert to config object needed by HAL</div><div class="ttdef"><b>Definition:</b> AudioKit.h:39</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_config_html_a567e2afb71a4d538ed517075a55b0802"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream_config.html#a567e2afb71a4d538ed517075a55b0802">audio_tools::AudioKitStreamConfig::setupI2SPins</a></div><div class="ttdeci">void setupI2SPins(RxTxMode rxtx_mode)</div><div class="ttdoc">Defines the pins based on the information provided by the AudioKit project.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:74</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_config_html_a5c825663b5d82bb99809e8db31bf626f"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream_config.html#a5c825663b5d82bb99809e8db31bf626f">audio_tools::AudioKitStreamConfig::toMode</a></div><div class="ttdeci">audio_hal_iface_mode_t toMode()</div><div class="ttdef"><b>Definition:</b> AudioKit.h:162</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_config_html_a8be2117d809fb8e59c064703048984c9"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream_config.html#a8be2117d809fb8e59c064703048984c9">audio_tools::AudioKitStreamConfig::toCodecMode</a></div><div class="ttdeci">audio_hal_codec_mode_t toCodecMode()</div><div class="ttdoc">Convert to audio_hal_codec_mode_t.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:167</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_config_html_aba68ee2d2d4a36d1ae90069c8188ab4d"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream_config.html#aba68ee2d2d4a36d1ae90069c8188ab4d">audio_tools::AudioKitStreamConfig::toSampleRate</a></div><div class="ttdeci">audio_hal_iface_samples_t toSampleRate()</div><div class="ttdoc">Convert to audio_hal_iface_samples_t.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:110</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_config_html_ad4d7dc38d584805e26499ea2cecdd5ac"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream_config.html#ad4d7dc38d584805e26499ea2cecdd5ac">audio_tools::AudioKitStreamConfig::toFormat</a></div><div class="ttdeci">audio_hal_iface_format_t toFormat()</div><div class="ttdoc">Convert to audio_hal_iface_format_t.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:137</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html">audio_tools::AudioKitStream</a></div><div class="ttdoc">AudioKit Stream which uses the https://github.com/pschatzmann/arduino-audiokit library.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:189</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a08e8001d4d1048b8fd9e13a5e968d453"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a08e8001d4d1048b8fd9e13a5e968d453">audio_tools::AudioKitStream::addAction</a></div><div class="ttdeci">void addAction(int pin, void(*action)(bool, int, void *), void *ref=nullptr)</div><div class="ttdoc">Defines a new action that is executed when the indicated pin is active.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:354</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a0bcf39924799e8c9b98420f82754c54f"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a0bcf39924799e8c9b98420f82754c54f">audio_tools::AudioKitStream::actionVolumeDown</a></div><div class="ttdeci">static void actionVolumeDown(bool, int, void *)</div><div class="ttdoc">Decrease the volume.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:404</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a11e789f0bbb3771a9af4f1bfd3c3a33f"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a11e789f0bbb3771a9af4f1bfd3c3a33f">audio_tools::AudioKitStream::actionStartStop</a></div><div class="ttdeci">static void actionStartStop(bool, int, void *)</div><div class="ttdoc">Toggle start stop.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:413</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a157e45d9219139a0b85d4bd8fd46e5e1"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a157e45d9219139a0b85d4bd8fd46e5e1">audio_tools::AudioKitStream::pinGreenLed</a></div><div class="ttdeci">int8_t pinGreenLed()</div><div class="ttdoc">Get DSP reset gpio number.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:559</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a165bc60d3744cfd8c220ed18ec4c6820"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a165bc60d3744cfd8c220ed18ec4c6820">audio_tools::AudioKitStream::setVolume</a></div><div class="ttdeci">bool setVolume(double vol)</div><div class="ttdoc">Defines the Volume: Range 0 to 1.0.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:317</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a1fdd798e6ae46c5c0bd4b3f42bf18220"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a1fdd798e6ae46c5c0bd4b3f42bf18220">audio_tools::AudioKitStream::setSpeakerActive</a></div><div class="ttdeci">void setSpeakerActive(bool active)</div><div class="ttdef"><b>Definition:</b> AudioKit.h:326</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a22206058b2c9b84471c962bcd5ff8765"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a22206058b2c9b84471c962bcd5ff8765">audio_tools::AudioKitStream::pinEs7243Mclk</a></div><div class="ttdeci">int8_t pinEs7243Mclk()</div><div class="ttdoc">Get the mclk gpio number of es7243.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:487</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a24fac46b019688e1b0993569912128a1"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a24fac46b019688e1b0993569912128a1">audio_tools::AudioKitStream::addAction</a></div><div class="ttdeci">void addAction(int pin, void(*action)(bool, int, void *), AudioActions::ActiveLogic activeLogic, void *ref=nullptr)</div><div class="ttdoc">Defines a new action that is executed when the indicated pin is active.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:370</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a2b298471103a45906edd52805f3a370c"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a2b298471103a45906edd52805f3a370c">audio_tools::AudioKitStream::pinResetCodec</a></div><div class="ttdeci">int8_t pinResetCodec()</div><div class="ttdoc">Get green led gpio number.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:543</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a37b1724885bcba6cf005e159ea9346dd"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a37b1724885bcba6cf005e159ea9346dd">audio_tools::AudioKitStream::pinInputPlay</a></div><div class="ttdeci">int8_t pinInputPlay()</div><div class="ttdoc">Get number for play function.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:519</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a429791ee6aa07d099b1e2df39b688507"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a429791ee6aa07d099b1e2df39b688507">audio_tools::AudioKitStream::getActionLogic</a></div><div class="ttdeci">AudioActions::ActiveLogic getActionLogic(int pin)</div><div class="ttdoc">Determines the action logic (ActiveLow or ActiveTouch) for the pin.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:579</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a4549a76725f2e4c013e4d57018366109"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a4549a76725f2e4c013e4d57018366109">audio_tools::AudioKitStream::available</a></div><div class="ttdeci">int available()</div><div class="ttdoc">We get the data via I2S - we expect to fill one buffer size.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:244</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a4712eb0707514d26c1f17fc09575c6ff"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a4712eb0707514d26c1f17fc09575c6ff">audio_tools::AudioKitStream::audioActions</a></div><div class="ttdeci">AudioActions &amp; audioActions()</div><div class="ttdoc">Provides access to the AudioActions.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:376</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a4b55501189a7e8e0f7e05f8ab775a2df"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a4b55501189a7e8e0f7e05f8ab775a2df">audio_tools::AudioKitStream::pinBlueLed</a></div><div class="ttdeci">int8_t pinBlueLed()</div><div class="ttdoc">Get green led gpio number.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:567</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a4c5c6275ddee80eb02839356b6185c0b"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a4c5c6275ddee80eb02839356b6185c0b">audio_tools::AudioKitStream::readBytes</a></div><div class="ttdeci">size_t readBytes(uint8_t *data, size_t len) override</div><div class="ttdoc">Reads the audio data.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:253</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a56fd55a21e8060769938c33ac16ee4f2"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a56fd55a21e8060769938c33ac16ee4f2">audio_tools::AudioKitStream::volume</a></div><div class="ttdeci">int volume()</div><div class="ttdoc">Determines the volume.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:322</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a5874fbce51abb9b1a221c514da1b833a"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a5874fbce51abb9b1a221c514da1b833a">audio_tools::AudioKitStream::incrementVolume</a></div><div class="ttdeci">void incrementVolume(int vol)</div><div class="ttdoc">Relative volume control.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:385</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a649ac2c61ceb08c2b2290898512a413a"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a649ac2c61ceb08c2b2290898512a413a">audio_tools::AudioKitStream::actionHeadphoneDetection</a></div><div class="ttdeci">static void actionHeadphoneDetection(bool, int, void *)</div><div class="ttdoc">Switch off the PA if the headphone in plugged in and switch it on again if the headphone is unplugged...</div><div class="ttdef"><b>Definition:</b> AudioKit.h:444</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a64e9fa75beda50a9e8400ee0d4e61984"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a64e9fa75beda50a9e8400ee0d4e61984">audio_tools::AudioKitStream::end</a></div><div class="ttdeci">void end() override</div><div class="ttdoc">Stops the processing.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:236</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a67ba7d52f586dfd64c8b295d57b1f9c4"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a67ba7d52f586dfd64c8b295d57b1f9c4">audio_tools::AudioKitStream::setActive</a></div><div class="ttdeci">bool setActive(bool active)</div><div class="ttdoc">Sets the codec active / inactive.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:295</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a68eb6bc4f1a8a9ccf4e2368e39371565"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a68eb6bc4f1a8a9ccf4e2368e39371565">audio_tools::AudioKitStream::setVolume</a></div><div class="ttdeci">bool setVolume(int vol)</div><div class="ttdoc">Defines the Volume: Range 0 to 100.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:301</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a7077931c1f66d905759910e1ff1444ba"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a7077931c1f66d905759910e1ff1444ba">audio_tools::AudioKitStream::pinVolumeDown</a></div><div class="ttdeci">int8_t pinVolumeDown()</div><div class="ttdoc">Get number for volume down function.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:535</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a74d9446f4b806236b548cce9c9302d3c"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a74d9446f4b806236b548cce9c9302d3c">audio_tools::AudioKitStream::pinInputSet</a></div><div class="ttdeci">int8_t pinInputSet()</div><div class="ttdoc">Get number for set function.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:511</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a7897359154057644b97714a13fc70581"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a7897359154057644b97714a13fc70581">audio_tools::AudioKitStream::processActions</a></div><div class="ttdeci">void processActions()</div><div class="ttdoc">Process input keys and pins.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:340</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a86fb302f8fe0f5ea06542c1089586ac6"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a86fb302f8fe0f5ea06542c1089586ac6">audio_tools::AudioKitStream::pinInputRec</a></div><div class="ttdeci">int8_t pinInputRec()</div><div class="ttdoc">Get the record-button id for adc-button.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:495</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a89f3eeb9cbb93f78e8934bda2b390408"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a89f3eeb9cbb93f78e8934bda2b390408">audio_tools::AudioKitStream::actionVolumeUp</a></div><div class="ttdeci">static void actionVolumeUp(bool, int, void *)</div><div class="ttdoc">Increase the volume.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:395</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a8e62ff0b232f96ea37ca156e2e6108c2"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a8e62ff0b232f96ea37ca156e2e6108c2">audio_tools::AudioKitStream::defaultConfig</a></div><div class="ttdeci">AudioKitStreamConfig defaultConfig(RxTxMode mode=RXTX_MODE)</div><div class="ttdoc">Provides the default configuration.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:194</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a9124340ae513f2575531cba6e490a4db"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a9124340ae513f2575531cba6e490a4db">audio_tools::AudioKitStream::actionStart</a></div><div class="ttdeci">static void actionStart(bool, int, void *)</div><div class="ttdoc">Start.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:423</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a95a111c908edb8dbc5b6f7f6291038fd"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a95a111c908edb8dbc5b6f7f6291038fd">audio_tools::AudioKitStream::pinResetBoard</a></div><div class="ttdeci">int8_t pinResetBoard()</div><div class="ttdoc">Get DSP reset gpio number.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:551</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a95e5f582b5afa46c29d74c21467e7828"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a95e5f582b5afa46c29d74c21467e7828">audio_tools::AudioKitStream::pinVolumeUp</a></div><div class="ttdeci">int8_t pinVolumeUp()</div><div class="ttdoc">number for volume up function</div><div class="ttdef"><b>Definition:</b> AudioKit.h:527</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_a972a05e5f5c527240cede258c765010f"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#a972a05e5f5c527240cede258c765010f">audio_tools::AudioKitStream::pinHeadphoneDetect</a></div><div class="ttdeci">int8_t pinHeadphoneDetect()</div><div class="ttdoc">Get the gpio number for headphone detection.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:463</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_aa2a08d0fd7c4e897419766a5a0ebc291"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#aa2a08d0fd7c4e897419766a5a0ebc291">audio_tools::AudioKitStream::setMute</a></div><div class="ttdeci">bool setMute(bool mute)</div><div class="ttdoc">Mutes the output.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:298</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_ab39eefdad7f586cd474a3d2b09216939"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#ab39eefdad7f586cd474a3d2b09216939">audio_tools::AudioKitStream::pinAdcDetect</a></div><div class="ttdeci">int8_t pinAdcDetect()</div><div class="ttdoc">Get the gpio number for adc detection.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:479</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_abb0b64a019aabee31715293f5196d3a3"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#abb0b64a019aabee31715293f5196d3a3">audio_tools::AudioKitStream::setupActions</a></div><div class="ttdeci">void setupActions()</div><div class="ttdoc">Setup the supported default actions.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:604</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_ac6263321578e2d73132c83b55b2ed14d"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#ac6263321578e2d73132c83b55b2ed14d">audio_tools::AudioKitStream::actionStop</a></div><div class="ttdeci">static void actionStop(bool, int, void *)</div><div class="ttdoc">Stop.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:433</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_acd91d83776f0b1386a67216add505b6b"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#acd91d83776f0b1386a67216add505b6b">audio_tools::AudioKitStream::pinPaEnable</a></div><div class="ttdeci">int8_t pinPaEnable()</div><div class="ttdoc">Get the gpio number for PA enable.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:471</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_ad1fdd56031f1195cb221ab855fb6a102"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#ad1fdd56031f1195cb221ab855fb6a102">audio_tools::AudioKitStream::setAudioInfo</a></div><div class="ttdeci">void setAudioInfo(AudioInfo info) override</div><div class="ttdef"><b>Definition:</b> AudioKit.h:259</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_ad497d1809a653cebe8e82b625e642bb1"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#ad497d1809a653cebe8e82b625e642bb1">audio_tools::AudioKitStream::headphoneStatus</a></div><div class="ttdeci">bool headphoneStatus()</div><div class="ttdoc">Returns true if the headphone was detected.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:332</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_add4d8aad406c704d324345231e74f43a"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#add4d8aad406c704d324345231e74f43a">audio_tools::AudioKitStream::begin</a></div><div class="ttdeci">bool begin(AudioKitStreamConfig config)</div><div class="ttdoc">Starts the processing.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:202</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_ae3076da1d31412e3f1ed8677494df700"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#ae3076da1d31412e3f1ed8677494df700">audio_tools::AudioKitStream::setVolume</a></div><div class="ttdeci">bool setVolume(float vol)</div><div class="ttdoc">Defines the Volume: Range 0 to 1.0.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:309</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_ae9956ea27d7f2dcc838ed8dadf797096"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#ae9956ea27d7f2dcc838ed8dadf797096">audio_tools::AudioKitStream::pinInputMode</a></div><div class="ttdeci">int8_t pinInputMode()</div><div class="ttdoc">Get the number for mode-button.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:503</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_kit_stream_html_af7a84eb3e214370dec7d0767c96aa7b0"><div class="ttname"><a href="classaudio__tools_1_1_audio_kit_stream.html#af7a84eb3e214370dec7d0767c96aa7b0">audio_tools::AudioKitStream::pinAuxin</a></div><div class="ttdeci">int8_t pinAuxin()</div><div class="ttdoc">Get the gpio number for auxin detection.</div><div class="ttdef"><b>Definition:</b> AudioKit.h:455</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_stream_html"><div class="ttname"><a href="classaudio__tools_1_1_audio_stream.html">audio_tools::AudioStream</a></div><div class="ttdoc">Base class for all Audio Streams. It support the boolean operator to test if the object is ready with...</div><div class="ttdef"><b>Definition:</b> BaseStream.h:109</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_audio_stream_html_acbaca7240bc555603b0da5b7ca11ce10"><div class="ttname"><a href="classaudio__tools_1_1_audio_stream.html#acbaca7240bc555603b0da5b7ca11ce10">audio_tools::AudioStream::setAudioInfo</a></div><div class="ttdeci">virtual void setAudioInfo(AudioInfo newInfo) override</div><div class="ttdoc">Defines the input AudioInfo.</div><div class="ttdef"><b>Definition:</b> BaseStream.h:117</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_i2_s_config_e_s_p32_html"><div class="ttname"><a href="classaudio__tools_1_1_i2_s_config_e_s_p32.html">audio_tools::I2SConfigESP32</a></div><div class="ttdoc">Configuration for ESP32 legacy i2s.</div><div class="ttdef"><b>Definition:</b> I2SConfigESP32.h:23</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_i2_s_config_e_s_p32_html_a31a454d24fb1f4d74779a0ff668d54cc"><div class="ttname"><a href="classaudio__tools_1_1_i2_s_config_e_s_p32.html#a31a454d24fb1f4d74779a0ff668d54cc">audio_tools::I2SConfigESP32::rx_tx_mode</a></div><div class="ttdeci">RxTxMode rx_tx_mode</div><div class="ttdoc">public settings</div><div class="ttdef"><b>Definition:</b> I2SConfigESP32.h:59</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_i2_s_stream_html"><div class="ttname"><a href="classaudio__tools_1_1_i2_s_stream.html">audio_tools::I2SStream</a></div><div class="ttdoc">We support the Stream interface for the I2S access. In addition we allow a separate mute pin which mi...</div><div class="ttdef"><b>Definition:</b> I2SStream.h:33</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_i2_s_stream_html_a6406b16cb31ad79201459cb48b1ad6f0"><div class="ttname"><a href="classaudio__tools_1_1_i2_s_stream.html#a6406b16cb31ad79201459cb48b1ad6f0">audio_tools::I2SStream::readBytes</a></div><div class="ttdeci">virtual size_t readBytes(uint8_t *data, size_t len) override</div><div class="ttdoc">Reads the audio data.</div><div class="ttdef"><b>Definition:</b> I2SStream.h:122</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_i2_s_stream_html_a87feead15897a49c7dccb043ac9fcddc"><div class="ttname"><a href="classaudio__tools_1_1_i2_s_stream.html#a87feead15897a49c7dccb043ac9fcddc">audio_tools::I2SStream::setAudioInfo</a></div><div class="ttdeci">virtual void setAudioInfo(AudioInfo info)</div><div class="ttdoc">updates the sample rate dynamically</div><div class="ttdef"><b>Definition:</b> I2SStream.h:92</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_i2_s_stream_html_a8b8471dbbdc5527cdf9bfd31612cc973"><div class="ttname"><a href="classaudio__tools_1_1_i2_s_stream.html#a8b8471dbbdc5527cdf9bfd31612cc973">audio_tools::I2SStream::write</a></div><div class="ttdeci">virtual size_t write(const uint8_t *data, size_t len)</div><div class="ttdoc">Writes the audio data to I2S.</div><div class="ttdef"><b>Definition:</b> I2SStream.h:115</div></div>
<div class="ttc" id="aclassaudio__tools_1_1_i2_s_stream_html_aaf81d3fdaf258088d7692fa70cece087"><div class="ttname"><a href="classaudio__tools_1_1_i2_s_stream.html#aaf81d3fdaf258088d7692fa70cece087">audio_tools::I2SStream::end</a></div><div class="ttdeci">void end()</div><div class="ttdoc">Stops the I2S interface.</div><div class="ttdef"><b>Definition:</b> I2SStream.h:84</div></div>
<div class="ttc" id="agroup__basic_html_ga8c528baf37154d347366083f0f816846"><div class="ttname"><a href="group__basic.html#ga8c528baf37154d347366083f0f816846">stop</a></div><div class="ttdeci">void stop()</div><div class="ttdoc">Public generic methods.</div><div class="ttdef"><b>Definition:</b> AudioRuntime.h:27</div></div>
<div class="ttc" id="agroup__basic_html_ga8cbd91a8bac9b5ab425112be1620eb49"><div class="ttname"><a href="group__basic.html#ga8cbd91a8bac9b5ab425112be1620eb49">audio_tools::RxTxMode</a></div><div class="ttdeci">RxTxMode</div><div class="ttdoc">The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...</div><div class="ttdef"><b>Definition:</b> AudioTypes.h:26</div></div>
<div class="ttc" id="anamespaceaudio__tools_html"><div class="ttname"><a href="namespaceaudio__tools.html">audio_tools</a></div><div class="ttdoc">Generic Implementation of sound input and output for desktop environments using portaudio.</div><div class="ttdef"><b>Definition:</b> AnalogAudioArduino.h:12</div></div>
<div class="ttc" id="astructaudio__tools_1_1_audio_info_html"><div class="ttname"><a href="structaudio__tools_1_1_audio_info.html">audio_tools::AudioInfo</a></div><div class="ttdoc">Basic Audio information which drives e.g. I2S.</div><div class="ttdef"><b>Definition:</b> AudioTypes.h:50</div></div>
<div class="ttc" id="astructaudio__tools_1_1_audio_info_html_a0e86c53dfa0ad5dc0d2ecd0304fabc95"><div class="ttname"><a href="structaudio__tools_1_1_audio_info.html#a0e86c53dfa0ad5dc0d2ecd0304fabc95">audio_tools::AudioInfo::sample_rate</a></div><div class="ttdeci">sample_rate_t sample_rate</div><div class="ttdoc">Sample Rate: e.g 44100.</div><div class="ttdef"><b>Definition:</b> AudioTypes.h:53</div></div>
<div class="ttc" id="astructaudio__tools_1_1_audio_info_html_a1ac7822956f57069d76da865d6b33c55"><div class="ttname"><a href="structaudio__tools_1_1_audio_info.html#a1ac7822956f57069d76da865d6b33c55">audio_tools::AudioInfo::channels</a></div><div class="ttdeci">uint16_t channels</div><div class="ttdoc">Number of channels: 2=stereo, 1=mono.</div><div class="ttdef"><b>Definition:</b> AudioTypes.h:55</div></div>
<div class="ttc" id="astructaudio__tools_1_1_audio_info_html_aa65c89fa8336bfdc4f8d916d9d415a9f"><div class="ttname"><a href="structaudio__tools_1_1_audio_info.html#aa65c89fa8336bfdc4f8d916d9d415a9f">audio_tools::AudioInfo::bits_per_sample</a></div><div class="ttdeci">uint8_t bits_per_sample</div><div class="ttdoc">Number of bits per sample (int16_t = 16 bits)</div><div class="ttdef"><b>Definition:</b> AudioTypes.h:57</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>