mirror of https://github.com/hmatuschek/libsdr
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1105 lines
240 KiB
HTML
1105 lines
240 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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.8.9.1"/>
|
|
<title>libsdr: /Users/hannes/Uni/Elektronik/sdr/libsdr/src/utils.hh 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>
|
|
<script type="text/javascript">
|
|
$(document).ready(function() { init_search(); });
|
|
</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 style="padding-left: 0.5em;">
|
|
<div id="projectname">libsdr
|
|
 <span id="projectnumber">0.1.0</span>
|
|
</div>
|
|
<div id="projectbrief">A simple SDR library</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.8.9.1 -->
|
|
<script type="text/javascript">
|
|
var searchBox = new SearchBox("searchBox", "search",false,'Search');
|
|
</script>
|
|
<div id="navrow1" class="tabs">
|
|
<ul class="tablist">
|
|
<li><a href="index.html"><span>Main Page</span></a></li>
|
|
<li><a href="pages.html"><span>Related Pages</span></a></li>
|
|
<li><a href="modules.html"><span>Modules</span></a></li>
|
|
<li><a href="annotated.html"><span>Classes</span></a></li>
|
|
<li class="current"><a href="files.html"><span>Files</span></a></li>
|
|
<li>
|
|
<div id="MSearchBox" class="MSearchBoxInactive">
|
|
<span class="left">
|
|
<img id="MSearchSelect" src="search/mag_sel.png"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
alt=""/>
|
|
<input type="text" id="MSearchField" value="Search" accesskey="S"
|
|
onfocus="searchBox.OnSearchFieldFocus(true)"
|
|
onblur="searchBox.OnSearchFieldFocus(false)"
|
|
onkeyup="searchBox.OnSearchFieldChange(event)"/>
|
|
</span><span class="right">
|
|
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
|
|
</span>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div id="navrow2" class="tabs2">
|
|
<ul class="tablist">
|
|
<li><a href="files.html"><span>File List</span></a></li>
|
|
</ul>
|
|
</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> </ul>
|
|
</div>
|
|
</div><!-- top -->
|
|
<div class="header">
|
|
<div class="headertitle">
|
|
<div class="title">utils.hh</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="preprocessor">#ifndef __SDR_UTILS_HH__</span></div>
|
|
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="preprocessor">#define __SDR_UTILS_HH__</span></div>
|
|
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> </div>
|
|
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="preprocessor">#include "config.hh"</span></div>
|
|
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="preprocessor">#include "node.hh"</span></div>
|
|
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="preprocessor">#include "traits.hh"</span></div>
|
|
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="preprocessor">#include "operators.hh"</span></div>
|
|
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="preprocessor">#include "logger.hh"</span></div>
|
|
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#include <ctime></span></div>
|
|
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> </div>
|
|
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div>
|
|
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="keyword">namespace </span><a class="code" href="namespacesdr.html">sdr</a> {</div>
|
|
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div>
|
|
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="classsdr_1_1_real_imag_part.html"> 17</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_real_imag_part.html">RealImagPart</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a>< std::complex<Scalar> >, <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> {</div>
|
|
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classsdr_1_1_real_imag_part.html#a660f45e4f9967162d1031769fec7d6b8"> 22</a></span>  <a class="code" href="classsdr_1_1_real_imag_part.html#a660f45e4f9967162d1031769fec7d6b8">RealImagPart</a>(<span class="keywordtype">bool</span> select_real, <span class="keywordtype">double</span> scale=1.0)</div>
|
|
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  : <a class="code" href="classsdr_1_1_sink.html">Sink</a>< <a class="code" href="namespacestd.html">std</a>::complex<Scalar> >(), <a class="code" href="classsdr_1_1_source.html">Source</a>(), <a class="code" href="classsdr_1_1_real_imag_part.html#acd2bc9b8566fcddc0bf80a877bcebdfc">_buffer</a>(), <a class="code" href="classsdr_1_1_real_imag_part.html#adb9159445d2a383cd72c94d405c6debb">_select_real</a>(select_real), <a class="code" href="classsdr_1_1_real_imag_part.html#ab0c78ce9e462059be02dfd38aefdc52f">_scale</a>(scale)</div>
|
|
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>  {</div>
|
|
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  }</div>
|
|
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div>
|
|
<div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="classsdr_1_1_real_imag_part.html#ad1a035bdf7d65807bc00f02e76b14cfa"> 29</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_real_imag_part.html#ad1a035bdf7d65807bc00f02e76b14cfa">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="comment">// Needs full config</span></div>
|
|
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  <span class="keywordflow">if</span> ((Config::Type_UNDEFINED==src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()) || (0 == src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>())) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>  <span class="comment">// Assert complex type</span></div>
|
|
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">if</span> (src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>() != Config::typeId< std::complex<Scalar> >()) {</div>
|
|
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err;</div>
|
|
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>  err << <span class="stringliteral">"Can not configure sink of RealPart: Invalid buffer type "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()</div>
|
|
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  << <span class="stringliteral">" expected "</span> << Config::typeId< std::complex<Scalar> >();</div>
|
|
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>  <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  }</div>
|
|
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  <span class="comment">// Resize buffer</span></div>
|
|
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>  <a class="code" href="classsdr_1_1_real_imag_part.html#acd2bc9b8566fcddc0bf80a877bcebdfc">_buffer</a> = <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a>(src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>());</div>
|
|
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <span class="comment">// propergate config</span></div>
|
|
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  this-><a class="code" href="classsdr_1_1_source.html#afd4c7e3fb94a057ac40e9877167791ec">setConfig</a>(<a class="code" href="classsdr_1_1_config.html">Config</a>(Config::typeId< Scalar >(), src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>(),</div>
|
|
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>(), 1));</div>
|
|
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div>
|
|
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">if</span> (<a class="code" href="classsdr_1_1_real_imag_part.html#adb9159445d2a383cd72c94d405c6debb">_select_real</a>) {</div>
|
|
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classsdr_1_1_log_message.html">LogMessage</a> msg(LOG_DEBUG);</div>
|
|
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  msg << <span class="stringliteral">"Configured RealPart node:"</span> << std::endl</div>
|
|
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  << <span class="stringliteral">" type: "</span> << Config::typeId<Scalar>() << std::endl</div>
|
|
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  << <span class="stringliteral">" sample-rate: "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>() << std::endl</div>
|
|
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  << <span class="stringliteral">" buffer-size: "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>();</div>
|
|
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  <a class="code" href="classsdr_1_1_logger.html#a9b12ce53593be134b7d7dea62607d22d">Logger::get</a>().<a class="code" href="classsdr_1_1_logger.html#ab887e598a2c4dc1a3a3f1027d91e0e58">log</a>(msg);</div>
|
|
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  }</div>
|
|
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div>
|
|
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div>
|
|
<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="classsdr_1_1_real_imag_part.html#ab71379580b5138b2c351da64c58253b3"> 56</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_real_imag_part.html#ab71379580b5138b2c351da64c58253b3">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer</a><std::complex<Scalar> > &buffer, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="comment">// Convert</span></div>
|
|
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <span class="keywordflow">if</span> (<a class="code" href="classsdr_1_1_real_imag_part.html#adb9159445d2a383cd72c94d405c6debb">_select_real</a>) {</div>
|
|
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<buffer.size(); i++) {</div>
|
|
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <a class="code" href="classsdr_1_1_real_imag_part.html#acd2bc9b8566fcddc0bf80a877bcebdfc">_buffer</a>[i] = <a class="code" href="classsdr_1_1_real_imag_part.html#ab0c78ce9e462059be02dfd38aefdc52f">_scale</a>*buffer[i].real();</div>
|
|
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  }</div>
|
|
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<buffer.size(); i++) {</div>
|
|
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  <a class="code" href="classsdr_1_1_real_imag_part.html#acd2bc9b8566fcddc0bf80a877bcebdfc">_buffer</a>[i] = <a class="code" href="classsdr_1_1_real_imag_part.html#ab0c78ce9e462059be02dfd38aefdc52f">_scale</a>*buffer[i].imag();</div>
|
|
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  }</div>
|
|
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  }</div>
|
|
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(<a class="code" href="classsdr_1_1_real_imag_part.html#acd2bc9b8566fcddc0bf80a877bcebdfc">_buffer</a>);</div>
|
|
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div>
|
|
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div>
|
|
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="classsdr_1_1_real_imag_part.html#acd2bc9b8566fcddc0bf80a877bcebdfc"> 72</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> <a class="code" href="classsdr_1_1_real_imag_part.html#acd2bc9b8566fcddc0bf80a877bcebdfc">_buffer</a>;</div>
|
|
<div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classsdr_1_1_real_imag_part.html#adb9159445d2a383cd72c94d405c6debb"> 74</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classsdr_1_1_real_imag_part.html#adb9159445d2a383cd72c94d405c6debb">_select_real</a>;</div>
|
|
<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="classsdr_1_1_real_imag_part.html#ab0c78ce9e462059be02dfd38aefdc52f"> 76</a></span>  <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_real_imag_part.html#ab0c78ce9e462059be02dfd38aefdc52f">_scale</a>;</div>
|
|
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> };</div>
|
|
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> </div>
|
|
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div>
|
|
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="classsdr_1_1_real_part.html"> 83</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_real_part.html">RealPart</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_real_imag_part.html">RealImagPart</a><Scalar></div>
|
|
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> {</div>
|
|
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="classsdr_1_1_real_part.html#a3a7f5dab0a46d0900f1f0f3a249fac38"> 87</a></span>  <a class="code" href="classsdr_1_1_real_part.html#a3a7f5dab0a46d0900f1f0f3a249fac38">RealPart</a>(<span class="keywordtype">double</span> scale=1.0)</div>
|
|
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  : <a class="code" href="classsdr_1_1_real_imag_part.html">RealImagPart</a><Scalar>(true, scale)</div>
|
|
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  {</div>
|
|
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  }</div>
|
|
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> };</div>
|
|
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div>
|
|
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div>
|
|
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classsdr_1_1_imag_part.html"> 98</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_imag_part.html">ImagPart</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_real_imag_part.html">RealImagPart</a><Scalar></div>
|
|
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div>
|
|
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00102"></a><span class="lineno"><a class="line" href="classsdr_1_1_imag_part.html#ac72d38fd751b2dcfd999285e7ff84104"> 102</a></span>  <a class="code" href="classsdr_1_1_imag_part.html#ac72d38fd751b2dcfd999285e7ff84104">ImagPart</a>(<span class="keywordtype">double</span> scale=1.0)</div>
|
|
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  : <a class="code" href="classsdr_1_1_real_imag_part.html">RealImagPart</a><Scalar>(false, scale)</div>
|
|
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  {</div>
|
|
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  }</div>
|
|
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> };</div>
|
|
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div>
|
|
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div>
|
|
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html"> 113</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_i_q_balance.html">IQBalance</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a>< std::complex<Scalar> >, <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> {</div>
|
|
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#a547a6def95efec1987ca5ed8f5a79326"> 117</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classsdr_1_1_traits.html">Traits<Scalar>::SScalar</a> <a class="code" href="classsdr_1_1_i_q_balance.html#a547a6def95efec1987ca5ed8f5a79326">SScalar</a>;</div>
|
|
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div>
|
|
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#a0ed23d78d6d5cdd9130fb7fb08eefb02"> 124</a></span>  <a class="code" href="classsdr_1_1_i_q_balance.html#a0ed23d78d6d5cdd9130fb7fb08eefb02">IQBalance</a>(<span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a>=0.0)</div>
|
|
<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  : <a class="code" href="classsdr_1_1_sink.html">Sink</a>< <a class="code" href="namespacestd.html">std</a>::complex<Scalar> >(), <a class="code" href="classsdr_1_1_source.html">Source</a>(), <a class="code" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">_realFact</a>(1), <a class="code" href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a">_imagFact</a>(1)</div>
|
|
<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  {</div>
|
|
<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span> (<a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a> < 0) {</div>
|
|
<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// scale real part</span></div>
|
|
<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a> = std::min(1.,-<a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a>);</div>
|
|
<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">_realFact</a> = (1-<a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a>)*(1<<8);</div>
|
|
<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a">_imagFact</a> = (1<<8);</div>
|
|
<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  } <span class="keywordflow">else</span> { <span class="comment">// scale imag part</span></div>
|
|
<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a> = std::min(1., <a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a>);</div>
|
|
<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">_realFact</a> = (1<<8);</div>
|
|
<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a">_imagFact</a> = (1-<a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a>)*(1<<8);</div>
|
|
<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  }</div>
|
|
<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  }</div>
|
|
<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div>
|
|
<div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#a32b7df4e96d0ad06fdab2e6cb8dbcea6"> 140</a></span>  <span class="keyword">virtual</span> <a class="code" href="classsdr_1_1_i_q_balance.html#a32b7df4e96d0ad06fdab2e6cb8dbcea6">~IQBalance</a>() {</div>
|
|
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aefff792d62de2b41b22fbc9ae86ea0c3">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#a8ffd3cbf476c9036bfada9ae8c7c5e05">unref</a>();</div>
|
|
<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  }</div>
|
|
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> </div>
|
|
<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e"> 145</a></span>  <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a>()<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">if</span> (<a class="code" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">_realFact</a> != (1<<8)) {</div>
|
|
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">return</span> (<span class="keywordtype">double</span>(<a class="code" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">_realFact</a>)/(1<<8)-1);</div>
|
|
<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  }</div>
|
|
<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> (1-<span class="keywordtype">double</span>(<a class="code" href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a">_imagFact</a>)/(1<<8));</div>
|
|
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  }</div>
|
|
<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div>
|
|
<div class="line"><a name="l00153"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#a5e933c51ede575faec047d2e2cc1e384"> 153</a></span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_i_q_balance.html#a5e933c51ede575faec047d2e2cc1e384">setBalance</a>(<span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">balance</a>) {</div>
|
|
<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="keywordflow">if</span> (balance < 0) {</div>
|
|
<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// scale real part</span></div>
|
|
<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  balance = std::min(1.,-balance);</div>
|
|
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">_realFact</a> = balance*(1<<8);</div>
|
|
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a">_imagFact</a> = (1<<8);</div>
|
|
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  } <span class="keywordflow">else</span> { <span class="comment">// scale imag part</span></div>
|
|
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  balance = std::min(1., balance);</div>
|
|
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">_realFact</a> = (1<<8);</div>
|
|
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a">_imagFact</a> = balance*(1<<8);</div>
|
|
<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  }</div>
|
|
<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  }</div>
|
|
<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> </div>
|
|
<div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#ad87c15d962ab16363ab0b463a9e9724b"> 167</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_i_q_balance.html#ad87c15d962ab16363ab0b463a9e9724b">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="comment">// Check if config is complete</span></div>
|
|
<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> (! src_cfg.<a class="code" href="classsdr_1_1_config.html#a485e488e1411e52c722b22d1807be406">hasBufferSize</a>()) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">// Allocate buffer</span></div>
|
|
<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#aefff792d62de2b41b22fbc9ae86ea0c3">_buffer</a> = <a class="code" href="classsdr_1_1_buffer.html">Buffer< std::complex<Scalar></a> >(src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>());</div>
|
|
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="comment">// Forward config</span></div>
|
|
<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <a class="code" href="classsdr_1_1_config.html">Config</a> cfg(src_cfg); cfg.setNumBuffers(1);</div>
|
|
<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  this-><a class="code" href="classsdr_1_1_source.html#afd4c7e3fb94a057ac40e9877167791ec">setConfig</a>(cfg);</div>
|
|
<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  }</div>
|
|
<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div>
|
|
<div class="line"><a name="l00178"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#a0a077f57ec502c76244863f1f940d028"> 178</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_i_q_balance.html#a0a077f57ec502c76244863f1f940d028">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer</a><std::complex<Scalar> > &buffer, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">if</span> (allow_overwrite) {</div>
|
|
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#a422c8725e158071e147f372759fad99a">_process</a>(buffer, buffer);</div>
|
|
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(buffer);</div>
|
|
<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="classsdr_1_1_i_q_balance.html#a422c8725e158071e147f372759fad99a">_process</a>(buffer, <a class="code" href="classsdr_1_1_i_q_balance.html#aefff792d62de2b41b22fbc9ae86ea0c3">_buffer</a>);</div>
|
|
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(<a class="code" href="classsdr_1_1_i_q_balance.html#aefff792d62de2b41b22fbc9ae86ea0c3">_buffer</a>.<a class="code" href="classsdr_1_1_buffer.html#a3eca322ed118a7b5c4cc62b25ce5d119">head</a>(buffer.size()));</div>
|
|
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div>
|
|
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  }</div>
|
|
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div>
|
|
<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#a422c8725e158071e147f372759fad99a"> 190</a></span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_i_q_balance.html#a422c8725e158071e147f372759fad99a">_process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer</a>< std::complex<Scalar> > &in, <span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer</a>< std::complex<Scalar> > &out) {</div>
|
|
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<in.size(); i++) {</div>
|
|
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  out[i] = std::complex<Scalar>((<a class="code" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">_realFact</a>*<a class="code" href="classsdr_1_1_i_q_balance.html#a547a6def95efec1987ca5ed8f5a79326">SScalar</a>(in[i].real()))/(1<<8),</div>
|
|
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  (<a class="code" href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a">_imagFact</a>*<a class="code" href="classsdr_1_1_i_q_balance.html#a547a6def95efec1987ca5ed8f5a79326">SScalar</a>(in[i].imag()))/(1<<8));</div>
|
|
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  }</div>
|
|
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  }</div>
|
|
<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div>
|
|
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00199"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1"> 199</a></span>  int32_t <a class="code" href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">_realFact</a>;</div>
|
|
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a"> 201</a></span>  int32_t <a class="code" href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a">_imagFact</a>;</div>
|
|
<div class="line"><a name="l00203"></a><span class="lineno"><a class="line" href="classsdr_1_1_i_q_balance.html#aefff792d62de2b41b22fbc9ae86ea0c3"> 203</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer< std::complex<Scalar></a> > <a class="code" href="classsdr_1_1_i_q_balance.html#aefff792d62de2b41b22fbc9ae86ea0c3">_buffer</a>;</div>
|
|
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> };</div>
|
|
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div>
|
|
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div>
|
|
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keyword">template</span> <<span class="keyword">class</span> iScalar, <span class="keyword">class</span> oScalar=iScalar></div>
|
|
<div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="classsdr_1_1_to_complex.html"> 211</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_to_complex.html">ToComplex</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a><iScalar>, <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> {</div>
|
|
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="classsdr_1_1_to_complex.html#a65f7b684ffbc1f8b8b02760d693f21ea"> 215</a></span>  <a class="code" href="classsdr_1_1_to_complex.html#a65f7b684ffbc1f8b8b02760d693f21ea">ToComplex</a>(<span class="keywordtype">double</span> scale=1.0)</div>
|
|
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  : <a class="code" href="classsdr_1_1_sink.html">Sink</a><iScalar>(), <a class="code" href="classsdr_1_1_source.html">Source</a>(), <a class="code" href="classsdr_1_1_to_complex.html#a40dbe4df970113fab71aaf4150d6c648">_scale</a>(scale)</div>
|
|
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  {</div>
|
|
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  }</div>
|
|
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> </div>
|
|
<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="classsdr_1_1_to_complex.html#a318dbc6cdaf30baf9ee2de67ac57bc5a"> 222</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_to_complex.html#a318dbc6cdaf30baf9ee2de67ac57bc5a">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">// Requires at least type & buffer size</span></div>
|
|
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="keywordflow">if</span> (!src_cfg.<a class="code" href="classsdr_1_1_config.html#a7cdfc69aa8e3ab975db7251747343a20">hasType</a>() || !src_cfg.<a class="code" href="classsdr_1_1_config.html#a485e488e1411e52c722b22d1807be406">hasBufferSize</a>()) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="comment">// Check input type</span></div>
|
|
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span> (Config::typeId<iScalar>() != src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()) {</div>
|
|
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err;</div>
|
|
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  err << <span class="stringliteral">"Can not configure ToComplex node: Invalid buffer type "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()</div>
|
|
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  << <span class="stringliteral">", expected "</span> << Config::typeId<iScalar>();</div>
|
|
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div>
|
|
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">// Allocate buffer:</span></div>
|
|
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <a class="code" href="classsdr_1_1_to_complex.html#accdf35c4a20d7b22c9db4a43c6f1b2ba">_buffer</a> = <a class="code" href="classsdr_1_1_buffer.html">Buffer< std::complex<oScalar></a> >(src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>());</div>
|
|
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">// Propergate config</span></div>
|
|
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  this-><a class="code" href="classsdr_1_1_source.html#afd4c7e3fb94a057ac40e9877167791ec">setConfig</a>(</div>
|
|
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <a class="code" href="classsdr_1_1_config.html">Config</a>(<a class="code" href="classsdr_1_1_config.html#a71df9feb586e1d33241dec5d6a5beae4">Config::typeId</a>< std::complex<oScalar> >(),</div>
|
|
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>(), src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>(), src_cfg.<a class="code" href="classsdr_1_1_config.html#a023ef493d310cfc8a304c2443c69fc51">numBuffers</a>()));</div>
|
|
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  }</div>
|
|
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div>
|
|
<div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="classsdr_1_1_to_complex.html#a7cd62714938db65f91578ad5042a4ed3"> 241</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_to_complex.html#a7cd62714938db65f91578ad5042a4ed3">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<iScalar></a> &buffer, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span> (1.0 == <a class="code" href="classsdr_1_1_to_complex.html#a40dbe4df970113fab71aaf4150d6c648">_scale</a>) {</div>
|
|
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<buffer.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>(); i++) {</div>
|
|
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <a class="code" href="classsdr_1_1_to_complex.html#accdf35c4a20d7b22c9db4a43c6f1b2ba">_buffer</a>[i] = std::complex<oScalar>(oScalar(buffer[i]));</div>
|
|
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  }</div>
|
|
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<buffer.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>(); i++) {</div>
|
|
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classsdr_1_1_to_complex.html#accdf35c4a20d7b22c9db4a43c6f1b2ba">_buffer</a>[i] = std::complex<oScalar>(<a class="code" href="classsdr_1_1_to_complex.html#a40dbe4df970113fab71aaf4150d6c648">_scale</a>*oScalar(buffer[i]));</div>
|
|
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div>
|
|
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div>
|
|
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="comment">// propergate buffer</span></div>
|
|
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(<a class="code" href="classsdr_1_1_to_complex.html#accdf35c4a20d7b22c9db4a43c6f1b2ba">_buffer</a>.<a class="code" href="classsdr_1_1_buffer.html#a3eca322ed118a7b5c4cc62b25ce5d119">head</a>(buffer.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>()));</div>
|
|
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  }</div>
|
|
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div>
|
|
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00257"></a><span class="lineno"><a class="line" href="classsdr_1_1_to_complex.html#a40dbe4df970113fab71aaf4150d6c648"> 257</a></span>  <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_to_complex.html#a40dbe4df970113fab71aaf4150d6c648">_scale</a>;</div>
|
|
<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classsdr_1_1_to_complex.html#accdf35c4a20d7b22c9db4a43c6f1b2ba"> 259</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer< std::complex<oScalar></a> > <a class="code" href="classsdr_1_1_to_complex.html#accdf35c4a20d7b22c9db4a43c6f1b2ba">_buffer</a>;</div>
|
|
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> };</div>
|
|
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> </div>
|
|
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div>
|
|
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div>
|
|
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="keyword">template</span> <<span class="keyword">class</span> iScalar, <span class="keyword">class</span> oScalar></div>
|
|
<div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html"> 267</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_cast.html">Cast</a> : <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a><iScalar>, <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> {</div>
|
|
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#a6d0afd25d2d0d2e0dd89dc1759a3f7b4"> 271</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classsdr_1_1_traits.html">Traits<iScalar>::SScalar</a> <a class="code" href="classsdr_1_1_cast.html#a6d0afd25d2d0d2e0dd89dc1759a3f7b4">iSScalar</a>;</div>
|
|
<div class="line"><a name="l00273"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#a348bba2ba8a9312296d58427f0ef5674"> 273</a></span>  <span class="keyword">typedef</span> <span class="keyword">typename</span> <a class="code" href="classsdr_1_1_traits.html">Traits<oScalar>::SScalar</a> <a class="code" href="classsdr_1_1_cast.html#a348bba2ba8a9312296d58427f0ef5674">oSScalar</a>;</div>
|
|
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> </div>
|
|
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00277"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#a0ad652944e908118d862c4d806b91954"> 277</a></span>  <a class="code" href="classsdr_1_1_cast.html#a0ad652944e908118d862c4d806b91954">Cast</a>(oScalar <a class="code" href="classsdr_1_1_cast.html#ac04217fae39c2f7fe42de56d28856f2e">scale</a>=1, iScalar shift=0)</div>
|
|
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  : <a class="code" href="classsdr_1_1_sink.html">Sink</a><iScalar>(), <a class="code" href="classsdr_1_1_source.html">Source</a>(), <a class="code" href="classsdr_1_1_cast.html#a76cdb3ac362446ec8a351f4621cd47dd">_can_overwrite</a>(false), <a class="code" href="classsdr_1_1_cast.html#abf6ebc0370f338cdf861efd30cc354ec">_do_scale</a>(false),</div>
|
|
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <a class="code" href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b">_scale</a>(<a class="code" href="classsdr_1_1_cast.html#ac04217fae39c2f7fe42de56d28856f2e">scale</a>), <a class="code" href="classsdr_1_1_cast.html#aab41bbc2d49266be3a42ac2f6c5685a8">_shift</a>(shift), <a class="code" href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7">_buffer</a>()</div>
|
|
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  {</div>
|
|
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  }</div>
|
|
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div>
|
|
<div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#a7abe34a154f45e89f1b8df475cb8109d"> 285</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_cast.html#a7abe34a154f45e89f1b8df475cb8109d">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">// only check type</span></div>
|
|
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keywordflow">if</span> (!src_cfg.<a class="code" href="classsdr_1_1_config.html#a7cdfc69aa8e3ab975db7251747343a20">hasType</a>()) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordflow">if</span> (src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>() != Config::typeId<iScalar>()) {</div>
|
|
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err;</div>
|
|
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  err << <span class="stringliteral">"Can not configure Cast: Invalid input type "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()</div>
|
|
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  << <span class="stringliteral">", expected "</span> << Config::typeId<iScalar>();</div>
|
|
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  }</div>
|
|
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div>
|
|
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="comment">// unreference buffer if non-empty</span></div>
|
|
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordflow">if</span> (! <a class="code" href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#a944346de6bb972f687716bee921a3bad">isEmpty</a>()) { <a class="code" href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#a8ffd3cbf476c9036bfada9ae8c7c5e05">unref</a>(); }</div>
|
|
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div>
|
|
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="comment">// allocate buffer</span></div>
|
|
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7">_buffer</a> = <a class="code" href="classsdr_1_1_buffer.html">Buffer<oScalar></a>(src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>());</div>
|
|
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> </div>
|
|
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <a class="code" href="classsdr_1_1_log_message.html">LogMessage</a> msg(LOG_DEBUG);</div>
|
|
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  msg << <span class="stringliteral">"Configure Cast node:"</span> << std::endl</div>
|
|
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  << <span class="stringliteral">" conversion: "</span><< Config::typeId<iScalar>()</div>
|
|
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  << <span class="stringliteral">" -> "</span> << Config::typeId<oScalar>() << std::endl</div>
|
|
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  << <span class="stringliteral">" in-place "</span> << (<a class="code" href="classsdr_1_1_cast.html#a76cdb3ac362446ec8a351f4621cd47dd">_can_overwrite</a> ? <span class="stringliteral">"true"</span> : <span class="stringliteral">"false"</span>) << std::endl</div>
|
|
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  << <span class="stringliteral">" scale: "</span> << <a class="code" href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b">_scale</a>;</div>
|
|
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <a class="code" href="classsdr_1_1_logger.html#a9b12ce53593be134b7d7dea62607d22d">Logger::get</a>().<a class="code" href="classsdr_1_1_logger.html#ab887e598a2c4dc1a3a3f1027d91e0e58">log</a>(msg);</div>
|
|
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div>
|
|
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <a class="code" href="classsdr_1_1_cast.html#a76cdb3ac362446ec8a351f4621cd47dd">_can_overwrite</a> = <span class="keyword">sizeof</span>(iScalar) >= <span class="keyword">sizeof</span>(oScalar);</div>
|
|
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <a class="code" href="classsdr_1_1_cast.html#abf6ebc0370f338cdf861efd30cc354ec">_do_scale</a> = (<a class="code" href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b">_scale</a> != oScalar(0));</div>
|
|
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div>
|
|
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">// forward config</span></div>
|
|
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  this-><a class="code" href="classsdr_1_1_source.html#afd4c7e3fb94a057ac40e9877167791ec">setConfig</a>(<a class="code" href="classsdr_1_1_config.html">Config</a>(Config::typeId<oScalar>(), src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>(),</div>
|
|
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>(), 1));</div>
|
|
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  }</div>
|
|
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div>
|
|
<div class="line"><a name="l00318"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#a87fce857f7edce169b999d8362715a5b"> 318</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_cast.html#a87fce857f7edce169b999d8362715a5b">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<iScalar></a> &buffer, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">if</span> (allow_overwrite && <a class="code" href="classsdr_1_1_cast.html#a76cdb3ac362446ec8a351f4621cd47dd">_can_overwrite</a>) {</div>
|
|
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <a class="code" href="classsdr_1_1_cast.html#aa4258da6083056686376b32aa0ae15cd">_process</a>(buffer, <a class="code" href="classsdr_1_1_buffer.html">Buffer<oScalar></a>(buffer));</div>
|
|
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#ab2f4ac2dc396108141ec8473bfb7f99a">isUnused</a>()) {</div>
|
|
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <a class="code" href="classsdr_1_1_cast.html#aa4258da6083056686376b32aa0ae15cd">_process</a>(buffer, <a class="code" href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7">_buffer</a>);</div>
|
|
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="preprocessor">#ifdef SDR_DEBUG</span></div>
|
|
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  std::cerr << <span class="stringliteral">"Cast: Drop buffer: Output buffer is still in use by "</span></div>
|
|
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  << <a class="code" href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#ab6079ff8999d3878071d6308312e063a">refCount</a>() << std::endl;</div>
|
|
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="preprocessor">#endif</span></div>
|
|
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  }</div>
|
|
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  }</div>
|
|
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> </div>
|
|
<div class="line"><a name="l00332"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#ac04217fae39c2f7fe42de56d28856f2e"> 332</a></span>  <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_cast.html#ac04217fae39c2f7fe42de56d28856f2e">scale</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b">_scale</a>; }</div>
|
|
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> </div>
|
|
<div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#a0b89fdaaac6bc4e52509870fa8740cbe"> 335</a></span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_cast.html#a0b89fdaaac6bc4e52509870fa8740cbe">setScale</a>(<span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_cast.html#ac04217fae39c2f7fe42de56d28856f2e">scale</a>) {</div>
|
|
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <a class="code" href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b">_scale</a> = <a class="code" href="classsdr_1_1_cast.html#ac04217fae39c2f7fe42de56d28856f2e">scale</a>;</div>
|
|
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <a class="code" href="classsdr_1_1_cast.html#abf6ebc0370f338cdf861efd30cc354ec">_do_scale</a> = (0 != <a class="code" href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b">_scale</a>);</div>
|
|
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  }</div>
|
|
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> </div>
|
|
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00342"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#aa4258da6083056686376b32aa0ae15cd"> 342</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_cast.html#aa4258da6083056686376b32aa0ae15cd">_process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<iScalar></a> &in, <span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<oScalar></a> &out) {</div>
|
|
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="keywordflow">if</span> (<a class="code" href="classsdr_1_1_cast.html#abf6ebc0370f338cdf861efd30cc354ec">_do_scale</a>) {</div>
|
|
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<in.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>(); i++) {</div>
|
|
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  out[i] = <a class="code" href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b">_scale</a>*( cast<iScalar,oScalar>(in[i]) + cast<iScalar, oScalar>(<a class="code" href="classsdr_1_1_cast.html#aab41bbc2d49266be3a42ac2f6c5685a8">_shift</a>) );</div>
|
|
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  }</div>
|
|
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  } <span class="keywordflow">else</span> {</div>
|
|
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<in.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>(); i++) {</div>
|
|
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  out[i] = in[i]+<a class="code" href="classsdr_1_1_cast.html#aab41bbc2d49266be3a42ac2f6c5685a8">_shift</a>;</div>
|
|
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  }</div>
|
|
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  }</div>
|
|
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(out.<a class="code" href="classsdr_1_1_buffer.html#a3eca322ed118a7b5c4cc62b25ce5d119">head</a>(in.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>()));</div>
|
|
<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  }</div>
|
|
<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> </div>
|
|
<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#a76cdb3ac362446ec8a351f4621cd47dd"> 357</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classsdr_1_1_cast.html#a76cdb3ac362446ec8a351f4621cd47dd">_can_overwrite</a>;</div>
|
|
<div class="line"><a name="l00359"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#abf6ebc0370f338cdf861efd30cc354ec"> 359</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classsdr_1_1_cast.html#abf6ebc0370f338cdf861efd30cc354ec">_do_scale</a>;</div>
|
|
<div class="line"><a name="l00361"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b"> 361</a></span>  oScalar <a class="code" href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b">_scale</a>;</div>
|
|
<div class="line"><a name="l00363"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#aab41bbc2d49266be3a42ac2f6c5685a8"> 363</a></span>  iScalar <a class="code" href="classsdr_1_1_cast.html#aab41bbc2d49266be3a42ac2f6c5685a8">_shift</a>;</div>
|
|
<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7"> 365</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer<oScalar></a> <a class="code" href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7">_buffer</a>;</div>
|
|
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> };</div>
|
|
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> </div>
|
|
<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div>
|
|
<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> </div>
|
|
<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classsdr_1_1_unsigned_to_signed.html"> 372</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_unsigned_to_signed.html">UnsignedToSigned</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink_base.html">SinkBase</a>, <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> {</div>
|
|
<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <a class="code" href="classsdr_1_1_unsigned_to_signed.html#a125b90d791bf8e77137ef45f4c71a0c2">UnsignedToSigned</a>(<span class="keywordtype">float</span> scale=1.0);</div>
|
|
<div class="line"><a name="l00378"></a><span class="lineno"> 378</span>  <span class="keyword">virtual</span> <a class="code" href="classsdr_1_1_unsigned_to_signed.html#a6a77c851737999a0340ccecea78f7b2d">~UnsignedToSigned</a>();</div>
|
|
<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> </div>
|
|
<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_unsigned_to_signed.html#a96623592a4d99c2305896d47bd7ccf03">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg);</div>
|
|
<div class="line"><a name="l00383"></a><span class="lineno"> 383</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_unsigned_to_signed.html#a0d33c6c5e8cbfee5b549daa11263f471">handleBuffer</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &buffer, <span class="keywordtype">bool</span> allow_overwrite);</div>
|
|
<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div>
|
|
<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_unsigned_to_signed.html#a39a09d9fb122713b6b8fa187e4d33c07">_process_int8</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &in, <span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &out);</div>
|
|
<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_unsigned_to_signed.html#ab3736d949dac9e30b98d81b31df182a6">_process_int16</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &in, <span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &out);</div>
|
|
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> </div>
|
|
<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00393"></a><span class="lineno"><a class="line" href="classsdr_1_1_unsigned_to_signed.html#ae4c40f77cfa1988027d6a8917828f822"> 393</a></span>  void (<a class="code" href="classsdr_1_1_unsigned_to_signed.html">UnsignedToSigned</a>::*<a class="code" href="classsdr_1_1_unsigned_to_signed.html#ae4c40f77cfa1988027d6a8917828f822">_process</a>)(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &in, <span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &out);</div>
|
|
<div class="line"><a name="l00395"></a><span class="lineno"><a class="line" href="classsdr_1_1_unsigned_to_signed.html#a3cc3c87952251d8fa523e226d4f99d0b"> 395</a></span>  <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> <a class="code" href="classsdr_1_1_unsigned_to_signed.html#a3cc3c87952251d8fa523e226d4f99d0b">_buffer</a>;</div>
|
|
<div class="line"><a name="l00397"></a><span class="lineno"><a class="line" href="classsdr_1_1_unsigned_to_signed.html#af1580673231b72102b11e3defee63bee"> 397</a></span>  <span class="keywordtype">float</span> <a class="code" href="classsdr_1_1_unsigned_to_signed.html#af1580673231b72102b11e3defee63bee">_scale</a>;</div>
|
|
<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> };</div>
|
|
<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> </div>
|
|
<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> </div>
|
|
<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> </div>
|
|
<div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="classsdr_1_1_signed_to_unsigned.html"> 404</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_signed_to_unsigned.html">SignedToUnsigned</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink_base.html">SinkBase</a>, <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> {</div>
|
|
<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <a class="code" href="classsdr_1_1_signed_to_unsigned.html#a85e4ac10bb184cf3a22459efedb32523">SignedToUnsigned</a>();</div>
|
|
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="keyword">virtual</span> <a class="code" href="classsdr_1_1_signed_to_unsigned.html#a3c05ecc93f25194ceea462781d6e22a9">~SignedToUnsigned</a>();</div>
|
|
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> </div>
|
|
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_signed_to_unsigned.html#a3c95c11ec3424ab0188f4cfacb175a0c">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg);</div>
|
|
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_signed_to_unsigned.html#a45b29ca444478cb29c6faf119024efe6">handleBuffer</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &buffer, <span class="keywordtype">bool</span> allow_overwrite);</div>
|
|
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span> </div>
|
|
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_signed_to_unsigned.html#a42276f4e439813dc8eaa87ce798cbac2">_process_int8</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &in, <span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &out);</div>
|
|
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_signed_to_unsigned.html#a36a2394ea34ca02868708d7d94ac12bd">_process_int16</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &in, <span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &out);</div>
|
|
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div>
|
|
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00425"></a><span class="lineno"><a class="line" href="classsdr_1_1_signed_to_unsigned.html#a1eeac364170e652a32febf7fa2d64c3b"> 425</a></span>  void (<a class="code" href="classsdr_1_1_signed_to_unsigned.html">SignedToUnsigned</a>::*<a class="code" href="classsdr_1_1_signed_to_unsigned.html#a1eeac364170e652a32febf7fa2d64c3b">_process</a>)(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &in, <span class="keyword">const</span> <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> &out);</div>
|
|
<div class="line"><a name="l00427"></a><span class="lineno"><a class="line" href="classsdr_1_1_signed_to_unsigned.html#a4d88721f8a5dd40c39621b4bf3a574bd"> 427</a></span>  <a class="code" href="classsdr_1_1_raw_buffer.html">RawBuffer</a> <a class="code" href="classsdr_1_1_signed_to_unsigned.html#a4d88721f8a5dd40c39621b4bf3a574bd">_buffer</a>;</div>
|
|
<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> };</div>
|
|
<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> </div>
|
|
<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> </div>
|
|
<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00437"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html"> 437</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_freq_shift.html">FreqShift</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a>< std::complex<Scalar> >, <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> {</div>
|
|
<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00441"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#a277a98f4b337726d07b3245a920b6456"> 441</a></span>  <a class="code" href="classsdr_1_1_freq_shift.html#a277a98f4b337726d07b3245a920b6456">FreqShift</a>(<span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_freq_shift.html#a50f5b09085e30e1839a29d74f60c4b1d">shift</a>, Scalar scale=1.0)</div>
|
|
<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  : <a class="code" href="classsdr_1_1_sink.html">Sink</a>< <a class="code" href="namespacestd.html">std</a>::complex<Scalar> >(), <a class="code" href="classsdr_1_1_source.html">Source</a>(),</div>
|
|
<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <a class="code" href="classsdr_1_1_freq_shift.html#a806ffc298da46fad3a1a057e19a61db1">_shift</a>(shift), <a class="code" href="classsdr_1_1_freq_shift.html#a8e4ce9a7cb2b81b88cfc4f75f5ebc6a9">_scale</a>(scale), <a class="code" href="classsdr_1_1_freq_shift.html#a43aa0216b57d389293956bbc737cb415">_factor</a>(1), <a class="code" href="classsdr_1_1_freq_shift.html#ae8b6f7658eeed069a77d4ed998a85bde">_sample_rate</a>(0), <a class="code" href="classsdr_1_1_freq_shift.html#a3a7dcad74e53d7c193221e069abe090c">_delta</a>(1)</div>
|
|
<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  {</div>
|
|
<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  }</div>
|
|
<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> </div>
|
|
<div class="line"><a name="l00449"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#a0d9c1e662d530ecfa97ed35b0c7a50cd"> 449</a></span>  <span class="keyword">virtual</span> <a class="code" href="classsdr_1_1_freq_shift.html#a0d9c1e662d530ecfa97ed35b0c7a50cd">~FreqShift</a>() {</div>
|
|
<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  }</div>
|
|
<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> </div>
|
|
<div class="line"><a name="l00454"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#a50f5b09085e30e1839a29d74f60c4b1d"> 454</a></span>  <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_freq_shift.html#a50f5b09085e30e1839a29d74f60c4b1d">shift</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classsdr_1_1_freq_shift.html#a806ffc298da46fad3a1a057e19a61db1">_shift</a>; }</div>
|
|
<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> </div>
|
|
<div class="line"><a name="l00457"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#af7af79f187aa77b98abb4643307bd2f7"> 457</a></span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_freq_shift.html#af7af79f187aa77b98abb4643307bd2f7">setShift</a>(<span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_freq_shift.html#a50f5b09085e30e1839a29d74f60c4b1d">shift</a>) {</div>
|
|
<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="comment">// Update delta</span></div>
|
|
<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <a class="code" href="classsdr_1_1_freq_shift.html#a806ffc298da46fad3a1a057e19a61db1">_shift</a> = <a class="code" href="classsdr_1_1_freq_shift.html#a50f5b09085e30e1839a29d74f60c4b1d">shift</a>;</div>
|
|
<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <a class="code" href="classsdr_1_1_freq_shift.html#a3a7dcad74e53d7c193221e069abe090c">_delta</a> = exp(std::complex<double>(0,2*M_PI*<a class="code" href="classsdr_1_1_freq_shift.html#a806ffc298da46fad3a1a057e19a61db1">_shift</a>/<a class="code" href="classsdr_1_1_freq_shift.html#ae8b6f7658eeed069a77d4ed998a85bde">_sample_rate</a>));</div>
|
|
<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  }</div>
|
|
<div class="line"><a name="l00462"></a><span class="lineno"> 462</span> </div>
|
|
<div class="line"><a name="l00464"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#a2aeaf444562a0b054ae65442992caefc"> 464</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_freq_shift.html#a2aeaf444562a0b054ae65442992caefc">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="comment">// Requires type, samplerate & buffersize</span></div>
|
|
<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="keywordflow">if</span> ((Config::Type_UNDEFINED==src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()) || (0==src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>()) || (0==src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>())) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="comment">// Assert type</span></div>
|
|
<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="keywordflow">if</span> (src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>() != Config::typeId< std::complex<Scalar> >()) {</div>
|
|
<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err;</div>
|
|
<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  err << <span class="stringliteral">"Can not configure FreqShift node: Invalid source type "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()</div>
|
|
<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  << <span class="stringliteral">", expected "</span> << Config::typeId< std::complex<Scalar> >();</div>
|
|
<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  }</div>
|
|
<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="comment">// Allocate buffer</span></div>
|
|
<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <a class="code" href="classsdr_1_1_freq_shift.html#a3ba4c6fd7e064c599a393b1d6dc0e2cc">_buffer</a> = <a class="code" href="classsdr_1_1_buffer.html">Buffer< std::complex<Scalar></a> >(src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>());</div>
|
|
<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="comment">// Store sample rate</span></div>
|
|
<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <a class="code" href="classsdr_1_1_freq_shift.html#ae8b6f7658eeed069a77d4ed998a85bde">_sample_rate</a> = src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>();</div>
|
|
<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="comment">// Precalc delta</span></div>
|
|
<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <a class="code" href="classsdr_1_1_freq_shift.html#a3a7dcad74e53d7c193221e069abe090c">_delta</a> = exp(std::complex<double>(0,2*M_PI*<a class="code" href="classsdr_1_1_freq_shift.html#a806ffc298da46fad3a1a057e19a61db1">_shift</a>/_sample_rate));</div>
|
|
<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="comment">// reset factor</span></div>
|
|
<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <a class="code" href="classsdr_1_1_freq_shift.html#a43aa0216b57d389293956bbc737cb415">_factor</a> = 1;</div>
|
|
<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> </div>
|
|
<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <a class="code" href="classsdr_1_1_log_message.html">LogMessage</a> msg(LOG_DEBUG);</div>
|
|
<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  msg << <span class="stringliteral">"Configure FreqShift node:"</span> << std::endl</div>
|
|
<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  << <span class="stringliteral">" shift: "</span> << <a class="code" href="classsdr_1_1_freq_shift.html#a806ffc298da46fad3a1a057e19a61db1">_shift</a> << std::endl</div>
|
|
<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  << <span class="stringliteral">" scale: "</span> << <a class="code" href="classsdr_1_1_freq_shift.html#a8e4ce9a7cb2b81b88cfc4f75f5ebc6a9">_scale</a> << std::endl</div>
|
|
<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  << <span class="stringliteral">" sample-rate: "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>() << std::endl</div>
|
|
<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  << <span class="stringliteral">" buffer-suize: "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>();</div>
|
|
<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <a class="code" href="classsdr_1_1_logger.html#a9b12ce53593be134b7d7dea62607d22d">Logger::get</a>().<a class="code" href="classsdr_1_1_logger.html#ab887e598a2c4dc1a3a3f1027d91e0e58">log</a>(msg);</div>
|
|
<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> </div>
|
|
<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="comment">// Propergate config</span></div>
|
|
<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  this-><a class="code" href="classsdr_1_1_source.html#afd4c7e3fb94a057ac40e9877167791ec">setConfig</a>(<a class="code" href="classsdr_1_1_config.html">Config</a>(<a class="code" href="classsdr_1_1_config.html#a71df9feb586e1d33241dec5d6a5beae4">Config::typeId</a>< std::complex<Scalar> >(), src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>(),</div>
|
|
<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>(), 1));</div>
|
|
<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  }</div>
|
|
<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div>
|
|
<div class="line"><a name="l00497"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#aae47d9152dcbd9c40182c9cf319efdc9"> 497</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_freq_shift.html#aae47d9152dcbd9c40182c9cf319efdc9">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer</a><std::complex<Scalar> > &buffer, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="comment">// Shift freq:</span></div>
|
|
<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<buffer.size(); i++) {</div>
|
|
<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <a class="code" href="classsdr_1_1_freq_shift.html#a3ba4c6fd7e064c599a393b1d6dc0e2cc">_buffer</a>[i] = (double(<a class="code" href="classsdr_1_1_freq_shift.html#a8e4ce9a7cb2b81b88cfc4f75f5ebc6a9">_scale</a>)*<a class="code" href="classsdr_1_1_freq_shift.html#a43aa0216b57d389293956bbc737cb415">_factor</a>)*buffer[i]; <a class="code" href="classsdr_1_1_freq_shift.html#a43aa0216b57d389293956bbc737cb415">_factor</a> *= <a class="code" href="classsdr_1_1_freq_shift.html#a3a7dcad74e53d7c193221e069abe090c">_delta</a>;</div>
|
|
<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  }</div>
|
|
<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="comment">// Send buffer</span></div>
|
|
<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(<a class="code" href="classsdr_1_1_freq_shift.html#a3ba4c6fd7e064c599a393b1d6dc0e2cc">_buffer</a>);</div>
|
|
<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  }</div>
|
|
<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> </div>
|
|
<div class="line"><a name="l00506"></a><span class="lineno"> 506</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00508"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#a3ba4c6fd7e064c599a393b1d6dc0e2cc"> 508</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer< std::complex<Scalar></a> > <a class="code" href="classsdr_1_1_freq_shift.html#a3ba4c6fd7e064c599a393b1d6dc0e2cc">_buffer</a>;</div>
|
|
<div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#a806ffc298da46fad3a1a057e19a61db1"> 510</a></span>  <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_freq_shift.html#a806ffc298da46fad3a1a057e19a61db1">_shift</a>;</div>
|
|
<div class="line"><a name="l00512"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#a8e4ce9a7cb2b81b88cfc4f75f5ebc6a9"> 512</a></span>  Scalar <a class="code" href="classsdr_1_1_freq_shift.html#a8e4ce9a7cb2b81b88cfc4f75f5ebc6a9">_scale</a>;</div>
|
|
<div class="line"><a name="l00514"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#a43aa0216b57d389293956bbc737cb415"> 514</a></span>  std::complex<double> <a class="code" href="classsdr_1_1_freq_shift.html#a43aa0216b57d389293956bbc737cb415">_factor</a>;</div>
|
|
<div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#ae8b6f7658eeed069a77d4ed998a85bde"> 516</a></span>  <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_freq_shift.html#ae8b6f7658eeed069a77d4ed998a85bde">_sample_rate</a>;</div>
|
|
<div class="line"><a name="l00518"></a><span class="lineno"><a class="line" href="classsdr_1_1_freq_shift.html#a3a7dcad74e53d7c193221e069abe090c"> 518</a></span>  std::complex<double> <a class="code" href="classsdr_1_1_freq_shift.html#a3a7dcad74e53d7c193221e069abe090c">_delta</a>;</div>
|
|
<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> };</div>
|
|
<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> </div>
|
|
<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> </div>
|
|
<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="keyword">template</span><<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00525"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_source.html"> 525</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_stream_source.html">StreamSource</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> {</div>
|
|
<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00529"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_source.html#a7a0302e45ef26e8af6846f29b40d7d80"> 529</a></span>  <a class="code" href="classsdr_1_1_stream_source.html#a7a0302e45ef26e8af6846f29b40d7d80">StreamSource</a>(std::istream &stream, <span class="keywordtype">double</span> sample_rate=1, <span class="keywordtype">size_t</span> buffersize=1024)</div>
|
|
<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  : <a class="code" href="classsdr_1_1_source.html">Source</a>(), <a class="code" href="classsdr_1_1_stream_source.html#a7108de045b76348e4df87eb9500c1cf2">_stream</a>(stream), <a class="code" href="classsdr_1_1_stream_source.html#a73ba741b0802a7ddbcdb351166238415">_buffer</a>(buffersize)</div>
|
|
<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  {</div>
|
|
<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="comment">// Assemble config for stream:</span></div>
|
|
<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  this-><a class="code" href="classsdr_1_1_source.html#ac7ea547c33d45cf5b5654ce21957ab27">_config</a> = <a class="code" href="classsdr_1_1_config.html">Config</a>(Config::typeId<Scalar>(), sample_rate, buffersize, 1);</div>
|
|
<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  }</div>
|
|
<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> </div>
|
|
<div class="line"><a name="l00538"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_source.html#ae3877a37e355e1a3668be5bfb0bcb004"> 538</a></span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_stream_source.html#ae3877a37e355e1a3668be5bfb0bcb004">next</a>() {</div>
|
|
<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="keywordflow">if</span>(<a class="code" href="classsdr_1_1_stream_source.html#a7108de045b76348e4df87eb9500c1cf2">_stream</a>.eof()) { <a class="code" href="classsdr_1_1_queue.html#ab4c57ac84eaa535fd412b3b7b7cfc816">Queue::get</a>().<a class="code" href="classsdr_1_1_queue.html#aaf3a0e226ba622d762de9b32b3cbbb09">stop</a>(); <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="keywordtype">int</span> len = <a class="code" href="classsdr_1_1_stream_source.html#a7108de045b76348e4df87eb9500c1cf2">_stream</a>.read(<a class="code" href="classsdr_1_1_stream_source.html#a73ba741b0802a7ddbcdb351166238415">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#a2384e82c2344e55b0246e8aebcd713f2">ptr</a>(), <a class="code" href="classsdr_1_1_stream_source.html#a73ba741b0802a7ddbcdb351166238415">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#a51e97f8beeacd8734fdb347af02ee215">storageSize</a>());</div>
|
|
<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="keywordflow">if</span> (len > 0) {</div>
|
|
<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(<a class="code" href="classsdr_1_1_stream_source.html#a73ba741b0802a7ddbcdb351166238415">_buffer</a>.<a class="code" href="classsdr_1_1_buffer.html#a3eca322ed118a7b5c4cc62b25ce5d119">head</a>(len/<span class="keyword">sizeof</span>(Scalar)));</div>
|
|
<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  }</div>
|
|
<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  }</div>
|
|
<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> </div>
|
|
<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00548"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_source.html#a7108de045b76348e4df87eb9500c1cf2"> 548</a></span>  std::istream &<a class="code" href="classsdr_1_1_stream_source.html#a7108de045b76348e4df87eb9500c1cf2">_stream</a>;</div>
|
|
<div class="line"><a name="l00550"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_source.html#a73ba741b0802a7ddbcdb351166238415"> 550</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> <a class="code" href="classsdr_1_1_stream_source.html#a73ba741b0802a7ddbcdb351166238415">_buffer</a>;</div>
|
|
<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> };</div>
|
|
<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> </div>
|
|
<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> </div>
|
|
<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00557"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_sink.html"> 557</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_stream_sink.html">StreamSink</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar></div>
|
|
<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> {</div>
|
|
<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00561"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_sink.html#a7543d34895cb13ec98ab25ba94664ac6"> 561</a></span>  <a class="code" href="classsdr_1_1_stream_sink.html#a7543d34895cb13ec98ab25ba94664ac6">StreamSink</a>(std::ostream &stream)</div>
|
|
<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  : <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar>(), <a class="code" href="classsdr_1_1_stream_sink.html#af206a47a032f79ba38923c7f1e511450">_stream</a>(stream)</div>
|
|
<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  {</div>
|
|
<div class="line"><a name="l00564"></a><span class="lineno"> 564</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  }</div>
|
|
<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> </div>
|
|
<div class="line"><a name="l00568"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_sink.html#ace62c79416acaa9680fc48da13bd583e"> 568</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_stream_sink.html#ace62c79416acaa9680fc48da13bd583e">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="keywordflow">if</span> (Config::Type_UNDEFINED == src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="keywordflow">if</span> (src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>() != Config::typeId<Scalar>()) {</div>
|
|
<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err;</div>
|
|
<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  err << <span class="stringliteral">"Can not configure StreamSink: Invalid buffer type "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()</div>
|
|
<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  << <span class="stringliteral">", expected "</span> << Config::typeId<Scalar>();</div>
|
|
<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  }</div>
|
|
<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="comment">// done...</span></div>
|
|
<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  }</div>
|
|
<div class="line"><a name="l00578"></a><span class="lineno"> 578</span> </div>
|
|
<div class="line"><a name="l00580"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_sink.html#a17eb7f702a5fef65bab33179322b4b3c"> 580</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_stream_sink.html#a17eb7f702a5fef65bab33179322b4b3c">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> &buffer, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <a class="code" href="classsdr_1_1_stream_sink.html#af206a47a032f79ba38923c7f1e511450">_stream</a>.write(buffer.<a class="code" href="classsdr_1_1_raw_buffer.html#a41429fafa5acac7eb6ab22001fedc3d7">data</a>(), buffer.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>()*<span class="keyword">sizeof</span>(Scalar));</div>
|
|
<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  }</div>
|
|
<div class="line"><a name="l00584"></a><span class="lineno"> 584</span> </div>
|
|
<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00587"></a><span class="lineno"><a class="line" href="classsdr_1_1_stream_sink.html#af206a47a032f79ba38923c7f1e511450"> 587</a></span>  std::ostream &<a class="code" href="classsdr_1_1_stream_sink.html#af206a47a032f79ba38923c7f1e511450">_stream</a>;</div>
|
|
<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> };</div>
|
|
<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> </div>
|
|
<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> </div>
|
|
<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> </div>
|
|
<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> </div>
|
|
<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00596"></a><span class="lineno"><a class="line" href="classsdr_1_1_scale.html"> 596</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_scale.html">Scale</a> : <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar>, <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> {</div>
|
|
<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00600"></a><span class="lineno"><a class="line" href="classsdr_1_1_scale.html#a3e58d1725b33ae78d3047bef28026823"> 600</a></span>  <a class="code" href="classsdr_1_1_scale.html#a3e58d1725b33ae78d3047bef28026823">Scale</a>(<span class="keywordtype">float</span> scale=1, Scalar shift=0)</div>
|
|
<div class="line"><a name="l00601"></a><span class="lineno"> 601</span>  : <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar>(), <a class="code" href="classsdr_1_1_source.html">Source</a>(), <a class="code" href="classsdr_1_1_scale.html#aa5e3017fda68332c67ac0cf84bfdd260">_scale</a>(scale), <a class="code" href="classsdr_1_1_scale.html#a6040d1d6f88868a90ea39ab05aafd6ee">_shift</a>(shift)</div>
|
|
<div class="line"><a name="l00602"></a><span class="lineno"> 602</span>  {</div>
|
|
<div class="line"><a name="l00603"></a><span class="lineno"> 603</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00604"></a><span class="lineno"> 604</span>  }</div>
|
|
<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> </div>
|
|
<div class="line"><a name="l00607"></a><span class="lineno"><a class="line" href="classsdr_1_1_scale.html#a1101a27382e4a4b1e93a0e8cb5caa446"> 607</a></span>  <span class="keyword">virtual</span> <a class="code" href="classsdr_1_1_scale.html#a1101a27382e4a4b1e93a0e8cb5caa446">~Scale</a>() {</div>
|
|
<div class="line"><a name="l00608"></a><span class="lineno"> 608</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  }</div>
|
|
<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> </div>
|
|
<div class="line"><a name="l00612"></a><span class="lineno"><a class="line" href="classsdr_1_1_scale.html#a2b70619a04f2f50aaea59828f0d333e5"> 612</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_scale.html#a2b70619a04f2f50aaea59828f0d333e5">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="comment">// Check for type & buffer size</span></div>
|
|
<div class="line"><a name="l00614"></a><span class="lineno"> 614</span>  <span class="keywordflow">if</span> (!src_cfg.<a class="code" href="classsdr_1_1_config.html#a7cdfc69aa8e3ab975db7251747343a20">hasType</a>() || !src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>()) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="comment">// Check type</span></div>
|
|
<div class="line"><a name="l00616"></a><span class="lineno"> 616</span>  <span class="keywordflow">if</span> (Config::typeId<Scalar>() != src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()) {</div>
|
|
<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err;</div>
|
|
<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  err << <span class="stringliteral">"Can not configure Scale node: Invalid type "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()</div>
|
|
<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  << <span class="stringliteral">", expected "</span> << Config::typeId<Scalar>();</div>
|
|
<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00621"></a><span class="lineno"> 621</span>  }</div>
|
|
<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="comment">// Allocate buffer</span></div>
|
|
<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <a class="code" href="classsdr_1_1_scale.html#af753a012e62924527c29e3d15fc8e2b3">_buffer</a> = <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a>(src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>());</div>
|
|
<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="comment">// Done, propergate config</span></div>
|
|
<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  this-><a class="code" href="classsdr_1_1_source.html#afd4c7e3fb94a057ac40e9877167791ec">setConfig</a>(src_cfg);</div>
|
|
<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  }</div>
|
|
<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> </div>
|
|
<div class="line"><a name="l00629"></a><span class="lineno"><a class="line" href="classsdr_1_1_scale.html#a22c0cacdcec966a3aa2fa3f178fe168c"> 629</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_scale.html#a22c0cacdcec966a3aa2fa3f178fe168c">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> &buffer, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="keywordflow">if</span> ((1 == <a class="code" href="classsdr_1_1_scale.html#aa5e3017fda68332c67ac0cf84bfdd260">_scale</a>) && (Scalar(0) == <a class="code" href="classsdr_1_1_scale.html#a6040d1d6f88868a90ea39ab05aafd6ee">_shift</a>)) {</div>
|
|
<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(buffer, allow_overwrite);</div>
|
|
<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (allow_overwrite) {</div>
|
|
<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="comment">// Scale inplace</span></div>
|
|
<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<buffer.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>(); i++) { buffer[i] *= <a class="code" href="classsdr_1_1_scale.html#aa5e3017fda68332c67ac0cf84bfdd260">_scale</a>; }</div>
|
|
<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(buffer, allow_overwrite);</div>
|
|
<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classsdr_1_1_scale.html#af753a012e62924527c29e3d15fc8e2b3">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#ab2f4ac2dc396108141ec8473bfb7f99a">isUnused</a>()) {</div>
|
|
<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="comment">// Scale out-of-place</span></div>
|
|
<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<buffer.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>(); i++) { <a class="code" href="classsdr_1_1_scale.html#af753a012e62924527c29e3d15fc8e2b3">_buffer</a>[i] = <a class="code" href="classsdr_1_1_scale.html#aa5e3017fda68332c67ac0cf84bfdd260">_scale</a>*<a class="code" href="classsdr_1_1_scale.html#af753a012e62924527c29e3d15fc8e2b3">_buffer</a>[i]; }</div>
|
|
<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(<a class="code" href="classsdr_1_1_scale.html#af753a012e62924527c29e3d15fc8e2b3">_buffer</a>.<a class="code" href="classsdr_1_1_buffer.html#a3eca322ed118a7b5c4cc62b25ce5d119">head</a>(buffer.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>()), <span class="keyword">true</span>);</div>
|
|
<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  }</div>
|
|
<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="comment">// else if buffer is still in use -> drop buffer...</span></div>
|
|
<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  }</div>
|
|
<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> </div>
|
|
<div class="line"><a name="l00644"></a><span class="lineno"> 644</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00646"></a><span class="lineno"><a class="line" href="classsdr_1_1_scale.html#af753a012e62924527c29e3d15fc8e2b3"> 646</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> <a class="code" href="classsdr_1_1_scale.html#af753a012e62924527c29e3d15fc8e2b3">_buffer</a>;</div>
|
|
<div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="classsdr_1_1_scale.html#aa5e3017fda68332c67ac0cf84bfdd260"> 648</a></span>  <span class="keywordtype">float</span> <a class="code" href="classsdr_1_1_scale.html#aa5e3017fda68332c67ac0cf84bfdd260">_scale</a>;</div>
|
|
<div class="line"><a name="l00650"></a><span class="lineno"><a class="line" href="classsdr_1_1_scale.html#a6040d1d6f88868a90ea39ab05aafd6ee"> 650</a></span>  Scalar <a class="code" href="classsdr_1_1_scale.html#a6040d1d6f88868a90ea39ab05aafd6ee">_shift</a>;</div>
|
|
<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> };</div>
|
|
<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> </div>
|
|
<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> </div>
|
|
<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> </div>
|
|
<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00658"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html"> 658</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_a_g_c.html">AGC</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar>, <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00659"></a><span class="lineno"> 659</span> {</div>
|
|
<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00662"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#a3760a8692f5d81b753b8887396b3866c"> 662</a></span>  <a class="code" href="classsdr_1_1_a_g_c.html#a3760a8692f5d81b753b8887396b3866c">AGC</a>(<span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_a_g_c.html#adc9c78e2a9dcc5a55d81c421a8e534ef">tau</a>=0.1, <span class="keywordtype">double</span> target=0)</div>
|
|
<div class="line"><a name="l00663"></a><span class="lineno"> 663</span>  : <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar>(), <a class="code" href="classsdr_1_1_source.html">Source</a>(), <a class="code" href="classsdr_1_1_a_g_c.html#a8554d5134e0f0160289db46ebe66314d">_enabled</a>(true), <a class="code" href="classsdr_1_1_a_g_c.html#ab569653f091eda6bf11174d3e8cfa9ae">_tau</a>(<a class="code" href="classsdr_1_1_a_g_c.html#adc9c78e2a9dcc5a55d81c421a8e534ef">tau</a>), <a class="code" href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58">_lambda</a>(0), <a class="code" href="classsdr_1_1_a_g_c.html#a1723d92b909754ad0ce7636cabd65076">_sd</a>(0),</div>
|
|
<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">_target</a>(target), <a class="code" href="classsdr_1_1_a_g_c.html#afb650299c4ce14a6452eaa51963a78e2">_gain</a>(1), <a class="code" href="classsdr_1_1_a_g_c.html#aec81c9b69ebb847516e27f8fed0c92ae">_sample_rate</a>(0)</div>
|
|
<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  {</div>
|
|
<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  <span class="keywordflow">if</span> (0 == target) {</div>
|
|
<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  <span class="comment">// Determine target by scalar type</span></div>
|
|
<div class="line"><a name="l00668"></a><span class="lineno"> 668</span>  <span class="keywordflow">switch</span> (Config::typeId<Scalar>()) {</div>
|
|
<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8aff58284f9bbd7e3c690a9e4f1d74aefd">Config::Type_u8</a>:</div>
|
|
<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8adcae9ece1014b07b0546a2b7a80e18c4">Config::Type_s8</a>:</div>
|
|
<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a2d44478e68580bf01d17f6e33eb5d856">Config::Type_cu8</a>:</div>
|
|
<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a3db588fd468cb4a78e1efabef4b57b76">Config::Type_cs8</a>:</div>
|
|
<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">_target</a> = 64; <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a9fd5000bcdeaf5872cfa097b8df26a74">Config::Type_u16</a>:</div>
|
|
<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a4f222757d46f6b85c63657e1560bf9eb">Config::Type_s16</a>:</div>
|
|
<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a6a87fdcbcf659811d60fee74fbea7f07">Config::Type_cu16</a>:</div>
|
|
<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a63b4a03813b5e6224170be42b6275fe7">Config::Type_cs16</a>:</div>
|
|
<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">_target</a> = 16000; <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a16fb6708c6744a2892bc1badb01953b5">Config::Type_f32</a>:</div>
|
|
<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a25a618000b12c978963aa6d19ab92f97">Config::Type_f64</a>:</div>
|
|
<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a3517b22ed2f8ebce25b6ce140e0fc4ae">Config::Type_cf32</a>:</div>
|
|
<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a0533d0f0f70fad0f430cdfa6c86b4e7c">Config::Type_cf64</a>:</div>
|
|
<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">_target</a> = 0.5; <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="keywordflow">case</span> Config::Type_UNDEFINED: {</div>
|
|
<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err; err << <span class="stringliteral">"Can not configure AGC node: Unsupported type."</span>; <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  }</div>
|
|
<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  }</div>
|
|
<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  }</div>
|
|
<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a1723d92b909754ad0ce7636cabd65076">_sd</a> = <a class="code" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">_target</a>;</div>
|
|
<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  }</div>
|
|
<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> </div>
|
|
<div class="line"><a name="l00693"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#ac94a06d5fa2ec089ac5a86c5853274ef"> 693</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classsdr_1_1_a_g_c.html#ac94a06d5fa2ec089ac5a86c5853274ef">enabled</a>()<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="keywordflow">return</span> <a class="code" href="classsdr_1_1_a_g_c.html#a8554d5134e0f0160289db46ebe66314d">_enabled</a>;</div>
|
|
<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  }</div>
|
|
<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> </div>
|
|
<div class="line"><a name="l00698"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#a1266dd894d568627ea9ab7859eb2366e"> 698</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_a_g_c.html#a1266dd894d568627ea9ab7859eb2366e">enable</a>(<span class="keywordtype">bool</span> <a class="code" href="classsdr_1_1_a_g_c.html#ac94a06d5fa2ec089ac5a86c5853274ef">enabled</a>) {</div>
|
|
<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a8554d5134e0f0160289db46ebe66314d">_enabled</a> = <a class="code" href="classsdr_1_1_a_g_c.html#ac94a06d5fa2ec089ac5a86c5853274ef">enabled</a>;</div>
|
|
<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  }</div>
|
|
<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> </div>
|
|
<div class="line"><a name="l00703"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#a021a3a3366f3ae5d400fa8475f6c45d6"> 703</a></span>  <span class="keyword">inline</span> <span class="keywordtype">float</span> <a class="code" href="classsdr_1_1_a_g_c.html#a021a3a3366f3ae5d400fa8475f6c45d6">gain</a>()<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  <span class="keywordflow">return</span> <a class="code" href="classsdr_1_1_a_g_c.html#afb650299c4ce14a6452eaa51963a78e2">_gain</a>;</div>
|
|
<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  }</div>
|
|
<div class="line"><a name="l00706"></a><span class="lineno"> 706</span> </div>
|
|
<div class="line"><a name="l00708"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#aafd22e6eff64cd6f615f025d2d2cdde0"> 708</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_a_g_c.html#aafd22e6eff64cd6f615f025d2d2cdde0">setGain</a>(<span class="keywordtype">float</span> <a class="code" href="classsdr_1_1_a_g_c.html#a021a3a3366f3ae5d400fa8475f6c45d6">gain</a>) {</div>
|
|
<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  <a class="code" href="classsdr_1_1_a_g_c.html#afb650299c4ce14a6452eaa51963a78e2">_gain</a> = <a class="code" href="classsdr_1_1_a_g_c.html#a021a3a3366f3ae5d400fa8475f6c45d6">gain</a>;</div>
|
|
<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  }</div>
|
|
<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> </div>
|
|
<div class="line"><a name="l00713"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#adc9c78e2a9dcc5a55d81c421a8e534ef"> 713</a></span>  <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_a_g_c.html#adc9c78e2a9dcc5a55d81c421a8e534ef">tau</a>()<span class="keyword"> const </span>{</div>
|
|
<div class="line"><a name="l00714"></a><span class="lineno"> 714</span>  <span class="keywordflow">return</span> <a class="code" href="classsdr_1_1_a_g_c.html#ab569653f091eda6bf11174d3e8cfa9ae">_tau</a>;</div>
|
|
<div class="line"><a name="l00715"></a><span class="lineno"> 715</span>  }</div>
|
|
<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div>
|
|
<div class="line"><a name="l00718"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#ad5a8b658529798bc5cd93d9a56de6d4f"> 718</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_a_g_c.html#ad5a8b658529798bc5cd93d9a56de6d4f">setTau</a>(<span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_a_g_c.html#adc9c78e2a9dcc5a55d81c421a8e534ef">tau</a>) {</div>
|
|
<div class="line"><a name="l00719"></a><span class="lineno"> 719</span>  <span class="comment">// calc decay factor</span></div>
|
|
<div class="line"><a name="l00720"></a><span class="lineno"> 720</span>  <a class="code" href="classsdr_1_1_a_g_c.html#ab569653f091eda6bf11174d3e8cfa9ae">_tau</a> = <a class="code" href="classsdr_1_1_a_g_c.html#adc9c78e2a9dcc5a55d81c421a8e534ef">tau</a>;</div>
|
|
<div class="line"><a name="l00721"></a><span class="lineno"> 721</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58">_lambda</a> = exp(-1./(<a class="code" href="classsdr_1_1_a_g_c.html#ab569653f091eda6bf11174d3e8cfa9ae">_tau</a>*<a class="code" href="classsdr_1_1_a_g_c.html#aec81c9b69ebb847516e27f8fed0c92ae">_sample_rate</a>));</div>
|
|
<div class="line"><a name="l00722"></a><span class="lineno"> 722</span>  }</div>
|
|
<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> </div>
|
|
<div class="line"><a name="l00725"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#a76db615ca776e62d16c7ab8b9f348afa"> 725</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_a_g_c.html#a76db615ca776e62d16c7ab8b9f348afa">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00726"></a><span class="lineno"> 726</span>  <span class="comment">// Need sample rate & type</span></div>
|
|
<div class="line"><a name="l00727"></a><span class="lineno"> 727</span>  <span class="keywordflow">if</span> (!src_cfg.<a class="code" href="classsdr_1_1_config.html#a7cdfc69aa8e3ab975db7251747343a20">hasType</a>() || !src_cfg.<a class="code" href="classsdr_1_1_config.html#a5df3f75dcd6e678bd5f029a7400b404e">hasSampleRate</a>() || !src_cfg.<a class="code" href="classsdr_1_1_config.html#a485e488e1411e52c722b22d1807be406">hasBufferSize</a>()) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00728"></a><span class="lineno"> 728</span>  <span class="keywordflow">if</span> (Config::typeId<Scalar>() != src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()) {</div>
|
|
<div class="line"><a name="l00729"></a><span class="lineno"> 729</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err;</div>
|
|
<div class="line"><a name="l00730"></a><span class="lineno"> 730</span>  err << <span class="stringliteral">"Can not configure AGC node: Invalid type "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()</div>
|
|
<div class="line"><a name="l00731"></a><span class="lineno"> 731</span>  << <span class="stringliteral">", expected "</span> << Config::typeId<Scalar>();</div>
|
|
<div class="line"><a name="l00732"></a><span class="lineno"> 732</span>  <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  }</div>
|
|
<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> </div>
|
|
<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="comment">// calc decay factor</span></div>
|
|
<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  <a class="code" href="classsdr_1_1_a_g_c.html#aec81c9b69ebb847516e27f8fed0c92ae">_sample_rate</a> = src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>();</div>
|
|
<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58">_lambda</a> = exp(-1./(<a class="code" href="classsdr_1_1_a_g_c.html#ab569653f091eda6bf11174d3e8cfa9ae">_tau</a>*src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>()));</div>
|
|
<div class="line"><a name="l00738"></a><span class="lineno"> 738</span>  <span class="comment">// reset variance</span></div>
|
|
<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a1723d92b909754ad0ce7636cabd65076">_sd</a> = <a class="code" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">_target</a>;</div>
|
|
<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> </div>
|
|
<div class="line"><a name="l00741"></a><span class="lineno"> 741</span>  <span class="comment">// Allocate buffer</span></div>
|
|
<div class="line"><a name="l00742"></a><span class="lineno"> 742</span>  <a class="code" href="classsdr_1_1_a_g_c.html#af8e3c300e5a264a568ed9b18a0c1b02e">_buffer</a> = <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a>(src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>());</div>
|
|
<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> </div>
|
|
<div class="line"><a name="l00744"></a><span class="lineno"> 744</span>  <a class="code" href="classsdr_1_1_log_message.html">LogMessage</a> msg(LOG_DEBUG);</div>
|
|
<div class="line"><a name="l00745"></a><span class="lineno"> 745</span>  msg << <span class="stringliteral">"Configured AGC:"</span> << std::endl</div>
|
|
<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  << <span class="stringliteral">" type: "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>() << std::endl</div>
|
|
<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  << <span class="stringliteral">" sample-rate: "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>() << std::endl</div>
|
|
<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  << <span class="stringliteral">" tau: "</span> << <a class="code" href="classsdr_1_1_a_g_c.html#ab569653f091eda6bf11174d3e8cfa9ae">_tau</a> << std::endl</div>
|
|
<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  << <span class="stringliteral">" lambda [1/s]: "</span> << pow(<a class="code" href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58">_lambda</a>, src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>()) << std::endl</div>
|
|
<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  << <span class="stringliteral">" lambda [1/sam]: "</span> << <a class="code" href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58">_lambda</a> << std::endl</div>
|
|
<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  << <span class="stringliteral">" target value: "</span> << <a class="code" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">_target</a>;</div>
|
|
<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <a class="code" href="classsdr_1_1_logger.html#a9b12ce53593be134b7d7dea62607d22d">Logger::get</a>().<a class="code" href="classsdr_1_1_logger.html#ab887e598a2c4dc1a3a3f1027d91e0e58">log</a>(msg);</div>
|
|
<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> </div>
|
|
<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  <span class="comment">// Propergate config</span></div>
|
|
<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  this-><a class="code" href="classsdr_1_1_source.html#afd4c7e3fb94a057ac40e9877167791ec">setConfig</a>(<a class="code" href="classsdr_1_1_config.html">Config</a>(Config::typeId<Scalar>(), src_cfg.<a class="code" href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sampleRate</a>(), </div>
|
|
<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>(), 1));</div>
|
|
<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  }</div>
|
|
<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> </div>
|
|
<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> </div>
|
|
<div class="line"><a name="l00761"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#ac1f811db1e85281d33e10f63cd67f7f3"> 761</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_a_g_c.html#ac1f811db1e85281d33e10f63cd67f7f3">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> &buffer, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00762"></a><span class="lineno"> 762</span>  <span class="comment">// Simply forward buffer if disabled</span></div>
|
|
<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  <span class="keywordflow">if</span> ((! <a class="code" href="classsdr_1_1_a_g_c.html#a8554d5134e0f0160289db46ebe66314d">_enabled</a>) && (0 == <a class="code" href="classsdr_1_1_a_g_c.html#afb650299c4ce14a6452eaa51963a78e2">_gain</a>) ) {</div>
|
|
<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(buffer, allow_overwrite); <span class="keywordflow">return</span>;</div>
|
|
<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  }</div>
|
|
<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="comment">// Update signal ampl</span></div>
|
|
<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<buffer.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>(); i++) {</div>
|
|
<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  <a class="code" href="classsdr_1_1_a_g_c.html#a1723d92b909754ad0ce7636cabd65076">_sd</a> = <a class="code" href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58">_lambda</a>*<a class="code" href="classsdr_1_1_a_g_c.html#a1723d92b909754ad0ce7636cabd65076">_sd</a> + (1-<a class="code" href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58">_lambda</a>)*std::abs(buffer[i]);</div>
|
|
<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  <span class="keywordflow">if</span> (<a class="code" href="classsdr_1_1_a_g_c.html#a8554d5134e0f0160289db46ebe66314d">_enabled</a>) { <a class="code" href="classsdr_1_1_a_g_c.html#afb650299c4ce14a6452eaa51963a78e2">_gain</a> = <a class="code" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">_target</a>/(4*<a class="code" href="classsdr_1_1_a_g_c.html#a1723d92b909754ad0ce7636cabd65076">_sd</a>); }</div>
|
|
<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <a class="code" href="classsdr_1_1_a_g_c.html#af8e3c300e5a264a568ed9b18a0c1b02e">_buffer</a>[i] = <a class="code" href="classsdr_1_1_a_g_c.html#afb650299c4ce14a6452eaa51963a78e2">_gain</a>*buffer[i];</div>
|
|
<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  }</div>
|
|
<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(<a class="code" href="classsdr_1_1_a_g_c.html#af8e3c300e5a264a568ed9b18a0c1b02e">_buffer</a>);</div>
|
|
<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  }</div>
|
|
<div class="line"><a name="l00774"></a><span class="lineno"> 774</span> </div>
|
|
<div class="line"><a name="l00775"></a><span class="lineno"> 775</span> </div>
|
|
<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#a8554d5134e0f0160289db46ebe66314d"> 778</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classsdr_1_1_a_g_c.html#a8554d5134e0f0160289db46ebe66314d">_enabled</a>;</div>
|
|
<div class="line"><a name="l00780"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#ab569653f091eda6bf11174d3e8cfa9ae"> 780</a></span>  <span class="keywordtype">float</span> <a class="code" href="classsdr_1_1_a_g_c.html#ab569653f091eda6bf11174d3e8cfa9ae">_tau</a>;</div>
|
|
<div class="line"><a name="l00782"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58"> 782</a></span>  <span class="keywordtype">float</span> <a class="code" href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58">_lambda</a>;</div>
|
|
<div class="line"><a name="l00784"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#a1723d92b909754ad0ce7636cabd65076"> 784</a></span>  <span class="keywordtype">float</span> <a class="code" href="classsdr_1_1_a_g_c.html#a1723d92b909754ad0ce7636cabd65076">_sd</a>;</div>
|
|
<div class="line"><a name="l00786"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c"> 786</a></span>  <span class="keywordtype">float</span> <a class="code" href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">_target</a>;</div>
|
|
<div class="line"><a name="l00788"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#afb650299c4ce14a6452eaa51963a78e2"> 788</a></span>  <span class="keywordtype">float</span> <a class="code" href="classsdr_1_1_a_g_c.html#afb650299c4ce14a6452eaa51963a78e2">_gain</a>;</div>
|
|
<div class="line"><a name="l00790"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#aec81c9b69ebb847516e27f8fed0c92ae"> 790</a></span>  <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_a_g_c.html#aec81c9b69ebb847516e27f8fed0c92ae">_sample_rate</a>;</div>
|
|
<div class="line"><a name="l00792"></a><span class="lineno"><a class="line" href="classsdr_1_1_a_g_c.html#af8e3c300e5a264a568ed9b18a0c1b02e"> 792</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> <a class="code" href="classsdr_1_1_a_g_c.html#af8e3c300e5a264a568ed9b18a0c1b02e">_buffer</a>;</div>
|
|
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> };</div>
|
|
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> </div>
|
|
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> </div>
|
|
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_store.html"> 799</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_debug_store.html">DebugStore</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar></div>
|
|
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span> {</div>
|
|
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00803"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_store.html#ae0069303062df5385e61654744f42dcb"> 803</a></span>  <a class="code" href="classsdr_1_1_debug_store.html#ae0069303062df5385e61654744f42dcb">DebugStore</a>() : <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar>(), <a class="code" href="classsdr_1_1_debug_store.html#adb09b528eaa679d15bb695b100e5fd2a">_buffer</a>(), <a class="code" href="classsdr_1_1_debug_store.html#ae50fa8b237a4f4db86829bad5b862a17">_view</a>() { }</div>
|
|
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="keyword">virtual</span> ~<a class="code" href="classsdr_1_1_debug_store.html">DebugStore</a>() {</div>
|
|
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <a class="code" href="classsdr_1_1_debug_store.html#adb09b528eaa679d15bb695b100e5fd2a">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#a8ffd3cbf476c9036bfada9ae8c7c5e05">unref</a>();</div>
|
|
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  }</div>
|
|
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div>
|
|
<div class="line"><a name="l00809"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_store.html#a49a16b42f72c91fadf494ab7e3fa88de"> 809</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_debug_store.html#a49a16b42f72c91fadf494ab7e3fa88de">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="comment">// Requires type and buffer size</span></div>
|
|
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="keywordflow">if</span> (!src_cfg.<a class="code" href="classsdr_1_1_config.html#a7cdfc69aa8e3ab975db7251747343a20">hasType</a>() || !src_cfg.<a class="code" href="classsdr_1_1_config.html#a485e488e1411e52c722b22d1807be406">hasBufferSize</a>()) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="comment">// Check type</span></div>
|
|
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="keywordflow">if</span> (Config::typeId<Scalar>() != src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()) {</div>
|
|
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err;</div>
|
|
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  err << <span class="stringliteral">"Can not configure DebugStore node: Invalid input type "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()</div>
|
|
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  << <span class="stringliteral">", expected "</span> << Config::typeId<Scalar>();</div>
|
|
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  }</div>
|
|
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="comment">// Allocate buffer</span></div>
|
|
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <a class="code" href="classsdr_1_1_debug_store.html#adb09b528eaa679d15bb695b100e5fd2a">_buffer</a> = <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a>(src_cfg.<a class="code" href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">bufferSize</a>());</div>
|
|
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  }</div>
|
|
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span> </div>
|
|
<div class="line"><a name="l00824"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_store.html#ad4614b418a72ef58bdec3da66baa17b9"> 824</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_debug_store.html#ad4614b418a72ef58bdec3da66baa17b9">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> &<a class="code" href="classsdr_1_1_debug_store.html#acc0294ae47ad796ccbb81e90c8cbbdfb">buffer</a>, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="keywordtype">size_t</span> N = std::min(buffer.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>(), <a class="code" href="classsdr_1_1_debug_store.html#adb09b528eaa679d15bb695b100e5fd2a">_buffer</a>.<a class="code" href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">size</a>());</div>
|
|
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  memcpy(<a class="code" href="classsdr_1_1_debug_store.html#adb09b528eaa679d15bb695b100e5fd2a">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#a2384e82c2344e55b0246e8aebcd713f2">ptr</a>(), buffer.<a class="code" href="classsdr_1_1_raw_buffer.html#a41429fafa5acac7eb6ab22001fedc3d7">data</a>(), N*<span class="keyword">sizeof</span>(Scalar));</div>
|
|
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="comment">// Store view</span></div>
|
|
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <a class="code" href="classsdr_1_1_debug_store.html#ae50fa8b237a4f4db86829bad5b862a17">_view</a> = <a class="code" href="classsdr_1_1_debug_store.html#adb09b528eaa679d15bb695b100e5fd2a">_buffer</a>.<a class="code" href="classsdr_1_1_buffer.html#a3eca322ed118a7b5c4cc62b25ce5d119">head</a>(N);</div>
|
|
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  }</div>
|
|
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span> </div>
|
|
<div class="line"><a name="l00832"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_store.html#acc0294ae47ad796ccbb81e90c8cbbdfb"> 832</a></span>  <span class="keyword">inline</span> <span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> &<a class="code" href="classsdr_1_1_debug_store.html#acc0294ae47ad796ccbb81e90c8cbbdfb">buffer</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classsdr_1_1_debug_store.html#ae50fa8b237a4f4db86829bad5b862a17">_view</a>; }</div>
|
|
<div class="line"><a name="l00834"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_store.html#a01c2f43a30b8642a663addcf7fd5b897"> 834</a></span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_debug_store.html#a01c2f43a30b8642a663addcf7fd5b897">clear</a>() { <a class="code" href="classsdr_1_1_debug_store.html#ae50fa8b237a4f4db86829bad5b862a17">_view</a> = <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a>(); }</div>
|
|
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span> </div>
|
|
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00838"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_store.html#adb09b528eaa679d15bb695b100e5fd2a"> 838</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> <a class="code" href="classsdr_1_1_debug_store.html#adb09b528eaa679d15bb695b100e5fd2a">_buffer</a>;</div>
|
|
<div class="line"><a name="l00840"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_store.html#ae50fa8b237a4f4db86829bad5b862a17"> 840</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> <a class="code" href="classsdr_1_1_debug_store.html#ae50fa8b237a4f4db86829bad5b862a17">_view</a>;</div>
|
|
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span> };</div>
|
|
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span> </div>
|
|
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span> </div>
|
|
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00847"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_dump.html"> 847</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_debug_dump.html">DebugDump</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar></div>
|
|
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span> {</div>
|
|
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00851"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_dump.html#ac2d812e6ce797f273b1c24c89914f1a1"> 851</a></span>  <a class="code" href="classsdr_1_1_debug_dump.html#ac2d812e6ce797f273b1c24c89914f1a1">DebugDump</a>(std::ostream &stream=std::cerr)</div>
|
|
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  : <a class="code" href="classsdr_1_1_sink.html">Sink</a><Scalar>(), <a class="code" href="classsdr_1_1_debug_dump.html#a5bc2bcd87d1188ec321b51c27c78e0ea">_stream</a>(stream)</div>
|
|
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  {</div>
|
|
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  }</div>
|
|
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span> </div>
|
|
<div class="line"><a name="l00858"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_dump.html#ad2b8dbf77ca9fd1b29b3521e4661c52f"> 858</a></span>  <span class="keyword">virtual</span> <a class="code" href="classsdr_1_1_debug_dump.html#ad2b8dbf77ca9fd1b29b3521e4661c52f">~DebugDump</a>() {</div>
|
|
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  <span class="comment">// pass...</span></div>
|
|
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  }</div>
|
|
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span> </div>
|
|
<div class="line"><a name="l00863"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_dump.html#af496d34703693264a457c4f9cb8b6b44"> 863</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_debug_dump.html#af496d34703693264a457c4f9cb8b6b44">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg) {</div>
|
|
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="comment">// Requires type</span></div>
|
|
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  <span class="keywordflow">if</span> (!src_cfg.<a class="code" href="classsdr_1_1_config.html#a7cdfc69aa8e3ab975db7251747343a20">hasType</a>()) { <span class="keywordflow">return</span>; }</div>
|
|
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  <span class="comment">// check type</span></div>
|
|
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">if</span> (Config::typeId<Scalar>() != src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()) {</div>
|
|
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>  <a class="code" href="classsdr_1_1_config_error.html">ConfigError</a> err;</div>
|
|
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  err << <span class="stringliteral">"Can not configure DebugDump sink: Invalid input type "</span> << src_cfg.<a class="code" href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">type</a>()</div>
|
|
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  << <span class="stringliteral">", expected "</span> << Config::typeId<Scalar>();</div>
|
|
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="keywordflow">throw</span> err;</div>
|
|
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  }</div>
|
|
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <span class="comment">// Done...</span></div>
|
|
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  }</div>
|
|
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span> </div>
|
|
<div class="line"><a name="l00877"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_dump.html#ac65877c52fea8c06101245541740a12a"> 877</a></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_debug_dump.html#ac65877c52fea8c06101245541740a12a">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> &buffer, <span class="keywordtype">bool</span> allow_overwrite) {</div>
|
|
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  <a class="code" href="classsdr_1_1_debug_dump.html#a5bc2bcd87d1188ec321b51c27c78e0ea">_stream</a> << buffer << std::endl;</div>
|
|
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  }</div>
|
|
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span> </div>
|
|
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00883"></a><span class="lineno"><a class="line" href="classsdr_1_1_debug_dump.html#a5bc2bcd87d1188ec321b51c27c78e0ea"> 883</a></span>  std::ostream &<a class="code" href="classsdr_1_1_debug_dump.html#a5bc2bcd87d1188ec321b51c27c78e0ea">_stream</a>;</div>
|
|
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span> };</div>
|
|
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span> </div>
|
|
<div class="line"><a name="l00888"></a><span class="lineno"><a class="line" href="classsdr_1_1_text_dump.html"> 888</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_text_dump.html">TextDump</a> : <span class="keyword">public</span> <a class="code" href="classsdr_1_1_sink.html">Sink</a><uint8_t></div>
|
|
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span> {</div>
|
|
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <a class="code" href="classsdr_1_1_text_dump.html#aa501127dbb7839524a1d00aa3023eacb">TextDump</a>(std::ostream &stream=std::cerr);</div>
|
|
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_text_dump.html#aca4ba1d0b79cd18dabc5df25f9b2d765">config</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_config.html">Config</a> &src_cfg);</div>
|
|
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_text_dump.html#a5ae6fc74e553d26cff4cd84a164a027a">process</a>(<span class="keyword">const</span> <a class="code" href="classsdr_1_1_buffer.html">Buffer<uint8_t></a> &buffer, <span class="keywordtype">bool</span> allow_overwrite);</div>
|
|
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span> </div>
|
|
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00900"></a><span class="lineno"><a class="line" href="classsdr_1_1_text_dump.html#a28d4066847f1ee5d547d8c76653263e9"> 900</a></span>  std::ostream &<a class="code" href="classsdr_1_1_text_dump.html#a28d4066847f1ee5d547d8c76653263e9">_stream</a>;</div>
|
|
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span> };</div>
|
|
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div>
|
|
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span> </div>
|
|
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span> <span class="keyword">template</span> <<span class="keyword">class</span> Scalar></div>
|
|
<div class="line"><a name="l00907"></a><span class="lineno"><a class="line" href="classsdr_1_1_g_w_n_source.html"> 907</a></span> <span class="keyword">class </span><a class="code" href="classsdr_1_1_g_w_n_source.html">GWNSource</a>: <span class="keyword">public</span> <a class="code" href="classsdr_1_1_source.html">Source</a></div>
|
|
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span> {</div>
|
|
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> <span class="keyword">public</span>:</div>
|
|
<div class="line"><a name="l00911"></a><span class="lineno"><a class="line" href="classsdr_1_1_g_w_n_source.html#a252d6072247808f11340274fda976500"> 911</a></span>  <a class="code" href="classsdr_1_1_g_w_n_source.html#a252d6072247808f11340274fda976500">GWNSource</a>(<span class="keywordtype">double</span> sample_rate, <span class="keywordtype">size_t</span> buffer_size=1024)</div>
|
|
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>  : <a class="code" href="classsdr_1_1_source.html">Source</a>(), <a class="code" href="classsdr_1_1_g_w_n_source.html#a4ce174e09f78cd1f6b27dcb0a832dc44">_sample_rate</a>(sample_rate), <a class="code" href="classsdr_1_1_g_w_n_source.html#a3aec2ae939e55cf83a35fe85e3502f18">_buffer_size</a>(buffer_size), <a class="code" href="classsdr_1_1_g_w_n_source.html#ad1dc4b69edc21b6f95d35de9e21cd275">_buffer</a>(<a class="code" href="classsdr_1_1_g_w_n_source.html#a3aec2ae939e55cf83a35fe85e3502f18">_buffer_size</a>),</div>
|
|
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <a class="code" href="classsdr_1_1_g_w_n_source.html#a376a552d03b41d7062c4101ece4ddeb7">_mean</a>(0)</div>
|
|
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  {</div>
|
|
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="comment">// Seed RNG</span></div>
|
|
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  std::srand(std::time(0));</div>
|
|
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="comment">// Determine mean</span></div>
|
|
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="keywordflow">switch</span> (Config::typeId<Scalar>()) {</div>
|
|
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8aff58284f9bbd7e3c690a9e4f1d74aefd">Config::Type_u8</a>:</div>
|
|
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a2d44478e68580bf01d17f6e33eb5d856">Config::Type_cu8</a>:</div>
|
|
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a9fd5000bcdeaf5872cfa097b8df26a74">Config::Type_u16</a>:</div>
|
|
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  <span class="keywordflow">case</span> <a class="code" href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a6a87fdcbcf659811d60fee74fbea7f07">Config::Type_cu16</a>:</div>
|
|
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  <a class="code" href="classsdr_1_1_g_w_n_source.html#a376a552d03b41d7062c4101ece4ddeb7">_mean</a> = 1;</div>
|
|
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="keywordflow">default</span>:</div>
|
|
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <a class="code" href="classsdr_1_1_g_w_n_source.html#a376a552d03b41d7062c4101ece4ddeb7">_mean</a> = 0;</div>
|
|
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="keywordflow">break</span>;</div>
|
|
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  }</div>
|
|
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="comment">// Propergate config</span></div>
|
|
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <a class="code" href="classsdr_1_1_source.html#afd4c7e3fb94a057ac40e9877167791ec">setConfig</a>(<a class="code" href="classsdr_1_1_config.html">Config</a>(Config::typeId<Scalar>(), <a class="code" href="classsdr_1_1_g_w_n_source.html#a4ce174e09f78cd1f6b27dcb0a832dc44">_sample_rate</a>, <a class="code" href="classsdr_1_1_g_w_n_source.html#a3aec2ae939e55cf83a35fe85e3502f18">_buffer_size</a>, 1));</div>
|
|
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  }</div>
|
|
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span> </div>
|
|
<div class="line"><a name="l00934"></a><span class="lineno"><a class="line" href="classsdr_1_1_g_w_n_source.html#a5b9c6d8396b7bd5cfc357d750913314c"> 934</a></span>  <span class="keyword">virtual</span> <a class="code" href="classsdr_1_1_g_w_n_source.html#a5b9c6d8396b7bd5cfc357d750913314c">~GWNSource</a>() {</div>
|
|
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  <a class="code" href="classsdr_1_1_g_w_n_source.html#ad1dc4b69edc21b6f95d35de9e21cd275">_buffer</a>.<a class="code" href="classsdr_1_1_raw_buffer.html#a8ffd3cbf476c9036bfada9ae8c7c5e05">unref</a>();</div>
|
|
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  }</div>
|
|
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span> </div>
|
|
<div class="line"><a name="l00941"></a><span class="lineno"><a class="line" href="classsdr_1_1_g_w_n_source.html#a0216c5b6d8efeded627b030219858e8c"> 941</a></span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_g_w_n_source.html#a0216c5b6d8efeded627b030219858e8c">next</a>() {</div>
|
|
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>  <span class="keywordtype">double</span> a,b;</div>
|
|
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i=0; i<<a class="code" href="classsdr_1_1_g_w_n_source.html#a3aec2ae939e55cf83a35fe85e3502f18">_buffer_size</a>; i+=2) {</div>
|
|
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>  <a class="code" href="classsdr_1_1_g_w_n_source.html#a90bc06a4667521b8254a830a3cf4dd26">_getNormal</a>(a,b);</div>
|
|
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>  <a class="code" href="classsdr_1_1_g_w_n_source.html#ad1dc4b69edc21b6f95d35de9e21cd275">_buffer</a>[i] = Scalar(<a class="code" href="classsdr_1_1_traits.html">Traits<Scalar>::scale</a>*(a+<a class="code" href="classsdr_1_1_g_w_n_source.html#a376a552d03b41d7062c4101ece4ddeb7">_mean</a>));</div>
|
|
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>  <a class="code" href="classsdr_1_1_g_w_n_source.html#ad1dc4b69edc21b6f95d35de9e21cd275">_buffer</a>[i+1] = Scalar(<a class="code" href="classsdr_1_1_traits.html">Traits<Scalar>::scale</a>*(b+<a class="code" href="classsdr_1_1_g_w_n_source.html#a376a552d03b41d7062c4101ece4ddeb7">_mean</a>));</div>
|
|
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>  }</div>
|
|
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>  <span class="keywordflow">if</span> (_buffer_size%2) {</div>
|
|
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>  <a class="code" href="classsdr_1_1_g_w_n_source.html#a90bc06a4667521b8254a830a3cf4dd26">_getNormal</a>(a,b); <a class="code" href="classsdr_1_1_g_w_n_source.html#ad1dc4b69edc21b6f95d35de9e21cd275">_buffer</a>[_buffer_size-1] = Scalar(<a class="code" href="classsdr_1_1_traits.html">Traits<Scalar>::scale</a>*(a+<a class="code" href="classsdr_1_1_g_w_n_source.html#a376a552d03b41d7062c4101ece4ddeb7">_mean</a>));</div>
|
|
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>  }</div>
|
|
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>  this-><a class="code" href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">send</a>(<a class="code" href="classsdr_1_1_g_w_n_source.html#ad1dc4b69edc21b6f95d35de9e21cd275">_buffer</a>, <span class="keyword">true</span>);</div>
|
|
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>  }</div>
|
|
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> </div>
|
|
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span> </div>
|
|
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00957"></a><span class="lineno"><a class="line" href="classsdr_1_1_g_w_n_source.html#a90bc06a4667521b8254a830a3cf4dd26"> 957</a></span>  <span class="keywordtype">void</span> <a class="code" href="classsdr_1_1_g_w_n_source.html#a90bc06a4667521b8254a830a3cf4dd26">_getNormal</a>(<span class="keywordtype">double</span> &a, <span class="keywordtype">double</span> &b) {</div>
|
|
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="comment">// Obtain pair of std. normal floating point values</span></div>
|
|
<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  <span class="keywordtype">double</span> x = 2*(double(std::rand())/RAND_MAX) - 1;</div>
|
|
<div class="line"><a name="l00960"></a><span class="lineno"> 960</span>  <span class="keywordtype">double</span> y = 2*(double(std::rand())/RAND_MAX) - 1;</div>
|
|
<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  <span class="keywordtype">double</span> s = std::sqrt(x*x + y*y);</div>
|
|
<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  <span class="keywordflow">while</span> (s >= 1) {</div>
|
|
<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  x = 2*(double(std::rand())/RAND_MAX) - 1;</div>
|
|
<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  y = 2*(double(std::rand())/RAND_MAX) - 1;</div>
|
|
<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  s = std::sqrt(x*x + y*y);</div>
|
|
<div class="line"><a name="l00966"></a><span class="lineno"> 966</span>  }</div>
|
|
<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  a = x*std::sqrt(-2*log(s)/s);</div>
|
|
<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  b = y*std::sqrt(-2*log(s)/s);</div>
|
|
<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  }</div>
|
|
<div class="line"><a name="l00970"></a><span class="lineno"> 970</span> </div>
|
|
<div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="keyword">protected</span>:</div>
|
|
<div class="line"><a name="l00973"></a><span class="lineno"><a class="line" href="classsdr_1_1_g_w_n_source.html#a4ce174e09f78cd1f6b27dcb0a832dc44"> 973</a></span>  <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_g_w_n_source.html#a4ce174e09f78cd1f6b27dcb0a832dc44">_sample_rate</a>;</div>
|
|
<div class="line"><a name="l00975"></a><span class="lineno"><a class="line" href="classsdr_1_1_g_w_n_source.html#a3aec2ae939e55cf83a35fe85e3502f18"> 975</a></span>  <span class="keywordtype">size_t</span> <a class="code" href="classsdr_1_1_g_w_n_source.html#a3aec2ae939e55cf83a35fe85e3502f18">_buffer_size</a>;</div>
|
|
<div class="line"><a name="l00977"></a><span class="lineno"><a class="line" href="classsdr_1_1_g_w_n_source.html#ad1dc4b69edc21b6f95d35de9e21cd275"> 977</a></span>  <a class="code" href="classsdr_1_1_buffer.html">Buffer<Scalar></a> <a class="code" href="classsdr_1_1_g_w_n_source.html#ad1dc4b69edc21b6f95d35de9e21cd275">_buffer</a>;</div>
|
|
<div class="line"><a name="l00979"></a><span class="lineno"><a class="line" href="classsdr_1_1_g_w_n_source.html#a376a552d03b41d7062c4101ece4ddeb7"> 979</a></span>  <span class="keywordtype">double</span> <a class="code" href="classsdr_1_1_g_w_n_source.html#a376a552d03b41d7062c4101ece4ddeb7">_mean</a>;</div>
|
|
<div class="line"><a name="l00980"></a><span class="lineno"> 980</span> };</div>
|
|
<div class="line"><a name="l00981"></a><span class="lineno"> 981</span> </div>
|
|
<div class="line"><a name="l00982"></a><span class="lineno"> 982</span> }</div>
|
|
<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> </div>
|
|
<div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="preprocessor">#endif // __SDR_UTILS_HH__</span></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_a1266dd894d568627ea9ab7859eb2366e"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#a1266dd894d568627ea9ab7859eb2366e">sdr::AGC::enable</a></div><div class="ttdeci">void enable(bool enabled)</div><div class="ttdoc">Enable/disable the AGC node. </div><div class="ttdef"><b>Definition:</b> utils.hh:698</div></div>
|
|
<div class="ttc" id="classsdr_1_1_to_complex_html_a7cd62714938db65f91578ad5042a4ed3"><div class="ttname"><a href="classsdr_1_1_to_complex.html#a7cd62714938db65f91578ad5042a4ed3">sdr::ToComplex::process</a></div><div class="ttdeci">virtual void process(const Buffer< iScalar > &buffer, bool allow_overwrite)</div><div class="ttdoc">Casts the input real buffer into the complex output buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:241</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_store_html_adb09b528eaa679d15bb695b100e5fd2a"><div class="ttname"><a href="classsdr_1_1_debug_store.html#adb09b528eaa679d15bb695b100e5fd2a">sdr::DebugStore::_buffer</a></div><div class="ttdeci">Buffer< Scalar > _buffer</div><div class="ttdoc">A pre-allocated buffer, that will hold the last data received. </div><div class="ttdef"><b>Definition:</b> utils.hh:838</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html_ab3736d949dac9e30b98d81b31df182a6"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html#ab3736d949dac9e30b98d81b31df182a6">sdr::UnsignedToSigned::_process_int16</a></div><div class="ttdeci">void _process_int16(const RawBuffer &in, const RawBuffer &out)</div><div class="ttdoc">Performs the cast for uint16 -> int16. </div><div class="ttdef"><b>Definition:</b> utils.cc:91</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html"><div class="ttname"><a href="classsdr_1_1_config.html">sdr::Config</a></div><div class="ttdoc">A collection of configuration information that is send by a source to all connected sinks to properga...</div><div class="ttdef"><b>Definition:</b> node.hh:35</div></div>
|
|
<div class="ttc" id="classsdr_1_1_g_w_n_source_html_a4ce174e09f78cd1f6b27dcb0a832dc44"><div class="ttname"><a href="classsdr_1_1_g_w_n_source.html#a4ce174e09f78cd1f6b27dcb0a832dc44">sdr::GWNSource::_sample_rate</a></div><div class="ttdeci">double _sample_rate</div><div class="ttdoc">The sample rate. </div><div class="ttdef"><b>Definition:</b> utils.hh:973</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_aafd22e6eff64cd6f615f025d2d2cdde0"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#aafd22e6eff64cd6f615f025d2d2cdde0">sdr::AGC::setGain</a></div><div class="ttdeci">void setGain(float gain)</div><div class="ttdoc">Resets the current gain factor. </div><div class="ttdef"><b>Definition:</b> utils.hh:708</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html_a3cc3c87952251d8fa523e226d4f99d0b"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html#a3cc3c87952251d8fa523e226d4f99d0b">sdr::UnsignedToSigned::_buffer</a></div><div class="ttdeci">RawBuffer _buffer</div><div class="ttdoc">The output buffer, unused if the cast can be performed in-place. </div><div class="ttdef"><b>Definition:</b> utils.hh:395</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a3517b22ed2f8ebce25b6ce140e0fc4ae"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a3517b22ed2f8ebce25b6ce140e0fc4ae">sdr::Config::Type_cf32</a></div><div class="ttdoc">Complex (aka I/Q) type of 32bit floats aka. std::complex<float>. </div><div class="ttdef"><b>Definition:</b> node.hh:51</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_a23bee3cb921304367906cfacba00914b"><div class="ttname"><a href="classsdr_1_1_cast.html#a23bee3cb921304367906cfacba00914b">sdr::Cast::_scale</a></div><div class="ttdeci">oScalar _scale</div><div class="ttdoc">The scaling. </div><div class="ttdef"><b>Definition:</b> utils.hh:361</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_dump_html_ac65877c52fea8c06101245541740a12a"><div class="ttname"><a href="classsdr_1_1_debug_dump.html#ac65877c52fea8c06101245541740a12a">sdr::DebugDump::process</a></div><div class="ttdeci">virtual void process(const Buffer< Scalar > &buffer, bool allow_overwrite)</div><div class="ttdoc">Dumps the received buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:877</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_a021a3a3366f3ae5d400fa8475f6c45d6"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#a021a3a3366f3ae5d400fa8475f6c45d6">sdr::AGC::gain</a></div><div class="ttdeci">float gain() const </div><div class="ttdoc">Returns the current gain factor. </div><div class="ttdef"><b>Definition:</b> utils.hh:703</div></div>
|
|
<div class="ttc" id="classsdr_1_1_signed_to_unsigned_html_a3c95c11ec3424ab0188f4cfacb175a0c"><div class="ttname"><a href="classsdr_1_1_signed_to_unsigned.html#a3c95c11ec3424ab0188f4cfacb175a0c">sdr::SignedToUnsigned::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the cast node. </div><div class="ttdef"><b>Definition:</b> utils.cc:117</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_ab569653f091eda6bf11174d3e8cfa9ae"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#ab569653f091eda6bf11174d3e8cfa9ae">sdr::AGC::_tau</a></div><div class="ttdeci">float _tau</div><div class="ttdoc">The time-constant of the AGC. </div><div class="ttdef"><b>Definition:</b> utils.hh:780</div></div>
|
|
<div class="ttc" id="classsdr_1_1_raw_buffer_html"><div class="ttname"><a href="classsdr_1_1_raw_buffer.html">sdr::RawBuffer</a></div><div class="ttdoc">Base class of all buffers, represents an untyped array of bytes. </div><div class="ttdef"><b>Definition:</b> buffer.hh:32</div></div>
|
|
<div class="ttc" id="classsdr_1_1_real_imag_part_html_ab0c78ce9e462059be02dfd38aefdc52f"><div class="ttname"><a href="classsdr_1_1_real_imag_part.html#ab0c78ce9e462059be02dfd38aefdc52f">sdr::RealImagPart::_scale</a></div><div class="ttdeci">double _scale</div><div class="ttdoc">The scale. </div><div class="ttdef"><b>Definition:</b> utils.hh:76</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_af7af79f187aa77b98abb4643307bd2f7"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#af7af79f187aa77b98abb4643307bd2f7">sdr::FreqShift::setShift</a></div><div class="ttdeci">void setShift(double shift)</div><div class="ttdoc">Sets the frequency shift. </div><div class="ttdef"><b>Definition:</b> utils.hh:457</div></div>
|
|
<div class="ttc" id="classsdr_1_1_source_html_ac7ea547c33d45cf5b5654ce21957ab27"><div class="ttname"><a href="classsdr_1_1_source.html#ac7ea547c33d45cf5b5654ce21957ab27">sdr::Source::_config</a></div><div class="ttdeci">Config _config</div><div class="ttdoc">Holds the source configuration, this can be updated by calling setConfig. </div><div class="ttdef"><b>Definition:</b> node.hh:253</div></div>
|
|
<div class="ttc" id="classsdr_1_1_signed_to_unsigned_html_a1eeac364170e652a32febf7fa2d64c3b"><div class="ttname"><a href="classsdr_1_1_signed_to_unsigned.html#a1eeac364170e652a32febf7fa2d64c3b">sdr::SignedToUnsigned::_process</a></div><div class="ttdeci">void(SignedToUnsigned::* _process)(const RawBuffer &in, const RawBuffer &out)</div><div class="ttdoc">Type-cast callback. </div><div class="ttdef"><b>Definition:</b> utils.hh:425</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_ac1f811db1e85281d33e10f63cd67f7f3"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#ac1f811db1e85281d33e10f63cd67f7f3">sdr::AGC::process</a></div><div class="ttdeci">virtual void process(const Buffer< Scalar > &buffer, bool allow_overwrite)</div><div class="ttdoc">Performs the amplification and adjusts the gain. </div><div class="ttdef"><b>Definition:</b> utils.hh:761</div></div>
|
|
<div class="ttc" id="classsdr_1_1_signed_to_unsigned_html_a45b29ca444478cb29c6faf119024efe6"><div class="ttname"><a href="classsdr_1_1_signed_to_unsigned.html#a45b29ca444478cb29c6faf119024efe6">sdr::SignedToUnsigned::handleBuffer</a></div><div class="ttdeci">virtual void handleBuffer(const RawBuffer &buffer, bool allow_overwrite)</div><div class="ttdoc">Performs the cast. </div><div class="ttdef"><b>Definition:</b> utils.cc:158</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_a8e4ce9a7cb2b81b88cfc4f75f5ebc6a9"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#a8e4ce9a7cb2b81b88cfc4f75f5ebc6a9">sdr::FreqShift::_scale</a></div><div class="ttdeci">Scalar _scale</div><div class="ttdoc">The optional scale. </div><div class="ttdef"><b>Definition:</b> utils.hh:512</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_ac04217fae39c2f7fe42de56d28856f2e"><div class="ttname"><a href="classsdr_1_1_cast.html#ac04217fae39c2f7fe42de56d28856f2e">sdr::Cast::scale</a></div><div class="ttdeci">double scale() const </div><div class="ttdoc">Returns the scaling. </div><div class="ttdef"><b>Definition:</b> utils.hh:332</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_a0ad652944e908118d862c4d806b91954"><div class="ttname"><a href="classsdr_1_1_cast.html#a0ad652944e908118d862c4d806b91954">sdr::Cast::Cast</a></div><div class="ttdeci">Cast(oScalar scale=1, iScalar shift=0)</div><div class="ttdoc">Constructs a type-cast with optional scaleing. </div><div class="ttdef"><b>Definition:</b> utils.hh:277</div></div>
|
|
<div class="ttc" id="classsdr_1_1_scale_html_a1101a27382e4a4b1e93a0e8cb5caa446"><div class="ttname"><a href="classsdr_1_1_scale.html#a1101a27382e4a4b1e93a0e8cb5caa446">sdr::Scale::~Scale</a></div><div class="ttdeci">virtual ~Scale()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:607</div></div>
|
|
<div class="ttc" id="classsdr_1_1_to_complex_html_accdf35c4a20d7b22c9db4a43c6f1b2ba"><div class="ttname"><a href="classsdr_1_1_to_complex.html#accdf35c4a20d7b22c9db4a43c6f1b2ba">sdr::ToComplex::_buffer</a></div><div class="ttdeci">Buffer< std::complex< oScalar > > _buffer</div><div class="ttdoc">The output buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:259</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a4f222757d46f6b85c63657e1560bf9eb"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a4f222757d46f6b85c63657e1560bf9eb">sdr::Config::Type_s16</a></div><div class="ttdoc">Real signed 16b ints. </div><div class="ttdef"><b>Definition:</b> node.hh:44</div></div>
|
|
<div class="ttc" id="classsdr_1_1_signed_to_unsigned_html_a3c05ecc93f25194ceea462781d6e22a9"><div class="ttname"><a href="classsdr_1_1_signed_to_unsigned.html#a3c05ecc93f25194ceea462781d6e22a9">sdr::SignedToUnsigned::~SignedToUnsigned</a></div><div class="ttdeci">virtual ~SignedToUnsigned()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> utils.cc:112</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html">sdr::UnsignedToSigned</a></div><div class="ttdoc">Performs a reinterprete cast from an unsinged value to a singed one. </div><div class="ttdef"><b>Definition:</b> utils.hh:372</div></div>
|
|
<div class="ttc" id="classsdr_1_1_g_w_n_source_html"><div class="ttname"><a href="classsdr_1_1_g_w_n_source.html">sdr::GWNSource</a></div><div class="ttdoc">A Gaussian White Noise source. </div><div class="ttdef"><b>Definition:</b> utils.hh:907</div></div>
|
|
<div class="ttc" id="classsdr_1_1_text_dump_html_a28d4066847f1ee5d547d8c76653263e9"><div class="ttname"><a href="classsdr_1_1_text_dump.html#a28d4066847f1ee5d547d8c76653263e9">sdr::TextDump::_stream</a></div><div class="ttdeci">std::ostream & _stream</div><div class="ttdoc">The output stream. </div><div class="ttdef"><b>Definition:</b> utils.hh:900</div></div>
|
|
<div class="ttc" id="classsdr_1_1_source_html_a13921d5daa00574e2057c1ae1fc28054"><div class="ttname"><a href="classsdr_1_1_source.html#a13921d5daa00574e2057c1ae1fc28054">sdr::Source::send</a></div><div class="ttdeci">virtual void send(const RawBuffer &buffer, bool allow_overwrite=false)</div><div class="ttdoc">Sends the given buffer to all connected sinks. </div><div class="ttdef"><b>Definition:</b> node.cc:67</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_store_html_acc0294ae47ad796ccbb81e90c8cbbdfb"><div class="ttname"><a href="classsdr_1_1_debug_store.html#acc0294ae47ad796ccbb81e90c8cbbdfb">sdr::DebugStore::buffer</a></div><div class="ttdeci">const Buffer< Scalar > & buffer() const </div><div class="ttdoc">Retunrs a reference to the last received buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:832</div></div>
|
|
<div class="ttc" id="classsdr_1_1_queue_html_ab4c57ac84eaa535fd412b3b7b7cfc816"><div class="ttname"><a href="classsdr_1_1_queue.html#ab4c57ac84eaa535fd412b3b7b7cfc816">sdr::Queue::get</a></div><div class="ttdeci">static Queue & get()</div><div class="ttdoc">Get a reference to the global instance of the queue. </div><div class="ttdef"><b>Definition:</b> queue.cc:15</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_store_html_ae0069303062df5385e61654744f42dcb"><div class="ttname"><a href="classsdr_1_1_debug_store.html#ae0069303062df5385e61654744f42dcb">sdr::DebugStore::DebugStore</a></div><div class="ttdeci">DebugStore()</div><div class="ttdoc">Constrctor. </div><div class="ttdef"><b>Definition:</b> utils.hh:803</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_sink_html_ace62c79416acaa9680fc48da13bd583e"><div class="ttname"><a href="classsdr_1_1_stream_sink.html#ace62c79416acaa9680fc48da13bd583e">sdr::StreamSink::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the raw sink. </div><div class="ttdef"><b>Definition:</b> utils.hh:568</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html_a96623592a4d99c2305896d47bd7ccf03"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html#a96623592a4d99c2305896d47bd7ccf03">sdr::UnsignedToSigned::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the cast node. </div><div class="ttdef"><b>Definition:</b> utils.cc:20</div></div>
|
|
<div class="ttc" id="classsdr_1_1_sink_html"><div class="ttname"><a href="classsdr_1_1_sink.html">sdr::Sink</a></div><div class="ttdoc">Typed sink. </div><div class="ttdef"><b>Definition:</b> node.hh:192</div></div>
|
|
<div class="ttc" id="classsdr_1_1_real_imag_part_html"><div class="ttname"><a href="classsdr_1_1_real_imag_part.html">sdr::RealImagPart</a></div><div class="ttdoc">Extracts the real or imaginary part of a complex valued data stream. </div><div class="ttdef"><b>Definition:</b> utils.hh:17</div></div>
|
|
<div class="ttc" id="classsdr_1_1_scale_html_a3e58d1725b33ae78d3047bef28026823"><div class="ttname"><a href="classsdr_1_1_scale.html#a3e58d1725b33ae78d3047bef28026823">sdr::Scale::Scale</a></div><div class="ttdeci">Scale(float scale=1, Scalar shift=0)</div><div class="ttdoc">Constructs the scaling node. </div><div class="ttdef"><b>Definition:</b> utils.hh:600</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_a806ffc298da46fad3a1a057e19a61db1"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#a806ffc298da46fad3a1a057e19a61db1">sdr::FreqShift::_shift</a></div><div class="ttdeci">double _shift</div><div class="ttdoc">The frequency shift in Hz ( ). </div><div class="ttdef"><b>Definition:</b> utils.hh:510</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_aec81c9b69ebb847516e27f8fed0c92ae"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#aec81c9b69ebb847516e27f8fed0c92ae">sdr::AGC::_sample_rate</a></div><div class="ttdeci">double _sample_rate</div><div class="ttdoc">The current sample-rate. </div><div class="ttdef"><b>Definition:</b> utils.hh:790</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a6a87fdcbcf659811d60fee74fbea7f07"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a6a87fdcbcf659811d60fee74fbea7f07">sdr::Config::Type_cu16</a></div><div class="ttdoc">Complex (aka I/Q) type of unsigned 16b ints. </div><div class="ttdef"><b>Definition:</b> node.hh:49</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_a5e933c51ede575faec047d2e2cc1e384"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#a5e933c51ede575faec047d2e2cc1e384">sdr::IQBalance::setBalance</a></div><div class="ttdeci">void setBalance(double balance)</div><div class="ttdoc">Sets the I/Q balance. </div><div class="ttdef"><b>Definition:</b> utils.hh:153</div></div>
|
|
<div class="ttc" id="namespacesdr_html"><div class="ttname"><a href="namespacesdr.html">sdr</a></div><div class="ttdef"><b>Definition:</b> autocast.hh:8</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a023ef493d310cfc8a304c2443c69fc51"><div class="ttname"><a href="classsdr_1_1_config.html#a023ef493d310cfc8a304c2443c69fc51">sdr::Config::numBuffers</a></div><div class="ttdeci">size_t numBuffers() const </div><div class="ttdoc">Returns the max. </div><div class="ttdef"><b>Definition:</b> node.hh:89</div></div>
|
|
<div class="ttc" id="classsdr_1_1_raw_buffer_html_a944346de6bb972f687716bee921a3bad"><div class="ttname"><a href="classsdr_1_1_raw_buffer.html#a944346de6bb972f687716bee921a3bad">sdr::RawBuffer::isEmpty</a></div><div class="ttdeci">bool isEmpty() const </div><div class="ttdoc">Returns true if the buffer is invalid/empty. </div><div class="ttdef"><b>Definition:</b> buffer.hh:77</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8adcae9ece1014b07b0546a2b7a80e18c4"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8adcae9ece1014b07b0546a2b7a80e18c4">sdr::Config::Type_s8</a></div><div class="ttdoc">Real signed 8b ints. </div><div class="ttdef"><b>Definition:</b> node.hh:42</div></div>
|
|
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div><div class="ttdef"><b>Definition:</b> operators.hh:9</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_source_html_a7a0302e45ef26e8af6846f29b40d7d80"><div class="ttname"><a href="classsdr_1_1_stream_source.html#a7a0302e45ef26e8af6846f29b40d7d80">sdr::StreamSource::StreamSource</a></div><div class="ttdeci">StreamSource(std::istream &stream, double sample_rate=1, size_t buffersize=1024)</div><div class="ttdoc">Constructs a raw input source. </div><div class="ttdef"><b>Definition:</b> utils.hh:529</div></div>
|
|
<div class="ttc" id="classsdr_1_1_raw_buffer_html_a51e97f8beeacd8734fdb347af02ee215"><div class="ttname"><a href="classsdr_1_1_raw_buffer.html#a51e97f8beeacd8734fdb347af02ee215">sdr::RawBuffer::storageSize</a></div><div class="ttdeci">size_t storageSize() const </div><div class="ttdoc">Returns the raw buffer size in bytes. </div><div class="ttdef"><b>Definition:</b> buffer.hh:75</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html"><div class="ttname"><a href="classsdr_1_1_freq_shift.html">sdr::FreqShift</a></div><div class="ttdoc">Performs a frequency shift on a complex input signal, by multiplying it with . </div><div class="ttdef"><b>Definition:</b> utils.hh:437</div></div>
|
|
<div class="ttc" id="classsdr_1_1_to_complex_html_a65f7b684ffbc1f8b8b02760d693f21ea"><div class="ttname"><a href="classsdr_1_1_to_complex.html#a65f7b684ffbc1f8b8b02760d693f21ea">sdr::ToComplex::ToComplex</a></div><div class="ttdeci">ToComplex(double scale=1.0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:215</div></div>
|
|
<div class="ttc" id="classsdr_1_1_queue_html_aaf3a0e226ba622d762de9b32b3cbbb09"><div class="ttname"><a href="classsdr_1_1_queue.html#aaf3a0e226ba622d762de9b32b3cbbb09">sdr::Queue::stop</a></div><div class="ttdeci">void stop()</div><div class="ttdoc">Signals the queue to stop processing. </div><div class="ttdef"><b>Definition:</b> queue.cc:64</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a5df3f75dcd6e678bd5f029a7400b404e"><div class="ttname"><a href="classsdr_1_1_config.html#a5df3f75dcd6e678bd5f029a7400b404e">sdr::Config::hasSampleRate</a></div><div class="ttdeci">bool hasSampleRate() const </div><div class="ttdoc">If true, the configuration has a sample rate. </div><div class="ttdef"><b>Definition:</b> node.hh:75</div></div>
|
|
<div class="ttc" id="classsdr_1_1_source_html"><div class="ttname"><a href="classsdr_1_1_source.html">sdr::Source</a></div><div class="ttdoc">Generic source class. </div><div class="ttdef"><b>Definition:</b> node.hh:213</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8aff58284f9bbd7e3c690a9e4f1d74aefd"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8aff58284f9bbd7e3c690a9e4f1d74aefd">sdr::Config::Type_u8</a></div><div class="ttdoc">Real unsigned 8b ints. </div><div class="ttdef"><b>Definition:</b> node.hh:41</div></div>
|
|
<div class="ttc" id="classsdr_1_1_raw_buffer_html_ab6079ff8999d3878071d6308312e063a"><div class="ttname"><a href="classsdr_1_1_raw_buffer.html#ab6079ff8999d3878071d6308312e063a">sdr::RawBuffer::refCount</a></div><div class="ttdeci">int refCount() const </div><div class="ttdoc">Returns the reference counter. </div><div class="ttdef"><b>Definition:</b> buffer.hh:84</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html"><div class="ttname"><a href="classsdr_1_1_cast.html">sdr::Cast</a></div><div class="ttdoc">Explicit type cast node. </div><div class="ttdef"><b>Definition:</b> utils.hh:267</div></div>
|
|
<div class="ttc" id="classsdr_1_1_signed_to_unsigned_html_a85e4ac10bb184cf3a22459efedb32523"><div class="ttname"><a href="classsdr_1_1_signed_to_unsigned.html#a85e4ac10bb184cf3a22459efedb32523">sdr::SignedToUnsigned::SignedToUnsigned</a></div><div class="ttdeci">SignedToUnsigned()</div><div class="ttdoc">Constructor with optional scaleing. </div><div class="ttdef"><b>Definition:</b> utils.cc:106</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_store_html_a49a16b42f72c91fadf494ab7e3fa88de"><div class="ttname"><a href="classsdr_1_1_debug_store.html#a49a16b42f72c91fadf494ab7e3fa88de">sdr::DebugStore::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the node. </div><div class="ttdef"><b>Definition:</b> utils.hh:809</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_a6d0afd25d2d0d2e0dd89dc1759a3f7b4"><div class="ttname"><a href="classsdr_1_1_cast.html#a6d0afd25d2d0d2e0dd89dc1759a3f7b4">sdr::Cast::iSScalar</a></div><div class="ttdeci">Traits< iScalar >::SScalar iSScalar</div><div class="ttdoc">Specifies the input super scalar. </div><div class="ttdef"><b>Definition:</b> utils.hh:271</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_af8e3c300e5a264a568ed9b18a0c1b02e"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#af8e3c300e5a264a568ed9b18a0c1b02e">sdr::AGC::_buffer</a></div><div class="ttdeci">Buffer< Scalar > _buffer</div><div class="ttdoc">The output buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:792</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_store_html_ad4614b418a72ef58bdec3da66baa17b9"><div class="ttname"><a href="classsdr_1_1_debug_store.html#ad4614b418a72ef58bdec3da66baa17b9">sdr::DebugStore::process</a></div><div class="ttdeci">virtual void process(const Buffer< Scalar > &buffer, bool allow_overwrite)</div><div class="ttdoc">Stores the given buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:824</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_a87fce857f7edce169b999d8362715a5b"><div class="ttname"><a href="classsdr_1_1_cast.html#a87fce857f7edce169b999d8362715a5b">sdr::Cast::process</a></div><div class="ttdeci">virtual void process(const Buffer< iScalar > &buffer, bool allow_overwrite)</div><div class="ttdoc">Performs the type-cast node. </div><div class="ttdef"><b>Definition:</b> utils.hh:318</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_aae47d9152dcbd9c40182c9cf319efdc9"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#aae47d9152dcbd9c40182c9cf319efdc9">sdr::FreqShift::process</a></div><div class="ttdeci">virtual void process(const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)</div><div class="ttdoc">Performs the frequency shift. </div><div class="ttdef"><b>Definition:</b> utils.hh:497</div></div>
|
|
<div class="ttc" id="classsdr_1_1_buffer_html_ad2232275b51b1189daea15c6cd9b3a20"><div class="ttname"><a href="classsdr_1_1_buffer.html#ad2232275b51b1189daea15c6cd9b3a20">sdr::Buffer::size</a></div><div class="ttdeci">size_t size() const </div><div class="ttdoc">Returns the number of elements of type T in this buffer. </div><div class="ttdef"><b>Definition:</b> buffer.hh:166</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a7cdfc69aa8e3ab975db7251747343a20"><div class="ttname"><a href="classsdr_1_1_config.html#a7cdfc69aa8e3ab975db7251747343a20">sdr::Config::hasType</a></div><div class="ttdeci">bool hasType() const </div><div class="ttdoc">If true, the configuration has a type. </div><div class="ttdef"><b>Definition:</b> node.hh:69</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_aa0624e0e246cc184f69273e5b034675a"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#aa0624e0e246cc184f69273e5b034675a">sdr::IQBalance::_imagFact</a></div><div class="ttdeci">int32_t _imagFact</div><div class="ttdoc">Scaleing factor for the imaginary part. </div><div class="ttdef"><b>Definition:</b> utils.hh:201</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_a277a98f4b337726d07b3245a920b6456"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#a277a98f4b337726d07b3245a920b6456">sdr::FreqShift::FreqShift</a></div><div class="ttdeci">FreqShift(double shift, Scalar scale=1.0)</div><div class="ttdoc">Constructs a frequency shift node with optional scaleing of the result. </div><div class="ttdef"><b>Definition:</b> utils.hh:441</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_sink_html_af206a47a032f79ba38923c7f1e511450"><div class="ttname"><a href="classsdr_1_1_stream_sink.html#af206a47a032f79ba38923c7f1e511450">sdr::StreamSink::_stream</a></div><div class="ttdeci">std::ostream & _stream</div><div class="ttdoc">The output stream. </div><div class="ttdef"><b>Definition:</b> utils.hh:587</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_a0b89fdaaac6bc4e52509870fa8740cbe"><div class="ttname"><a href="classsdr_1_1_cast.html#a0b89fdaaac6bc4e52509870fa8740cbe">sdr::Cast::setScale</a></div><div class="ttdeci">void setScale(double scale)</div><div class="ttdoc">Sets the scaling. </div><div class="ttdef"><b>Definition:</b> utils.hh:335</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_dump_html_ad2b8dbf77ca9fd1b29b3521e4661c52f"><div class="ttname"><a href="classsdr_1_1_debug_dump.html#ad2b8dbf77ca9fd1b29b3521e4661c52f">sdr::DebugDump::~DebugDump</a></div><div class="ttdeci">virtual ~DebugDump()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:858</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a25a618000b12c978963aa6d19ab92f97"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a25a618000b12c978963aa6d19ab92f97">sdr::Config::Type_f64</a></div><div class="ttdoc">Real 64b floats aka. "double". </div><div class="ttdef"><b>Definition:</b> node.hh:46</div></div>
|
|
<div class="ttc" id="classsdr_1_1_text_dump_html"><div class="ttname"><a href="classsdr_1_1_text_dump.html">sdr::TextDump</a></div><div class="ttdoc">Dumps the received uin8_t byte-stream as (ASCII) text. </div><div class="ttdef"><b>Definition:</b> utils.hh:888</div></div>
|
|
<div class="ttc" id="classsdr_1_1_raw_buffer_html_a41429fafa5acac7eb6ab22001fedc3d7"><div class="ttname"><a href="classsdr_1_1_raw_buffer.html#a41429fafa5acac7eb6ab22001fedc3d7">sdr::RawBuffer::data</a></div><div class="ttdeci">char * data() const </div><div class="ttdoc">Returns the pointer to the data of the buffer view. </div><div class="ttdef"><b>Definition:</b> buffer.hh:69</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a9fd5000bcdeaf5872cfa097b8df26a74"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a9fd5000bcdeaf5872cfa097b8df26a74">sdr::Config::Type_u16</a></div><div class="ttdoc">Real unsigned 16b ints. </div><div class="ttdef"><b>Definition:</b> node.hh:43</div></div>
|
|
<div class="ttc" id="classsdr_1_1_g_w_n_source_html_a3aec2ae939e55cf83a35fe85e3502f18"><div class="ttname"><a href="classsdr_1_1_g_w_n_source.html#a3aec2ae939e55cf83a35fe85e3502f18">sdr::GWNSource::_buffer_size</a></div><div class="ttdeci">size_t _buffer_size</div><div class="ttdoc">The size of the buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:975</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_a3760a8692f5d81b753b8887396b3866c"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#a3760a8692f5d81b753b8887396b3866c">sdr::AGC::AGC</a></div><div class="ttdeci">AGC(double tau=0.1, double target=0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:662</div></div>
|
|
<div class="ttc" id="classsdr_1_1_source_html_afd4c7e3fb94a057ac40e9877167791ec"><div class="ttname"><a href="classsdr_1_1_source.html#afd4c7e3fb94a057ac40e9877167791ec">sdr::Source::setConfig</a></div><div class="ttdeci">virtual void setConfig(const Config &config)</div><div class="ttdoc">Stores the configuration and propergates it if the configuration has been changed. </div><div class="ttdef"><b>Definition:</b> node.cc:98</div></div>
|
|
<div class="ttc" id="classsdr_1_1_to_complex_html_a318dbc6cdaf30baf9ee2de67ac57bc5a"><div class="ttname"><a href="classsdr_1_1_to_complex.html#a318dbc6cdaf30baf9ee2de67ac57bc5a">sdr::ToComplex::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the node. </div><div class="ttdef"><b>Definition:</b> utils.hh:222</div></div>
|
|
<div class="ttc" id="classsdr_1_1_buffer_html_a3eca322ed118a7b5c4cc62b25ce5d119"><div class="ttname"><a href="classsdr_1_1_buffer.html#a3eca322ed118a7b5c4cc62b25ce5d119">sdr::Buffer::head</a></div><div class="ttdeci">Buffer< T > head(size_t n) const </div><div class="ttdoc">Returns a new view on this buffer. </div><div class="ttdef"><b>Definition:</b> buffer.hh:237</div></div>
|
|
<div class="ttc" id="classsdr_1_1_to_complex_html_a40dbe4df970113fab71aaf4150d6c648"><div class="ttname"><a href="classsdr_1_1_to_complex.html#a40dbe4df970113fab71aaf4150d6c648">sdr::ToComplex::_scale</a></div><div class="ttdeci">double _scale</div><div class="ttdoc">The scale. </div><div class="ttdef"><b>Definition:</b> utils.hh:257</div></div>
|
|
<div class="ttc" id="classsdr_1_1_signed_to_unsigned_html_a36a2394ea34ca02868708d7d94ac12bd"><div class="ttname"><a href="classsdr_1_1_signed_to_unsigned.html#a36a2394ea34ca02868708d7d94ac12bd">sdr::SignedToUnsigned::_process_int16</a></div><div class="ttdeci">void _process_int16(const RawBuffer &in, const RawBuffer &out)</div><div class="ttdoc">Performs the int16 -> uint16 cast. </div><div class="ttdef"><b>Definition:</b> utils.cc:181</div></div>
|
|
<div class="ttc" id="classsdr_1_1_g_w_n_source_html_ad1dc4b69edc21b6f95d35de9e21cd275"><div class="ttname"><a href="classsdr_1_1_g_w_n_source.html#ad1dc4b69edc21b6f95d35de9e21cd275">sdr::GWNSource::_buffer</a></div><div class="ttdeci">Buffer< Scalar > _buffer</div><div class="ttdoc">The output buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:977</div></div>
|
|
<div class="ttc" id="classsdr_1_1_g_w_n_source_html_a252d6072247808f11340274fda976500"><div class="ttname"><a href="classsdr_1_1_g_w_n_source.html#a252d6072247808f11340274fda976500">sdr::GWNSource::GWNSource</a></div><div class="ttdeci">GWNSource(double sample_rate, size_t buffer_size=1024)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:911</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_a5c01ce755a3a4c09a50767413a8ae94e"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#a5c01ce755a3a4c09a50767413a8ae94e">sdr::IQBalance::balance</a></div><div class="ttdeci">double balance() const </div><div class="ttdoc">Retunrs the balance. </div><div class="ttdef"><b>Definition:</b> utils.hh:145</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_adc9c78e2a9dcc5a55d81c421a8e534ef"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#adc9c78e2a9dcc5a55d81c421a8e534ef">sdr::AGC::tau</a></div><div class="ttdeci">double tau() const </div><div class="ttdoc">Returns the time-constant of the AGC. </div><div class="ttdef"><b>Definition:</b> utils.hh:713</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_a1723d92b909754ad0ce7636cabd65076"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#a1723d92b909754ad0ce7636cabd65076">sdr::AGC::_sd</a></div><div class="ttdeci">float _sd</div><div class="ttdoc">The averaged std. </div><div class="ttdef"><b>Definition:</b> utils.hh:784</div></div>
|
|
<div class="ttc" id="classsdr_1_1_real_part_html"><div class="ttname"><a href="classsdr_1_1_real_part.html">sdr::RealPart</a></div><div class="ttdoc">Selects the real part of a complex signal. </div><div class="ttdef"><b>Definition:</b> utils.hh:83</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_dump_html_a5bc2bcd87d1188ec321b51c27c78e0ea"><div class="ttname"><a href="classsdr_1_1_debug_dump.html#a5bc2bcd87d1188ec321b51c27c78e0ea">sdr::DebugDump::_stream</a></div><div class="ttdeci">std::ostream & _stream</div><div class="ttdoc">A reference to the output stream. </div><div class="ttdef"><b>Definition:</b> utils.hh:883</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html_a6a77c851737999a0340ccecea78f7b2d"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html#a6a77c851737999a0340ccecea78f7b2d">sdr::UnsignedToSigned::~UnsignedToSigned</a></div><div class="ttdeci">virtual ~UnsignedToSigned()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> utils.cc:15</div></div>
|
|
<div class="ttc" id="classsdr_1_1_real_imag_part_html_acd2bc9b8566fcddc0bf80a877bcebdfc"><div class="ttname"><a href="classsdr_1_1_real_imag_part.html#acd2bc9b8566fcddc0bf80a877bcebdfc">sdr::RealImagPart::_buffer</a></div><div class="ttdeci">Buffer< Scalar > _buffer</div><div class="ttdoc">The output buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:72</div></div>
|
|
<div class="ttc" id="classsdr_1_1_real_imag_part_html_ab71379580b5138b2c351da64c58253b3"><div class="ttname"><a href="classsdr_1_1_real_imag_part.html#ab71379580b5138b2c351da64c58253b3">sdr::RealImagPart::process</a></div><div class="ttdeci">virtual void process(const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)</div><div class="ttdoc">Processes the incomming data. </div><div class="ttdef"><b>Definition:</b> utils.hh:56</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_sink_html_a17eb7f702a5fef65bab33179322b4b3c"><div class="ttname"><a href="classsdr_1_1_stream_sink.html#a17eb7f702a5fef65bab33179322b4b3c">sdr::StreamSink::process</a></div><div class="ttdeci">virtual void process(const Buffer< Scalar > &buffer, bool allow_overwrite)</div><div class="ttdoc">Dumps the buffer into the stream as raw data. </div><div class="ttdef"><b>Definition:</b> utils.hh:580</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_a32b7df4e96d0ad06fdab2e6cb8dbcea6"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#a32b7df4e96d0ad06fdab2e6cb8dbcea6">sdr::IQBalance::~IQBalance</a></div><div class="ttdeci">virtual ~IQBalance()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:140</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_ae8b6f7658eeed069a77d4ed998a85bde"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#ae8b6f7658eeed069a77d4ed998a85bde">sdr::FreqShift::_sample_rate</a></div><div class="ttdeci">double _sample_rate</div><div class="ttdoc">The current sample rate. </div><div class="ttdef"><b>Definition:</b> utils.hh:516</div></div>
|
|
<div class="ttc" id="classsdr_1_1_logger_html_ab887e598a2c4dc1a3a3f1027d91e0e58"><div class="ttname"><a href="classsdr_1_1_logger.html#ab887e598a2c4dc1a3a3f1027d91e0e58">sdr::Logger::log</a></div><div class="ttdeci">void log(const LogMessage &message)</div><div class="ttdoc">Logs a message. </div><div class="ttdef"><b>Definition:</b> logger.cc:100</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_a547a6def95efec1987ca5ed8f5a79326"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#a547a6def95efec1987ca5ed8f5a79326">sdr::IQBalance::SScalar</a></div><div class="ttdeci">Traits< Scalar >::SScalar SScalar</div><div class="ttdoc">The internal used compute scalar. </div><div class="ttdef"><b>Definition:</b> utils.hh:117</div></div>
|
|
<div class="ttc" id="classsdr_1_1_real_imag_part_html_a660f45e4f9967162d1031769fec7d6b8"><div class="ttname"><a href="classsdr_1_1_real_imag_part.html#a660f45e4f9967162d1031769fec7d6b8">sdr::RealImagPart::RealImagPart</a></div><div class="ttdeci">RealImagPart(bool select_real, double scale=1.0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:22</div></div>
|
|
<div class="ttc" id="classsdr_1_1_g_w_n_source_html_a376a552d03b41d7062c4101ece4ddeb7"><div class="ttname"><a href="classsdr_1_1_g_w_n_source.html#a376a552d03b41d7062c4101ece4ddeb7">sdr::GWNSource::_mean</a></div><div class="ttdeci">double _mean</div><div class="ttdoc">The mean value of the GWN. </div><div class="ttdef"><b>Definition:</b> utils.hh:979</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_afebc90c2a5f54a8a3ab5b896cfe37724"><div class="ttname"><a href="classsdr_1_1_config.html#afebc90c2a5f54a8a3ab5b896cfe37724">sdr::Config::type</a></div><div class="ttdeci">Type type() const </div><div class="ttdoc">Returns the type. </div><div class="ttdef"><b>Definition:</b> node.hh:71</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html_a39a09d9fb122713b6b8fa187e4d33c07"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html#a39a09d9fb122713b6b8fa187e4d33c07">sdr::UnsignedToSigned::_process_int8</a></div><div class="ttdeci">void _process_int8(const RawBuffer &in, const RawBuffer &out)</div><div class="ttdoc">Performs the cast for uint8 -> int8. </div><div class="ttdef"><b>Definition:</b> utils.cc:78</div></div>
|
|
<div class="ttc" id="classsdr_1_1_imag_part_html"><div class="ttname"><a href="classsdr_1_1_imag_part.html">sdr::ImagPart</a></div><div class="ttdoc">Selects the imaginary part of a complex signal. </div><div class="ttdef"><b>Definition:</b> utils.hh:98</div></div>
|
|
<div class="ttc" id="classsdr_1_1_scale_html_a22c0cacdcec966a3aa2fa3f178fe168c"><div class="ttname"><a href="classsdr_1_1_scale.html#a22c0cacdcec966a3aa2fa3f178fe168c">sdr::Scale::process</a></div><div class="ttdeci">virtual void process(const Buffer< Scalar > &buffer, bool allow_overwrite)</div><div class="ttdoc">Performs the scaleing. </div><div class="ttdef"><b>Definition:</b> utils.hh:629</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_store_html_ae50fa8b237a4f4db86829bad5b862a17"><div class="ttname"><a href="classsdr_1_1_debug_store.html#ae50fa8b237a4f4db86829bad5b862a17">sdr::DebugStore::_view</a></div><div class="ttdeci">Buffer< Scalar > _view</div><div class="ttdoc">A view to the last data received. </div><div class="ttdef"><b>Definition:</b> utils.hh:840</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_a7abe34a154f45e89f1b8df475cb8109d"><div class="ttname"><a href="classsdr_1_1_cast.html#a7abe34a154f45e89f1b8df475cb8109d">sdr::Cast::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the type-cast node. </div><div class="ttdef"><b>Definition:</b> utils.hh:285</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_a3ba4c6fd7e064c599a393b1d6dc0e2cc"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#a3ba4c6fd7e064c599a393b1d6dc0e2cc">sdr::FreqShift::_buffer</a></div><div class="ttdeci">Buffer< std::complex< Scalar > > _buffer</div><div class="ttdoc">The output buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:508</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_dump_html_ac2d812e6ce797f273b1c24c89914f1a1"><div class="ttname"><a href="classsdr_1_1_debug_dump.html#ac2d812e6ce797f273b1c24c89914f1a1">sdr::DebugDump::DebugDump</a></div><div class="ttdeci">DebugDump(std::ostream &stream=std::cerr)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:851</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html_ae4c40f77cfa1988027d6a8917828f822"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html#ae4c40f77cfa1988027d6a8917828f822">sdr::UnsignedToSigned::_process</a></div><div class="ttdeci">void(UnsignedToSigned::* _process)(const RawBuffer &in, const RawBuffer &out)</div><div class="ttdoc">Type-cast callback. </div><div class="ttdef"><b>Definition:</b> utils.hh:393</div></div>
|
|
<div class="ttc" id="classsdr_1_1_signed_to_unsigned_html"><div class="ttname"><a href="classsdr_1_1_signed_to_unsigned.html">sdr::SignedToUnsigned</a></div><div class="ttdoc">Performs a reinterprete cast from an unsinged value to a singed one. </div><div class="ttdef"><b>Definition:</b> utils.hh:404</div></div>
|
|
<div class="ttc" id="classsdr_1_1_scale_html"><div class="ttname"><a href="classsdr_1_1_scale.html">sdr::Scale</a></div><div class="ttdoc">Simple scaling node. </div><div class="ttdef"><b>Definition:</b> utils.hh:596</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_aab41bbc2d49266be3a42ac2f6c5685a8"><div class="ttname"><a href="classsdr_1_1_cast.html#aab41bbc2d49266be3a42ac2f6c5685a8">sdr::Cast::_shift</a></div><div class="ttdeci">iScalar _shift</div><div class="ttdoc">Another scaling, using integer shift operation (faster). </div><div class="ttdef"><b>Definition:</b> utils.hh:363</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html_af1580673231b72102b11e3defee63bee"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html#af1580673231b72102b11e3defee63bee">sdr::UnsignedToSigned::_scale</a></div><div class="ttdeci">float _scale</div><div class="ttdoc">Holds the scaleing. </div><div class="ttdef"><b>Definition:</b> utils.hh:397</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html">sdr::IQBalance</a></div><div class="ttdoc">A simple node, that allows to balance an IQ signal. </div><div class="ttdef"><b>Definition:</b> utils.hh:113</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_aefff792d62de2b41b22fbc9ae86ea0c3"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#aefff792d62de2b41b22fbc9ae86ea0c3">sdr::IQBalance::_buffer</a></div><div class="ttdeci">Buffer< std::complex< Scalar > > _buffer</div><div class="ttdoc">The working buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:203</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a71df9feb586e1d33241dec5d6a5beae4"><div class="ttname"><a href="classsdr_1_1_config.html#a71df9feb586e1d33241dec5d6a5beae4">sdr::Config::typeId</a></div><div class="ttdeci">static Type typeId()</div><div class="ttdoc">Returns the type-id of the template type. </div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_a50f5b09085e30e1839a29d74f60c4b1d"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#a50f5b09085e30e1839a29d74f60c4b1d">sdr::FreqShift::shift</a></div><div class="ttdeci">double shift() const </div><div class="ttdoc">Returns the frequency shift. </div><div class="ttdef"><b>Definition:</b> utils.hh:454</div></div>
|
|
<div class="ttc" id="classsdr_1_1_logger_html_a9b12ce53593be134b7d7dea62607d22d"><div class="ttname"><a href="classsdr_1_1_logger.html#a9b12ce53593be134b7d7dea62607d22d">sdr::Logger::get</a></div><div class="ttdeci">static Logger & get()</div><div class="ttdoc">Returns the singleton instance of the logger. </div><div class="ttdef"><b>Definition:</b> logger.cc:89</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_source_html"><div class="ttname"><a href="classsdr_1_1_stream_source.html">sdr::StreamSource</a></div><div class="ttdoc">Reads raw samples from an imput stream, (ie a file). </div><div class="ttdef"><b>Definition:</b> utils.hh:525</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_dump_html_af496d34703693264a457c4f9cb8b6b44"><div class="ttname"><a href="classsdr_1_1_debug_dump.html#af496d34703693264a457c4f9cb8b6b44">sdr::DebugDump::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the dump-node. </div><div class="ttdef"><b>Definition:</b> utils.hh:863</div></div>
|
|
<div class="ttc" id="classsdr_1_1_scale_html_a6040d1d6f88868a90ea39ab05aafd6ee"><div class="ttname"><a href="classsdr_1_1_scale.html#a6040d1d6f88868a90ea39ab05aafd6ee">sdr::Scale::_shift</a></div><div class="ttdeci">Scalar _shift</div><div class="ttdoc">Alternative formulation for the scaling, using integer shift operators. </div><div class="ttdef"><b>Definition:</b> utils.hh:650</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_dump_html"><div class="ttname"><a href="classsdr_1_1_debug_dump.html">sdr::DebugDump</a></div><div class="ttdoc">Dumps buffers in a human readable form. </div><div class="ttdef"><b>Definition:</b> utils.hh:847</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a16fb6708c6744a2892bc1badb01953b5"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a16fb6708c6744a2892bc1badb01953b5">sdr::Config::Type_f32</a></div><div class="ttdoc">Real 32b floats aka. "float". </div><div class="ttdef"><b>Definition:</b> node.hh:45</div></div>
|
|
<div class="ttc" id="classsdr_1_1_real_imag_part_html_adb9159445d2a383cd72c94d405c6debb"><div class="ttname"><a href="classsdr_1_1_real_imag_part.html#adb9159445d2a383cd72c94d405c6debb">sdr::RealImagPart::_select_real</a></div><div class="ttdeci">bool _select_real</div><div class="ttdoc">Real/Imag selection. </div><div class="ttdef"><b>Definition:</b> utils.hh:74</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_error_html"><div class="ttname"><a href="classsdr_1_1_config_error.html">sdr::ConfigError</a></div><div class="ttdoc">The configuration error class. </div><div class="ttdef"><b>Definition:</b> exception.hh:24</div></div>
|
|
<div class="ttc" id="classsdr_1_1_text_dump_html_aa501127dbb7839524a1d00aa3023eacb"><div class="ttname"><a href="classsdr_1_1_text_dump.html#aa501127dbb7839524a1d00aa3023eacb">sdr::TextDump::TextDump</a></div><div class="ttdeci">TextDump(std::ostream &stream=std::cerr)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.cc:193</div></div>
|
|
<div class="ttc" id="classsdr_1_1_log_message_html"><div class="ttname"><a href="classsdr_1_1_log_message.html">sdr::LogMessage</a></div><div class="ttdoc">A log message. </div><div class="ttdef"><b>Definition:</b> logger.hh:22</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_a348bba2ba8a9312296d58427f0ef5674"><div class="ttname"><a href="classsdr_1_1_cast.html#a348bba2ba8a9312296d58427f0ef5674">sdr::Cast::oSScalar</a></div><div class="ttdeci">Traits< oScalar >::SScalar oSScalar</div><div class="ttdoc">Specified the output super scalar. </div><div class="ttdef"><b>Definition:</b> utils.hh:273</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_store_html"><div class="ttname"><a href="classsdr_1_1_debug_store.html">sdr::DebugStore</a></div><div class="ttdoc">Keeps a copy of the last buffer received. </div><div class="ttdef"><b>Definition:</b> utils.hh:799</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a940f217ca5157e1a43c55fec08a22362"><div class="ttname"><a href="classsdr_1_1_config.html#a940f217ca5157e1a43c55fec08a22362">sdr::Config::bufferSize</a></div><div class="ttdeci">size_t bufferSize() const </div><div class="ttdoc">Returns the max. </div><div class="ttdef"><b>Definition:</b> node.hh:83</div></div>
|
|
<div class="ttc" id="classsdr_1_1_g_w_n_source_html_a0216c5b6d8efeded627b030219858e8c"><div class="ttname"><a href="classsdr_1_1_g_w_n_source.html#a0216c5b6d8efeded627b030219858e8c">sdr::GWNSource::next</a></div><div class="ttdeci">void next()</div><div class="ttdoc">Samples and emits the next chunk of data. </div><div class="ttdef"><b>Definition:</b> utils.hh:941</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_aa4258da6083056686376b32aa0ae15cd"><div class="ttname"><a href="classsdr_1_1_cast.html#aa4258da6083056686376b32aa0ae15cd">sdr::Cast::_process</a></div><div class="ttdeci">void _process(const Buffer< iScalar > &in, const Buffer< oScalar > &out)</div><div class="ttdoc">Internal used method to perform the type-case out-of-place. </div><div class="ttdef"><b>Definition:</b> utils.hh:342</div></div>
|
|
<div class="ttc" id="classsdr_1_1_scale_html_a2b70619a04f2f50aaea59828f0d333e5"><div class="ttname"><a href="classsdr_1_1_scale.html#a2b70619a04f2f50aaea59828f0d333e5">sdr::Scale::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the scaleing node. </div><div class="ttdef"><b>Definition:</b> utils.hh:612</div></div>
|
|
<div class="ttc" id="classsdr_1_1_text_dump_html_a5ae6fc74e553d26cff4cd84a164a027a"><div class="ttname"><a href="classsdr_1_1_text_dump.html#a5ae6fc74e553d26cff4cd84a164a027a">sdr::TextDump::process</a></div><div class="ttdeci">virtual void process(const Buffer< uint8_t > &buffer, bool allow_overwrite)</div><div class="ttdoc">Processes the input stream. </div><div class="ttdef"><b>Definition:</b> utils.cc:213</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html_a0d33c6c5e8cbfee5b549daa11263f471"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html#a0d33c6c5e8cbfee5b549daa11263f471">sdr::UnsignedToSigned::handleBuffer</a></div><div class="ttdeci">virtual void handleBuffer(const RawBuffer &buffer, bool allow_overwrite)</div><div class="ttdoc">Performs the cast. </div><div class="ttdef"><b>Definition:</b> utils.cc:64</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_source_html_a7108de045b76348e4df87eb9500c1cf2"><div class="ttname"><a href="classsdr_1_1_stream_source.html#a7108de045b76348e4df87eb9500c1cf2">sdr::StreamSource::_stream</a></div><div class="ttdeci">std::istream & _stream</div><div class="ttdoc">The input stream. </div><div class="ttdef"><b>Definition:</b> utils.hh:548</div></div>
|
|
<div class="ttc" id="classsdr_1_1_sink_base_html"><div class="ttname"><a href="classsdr_1_1_sink_base.html">sdr::SinkBase</a></div><div class="ttdoc">Basic interface of all Sinks. </div><div class="ttdef"><b>Definition:</b> node.hh:174</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_a1242cabb99a9c5ce1565aac5b0d49c58"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#a1242cabb99a9c5ce1565aac5b0d49c58">sdr::AGC::_lambda</a></div><div class="ttdeci">float _lambda</div><div class="ttdoc">One over the time-constant. </div><div class="ttdef"><b>Definition:</b> utils.hh:782</div></div>
|
|
<div class="ttc" id="classsdr_1_1_raw_buffer_html_a2384e82c2344e55b0246e8aebcd713f2"><div class="ttname"><a href="classsdr_1_1_raw_buffer.html#a2384e82c2344e55b0246e8aebcd713f2">sdr::RawBuffer::ptr</a></div><div class="ttdeci">char * ptr() const </div><div class="ttdoc">Returns the pointer to the data (w/o view). </div><div class="ttdef"><b>Definition:</b> buffer.hh:67</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a3db588fd468cb4a78e1efabef4b57b76"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a3db588fd468cb4a78e1efabef4b57b76">sdr::Config::Type_cs8</a></div><div class="ttdoc">Complex (aka I/Q) type of signed 8b ints. </div><div class="ttdef"><b>Definition:</b> node.hh:48</div></div>
|
|
<div class="ttc" id="classsdr_1_1_scale_html_aa5e3017fda68332c67ac0cf84bfdd260"><div class="ttname"><a href="classsdr_1_1_scale.html#aa5e3017fda68332c67ac0cf84bfdd260">sdr::Scale::_scale</a></div><div class="ttdeci">float _scale</div><div class="ttdoc">The scaling. </div><div class="ttdef"><b>Definition:</b> utils.hh:648</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_source_html_a73ba741b0802a7ddbcdb351166238415"><div class="ttname"><a href="classsdr_1_1_stream_source.html#a73ba741b0802a7ddbcdb351166238415">sdr::StreamSource::_buffer</a></div><div class="ttdeci">Buffer< Scalar > _buffer</div><div class="ttdoc">The output buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:550</div></div>
|
|
<div class="ttc" id="classsdr_1_1_debug_store_html_a01c2f43a30b8642a663addcf7fd5b897"><div class="ttname"><a href="classsdr_1_1_debug_store.html#a01c2f43a30b8642a663addcf7fd5b897">sdr::DebugStore::clear</a></div><div class="ttdeci">void clear()</div><div class="ttdoc">Clears the buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:834</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_ad5a8b658529798bc5cd93d9a56de6d4f"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#ad5a8b658529798bc5cd93d9a56de6d4f">sdr::AGC::setTau</a></div><div class="ttdeci">void setTau(double tau)</div><div class="ttdoc">Sets the time-constant of the AGC. </div><div class="ttdef"><b>Definition:</b> utils.hh:718</div></div>
|
|
<div class="ttc" id="classsdr_1_1_signed_to_unsigned_html_a42276f4e439813dc8eaa87ce798cbac2"><div class="ttname"><a href="classsdr_1_1_signed_to_unsigned.html#a42276f4e439813dc8eaa87ce798cbac2">sdr::SignedToUnsigned::_process_int8</a></div><div class="ttdeci">void _process_int8(const RawBuffer &in, const RawBuffer &out)</div><div class="ttdoc">Performs the int8 -> uint8 cast. </div><div class="ttdef"><b>Definition:</b> utils.cc:172</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_abf6ebc0370f338cdf861efd30cc354ec"><div class="ttname"><a href="classsdr_1_1_cast.html#abf6ebc0370f338cdf861efd30cc354ec">sdr::Cast::_do_scale</a></div><div class="ttdeci">bool _do_scale</div><div class="ttdoc">If true, the output gets scaled. </div><div class="ttdef"><b>Definition:</b> utils.hh:359</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_aab10690f6088fdcd79ab8b11b71d3fb1"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#aab10690f6088fdcd79ab8b11b71d3fb1">sdr::IQBalance::_realFact</a></div><div class="ttdeci">int32_t _realFact</div><div class="ttdoc">Scaleing factor for the real part. </div><div class="ttdef"><b>Definition:</b> utils.hh:199</div></div>
|
|
<div class="ttc" id="classsdr_1_1_to_complex_html"><div class="ttname"><a href="classsdr_1_1_to_complex.html">sdr::ToComplex</a></div><div class="ttdoc">Tiny helper node to transform a real part into a complex, including a possible type-cast. </div><div class="ttdef"><b>Definition:</b> utils.hh:211</div></div>
|
|
<div class="ttc" id="classsdr_1_1_real_part_html_a3a7f5dab0a46d0900f1f0f3a249fac38"><div class="ttname"><a href="classsdr_1_1_real_part.html#a3a7f5dab0a46d0900f1f0f3a249fac38">sdr::RealPart::RealPart</a></div><div class="ttdeci">RealPart(double scale=1.0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:87</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a63b4a03813b5e6224170be42b6275fe7"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a63b4a03813b5e6224170be42b6275fe7">sdr::Config::Type_cs16</a></div><div class="ttdoc">Complex (aka I/Q) type of signed 16b ints. </div><div class="ttdef"><b>Definition:</b> node.hh:50</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a2d44478e68580bf01d17f6e33eb5d856"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a2d44478e68580bf01d17f6e33eb5d856">sdr::Config::Type_cu8</a></div><div class="ttdoc">Complex (aka I/Q) type of unsigned 8b ints. </div><div class="ttdef"><b>Definition:</b> node.hh:47</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_a43aa0216b57d389293956bbc737cb415"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#a43aa0216b57d389293956bbc737cb415">sdr::FreqShift::_factor</a></div><div class="ttdeci">std::complex< double > _factor</div><div class="ttdoc">The current exponental factor, gets updated for every sample. </div><div class="ttdef"><b>Definition:</b> utils.hh:514</div></div>
|
|
<div class="ttc" id="classsdr_1_1_real_imag_part_html_ad1a035bdf7d65807bc00f02e76b14cfa"><div class="ttname"><a href="classsdr_1_1_real_imag_part.html#ad1a035bdf7d65807bc00f02e76b14cfa">sdr::RealImagPart::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the node. </div><div class="ttdef"><b>Definition:</b> utils.hh:29</div></div>
|
|
<div class="ttc" id="classsdr_1_1_raw_buffer_html_a8ffd3cbf476c9036bfada9ae8c7c5e05"><div class="ttname"><a href="classsdr_1_1_raw_buffer.html#a8ffd3cbf476c9036bfada9ae8c7c5e05">sdr::RawBuffer::unref</a></div><div class="ttdeci">void unref()</div><div class="ttdoc">Dereferences the buffer. </div><div class="ttdef"><b>Definition:</b> buffer.cc:63</div></div>
|
|
<div class="ttc" id="classsdr_1_1_raw_buffer_html_ab2f4ac2dc396108141ec8473bfb7f99a"><div class="ttname"><a href="classsdr_1_1_raw_buffer.html#ab2f4ac2dc396108141ec8473bfb7f99a">sdr::RawBuffer::isUnused</a></div><div class="ttdeci">bool isUnused() const </div><div class="ttdoc">We assume here that buffers are owned by one object: A buffer is therefore "unused" if the owner hold...</div><div class="ttdef"><b>Definition:</b> buffer.hh:87</div></div>
|
|
<div class="ttc" id="classsdr_1_1_unsigned_to_signed_html_a125b90d791bf8e77137ef45f4c71a0c2"><div class="ttname"><a href="classsdr_1_1_unsigned_to_signed.html#a125b90d791bf8e77137ef45f4c71a0c2">sdr::UnsignedToSigned::UnsignedToSigned</a></div><div class="ttdeci">UnsignedToSigned(float scale=1.0)</div><div class="ttdoc">Constructor with optional scaleing. </div><div class="ttdef"><b>Definition:</b> utils.cc:9</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_a0c462ab540ab0df43a62c16717298fd7"><div class="ttname"><a href="classsdr_1_1_cast.html#a0c462ab540ab0df43a62c16717298fd7">sdr::Cast::_buffer</a></div><div class="ttdeci">Buffer< oScalar > _buffer</div><div class="ttdoc">The output buffer, unused if the type-cast is performed in-place . </div><div class="ttdef"><b>Definition:</b> utils.hh:365</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_sink_html_a7543d34895cb13ec98ab25ba94664ac6"><div class="ttname"><a href="classsdr_1_1_stream_sink.html#a7543d34895cb13ec98ab25ba94664ac6">sdr::StreamSink::StreamSink</a></div><div class="ttdeci">StreamSink(std::ostream &stream)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:561</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_ac94a06d5fa2ec089ac5a86c5853274ef"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#ac94a06d5fa2ec089ac5a86c5853274ef">sdr::AGC::enabled</a></div><div class="ttdeci">bool enabled() const </div><div class="ttdoc">Returns true, if the AGC is enabled. </div><div class="ttdef"><b>Definition:</b> utils.hh:693</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_a3a7dcad74e53d7c193221e069abe090c"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#a3a7dcad74e53d7c193221e069abe090c">sdr::FreqShift::_delta</a></div><div class="ttdeci">std::complex< double > _delta</div><div class="ttdoc">. </div><div class="ttdef"><b>Definition:</b> utils.hh:518</div></div>
|
|
<div class="ttc" id="classsdr_1_1_text_dump_html_aca4ba1d0b79cd18dabc5df25f9b2d765"><div class="ttname"><a href="classsdr_1_1_text_dump.html#aca4ba1d0b79cd18dabc5df25f9b2d765">sdr::TextDump::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the sink. </div><div class="ttdef"><b>Definition:</b> utils.cc:200</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_a8155580ed50faab0c458b4461430ee5c"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#a8155580ed50faab0c458b4461430ee5c">sdr::AGC::_target</a></div><div class="ttdeci">float _target</div><div class="ttdoc">The target level of the output signal. </div><div class="ttdef"><b>Definition:</b> utils.hh:786</div></div>
|
|
<div class="ttc" id="classsdr_1_1_traits_html"><div class="ttname"><a href="classsdr_1_1_traits.html">sdr::Traits</a></div><div class="ttdoc">Forward declaration of type tratis template. </div><div class="ttdef"><b>Definition:</b> traits.hh:20</div></div>
|
|
<div class="ttc" id="classsdr_1_1_g_w_n_source_html_a5b9c6d8396b7bd5cfc357d750913314c"><div class="ttname"><a href="classsdr_1_1_g_w_n_source.html#a5b9c6d8396b7bd5cfc357d750913314c">sdr::GWNSource::~GWNSource</a></div><div class="ttdeci">virtual ~GWNSource()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:934</div></div>
|
|
<div class="ttc" id="classsdr_1_1_scale_html_af753a012e62924527c29e3d15fc8e2b3"><div class="ttname"><a href="classsdr_1_1_scale.html#af753a012e62924527c29e3d15fc8e2b3">sdr::Scale::_buffer</a></div><div class="ttdeci">Buffer< Scalar > _buffer</div><div class="ttdoc">The output buffer, unused if the scaling is performed in-place. </div><div class="ttdef"><b>Definition:</b> utils.hh:646</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_afb650299c4ce14a6452eaa51963a78e2"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#afb650299c4ce14a6452eaa51963a78e2">sdr::AGC::_gain</a></div><div class="ttdeci">float _gain</div><div class="ttdoc">The current gain factor. </div><div class="ttdef"><b>Definition:</b> utils.hh:788</div></div>
|
|
<div class="ttc" id="classsdr_1_1_signed_to_unsigned_html_a4d88721f8a5dd40c39621b4bf3a574bd"><div class="ttname"><a href="classsdr_1_1_signed_to_unsigned.html#a4d88721f8a5dd40c39621b4bf3a574bd">sdr::SignedToUnsigned::_buffer</a></div><div class="ttdeci">RawBuffer _buffer</div><div class="ttdoc">The output buffer, unused if the cast is performed in-place. </div><div class="ttdef"><b>Definition:</b> utils.hh:427</div></div>
|
|
<div class="ttc" id="classsdr_1_1_cast_html_a76cdb3ac362446ec8a351f4621cd47dd"><div class="ttname"><a href="classsdr_1_1_cast.html#a76cdb3ac362446ec8a351f4621cd47dd">sdr::Cast::_can_overwrite</a></div><div class="ttdeci">bool _can_overwrite</div><div class="ttdoc">If true, the type-cast (an scaleing) can be performed in-place. </div><div class="ttdef"><b>Definition:</b> utils.hh:357</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_a422c8725e158071e147f372759fad99a"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#a422c8725e158071e147f372759fad99a">sdr::IQBalance::_process</a></div><div class="ttdeci">void _process(const Buffer< std::complex< Scalar > > &in, const Buffer< std::complex< Scalar > > &out)</div><div class="ttdoc">The actual implementation. </div><div class="ttdef"><b>Definition:</b> utils.hh:190</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html"><div class="ttname"><a href="classsdr_1_1_a_g_c.html">sdr::AGC</a></div><div class="ttdoc">An automatic gain control node. </div><div class="ttdef"><b>Definition:</b> utils.hh:658</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_source_html_ae3877a37e355e1a3668be5bfb0bcb004"><div class="ttname"><a href="classsdr_1_1_stream_source.html#ae3877a37e355e1a3668be5bfb0bcb004">sdr::StreamSource::next</a></div><div class="ttdeci">void next()</div><div class="ttdoc">Reads the next chunk. </div><div class="ttdef"><b>Definition:</b> utils.hh:538</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_a2aeaf444562a0b054ae65442992caefc"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#a2aeaf444562a0b054ae65442992caefc">sdr::FreqShift::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the frequency shift node. </div><div class="ttdef"><b>Definition:</b> utils.hh:464</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_a76db615ca776e62d16c7ab8b9f348afa"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#a76db615ca776e62d16c7ab8b9f348afa">sdr::AGC::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the AGC node. </div><div class="ttdef"><b>Definition:</b> utils.hh:725</div></div>
|
|
<div class="ttc" id="classsdr_1_1_stream_sink_html"><div class="ttname"><a href="classsdr_1_1_stream_sink.html">sdr::StreamSink</a></div><div class="ttdoc">Serializes the incomming buffers as raw data. </div><div class="ttdef"><b>Definition:</b> utils.hh:557</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_a0a077f57ec502c76244863f1f940d028"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#a0a077f57ec502c76244863f1f940d028">sdr::IQBalance::process</a></div><div class="ttdeci">virtual void process(const Buffer< std::complex< Scalar > > &buffer, bool allow_overwrite)</div><div class="ttdoc">Processes a buffer. </div><div class="ttdef"><b>Definition:</b> utils.hh:178</div></div>
|
|
<div class="ttc" id="classsdr_1_1_imag_part_html_ac72d38fd751b2dcfd999285e7ff84104"><div class="ttname"><a href="classsdr_1_1_imag_part.html#ac72d38fd751b2dcfd999285e7ff84104">sdr::ImagPart::ImagPart</a></div><div class="ttdeci">ImagPart(double scale=1.0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:102</div></div>
|
|
<div class="ttc" id="classsdr_1_1_buffer_html"><div class="ttname"><a href="classsdr_1_1_buffer.html">sdr::Buffer< Scalar ></a></div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a485e488e1411e52c722b22d1807be406"><div class="ttname"><a href="classsdr_1_1_config.html#a485e488e1411e52c722b22d1807be406">sdr::Config::hasBufferSize</a></div><div class="ttdeci">bool hasBufferSize() const </div><div class="ttdoc">If true, the configuration has a buffer size. </div><div class="ttdef"><b>Definition:</b> node.hh:81</div></div>
|
|
<div class="ttc" id="classsdr_1_1_freq_shift_html_a0d9c1e662d530ecfa97ed35b0c7a50cd"><div class="ttname"><a href="classsdr_1_1_freq_shift.html#a0d9c1e662d530ecfa97ed35b0c7a50cd">sdr::FreqShift::~FreqShift</a></div><div class="ttdeci">virtual ~FreqShift()</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:449</div></div>
|
|
<div class="ttc" id="classsdr_1_1_g_w_n_source_html_a90bc06a4667521b8254a830a3cf4dd26"><div class="ttname"><a href="classsdr_1_1_g_w_n_source.html#a90bc06a4667521b8254a830a3cf4dd26">sdr::GWNSource::_getNormal</a></div><div class="ttdeci">void _getNormal(double &a, double &b)</div><div class="ttdoc">Sample two std. </div><div class="ttdef"><b>Definition:</b> utils.hh:957</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a62084c40ed753ff6caefdc4564c597b8a0533d0f0f70fad0f430cdfa6c86b4e7c"><div class="ttname"><a href="classsdr_1_1_config.html#a62084c40ed753ff6caefdc4564c597b8a0533d0f0f70fad0f430cdfa6c86b4e7c">sdr::Config::Type_cf64</a></div><div class="ttdoc">Complex (aka I/Q) type of 64bit floats aka. std::complex<double>. </div><div class="ttdef"><b>Definition:</b> node.hh:52</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_ad87c15d962ab16363ab0b463a9e9724b"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#ad87c15d962ab16363ab0b463a9e9724b">sdr::IQBalance::config</a></div><div class="ttdeci">virtual void config(const Config &src_cfg)</div><div class="ttdoc">Configures the node. </div><div class="ttdef"><b>Definition:</b> utils.hh:167</div></div>
|
|
<div class="ttc" id="classsdr_1_1_config_html_a42cfb658302fd7de7729ce2c740e9275"><div class="ttname"><a href="classsdr_1_1_config.html#a42cfb658302fd7de7729ce2c740e9275">sdr::Config::sampleRate</a></div><div class="ttdeci">double sampleRate() const </div><div class="ttdoc">Returns the sample rate. </div><div class="ttdef"><b>Definition:</b> node.hh:77</div></div>
|
|
<div class="ttc" id="classsdr_1_1_a_g_c_html_a8554d5134e0f0160289db46ebe66314d"><div class="ttname"><a href="classsdr_1_1_a_g_c.html#a8554d5134e0f0160289db46ebe66314d">sdr::AGC::_enabled</a></div><div class="ttdeci">bool _enabled</div><div class="ttdoc">If true, the automatic gain adjustment is enabled. </div><div class="ttdef"><b>Definition:</b> utils.hh:778</div></div>
|
|
<div class="ttc" id="classsdr_1_1_i_q_balance_html_a0ed23d78d6d5cdd9130fb7fb08eefb02"><div class="ttname"><a href="classsdr_1_1_i_q_balance.html#a0ed23d78d6d5cdd9130fb7fb08eefb02">sdr::IQBalance::IQBalance</a></div><div class="ttdeci">IQBalance(double balance=0.0)</div><div class="ttdoc">Constructor. </div><div class="ttdef"><b>Definition:</b> utils.hh:124</div></div>
|
|
</div><!-- fragment --></div><!-- contents -->
|
|
<!-- start footer part -->
|
|
<hr class="footer"/><address class="footer"><small>
|
|
Generated on Tue Jun 2 2015 18:28:37 for libsdr by  <a href="http://www.doxygen.org/index.html">
|
|
<img class="footer" src="doxygen.png" alt="doxygen"/>
|
|
</a> 1.8.9.1
|
|
</small></address>
|
|
</body>
|
|
</html>
|