Changeset 299c79c in ammosreader


Ignore:
Timestamp:
06/30/22 13:28:16 (3 years ago)
Author:
Enrico Schwass <ennoausberlin@…>
Branches:
AmmosSource, guix
Children:
93661be
Parents:
eab48d0
Message:

sphinx-apidoc run

Location:
doc/html
Files:
31 edited

Legend:

Unmodified
Added
Removed
  • doc/html/.buildinfo

    reab48d0 r299c79c  
    11# Sphinx build info version 1
    22# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
    3 config: 13374ee1ea55cf36915a4a11d92b21ec
     3config: bd0cf0b1e5e8b74e46ffad0c7feb7650
    44tags: 645f666f9bcd5a90fca523b33c5a78b7
  • doc/html/_modules/ammosreader/AmmosAudioDataHeader.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.AmmosAudioDataHeader</h1><div class="highlight"><pre>
    66 <span></span><span class="kn">import</span> <span class="nn">struct</span>
    67 <span class="kn">import</span> <span class="nn">numpy</span>
     66<span></span><span class="sd">&quot;&quot;&quot;I provide an AMMOS data header for audio data frames.&quot;&quot;&quot;</span>
    6867
    69 <div class="viewcode-block" id="AmmosAudioDemodType"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioDataHeader.AmmosAudioDemodType">[docs]</a><span class="k">class</span> <span class="nc">AmmosAudioDemodType</span><span class="p">():</span>
     68<span class="kn">import</span> <span class="nn">struct</span>
     69<span class="kn">from</span> <span class="nn">ammosreader.AmmosConstants</span> <span class="kn">import</span> <span class="n">AmmosAudioDemodType</span>
    7070
    71     <span class="nd">@classmethod</span>
    72     <span class="nd">@property</span>
    73     <span class="k">def</span> <span class="nf">mapping</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
    74         <span class="k">return</span> <span class="p">{</span><span class="mi">0</span><span class="p">:</span> <span class="s1">&#39;FM&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">:</span> <span class="s1">&#39;AM&#39;</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s1">&#39;ISB&#39;</span><span class="p">,</span> <span class="mi">6</span><span class="p">:</span> <span class="s1">&#39;CW&#39;</span><span class="p">,</span>
    75                 <span class="mi">7</span><span class="p">:</span> <span class="s1">&#39;USB&#39;</span><span class="p">,</span> <span class="mi">8</span><span class="p">:</span> <span class="s1">&#39;LSB&#39;</span><span class="p">,</span> <span class="mi">256</span><span class="p">:</span> <span class="s1">&#39;DIGITAL&#39;</span><span class="p">,</span>
    76                 <span class="mh">0xFFFFFFFF</span><span class="p">:</span> <span class="s1">&#39;UNKNOWN&#39;</span><span class="p">}</span>
    7771
    78     <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">demod_type</span><span class="p">):</span>
    79         <span class="bp">self</span><span class="o">.</span><span class="n">demod_type</span> <span class="o">=</span> <span class="n">demod_type</span>
     72<div class="viewcode-block" id="AmmosAudioDataHeader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader">[docs]</a><span class="k">class</span> <span class="nc">AmmosAudioDataHeader</span><span class="p">:</span>
     73    <span class="sd">&quot;&quot;&quot;I implement an AMMOS data header for audio data frames.&quot;&quot;&quot;</span>
    8074
    81     <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    82         <span class="k">return</span> <span class="n">AmmosAudioDemodType</span><span class="o">.</span><span class="n">mapping</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">demod_type</span><span class="p">]</span></div>
    83 
    84 <div class="viewcode-block" id="AmmosAudioDataHeader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader">[docs]</a><span class="k">class</span> <span class="nc">AmmosAudioDataHeader</span><span class="p">():</span>
     75    <span class="n">HEADER_SIZE</span> <span class="o">=</span> <span class="mi">36</span>  <span class="c1"># 9 words</span>
    8576
    8677<div class="viewcode-block" id="AmmosAudioDataHeader.from_bytes"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader.from_bytes">[docs]</a>    <span class="nd">@classmethod</span>
    8778    <span class="k">def</span> <span class="nf">from_bytes</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
     79        <span class="sd">&quot;&quot;&quot;I return an AMMOS data header from given bytes.&quot;&quot;&quot;</span>
     80        <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">==</span> <span class="bp">cls</span><span class="o">.</span><span class="n">HEADER_SIZE</span>
    8881        <span class="n">elements</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&lt;IIQIIIII&#39;</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">)</span>
    8982        <span class="n">sample_rate</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
     
    9184        <span class="n">frequency</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
    9285        <span class="n">demod_bandwidth</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
    93         <span class="n">demod_type</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span>
    94         <span class="n">sample_count</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span>
    95         <span class="n">channel_count</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>
     86        <span class="n">demod_type</span> <span class="o">=</span> <span class="n">AmmosAudioDemodType</span><span class="p">(</span><span class="n">elements</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
     87        <span class="n">number_of_samples</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span>
     88        <span class="n">number_of_channels</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">6</span><span class="p">]</span>
    9689        <span class="n">sample_size</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">7</span><span class="p">]</span>
    9790        <span class="k">return</span> <span class="n">AmmosAudioDataHeader</span><span class="p">(</span><span class="n">sample_rate</span><span class="p">,</span> <span class="n">status</span><span class="p">,</span> <span class="n">frequency</span><span class="p">,</span> <span class="n">demod_bandwidth</span><span class="p">,</span> <span class="n">demod_type</span><span class="p">,</span>
    98                                     <span class="n">sample_count</span><span class="p">,</span> <span class="n">channel_count</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">)</span></div>
     91                                    <span class="n">number_of_samples</span><span class="p">,</span> <span class="n">number_of_channels</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">)</span></div>
    9992
    100     <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sample_rate</span><span class="p">,</span> <span class="n">status</span><span class="p">,</span> <span class="n">frequency</span><span class="p">,</span> <span class="n">demod_bandwidth</span><span class="p">,</span> <span class="n">demod_type</span><span class="p">,</span> <span class="n">sample_count</span><span class="p">,</span> <span class="n">channel_count</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">):</span>
     93    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sample_rate</span><span class="p">,</span> <span class="n">status</span><span class="p">,</span> <span class="n">frequency</span><span class="p">,</span> <span class="n">demod_bandwidth</span><span class="p">,</span> <span class="n">demod_type</span><span class="p">,</span> <span class="n">number_of_samples</span><span class="p">,</span>
     94                 <span class="n">number_of_channels</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">):</span>
     95        <span class="sd">&quot;&quot;&quot;I create a new instance of myself using the above parameters.&quot;&quot;&quot;</span>
    10196        <span class="bp">self</span><span class="o">.</span><span class="n">sample_rate</span> <span class="o">=</span> <span class="n">sample_rate</span>
    10297        <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">status</span>
     
    10499        <span class="bp">self</span><span class="o">.</span><span class="n">demod_bandwidth</span> <span class="o">=</span> <span class="n">demod_bandwidth</span>
    105100        <span class="bp">self</span><span class="o">.</span><span class="n">demod_type</span> <span class="o">=</span> <span class="n">AmmosAudioDemodType</span><span class="p">(</span><span class="n">demod_type</span><span class="p">)</span>
    106         <span class="bp">self</span><span class="o">.</span><span class="n">sample_count</span> <span class="o">=</span> <span class="n">sample_count</span>
    107         <span class="bp">self</span><span class="o">.</span><span class="n">channel_count</span> <span class="o">=</span> <span class="n">channel_count</span>
     101        <span class="bp">self</span><span class="o">.</span><span class="n">number_of_samples</span> <span class="o">=</span> <span class="n">number_of_samples</span>
     102        <span class="bp">self</span><span class="o">.</span><span class="n">number_of_channels</span> <span class="o">=</span> <span class="n">number_of_channels</span>
    108103        <span class="bp">self</span><span class="o">.</span><span class="n">sample_size</span> <span class="o">=</span> <span class="n">sample_size</span>
    109104
    110105    <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     106        <span class="sd">&quot;&quot;&quot;I return the string representation of myself.&quot;&quot;&quot;</span>
    111107        <span class="k">return</span> <span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">AmmosAudioDataHeader</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    112108                <span class="s2">&quot;Sample rate:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sample_rate</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
     
    115111                <span class="s2">&quot;Demodulation bandwidth:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">demod_bandwidth</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    116112                <span class="s2">&quot;Demodulation type:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">demod_type</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    117                 <span class="s2">&quot;Sample count:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sample_count</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    118                 <span class="s2">&quot;Channel count:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel_count</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
     113                <span class="s2">&quot;Sample count:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">number_of_samples</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
     114                <span class="s2">&quot;Channel count:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">number_of_channels</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    119115                <span class="s2">&quot;Sample size:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span></div>
    120116</pre></div>
  • doc/html/_modules/ammosreader/AmmosAudioReader.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.AmmosAudioReader</h1><div class="highlight"><pre>
    66 <span></span><span class="sd">&quot;&quot;&quot;I parse an R&amp;S AMMOS recording.&quot;&quot;&quot;</span>
    67 
    68 <span class="kn">import</span> <span class="nn">os</span>
    69 
     66<span></span><span class="sd">&quot;&quot;&quot;I provide a specialized Ammos Reader for audio data.&quot;&quot;&quot;</span>
     67<span class="kn">import</span> <span class="nn">logging</span>
     68
     69<span class="kn">from</span> <span class="nn">ammosreader.AbstractAmmosReader</span> <span class="kn">import</span> <span class="n">AbstractAmmosReader</span>
    7070<span class="kn">from</span> <span class="nn">ammosreader.AmmosGlobalFrameBody</span> <span class="kn">import</span> <span class="n">AmmosGlobalFrameBody</span>
    7171<span class="kn">from</span> <span class="nn">ammosreader.AmmosAudioDataHeader</span> <span class="kn">import</span> <span class="n">AmmosAudioDataHeader</span>
    7272<span class="kn">from</span> <span class="nn">ammosreader.AmmosExtendedAudioDataHeader</span> <span class="kn">import</span> <span class="n">AmmosExtendedAudioDataHeader</span>
    73 <span class="kn">from</span> <span class="nn">ammosreader.AmmosGlobalFrameHeader</span> <span class="kn">import</span> <span class="n">AmmosGlobalFrameHeader</span>
    74 <span class="kn">from</span> <span class="nn">ammosreader.AmmosSingleFrame</span> <span class="kn">import</span> <span class="n">AmmosSingleFrame</span>
    75 <span class="kn">from</span> <span class="nn">ammosreader.AmmosContainer</span> <span class="kn">import</span> <span class="n">AmmosContainer</span>
    76 
    77 
    78 <div class="viewcode-block" id="AmmosAudioReader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader">[docs]</a><span class="k">class</span> <span class="nc">AmmosAudioReader</span><span class="p">():</span>
     73<span class="kn">from</span> <span class="nn">ammosreader.AmmosAudioDataBody</span> <span class="kn">import</span> <span class="n">AmmosAudioDataBody</span>
     74
     75
     76<div class="viewcode-block" id="AmmosAudioReader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader">[docs]</a><span class="k">class</span> <span class="nc">AmmosAudioReader</span><span class="p">(</span><span class="n">AbstractAmmosReader</span><span class="p">):</span>
    7977    <span class="sd">&quot;&quot;&quot;I read the audio data embedded in an R&amp;S AMMOS recording.&quot;&quot;&quot;</span>
    80 
    81     <span class="n">GLOBAL_HEADER_SIZE</span> <span class="o">=</span> <span class="mi">24</span>  <span class="c1"># 8 words</span>
    82     <span class="n">STANDARD_AUDIO_DATA_HEADER_SIZE</span> <span class="o">=</span> <span class="mi">36</span>  <span class="c1"># 9 words</span>
    83     <span class="n">EXTENDED_AUDIO_DATA_HEADER_SIZE</span> <span class="o">=</span> <span class="mi">44</span>  <span class="c1"># 11 words</span>
    8478
    8579    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_name</span><span class="p">):</span>
     
    9084<span class="sd">        :type file_name: str</span>
    9185<span class="sd">        &quot;&quot;&quot;</span>
    92         <span class="bp">self</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="n">file_name</span>
    93         <span class="bp">self</span><span class="o">.</span><span class="n">file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">file_name</span><span class="p">,</span> <span class="s2">&quot;rb&quot;</span><span class="p">)</span>
    94         <span class="bp">self</span><span class="o">.</span><span class="n">file_size</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">file_name</span><span class="p">)</span>
    95 
    96         <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">AmmosContainer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">file_name</span><span class="p">,</span> <span class="p">[])</span>
    97 
    98         <span class="bp">self</span><span class="o">.</span><span class="n">tags</span> <span class="o">=</span> <span class="p">{}</span>
    99 
    100 <div class="viewcode-block" id="AmmosAudioReader.rewind_to_start"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.rewind_to_start">[docs]</a>    <span class="k">def</span> <span class="nf">rewind_to_start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    101         <span class="sd">&quot;&quot;&quot;I set the file pointer to the beginning of the file for the next operation.&quot;&quot;&quot;</span>
    102         <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span></div>
    103 
    104 <div class="viewcode-block" id="AmmosAudioReader.add_tag"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.add_tag">[docs]</a>    <span class="k">def</span> <span class="nf">add_tag</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">):</span>
    105         <span class="sd">&quot;&quot;&quot;</span>
    106 <span class="sd">        I add a tag to my tag list.</span>
    107 
    108 <span class="sd">        :param tag: The tag to add to my tag list</span>
    109 <span class="sd">        :type tag: dict</span>
    110 <span class="sd">        &quot;&quot;&quot;</span>
    111         <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="p">[</span><span class="n">tag</span><span class="o">.</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">tag</span><span class="o">.</span><span class="n">value</span></div>
    112 
    113 <div class="viewcode-block" id="AmmosAudioReader.read_all_frames_left"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_all_frames_left">[docs]</a>    <span class="k">def</span> <span class="nf">read_all_frames_left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    114         <span class="sd">&quot;&quot;&quot;</span>
    115 <span class="sd">        I read all remaining frames into my container until end of file is reached.</span>
    116 
    117 <span class="sd">        :return: a container containing all frames read</span>
    118 <span class="sd">        :rtype: AmmosContainer</span>
    119 <span class="sd">        &quot;&quot;&quot;</span>
    120         <span class="n">frames_read</span> <span class="o">=</span> <span class="mi">0</span>
    121         <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
    122             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Reading single frame&quot;</span><span class="p">,</span> <span class="n">frames_read</span><span class="p">,</span> <span class="s1">&#39;...&#39;</span><span class="p">)</span>
    123             <span class="n">current_frame</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_single_frame</span><span class="p">()</span>
    124             <span class="k">if</span> <span class="n">current_frame</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
    125                 <span class="n">frames_read</span> <span class="o">+=</span> <span class="mi">1</span>
    126                 <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">add_frame</span><span class="p">(</span><span class="n">current_frame</span><span class="p">)</span>
    127                 <span class="k">if</span> <span class="n">frames_read</span> <span class="o">%</span> <span class="mi">10000</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
    128                     <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;#&quot;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
    129             <span class="k">else</span><span class="p">:</span>
    130                 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Frame:&quot;</span><span class="p">,</span> <span class="n">frames_read</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot; incomplete&quot;</span><span class="p">)</span>
    131                 <span class="k">break</span>
    132 
    133         <span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">global_frames</span><span class="p">),</span> <span class="s2">&quot;frames read&quot;</span><span class="p">)</span>
    134         <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span></div>
    135 
    136 <div class="viewcode-block" id="AmmosAudioReader.read_next_global_frame_header"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_header">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    137         <span class="sd">&quot;&quot;&quot;</span>
    138 <span class="sd">        I return the next global frame header read from current position in file.</span>
    139 
    140 <span class="sd">        :return: the next global frame header or None if incomplete</span>
    141 <span class="sd">        :rtype: AmmosGlobalFrameHeader</span>
    142 <span class="sd">        &quot;&quot;&quot;</span>
    143         <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">GLOBAL_HEADER_SIZE</span><span class="p">)</span>
    144         <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Reading next global frame header&quot;</span><span class="p">)</span>
    145         <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">GLOBAL_HEADER_SIZE</span><span class="p">)):</span>
    146             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not read all&quot;</span><span class="p">,</span> <span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">GLOBAL_HEADER_SIZE</span><span class="p">,</span> <span class="s2">&quot;bytes of global frame header&quot;</span><span class="p">)</span>
    147             <span class="k">return</span> <span class="kc">None</span>
    148 
    149         <span class="c1"># FIXME: Catch exceptions and add some asserts</span>
    150         <span class="n">current_global_frame_header</span> <span class="o">=</span> <span class="n">AmmosGlobalFrameHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span>
    151         <span class="c1"># print(&quot;Current global frame header&quot;, current_global_frame_header)</span>
    152         <span class="k">return</span> <span class="n">current_global_frame_header</span></div>
     86        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">file_name</span><span class="p">)</span>
    15387
    15488<div class="viewcode-block" id="AmmosAudioReader.read_next_global_frame_body_data_header"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_body_data_header">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_body_data_header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     
    16195<span class="sd">        :rtype: AmmosAudioDataHeader</span>
    16296<span class="sd">        &quot;&quot;&quot;</span>
    163         <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">STANDARD_AUDIO_DATA_HEADER_SIZE</span><span class="p">)</span>
    164 
    165         <span class="c1"># print(&quot;\nReading global frame body standard data header\n&quot;)</span>
    166         <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">STANDARD_AUDIO_DATA_HEADER_SIZE</span><span class="p">)):</span>
    167             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not read all&quot;</span><span class="p">,</span> <span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">STANDARD_AUDIO_DATA_HEADER_SIZE</span><span class="p">,</span>
    168                   <span class="s2">&quot;bytes of global frame body data header&quot;</span><span class="p">)</span>
     97        <span class="n">header_size</span> <span class="o">=</span> <span class="n">AmmosAudioDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span>
     98
     99        <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ammos_file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">header_size</span><span class="p">)</span>
     100
     101        <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Reading global frame body standard data header</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
     102        <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">header_size</span><span class="p">)):</span>
     103            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Can not read all </span><span class="si">%s</span><span class="s2"> bytes of global frame body data header&quot;</span><span class="p">,</span> <span class="n">header_size</span><span class="p">)</span>
    169104            <span class="k">return</span> <span class="kc">None</span>
    170105        <span class="k">return</span> <span class="n">AmmosAudioDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span></div>
     
    177112<span class="sd">        :rtype: AmmosExtendedAudioDataHeader</span>
    178113<span class="sd">        &quot;&quot;&quot;</span>
    179         <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">EXTENDED_AUDIO_DATA_HEADER_SIZE</span><span class="p">)</span>
    180 
    181         <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">EXTENDED_AUDIO_DATA_HEADER_SIZE</span><span class="p">)):</span>
    182             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not read all &quot;</span><span class="p">,</span> <span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">EXTENDED_AUDIO_DATA_HEADER_SIZE</span><span class="p">,</span>
    183                   <span class="s2">&quot; bytes of global frame extended data header&quot;</span><span class="p">)</span>
     114        <span class="n">header_size</span> <span class="o">=</span> <span class="n">AmmosExtendedAudioDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span>
     115
     116        <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ammos_file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">header_size</span><span class="p">)</span>
     117
     118        <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">header_size</span><span class="p">)):</span>
     119            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Can not read all </span><span class="si">%s</span><span class="s2"> bytes of global frame extended data header&quot;</span><span class="p">,</span> <span class="n">header_size</span><span class="p">)</span>
    184120            <span class="k">return</span> <span class="kc">None</span>
    185121        <span class="k">return</span> <span class="n">AmmosExtendedAudioDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span></div>
    186122
    187 <div class="viewcode-block" id="AmmosAudioReader.read_next_audio_data_body"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_audio_data_body">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_audio_data_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sample_count</span><span class="p">,</span> <span class="n">channel_count</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">):</span>
     123<div class="viewcode-block" id="AmmosAudioReader.read_next_audio_data_body"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_audio_data_body">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_audio_data_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">number_of_samples</span><span class="p">,</span> <span class="n">number_of_channels</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">):</span>
    188124        <span class="sd">&quot;&quot;&quot;</span>
    189125<span class="sd">        I return the next audio data read from current position in file.</span>
    190126
    191 <span class="sd">        :param sample_count: the number of samples per channel inside data body</span>
    192 <span class="sd">        :type sample_count: int</span>
    193 
    194 <span class="sd">        :param channel_count: number of channels (e.g. mono, stereo or even more)</span>
    195 <span class="sd">        :type channel_count: int</span>
     127<span class="sd">        :param number_of_samples: the number of samples per channel inside data body</span>
     128<span class="sd">        :type number_of_samples: int</span>
     129
     130<span class="sd">        :param number_of_channels: number of channels (e.g. mono, stereo or even more)</span>
     131<span class="sd">        :type number_of_channels: int</span>
    196132
    197133<span class="sd">        :param sample_size: sample size in bytes (1, 2 or 4 bytes)</span>
     
    201137<span class="sd">        :rtype: bytes</span>
    202138<span class="sd">        &quot;&quot;&quot;</span>
    203         <span class="c1"># FIXME: Describe the parameters better</span>
    204 
    205         <span class="n">total</span> <span class="o">=</span> <span class="n">sample_count</span><span class="o">*</span><span class="n">channel_count</span><span class="o">*</span><span class="n">sample_size</span>
    206 
    207         <span class="n">byte_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">total</span><span class="p">)</span>
     139        <span class="n">total</span> <span class="o">=</span> <span class="n">number_of_samples</span><span class="o">*</span><span class="n">number_of_channels</span><span class="o">*</span><span class="n">sample_size</span>
     140
     141        <span class="n">byte_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ammos_file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">total</span><span class="p">)</span>
    208142
    209143        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">byte_string</span><span class="p">)</span> <span class="o">!=</span> <span class="n">total</span><span class="p">:</span>
    210             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not read all&quot;</span><span class="p">,</span> <span class="n">total</span><span class="p">,</span> <span class="s2">&quot;bytes of data body&quot;</span><span class="p">)</span>
    211             <span class="k">return</span> <span class="kc">None</span>
    212         <span class="nb">print</span><span class="p">([</span><span class="nb">hex</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">byte_string</span><span class="p">])</span>
    213         <span class="k">return</span> <span class="n">byte_string</span></div>
    214 
    215 <div class="viewcode-block" id="AmmosAudioReader.read_next_global_frame_body"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_body">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">global_frame_header</span><span class="p">):</span>
    216 
     144            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Can not read all </span><span class="si">%s</span><span class="s2"> bytes of data body&quot;</span><span class="p">,</span> <span class="n">total</span><span class="p">)</span>
     145            <span class="k">return</span> <span class="kc">None</span>
     146        <span class="k">return</span> <span class="n">AmmosAudioDataBody</span><span class="p">(</span><span class="n">byte_string</span><span class="p">,</span> <span class="n">number_of_channels</span><span class="p">,</span> <span class="n">number_of_samples</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">)</span></div>
     147
     148<div class="viewcode-block" id="AmmosAudioReader.read_next_global_frame_body"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_body">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_header_length</span><span class="p">):</span>
     149        <span class="sd">&quot;&quot;&quot;</span>
     150<span class="sd">        I return the next global frame body read from current position in file.</span>
     151
     152<span class="sd">        :param global_frame_header:</span>
     153<span class="sd">        &quot;&quot;&quot;</span>
    217154        <span class="n">audio_data_header</span> <span class="o">=</span> <span class="kc">None</span>
    218155
    219         <span class="k">if</span> <span class="n">global_frame_header</span><span class="o">.</span><span class="n">data_header_length</span> <span class="o">==</span> <span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">STANDARD_AUDIO_DATA_HEADER_SIZE</span><span class="p">:</span>
    220             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Read standard data header&quot;</span><span class="p">)</span>
     156        <span class="k">if</span> <span class="n">data_header_length</span> <span class="o">==</span> <span class="n">AmmosAudioDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span><span class="p">:</span>
     157            <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Read standard data header&quot;</span><span class="p">)</span>
    221158            <span class="n">audio_data_header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_global_frame_body_data_header</span><span class="p">()</span>
    222159
    223         <span class="k">if</span> <span class="n">global_frame_header</span><span class="o">.</span><span class="n">data_header_length</span> <span class="o">==</span> <span class="n">AmmosAudioReader</span><span class="o">.</span><span class="n">EXTENDED_AUDIO_DATA_HEADER_SIZE</span><span class="p">:</span>
    224             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Read extended data header&quot;</span><span class="p">)</span>
     160        <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Data header length </span><span class="si">%s</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">data_header_length</span><span class="p">)</span>
     161        <span class="k">if</span> <span class="n">data_header_length</span> <span class="o">==</span> <span class="n">AmmosExtendedAudioDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span><span class="p">:</span>
     162            <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;Read extended data header&quot;</span><span class="p">)</span>
    225163            <span class="n">audio_data_header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_global_frame_body_extended_data_header</span><span class="p">()</span>
    226164
    227165        <span class="k">if</span> <span class="n">audio_data_header</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    228             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Data header missing or format unknown&quot;</span><span class="p">)</span>
    229             <span class="k">return</span> <span class="kc">None</span>
    230 
    231         <span class="n">audio_data_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_audio_data_body</span><span class="p">(</span><span class="n">audio_data_header</span><span class="o">.</span><span class="n">sample_count</span><span class="p">,</span>
    232                                                          <span class="n">audio_data_header</span><span class="o">.</span><span class="n">channel_count</span><span class="p">,</span>
     166            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Data header missing or format unknown&quot;</span><span class="p">)</span>
     167            <span class="k">return</span> <span class="kc">None</span>
     168
     169        <span class="n">audio_data_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_audio_data_body</span><span class="p">(</span><span class="n">audio_data_header</span><span class="o">.</span><span class="n">number_of_samples</span><span class="p">,</span>
     170                                                         <span class="n">audio_data_header</span><span class="o">.</span><span class="n">number_of_channels</span><span class="p">,</span>
    233171                                                         <span class="n">audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span>
    234172
    235173        <span class="k">if</span> <span class="n">audio_data_body</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    236             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Data body missing&quot;</span><span class="p">)</span>
     174            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Data body missing&quot;</span><span class="p">)</span>
    237175            <span class="k">return</span> <span class="kc">None</span>
    238176
    239177        <span class="k">return</span> <span class="n">AmmosGlobalFrameBody</span><span class="p">(</span><span class="n">audio_data_header</span><span class="p">,</span> <span class="n">audio_data_body</span><span class="p">)</span></div>
    240178
    241 <div class="viewcode-block" id="AmmosAudioReader.read_next_single_frame"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_single_frame">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_single_frame</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    242 
    243         <span class="n">global_frame_header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_global_frame_header</span><span class="p">()</span>
    244 
    245         <span class="nb">print</span><span class="p">(</span><span class="n">global_frame_header</span><span class="p">)</span>
    246 
    247         <span class="k">if</span> <span class="n">global_frame_header</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    248             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Global frame header missing&quot;</span><span class="p">)</span>
    249             <span class="k">return</span> <span class="kc">None</span>
    250 
    251         <span class="k">if</span> <span class="n">global_frame_header</span><span class="o">.</span><span class="n">data_header_length</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    252             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Data header length empty&quot;</span><span class="p">)</span>
    253             <span class="k">return</span> <span class="kc">None</span>
    254 
    255         <span class="k">if</span> <span class="n">global_frame_header</span><span class="o">.</span><span class="n">frame_type</span> <span class="o">==</span> <span class="mi">256</span><span class="p">:</span>
    256             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Audio Datastream found&quot;</span><span class="p">)</span>
    257             <span class="n">global_frame_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_global_frame_body</span><span class="p">(</span><span class="n">global_frame_header</span><span class="p">)</span>
    258             <span class="k">if</span> <span class="n">global_frame_body</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    259                 <span class="k">return</span> <span class="kc">None</span>
    260         <span class="k">else</span><span class="p">:</span>
    261             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Unsupported frame type&quot;</span><span class="p">,</span> <span class="n">global_frame_header</span><span class="o">.</span><span class="n">frame_type</span><span class="p">,</span> <span class="s2">&quot;found&quot;</span><span class="p">)</span>
    262             <span class="k">return</span> <span class="kc">None</span>
    263 
    264         <span class="n">ammos_single_frame</span> <span class="o">=</span> <span class="n">AmmosSingleFrame</span><span class="p">(</span><span class="n">global_frame_header</span><span class="p">,</span> <span class="n">global_frame_body</span><span class="p">)</span>
    265         <span class="k">return</span> <span class="n">ammos_single_frame</span></div></div>
     179<div class="viewcode-block" id="AmmosAudioReader.pcm_for_channel"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.pcm_for_channel">[docs]</a>    <span class="k">def</span> <span class="nf">pcm_for_channel</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">a_channel</span><span class="p">):</span>
     180        <span class="sd">&quot;&quot;&quot;</span>
     181<span class="sd">        I return the raw pcm audio data for a given channel.</span>
     182
     183<span class="sd">        :param a_channel: the channel I have to extract</span>
     184<span class="sd">        :type a_channel: int</span>
     185
     186<span class="sd">        :rtype: bytes</span>
     187<span class="sd">        &quot;&quot;&quot;</span>
     188        <span class="k">return</span> <span class="sa">b</span><span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">each</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_body</span><span class="o">.</span><span class="n">pcm_for_channel</span><span class="p">(</span><span class="n">a_channel</span><span class="p">)</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">global_frames</span><span class="p">])</span></div></div>
    266189</pre></div>
    267190
  • doc/html/_modules/ammosreader/AmmosAudioSocketReader.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.AmmosAudioSocketReader</h1><div class="highlight"><pre>
    66 <span></span><span class="kn">import</span> <span class="nn">socket</span>
     66<span></span><span class="sd">&quot;&quot;&quot;I read a Ammos datastream from a socket.&quot;&quot;&quot;</span>
     67
     68<span class="kn">import</span> <span class="nn">select</span>
     69<span class="kn">import</span> <span class="nn">socket</span>
    6770<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">deque</span>
    68 
    6971<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
    7072<span class="kn">from</span> <span class="nn">ammosreader.AmmosAudioDataHeader</span> <span class="kn">import</span> <span class="n">AmmosAudioDataHeader</span>
     
    7476
    7577<div class="viewcode-block" id="AmmosAudioSocketReader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader">[docs]</a><span class="k">class</span> <span class="nc">AmmosAudioSocketReader</span><span class="p">:</span>
    76     <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">socket</span><span class="p">:</span><span class="n">socket</span><span class="o">.</span><span class="n">socket</span><span class="p">):</span>
     78    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">socket</span><span class="p">:</span><span class="n">socket</span><span class="o">.</span><span class="n">socket</span><span class="p">,</span> <span class="n">debug</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
    7779        <span class="sd">&quot;&quot;&quot;</span>
    7880<span class="sd">        Initializes the AmmosAudioSocketReader</span>
     
    8082<span class="sd">        Args:</span>
    8183<span class="sd">            socket (socket.socket): socket to read from</span>
     84<span class="sd">            debug (bool): if true, prints debug information</span>
    8285<span class="sd">        &quot;&quot;&quot;</span>
    8386
     
    8891        <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span> <span class="o">=</span> <span class="n">socket</span>
    8992
    90     <span class="k">def</span> <span class="nf">__read_next_audio_data_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sample_count</span><span class="p">:</span><span class="nb">int</span><span class="p">,</span> <span class="n">channel_count</span><span class="p">:</span><span class="nb">int</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">:</span><span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bytearray</span><span class="p">:</span>
     93        <span class="c1">#</span>
     94        <span class="bp">self</span><span class="o">.</span><span class="n">DEBUG_MODE</span> <span class="o">=</span> <span class="n">debug</span>
     95
     96    <span class="k">def</span> <span class="nf">__get_next_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">byte_count</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bytearray</span><span class="p">:</span>
    9197        <span class="sd">&quot;&quot;&quot;</span>
    92 <span class="sd">        reads the next audio data body</span>
     98<span class="sd">        Gets the next bytes from the socket, for example headers and body data.</span>
    9399
    94100<span class="sd">        Args:</span>
    95 <span class="sd">            sample_count (int): amount of samples</span>
    96 <span class="sd">            channel_count (int): amount of channels</span>
    97 <span class="sd">            sample_size (int): size of a sample in bytes</span>
     101<span class="sd">            byte_count (int): number of bytes to read</span>
     102
     103<span class="sd">        Raises:</span>
     104<span class="sd">            TimeoutError: Raises TimeoutError if the socket does not serve data anymore</span>
    98105
    99106<span class="sd">        Returns:</span>
    100 <span class="sd">            bytearray: contains the audio data</span>
    101 <span class="sd">        &quot;&quot;&quot;</span>
    102 
    103         <span class="n">total</span> <span class="o">=</span> <span class="n">sample_count</span><span class="o">*</span><span class="n">channel_count</span><span class="o">*</span><span class="n">sample_size</span>
     107<span class="sd">            bytearray: data from socket as bytearray</span>
     108<span class="sd">        &quot;&quot;&quot;</span>
     109
    104110        <span class="n">byte_array</span> <span class="o">=</span> <span class="p">[]</span>
    105 
    106         <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array</span><span class="p">))</span> <span class="o">&lt;</span> <span class="n">total</span><span class="p">:</span>
    107             <span class="n">byte_array</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="n">total</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array</span><span class="p">))))</span>
    108 
    109         <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array</span><span class="p">))</span> <span class="o">!=</span> <span class="n">total</span><span class="p">:</span>
    110             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not read all&quot;</span><span class="p">,</span> <span class="n">total</span><span class="p">,</span> <span class="s2">&quot;bytes of data body&quot;</span><span class="p">)</span>
    111             <span class="k">return</span> <span class="kc">None</span>
     111       
     112        <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array</span><span class="p">))</span> <span class="o">&lt;</span> <span class="n">byte_count</span><span class="p">:</span>
     113            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEBUG_MODE</span><span class="p">:</span>
     114                <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Remaining Bytes: </span><span class="si">{</span><span class="n">byte_count</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array</span><span class="p">))</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
     115            <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">settimeout</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
     116            <span class="n">new_bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="n">byte_count</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array</span><span class="p">)),</span> <span class="n">socket</span><span class="o">.</span><span class="n">MSG_WAITALL</span><span class="p">)</span>
     117
     118            <span class="k">if</span> <span class="ow">not</span> <span class="n">new_bytes</span><span class="p">:</span>
     119                <span class="k">raise</span> <span class="ne">TimeoutError</span><span class="p">(</span><span class="s2">&quot;Socket timed out while reading data&quot;</span><span class="p">)</span>
     120
     121            <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEBUG_MODE</span><span class="p">:</span>
     122                <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Got </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">new_bytes</span><span class="p">)</span><span class="si">}</span><span class="s2"> bytes of </span><span class="si">{</span><span class="n">byte_count</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array</span><span class="p">))</span><span class="si">}</span><span class="s2"> ramining&quot;</span><span class="p">)</span>
     123
     124            <span class="n">byte_array</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_bytes</span><span class="p">)</span>
     125
    112126        <span class="k">return</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array</span><span class="p">)</span>
    113127
     
    125139        <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">frombuffer</span><span class="p">(</span><span class="n">audio_data_body</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">int16</span><span class="p">)</span>
    126140
    127 <div class="viewcode-block" id="AmmosAudioSocketReader.read_next_frame"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader.read_next_frame">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_frame</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">tuple</span><span class="p">[</span><span class="nb">bytearray</span><span class="p">,</span> <span class="nb">int</span><span class="p">]:</span>
    128         <span class="sd">&quot;&quot;&quot;</span>
    129 <span class="sd">        reads the next ammos audio frame</span>
     141<div class="viewcode-block" id="AmmosAudioSocketReader.read_next_frame"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader.read_next_frame">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_frame</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">tuple</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">ndarray</span><span class="p">,</span> <span class="nb">int</span><span class="p">]:</span>
     142        <span class="sd">&quot;&quot;&quot;Reads the next ammos audio frame from socket</span>
     143
     144<span class="sd">        Raises:</span>
     145<span class="sd">            TimeoutError: Raisees TimeoutError if the socket does not serve data anymore</span>
    130146
    131147<span class="sd">        Returns:</span>
    132 <span class="sd">            tuple[bytearray, int]: contains the audio data and the sample rate</span>
    133 <span class="sd">        &quot;&quot;&quot;</span>
     148<span class="sd">            tuple[np.ndarray, int]: Contains the audio data and the sample rate</span>
     149<span class="sd">        &quot;&quot;&quot;</span>
     150
     151        <span class="c1"># get first byte of the day</span>
     152        <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">settimeout</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
     153
     154        <span class="n">new_byte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">MSG_WAITALL</span><span class="p">)</span>
     155        <span class="c1"># raise Exception if socket does not return anything</span>
     156        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">new_byte</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
     157            <span class="k">raise</span> <span class="ne">TimeoutError</span>     
     158
    134159        <span class="c1">#read loop</span>
    135         <span class="n">byte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
    136 
    137         <span class="k">while</span> <span class="n">byte</span><span class="p">:</span>
     160        <span class="k">while</span> <span class="n">new_byte</span><span class="p">:</span>
    138161            <span class="c1">#</span>
    139             <span class="bp">self</span><span class="o">.</span><span class="n">__magic_word_buffer</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">byte</span><span class="p">)</span>
     162            <span class="bp">self</span><span class="o">.</span><span class="n">__magic_word_buffer</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">new_byte</span><span class="p">)</span>
    140163            <span class="n">byte_array</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__magic_word_buffer</span><span class="p">)</span>
    141164
     
    144167
    145168                <span class="n">ammos_global_header_buffer</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__magic_word_buffer</span><span class="p">)</span>
    146                 <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">ammos_global_header_buffer</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">24</span><span class="p">:</span>
    147                     <span class="n">ammos_global_header_buffer</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">24</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">ammos_global_header_buffer</span><span class="p">))))</span>
     169                <span class="n">ammos_global_header_buffer</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__get_next_data</span><span class="p">(</span><span class="mi">20</span><span class="p">))</span>
     170                <span class="c1">#while len(b&#39;&#39;.join(ammos_global_header_buffer)) &lt; 24:</span>
     171                <span class="c1">#    ammos_global_header_buffer.append(self.__socket.recv(24 - len(b&#39;&#39;.join(ammos_global_header_buffer))))</span>
    148172                   
    149173                <span class="n">ammos_global_header</span> <span class="o">=</span> <span class="n">AmmosGlobalFrameHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">ammos_global_header_buffer</span><span class="p">))</span>
    150                 <span class="nb">print</span><span class="p">(</span><span class="n">ammos_global_header</span><span class="p">)</span>
     174                <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEBUG_MODE</span><span class="p">:</span>
     175                    <span class="nb">print</span><span class="p">(</span><span class="n">ammos_global_header</span><span class="p">)</span>
    151176
    152177                <span class="k">if</span> <span class="n">ammos_global_header</span><span class="o">.</span><span class="n">data_header_length</span> <span class="o">==</span> <span class="mi">44</span> <span class="ow">and</span> <span class="n">ammos_global_header</span><span class="o">.</span><span class="n">frame_type</span> <span class="o">==</span> <span class="mi">256</span><span class="p">:</span>
    153                     <span class="n">byte_array_header</span> <span class="o">=</span> <span class="p">[]</span>
    154                     <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array_header</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">44</span><span class="p">:</span>
    155                         <span class="n">byte_array_header</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">44</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array_header</span><span class="p">))))</span>
    156 
    157                     <span class="n">ammos_extended_audio_data_header</span> <span class="o">=</span> <span class="n">AmmosExtendedAudioDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array_header</span><span class="p">))</span>
    158                     <span class="nb">print</span><span class="p">(</span><span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_count</span><span class="p">,</span> <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">channel_count</span><span class="p">,</span> <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span>
    159                     <span class="n">audio_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__read_next_audio_data_body</span><span class="p">(</span><span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_count</span><span class="p">,</span>
    160                                                                   <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">channel_count</span><span class="p">,</span>
    161                                                                   <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span>
     178                    <span class="n">byte_array_header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__get_next_data</span><span class="p">(</span><span class="mi">44</span><span class="p">)</span>
     179                    <span class="c1">#while len(b&#39;&#39;.join(byte_array_header)) &lt; 44:</span>
     180                    <span class="c1">#    byte_array_header.append(self.__socket.recv(44 - len(b&#39;&#39;.join(byte_array_header))))</span>
     181
     182                    <span class="n">ammos_extended_audio_data_header</span> <span class="o">=</span> <span class="n">AmmosExtendedAudioDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="n">byte_array_header</span><span class="p">)</span>
     183                    <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEBUG_MODE</span><span class="p">:</span>
     184                        <span class="nb">print</span><span class="p">(</span><span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_count</span><span class="p">,</span> <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">channel_count</span><span class="p">,</span> <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span>
     185                    <span class="n">audio_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__get_next_data</span><span class="p">(</span><span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_count</span><span class="o">*</span>
     186                                                      <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">channel_count</span><span class="o">*</span>
     187                                                      <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span>
    162188
    163189                    <span class="n">audio_array</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__audio_data_body_to_numpy</span><span class="p">(</span><span class="n">audio_body</span><span class="p">)</span>
    164                     <span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">audio_array</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">audio_array</span><span class="p">)</span><span class="o">/</span><span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_rate</span><span class="p">)</span>
     190                    <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEBUG_MODE</span><span class="p">:</span>
     191                        <span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">audio_array</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">audio_array</span><span class="p">)</span><span class="o">/</span><span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_rate</span><span class="p">)</span>
    165192
    166193                    <span class="k">return</span> <span class="p">[</span><span class="n">audio_array</span><span class="p">,</span> <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_rate</span><span class="p">]</span>
    167194
    168195                <span class="k">elif</span> <span class="n">ammos_global_header</span><span class="o">.</span><span class="n">data_header_length</span> <span class="o">==</span> <span class="mi">36</span> <span class="ow">and</span> <span class="n">ammos_global_header</span><span class="o">.</span><span class="n">frame_type</span> <span class="o">==</span> <span class="mi">256</span><span class="p">:</span>
    169                     <span class="n">byte_array_header</span> <span class="o">=</span> <span class="p">[]</span>
    170                     <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array_header</span><span class="p">))</span> <span class="o">&lt;</span> <span class="mi">36</span><span class="p">:</span>
    171                         <span class="n">byte_array_header</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">36</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array_header</span><span class="p">))))</span>
    172 
    173                     <span class="n">ammos_audio_data_header</span> <span class="o">=</span> <span class="n">AmmosAudioDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array_header</span><span class="p">))</span>
    174                     <span class="nb">print</span><span class="p">(</span><span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">sample_count</span><span class="p">,</span> <span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">channel_count</span><span class="p">,</span> <span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span>
    175                     <span class="n">audio_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__read_next_audio_data_body</span><span class="p">(</span><span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">sample_count</span><span class="p">,</span>
    176                                                                   <span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">channel_count</span><span class="p">,</span>
    177                                                                   <span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span>
     196                    <span class="n">byte_array_header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__get_next_data</span><span class="p">(</span><span class="mi">36</span><span class="p">)</span>
     197                    <span class="c1">#while len(b&#39;&#39;.join(byte_array_header)) &lt; 36:</span>
     198                    <span class="c1">#    byte_array_header.append(self.__socket.recv(36 - len(b&#39;&#39;.join(byte_array_header))))</span>
     199
     200                    <span class="n">ammos_audio_data_header</span> <span class="o">=</span> <span class="n">AmmosAudioDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="n">byte_array_header</span><span class="p">)</span>
     201                    <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEBUG_MODE</span><span class="p">:</span>
     202                        <span class="nb">print</span><span class="p">(</span><span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">sample_count</span><span class="p">,</span> <span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">channel_count</span><span class="p">,</span> <span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span>
     203                    <span class="n">audio_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__get_next_data</span><span class="p">(</span><span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_count</span><span class="o">*</span>
     204                                                      <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">channel_count</span><span class="o">*</span>
     205                                                      <span class="n">ammos_extended_audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span>
    178206
    179207                    <span class="n">audio_array</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__audio_data_body_to_numpy</span><span class="p">(</span><span class="n">audio_body</span><span class="p">)</span>
    180                     <span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">audio_array</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">audio_array</span><span class="p">)</span><span class="o">/</span><span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">sample_rate</span><span class="p">)</span>
     208                    <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">DEBUG_MODE</span><span class="p">:</span>
     209                        <span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">audio_array</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">audio_array</span><span class="p">)</span><span class="o">/</span><span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">sample_rate</span><span class="p">)</span>
    181210
    182211                    <span class="k">return</span> <span class="p">[</span><span class="n">audio_array</span><span class="p">,</span> <span class="n">ammos_audio_data_header</span><span class="o">.</span><span class="n">sample_rate</span><span class="p">]</span>
    183212
    184             <span class="n">byte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
     213            <span class="c1"># get the next byte</span>
     214            <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">settimeout</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
     215
     216            <span class="n">new_byte</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span><span class="o">.</span><span class="n">recv</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">MSG_WAITALL</span><span class="p">)</span>
     217            <span class="c1"># raise Exception if socket does not return anything</span>
     218            <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">new_byte</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">1</span><span class="p">:</span>
     219                <span class="k">raise</span> <span class="ne">TimeoutError</span>   
    185220
    186221        <span class="k">return</span> <span class="kc">None</span></div></div>
     
    193228    <p>
    194229      &copy; Copyright 2022, KIDZg.
    195       Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.4.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
     230      Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.5.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
    196231    (Revision )
    197232        </p>
  • doc/html/_modules/ammosreader/AmmosContainer.html

    reab48d0 r299c79c  
    6969
    7070    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">frames</span><span class="p">):</span>
    71         <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
    72         <span class="bp">self</span><span class="o">.</span><span class="n">global_frames</span> <span class="o">=</span> <span class="n">frames</span>
    73         <span class="bp">self</span><span class="o">.</span><span class="n">tags</span> <span class="o">=</span> <span class="p">[]</span>
     71        <span class="bp">self</span><span class="o">.</span><span class="n">__name</span> <span class="o">=</span> <span class="n">name</span>
     72        <span class="bp">self</span><span class="o">.</span><span class="n">__global_frames</span> <span class="o">=</span> <span class="n">frames</span>
     73        <span class="bp">self</span><span class="o">.</span><span class="n">__tags</span> <span class="o">=</span> <span class="p">[]</span>
     74
     75    <span class="nd">@property</span>
     76    <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     77        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__name</span>
     78
     79    <span class="nd">@name</span><span class="o">.</span><span class="n">setter</span>
     80    <span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">a_name</span><span class="p">):</span>
     81        <span class="bp">self</span><span class="o">.</span><span class="n">__name</span> <span class="o">=</span> <span class="n">a_name</span>
     82
     83    <span class="nd">@property</span>
     84    <span class="k">def</span> <span class="nf">global_frames</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     85        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__global_frames</span>
    7486
    7587<div class="viewcode-block" id="AmmosContainer.add_tag"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.add_tag">[docs]</a>    <span class="k">def</span> <span class="nf">add_tag</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">):</span>
    76         <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span></div>
     88        <span class="bp">self</span><span class="o">.</span><span class="n">__tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span></div>
    7789
    7890<div class="viewcode-block" id="AmmosContainer.add_frame"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.add_frame">[docs]</a>    <span class="k">def</span> <span class="nf">add_frame</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">frame</span><span class="p">):</span>
    79         <span class="bp">self</span><span class="o">.</span><span class="n">global_frames</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span></div>
     91        <span class="bp">self</span><span class="o">.</span><span class="n">__global_frames</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span></div>
    8092
    8193<div class="viewcode-block" id="AmmosContainer.size"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.size">[docs]</a>    <span class="k">def</span> <span class="nf">size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    82         <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">global_frames</span><span class="p">)</span></div>
     94        <span class="k">return</span> <span class="nb">sum</span><span class="p">([</span><span class="n">each</span><span class="o">.</span><span class="n">global_frame_header</span><span class="o">.</span><span class="n">frame_length</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">__global_frames</span><span class="p">])</span></div>
    8395
    8496<div class="viewcode-block" id="AmmosContainer.frequencies"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.frequencies">[docs]</a>    <span class="k">def</span> <span class="nf">frequencies</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    85         <span class="k">return</span> <span class="nb">set</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">frame</span><span class="p">:</span> <span class="n">frame</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_header</span><span class="o">.</span><span class="n">frequency</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">global_frames</span><span class="p">)))</span></div>
     97        <span class="k">return</span> <span class="nb">set</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="k">lambda</span> <span class="n">frame</span><span class="p">:</span> <span class="n">frame</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_header</span><span class="o">.</span><span class="n">frequency</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">__global_frames</span><span class="p">)))</span></div>
    8698
    8799    <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    88         <span class="n">start_time</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">global_frames</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_header</span><span class="o">.</span><span class="n">timestamp</span>
    89         <span class="n">end_time</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">global_frames</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_header</span><span class="o">.</span><span class="n">timestamp</span>
     100        <span class="n">start_time</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__global_frames</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_header</span><span class="o">.</span><span class="n">timestamp</span>
     101        <span class="n">end_time</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">__global_frames</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_header</span><span class="o">.</span><span class="n">timestamp</span>
    90102
    91         <span class="n">frq</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">global_frames</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_header</span><span class="o">.</span><span class="n">frequency</span><span class="p">)</span>
     103        <span class="n">frq</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">__global_frames</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_header</span><span class="o">.</span><span class="n">frequency</span><span class="p">)</span>
    92104
    93105        <span class="k">return</span> <span class="p">(</span><span class="s2">&quot;Start time: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">start_time</span><span class="p">)</span> <span class="o">+</span>
    94                 <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">End time  : &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">end_time</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Frequencies: &quot;</span> <span class="o">+</span> <span class="n">frq</span><span class="p">)</span></div>
     106                <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">End time  : &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">end_time</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Frequencies: &quot;</span> <span class="o">+</span> <span class="n">frq</span><span class="p">)</span>
     107
     108<div class="viewcode-block" id="AmmosContainer.data_only"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.data_only">[docs]</a>    <span class="k">def</span> <span class="nf">data_only</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     109        <span class="k">return</span> <span class="p">[</span><span class="n">each</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_body</span><span class="o">.</span><span class="n">data</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">__global_frames</span><span class="p">]</span></div></div>
    95110</pre></div>
    96111
     
    101116    <p>
    102117      &copy; Copyright 2022, KIDZg.
    103       Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.4.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
     118      Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.5.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
    104119    (Revision )
    105120        </p>
  • doc/html/_modules/ammosreader/AmmosExtendedAudioDataHeader.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.AmmosExtendedAudioDataHeader</h1><div class="highlight"><pre>
    66 <span></span><span class="kn">import</span> <span class="nn">struct</span>
    67 <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
     66<span></span><span class="sd">&quot;&quot;&quot;I provide an Ammos extended data header for audio data frames.&quot;&quot;&quot;</span>
     67
     68<span class="kn">import</span> <span class="nn">struct</span>
    6869<span class="kn">from</span> <span class="nn">ammosreader.AmmosAudioDataHeader</span> <span class="kn">import</span> <span class="n">AmmosAudioDataHeader</span>
    6970
    7071
    71 <div class="viewcode-block" id="AmmosExtendedAudioDataHeader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader">[docs]</a><span class="k">class</span> <span class="nc">AmmosExtendedAudioDataHeader</span><span class="p">():</span>
     72<div class="viewcode-block" id="AmmosExtendedAudioDataHeader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader">[docs]</a><span class="k">class</span> <span class="nc">AmmosExtendedAudioDataHeader</span><span class="p">:</span>
     73
     74    <span class="n">HEADER_SIZE</span> <span class="o">=</span> <span class="mi">44</span>  <span class="c1"># 11 words</span>
    7275
    7376<div class="viewcode-block" id="AmmosExtendedAudioDataHeader.from_bytes"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader.from_bytes">[docs]</a>    <span class="nd">@classmethod</span>
    7477    <span class="k">def</span> <span class="nf">from_bytes</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
    75         <span class="n">standard_header</span> <span class="o">=</span> <span class="n">AmmosAudioDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">36</span><span class="p">])</span>
    76         <span class="n">extended_header_elements</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;Q&#39;</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">[</span><span class="mi">36</span><span class="p">:])</span>
     78        <span class="sd">&quot;&quot;&quot;I return a new AMMOS extended data header for audio frames built from given bytes.&quot;&quot;&quot;</span>
     79        <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">==</span> <span class="bp">cls</span><span class="o">.</span><span class="n">HEADER_SIZE</span>
     80        <span class="n">standard_header</span> <span class="o">=</span> <span class="n">AmmosAudioDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">AmmosAudioDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span><span class="p">])</span>
     81        <span class="n">extended_header_elements</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&lt;Q&#39;</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">[</span><span class="n">AmmosAudioDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span><span class="p">:])</span>
    7782        <span class="n">timestamp</span> <span class="o">=</span> <span class="n">extended_header_elements</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
    7883        <span class="n">sample_rate</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">sample_rate</span>
     
    8186        <span class="n">demod_bandwidth</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">demod_bandwidth</span>
    8287        <span class="n">demod_type</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">demod_type</span>
    83         <span class="n">sample_count</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">sample_count</span>
    84         <span class="n">channel_count</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">channel_count</span>
     88        <span class="n">number_of_samples</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">number_of_samples</span>
     89        <span class="n">number_of_channels</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">number_of_channels</span>
    8590        <span class="n">sample_size</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">sample_size</span>
    8691        <span class="k">return</span> <span class="n">AmmosExtendedAudioDataHeader</span><span class="p">(</span><span class="n">sample_rate</span><span class="p">,</span> <span class="n">status</span><span class="p">,</span> <span class="n">frequency</span><span class="p">,</span> <span class="n">demod_bandwidth</span><span class="p">,</span> <span class="n">demod_type</span><span class="p">,</span>
    87                                             <span class="n">sample_count</span><span class="p">,</span> <span class="n">channel_count</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">)</span></div>
     92                                            <span class="n">number_of_samples</span><span class="p">,</span> <span class="n">number_of_channels</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">)</span></div>
    8893
    8994    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sample_rate</span><span class="p">,</span> <span class="n">status</span><span class="p">,</span> <span class="n">frequency</span><span class="p">,</span> <span class="n">demod_bandwidth</span><span class="p">,</span> <span class="n">demod_type</span><span class="p">,</span>
    90                  <span class="n">sample_count</span><span class="p">,</span> <span class="n">channel_count</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">):</span>
     95                 <span class="n">number_of_samples</span><span class="p">,</span> <span class="n">number_of_channels</span><span class="p">,</span> <span class="n">sample_size</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">):</span>
     96        <span class="sd">&quot;&quot;&quot;I return a new AMMOS extended data header for audio frames built from given parameters.&quot;&quot;&quot;</span>
    9197        <span class="bp">self</span><span class="o">.</span><span class="n">sample_rate</span> <span class="o">=</span> <span class="n">sample_rate</span>
    9298        <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">status</span>
     
    94100        <span class="bp">self</span><span class="o">.</span><span class="n">demod_bandwidth</span> <span class="o">=</span> <span class="n">demod_bandwidth</span>
    95101        <span class="bp">self</span><span class="o">.</span><span class="n">demod_type</span> <span class="o">=</span> <span class="n">demod_type</span>
    96         <span class="bp">self</span><span class="o">.</span><span class="n">sample_count</span> <span class="o">=</span> <span class="n">sample_count</span>
    97         <span class="bp">self</span><span class="o">.</span><span class="n">channel_count</span> <span class="o">=</span> <span class="n">channel_count</span>
     102        <span class="bp">self</span><span class="o">.</span><span class="n">number_of_samples</span> <span class="o">=</span> <span class="n">number_of_samples</span>
     103        <span class="bp">self</span><span class="o">.</span><span class="n">number_of_channels</span> <span class="o">=</span> <span class="n">number_of_channels</span>
    98104        <span class="bp">self</span><span class="o">.</span><span class="n">sample_size</span> <span class="o">=</span> <span class="n">sample_size</span>
    99105        <span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span> <span class="o">=</span> <span class="n">timestamp</span></div>
  • doc/html/_modules/ammosreader/AmmosExtendedIFDataHeader.html

    reab48d0 r299c79c  
    7070
    7171<div class="viewcode-block" id="AmmosExtendedIFDataHeader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader">[docs]</a><span class="k">class</span> <span class="nc">AmmosExtendedIFDataHeader</span><span class="p">():</span>
     72    <span class="sd">&quot;&quot;&quot;I implement an Ammos extended data header for IF data frames.&quot;&quot;&quot;</span>
     73
     74    <span class="n">HEADER_SIZE</span> <span class="o">=</span> <span class="mi">76</span>
    7275
    7376<div class="viewcode-block" id="AmmosExtendedIFDataHeader.from_bytes"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader.from_bytes">[docs]</a>    <span class="nd">@classmethod</span>
    7477    <span class="k">def</span> <span class="nf">from_bytes</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
    75         <span class="n">standard_header</span> <span class="o">=</span> <span class="n">AmmosIFDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">56</span><span class="p">])</span>
    76         <span class="n">extended_header_elements</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;QQI&#39;</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">[</span><span class="mi">56</span><span class="p">:</span><span class="mi">76</span><span class="p">])</span>
     78        <span class="sd">&quot;&quot;&quot;I return an AMMOS extended data header from given bytes.&quot;&quot;&quot;</span>
     79        <span class="n">standard_header</span> <span class="o">=</span> <span class="n">AmmosIFDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">AmmosIFDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span><span class="p">])</span>
     80        <span class="n">extended_header_elements</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&lt;QQI&#39;</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">[</span><span class="n">AmmosIFDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span><span class="p">:</span><span class="bp">cls</span><span class="o">.</span><span class="n">HEADER_SIZE</span><span class="p">])</span>
    7781        <span class="n">block_count</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">block_count</span>
    7882        <span class="n">block_length</span> <span class="o">=</span> <span class="n">standard_header</span><span class="o">.</span><span class="n">block_length</span>
     
    99103                 <span class="n">bandwidth</span><span class="p">,</span> <span class="n">sample_rate</span><span class="p">,</span> <span class="n">interpolation</span><span class="p">,</span> <span class="n">decimation</span><span class="p">,</span> <span class="n">voltage_ref</span><span class="p">,</span> <span class="n">stream_start</span><span class="p">,</span> <span class="n">sample_counter</span><span class="p">,</span>
    100104                 <span class="n">antenna_correction</span><span class="p">):</span>
    101 
     105        <span class="sd">&quot;&quot;&quot;I create a new instance of myself using the above parameters.&quot;&quot;&quot;</span>
    102106        <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">size</span>
    103107        <span class="bp">self</span><span class="o">.</span><span class="n">block_count</span> <span class="o">=</span> <span class="n">block_count</span>
     
    129133            <span class="s2">&quot;Stream start:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">stream_start</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    130134            <span class="s2">&quot;Sample counter:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sample_counter</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    131             <span class="s2">&quot;Antenna correction:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">antenna_correction</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
    132         <span class="p">)</span>
    133 
     135            <span class="s2">&quot;Antenna correction:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">antenna_correction</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
    134136        <span class="k">return</span> <span class="n">output</span></div>
    135137</pre></div>
  • doc/html/_modules/ammosreader/AmmosGlobalFrameBody.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.AmmosGlobalFrameBody</h1><div class="highlight"><pre>
    66 <div class="viewcode-block" id="AmmosGlobalFrameBody"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody">[docs]</a><span></span><span class="k">class</span> <span class="nc">AmmosGlobalFrameBody</span><span class="p">():</span>
     66<span></span><span class="sd">&quot;&quot;&quot;I provide an AMMOS global frame body.&quot;&quot;&quot;</span>
    6767
     68<div class="viewcode-block" id="AmmosGlobalFrameBody"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody">[docs]</a><span class="k">class</span> <span class="nc">AmmosGlobalFrameBody</span><span class="p">():</span>
     69    <span class="sd">&quot;&quot;&quot;</span>
     70<span class="sd">    I implement an AMMOS global frame body.</span>
     71
     72<span class="sd">    AMMOS frames can store data of various types.</span>
     73<span class="sd">    The data is described in the data header.</span>
     74<span class="sd">    The raw data is then stored in the data body.</span>
     75<span class="sd">    &quot;&quot;&quot;</span>
    6876    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_header</span><span class="p">,</span> <span class="n">data_body</span><span class="p">):</span>
    69         <span class="bp">self</span><span class="o">.</span><span class="n">data_header</span> <span class="o">=</span> <span class="n">data_header</span>
    70         <span class="bp">self</span><span class="o">.</span><span class="n">data_body</span> <span class="o">=</span> <span class="n">data_body</span>
     77        <span class="bp">self</span><span class="o">.</span><span class="n">__data_header</span> <span class="o">=</span> <span class="n">data_header</span>
     78        <span class="bp">self</span><span class="o">.</span><span class="n">__data_body</span> <span class="o">=</span> <span class="n">data_body</span>
     79
     80    <span class="nd">@property</span>
     81    <span class="k">def</span> <span class="nf">data_header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     82        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data_header</span>
     83
     84    <span class="nd">@data_header</span><span class="o">.</span><span class="n">setter</span>
     85    <span class="k">def</span> <span class="nf">data_header</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">a_data_header</span><span class="p">):</span>
     86        <span class="bp">self</span><span class="o">.</span><span class="n">__data_header</span> <span class="o">=</span> <span class="n">a_data_header</span>
     87
     88    <span class="nd">@property</span>
     89    <span class="k">def</span> <span class="nf">data_body</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     90        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data_body</span>
     91
     92    <span class="nd">@data_body</span><span class="o">.</span><span class="n">setter</span>
     93    <span class="k">def</span> <span class="nf">data_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_bytes</span><span class="p">):</span>
     94        <span class="bp">self</span><span class="o">.</span><span class="n">__data_body</span> <span class="o">=</span> <span class="n">data_bytes</span>
    7195
    7296<div class="viewcode-block" id="AmmosGlobalFrameBody.data_bytes_only"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_bytes_only">[docs]</a>    <span class="k">def</span> <span class="nf">data_bytes_only</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    7397
    74         <span class="n">byte_string</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span>
     98        <span class="n">byte_string</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">&quot;&quot;</span>
    7599
    76100        <span class="k">for</span> <span class="n">each_block</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_body</span><span class="p">:</span>
     
    78102                <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Block is nil&quot;</span><span class="p">)</span>
    79103
    80             <span class="n">byte_string</span> <span class="o">+=</span> <span class="n">each_block</span><span class="o">.</span><span class="n">if_data</span>
     104            <span class="n">byte_string</span> <span class="o">+=</span> <span class="n">each_block</span><span class="o">.</span><span class="n">data</span>
    81105
    82106        <span class="k">return</span> <span class="n">byte_string</span></div></div>
  • doc/html/_modules/ammosreader/AmmosGlobalFrameHeader.html

    reab48d0 r299c79c  
    7474    <span class="k">def</span> <span class="nf">from_bytes</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
    7575
    76         <span class="n">elements</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;4s4s4s4s4s4s&#39;</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">)</span>
     76        <span class="n">elements</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&lt;4s4s4s4s4s4s&#39;</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">)</span>
    7777
    7878        <span class="n">magic_word</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">hex</span><span class="p">()</span>
     
    9393    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">magic_word</span><span class="p">,</span> <span class="n">frame_length</span><span class="p">,</span> <span class="n">running_frame_number</span><span class="p">,</span> <span class="n">frame_type</span><span class="p">,</span> <span class="n">data_header_length</span><span class="p">,</span> <span class="n">reserved</span><span class="p">):</span>
    9494
    95         <span class="k">if</span> <span class="n">magic_word</span> <span class="o">!=</span> <span class="bp">self</span><span class="o">.</span><span class="n">MAGIC_WORD</span><span class="p">:</span>
     95        <span class="k">if</span> <span class="n">magic_word</span> <span class="o">!=</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">MAGIC_WORD</span><span class="p">:</span>
    9696            <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Wrong magic word&quot;</span><span class="p">)</span>
    9797            <span class="bp">self</span><span class="o">.</span><span class="n">magic_word</span> <span class="o">=</span> <span class="n">magic_word</span>
    98             <span class="k">return</span> <span class="kc">None</span>
    9998        <span class="k">else</span><span class="p">:</span>
    10099            <span class="bp">self</span><span class="o">.</span><span class="n">magic_word</span> <span class="o">=</span> <span class="n">magic_word</span>
  • doc/html/_modules/ammosreader/AmmosIFDataBlock.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.AmmosIFDataBlock</h1><div class="highlight"><pre>
    66 <div class="viewcode-block" id="AmmosIFDataBlock"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFDataBlock.AmmosIFDataBlock">[docs]</a><span></span><span class="k">class</span> <span class="nc">AmmosIFDataBlock</span><span class="p">():</span>
     66<div class="viewcode-block" id="AmmosIFDataBlock"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFDataBlock.AmmosIFDataBlock">[docs]</a><span></span><span class="k">class</span> <span class="nc">AmmosIFDataBlock</span><span class="p">:</span>
    6767
    68     <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">if_datablock_header</span><span class="p">,</span> <span class="n">if_data</span><span class="p">):</span>
    69         <span class="bp">self</span><span class="o">.</span><span class="n">if_datablock_header</span> <span class="o">=</span> <span class="n">if_datablock_header</span>
    70         <span class="bp">self</span><span class="o">.</span><span class="n">if_data</span> <span class="o">=</span> <span class="n">if_data</span></div>
     68    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">header</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
     69        <span class="bp">self</span><span class="o">.</span><span class="n">__header</span> <span class="o">=</span> <span class="n">header</span>
     70        <span class="bp">self</span><span class="o">.</span><span class="n">__data</span> <span class="o">=</span> <span class="n">data</span>
     71
     72    <span class="nd">@property</span>
     73    <span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     74        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__header</span>
     75
     76    <span class="nd">@property</span>
     77    <span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     78        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__data</span></div>
    7179</pre></div>
    7280
  • doc/html/_modules/ammosreader/AmmosIFDataHeader.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.AmmosIFDataHeader</h1><div class="highlight"><pre>
    66 <span></span><span class="kn">import</span> <span class="nn">struct</span>
     66<span></span><span class="sd">&quot;&quot;&quot;I provide a Ammos data header for IF data frames.&quot;&quot;&quot;</span>
     67
     68<span class="kn">import</span> <span class="nn">struct</span>
    6769<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
    6870
    6971
    7072<div class="viewcode-block" id="AmmosIFDataHeader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFDataHeader.AmmosIFDataHeader">[docs]</a><span class="k">class</span> <span class="nc">AmmosIFDataHeader</span><span class="p">():</span>
     73    <span class="sd">&quot;&quot;&quot;I implement an Ammos data header for IF data frames.&quot;&quot;&quot;</span>
     74
     75    <span class="n">HEADER_SIZE</span> <span class="o">=</span> <span class="mi">56</span>
    7176
    7277<div class="viewcode-block" id="AmmosIFDataHeader.from_bytes"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.from_bytes">[docs]</a>    <span class="nd">@classmethod</span>
    7378    <span class="k">def</span> <span class="nf">from_bytes</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
     79        <span class="sd">&quot;&quot;&quot;I return an AMMOS data header from given bytes.&quot;&quot;&quot;</span>
     80        <span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">==</span> <span class="bp">cls</span><span class="o">.</span><span class="n">HEADER_SIZE</span>
    7481        <span class="n">elements</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&lt;IIQIIIQIIIIi&#39;</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">)</span>
    7582        <span class="n">block_count</span> <span class="o">=</span> <span class="n">elements</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
     
    9299    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">block_count</span><span class="p">,</span> <span class="n">block_length</span><span class="p">,</span> <span class="n">timestamp</span><span class="p">,</span> <span class="n">status</span><span class="p">,</span> <span class="n">source_id</span><span class="p">,</span> <span class="n">source_state</span><span class="p">,</span> <span class="n">frequency</span><span class="p">,</span>
    93100                 <span class="n">bandwidth</span><span class="p">,</span> <span class="n">sample_rate</span><span class="p">,</span> <span class="n">interpolation</span><span class="p">,</span> <span class="n">decimation</span><span class="p">,</span> <span class="n">voltage_ref</span><span class="p">):</span>
     101        <span class="sd">&quot;&quot;&quot;I create a new instance of myself using the above parameters.&quot;&quot;&quot;</span>
    94102        <span class="bp">self</span><span class="o">.</span><span class="n">block_count</span> <span class="o">=</span> <span class="n">block_count</span>
    95103        <span class="bp">self</span><span class="o">.</span><span class="n">block_length</span> <span class="o">=</span> <span class="n">block_length</span>
     
    104112        <span class="bp">self</span><span class="o">.</span><span class="n">decimation</span> <span class="o">=</span> <span class="n">decimation</span>
    105113        <span class="bp">self</span><span class="o">.</span><span class="n">voltage_ref</span> <span class="o">=</span> <span class="n">voltage_ref</span>
    106 
    107 <div class="viewcode-block" id="AmmosIFDataHeader.header_size"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.header_size">[docs]</a>    <span class="k">def</span> <span class="nf">header_size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    108         <span class="k">return</span> <span class="mi">56</span></div>
    109114
    110115    <span class="k">def</span> <span class="nf">__str_</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  • doc/html/_modules/ammosreader/AmmosIFReader.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.AmmosIFReader</h1><div class="highlight"><pre>
    66 <span></span><span class="kn">import</span> <span class="nn">math</span>
    67 <span class="kn">import</span> <span class="nn">os</span>
     66<span></span><span class="sd">&quot;&quot;&quot;I provide a specialized Ammos Reader for IF data.&quot;&quot;&quot;</span>
     67<span class="kn">import</span> <span class="nn">logging</span>
    6868
     69<span class="kn">from</span> <span class="nn">ammosreader.AbstractAmmosReader</span> <span class="kn">import</span> <span class="n">AbstractAmmosReader</span>
    6970<span class="kn">from</span> <span class="nn">ammosreader.AmmosGlobalFrameBody</span> <span class="kn">import</span> <span class="n">AmmosGlobalFrameBody</span>
    7071<span class="kn">from</span> <span class="nn">ammosreader.AmmosIFDataHeader</span> <span class="kn">import</span> <span class="n">AmmosIFDataHeader</span>
    7172<span class="kn">from</span> <span class="nn">ammosreader.AmmosExtendedIFDataHeader</span> <span class="kn">import</span> <span class="n">AmmosExtendedIFDataHeader</span>
    72 <span class="kn">from</span> <span class="nn">ammosreader.AmmosGlobalFrameHeader</span> <span class="kn">import</span> <span class="n">AmmosGlobalFrameHeader</span>
    73 <span class="kn">from</span> <span class="nn">ammosreader.AmmosSingleFrame</span> <span class="kn">import</span> <span class="n">AmmosSingleFrame</span>
     73<span class="kn">from</span> <span class="nn">ammosreader.AmmosIFDataBody</span> <span class="kn">import</span> <span class="n">AmmosIFDataBody</span>
    7474<span class="kn">from</span> <span class="nn">ammosreader.AmmosIFDataBlock</span> <span class="kn">import</span> <span class="n">AmmosIFDataBlock</span>
    75 <span class="kn">from</span> <span class="nn">ammosreader.AmmosContainer</span> <span class="kn">import</span> <span class="n">AmmosContainer</span>
     75<span class="kn">from</span> <span class="nn">ammosreader.AmmosIFDataBlockHeader</span> <span class="kn">import</span> <span class="n">AmmosIFDataBlockHeader</span>
    7676
    7777
    78 <div class="viewcode-block" id="AmmosIFReader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader">[docs]</a><span class="k">class</span> <span class="nc">AmmosIFReader</span><span class="p">():</span>
     78<div class="viewcode-block" id="AmmosIFReader"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader">[docs]</a><span class="k">class</span> <span class="nc">AmmosIFReader</span><span class="p">(</span><span class="n">AbstractAmmosReader</span><span class="p">):</span>
     79    <span class="sd">&quot;&quot;&quot;I read the IF data embedded in an R&amp;S AMMOS recording.&quot;&quot;&quot;</span>
    7980
    8081    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_name</span><span class="p">):</span>
    81 
    82         <span class="bp">self</span><span class="o">.</span><span class="n">file_name</span> <span class="o">=</span> <span class="n">file_name</span>
    83         <span class="bp">self</span><span class="o">.</span><span class="n">file</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">file_name</span><span class="p">,</span> <span class="s2">&quot;rb&quot;</span><span class="p">)</span>
    84         <span class="bp">self</span><span class="o">.</span><span class="n">file_size</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">getsize</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">file_name</span><span class="p">)</span>
    85 
    86         <span class="bp">self</span><span class="o">.</span><span class="n">container</span> <span class="o">=</span> <span class="n">AmmosContainer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">file_name</span><span class="p">,</span> <span class="p">[])</span>
    87 
    88         <span class="bp">self</span><span class="o">.</span><span class="n">tags</span> <span class="o">=</span> <span class="p">[]</span>
    89 
    90 <div class="viewcode-block" id="AmmosIFReader.rewind_to_start"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.rewind_to_start">[docs]</a>    <span class="k">def</span> <span class="nf">rewind_to_start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    91         <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span></div>
    92 
    93 <div class="viewcode-block" id="AmmosIFReader.add_tag"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.add_tag">[docs]</a>    <span class="k">def</span> <span class="nf">add_tag</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tag</span><span class="p">):</span>
    94         <span class="bp">self</span><span class="o">.</span><span class="n">tags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">tag</span><span class="p">)</span></div>
    95 
    96 <div class="viewcode-block" id="AmmosIFReader.read_all_frames_left"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_all_frames_left">[docs]</a>    <span class="k">def</span> <span class="nf">read_all_frames_left</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    97 
    98         <span class="n">frames_read</span> <span class="o">=</span> <span class="mi">0</span>
    99 
    100         <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
    101             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Reading single frame&quot;</span><span class="p">,</span> <span class="n">frames_read</span><span class="p">,</span> <span class="s1">&#39;...&#39;</span><span class="p">)</span>
    102             <span class="n">current_frame</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_single_frame</span><span class="p">()</span>
    103             <span class="k">if</span> <span class="n">current_frame</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
    104                 <span class="n">frames_read</span> <span class="o">+=</span> <span class="mi">1</span>
    105                 <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">add_frame</span><span class="p">(</span><span class="n">current_frame</span><span class="p">)</span>
    106                 <span class="k">if</span> <span class="n">frames_read</span> <span class="o">%</span> <span class="mi">10000</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
    107                     <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;#&quot;</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
    108             <span class="k">else</span><span class="p">:</span>
    109                 <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Frame:&quot;</span><span class="p">,</span> <span class="n">frames_read</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot; incomplete&quot;</span><span class="p">)</span>
    110                 <span class="k">break</span>
    111 
    112         <span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">global_frames</span><span class="p">),</span> <span class="s2">&quot;frames read&quot;</span><span class="p">)</span></div>
    113 
    114 <div class="viewcode-block" id="AmmosIFReader.read_next_global_frame_header"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_header">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    115         <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">24</span><span class="p">)</span>
    116         <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Reading next global frame header&quot;</span><span class="p">)</span>
    117         <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">24</span><span class="p">)):</span>
    118             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not read all 24 bytes of global frame header&quot;</span><span class="p">)</span>
    119             <span class="k">return</span> <span class="kc">None</span>
    120 
    121         <span class="k">return</span> <span class="n">AmmosGlobalFrameHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span></div>
     82        <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="n">file_name</span><span class="p">)</span>
    12283
    12384<div class="viewcode-block" id="AmmosIFReader.read_next_global_frame_body_data_header"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body_data_header">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_body_data_header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    12485
    125         <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">56</span><span class="p">)</span>
     86        <span class="n">header_size</span> <span class="o">=</span> <span class="n">AmmosIFDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span>
    12687
    127         <span class="c1"># print(&quot;\nReading global frame body standard data header\n&quot;)</span>
    128         <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">56</span><span class="p">)):</span>
    129             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not read all 56 bytes of global frame body data header&quot;</span><span class="p">)</span>
     88        <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ammos_file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">header_size</span><span class="p">)</span>
     89
     90        <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Reading global frame body standard data header</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
     91        <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">header_size</span><span class="p">)):</span>
     92            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Can not read all </span><span class="si">%s</span><span class="s2"> bytes of global frame body data header&quot;</span><span class="p">,</span> <span class="n">header_size</span><span class="p">)</span>
     93            <span class="k">return</span> <span class="kc">None</span>
     94        <span class="k">return</span> <span class="n">AmmosIFDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span></div>
     95
     96<div class="viewcode-block" id="AmmosIFReader.read_next_global_frame_body_extended_data_header"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body_extended_data_header">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_body_extended_data_header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     97        <span class="sd">&quot;&quot;&quot;</span>
     98<span class="sd">        I return the next global frame body extended data header from current position in file.</span>
     99
     100<span class="sd">        :return: the next Ammos Extended IF data header or None if incomplete</span>
     101<span class="sd">        :rtype: AmmosExtendedIFDataHeader</span>
     102<span class="sd">        &quot;&quot;&quot;</span>
     103        <span class="n">header_size</span> <span class="o">=</span> <span class="n">AmmosExtendedIFDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span>
     104
     105        <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ammos_file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">header_size</span><span class="p">)</span>
     106
     107        <span class="n">logging</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Reading global frame body extended data header</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
     108        <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">header_size</span><span class="p">)):</span>
     109            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Can not read all </span><span class="si">%s</span><span class="s2"> bytes of global frame extended data header&quot;</span><span class="p">,</span> <span class="n">header_size</span><span class="p">)</span>
     110            <span class="k">return</span> <span class="kc">None</span>
     111        <span class="k">return</span> <span class="n">AmmosExtendedIFDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span></div>
     112
     113<div class="viewcode-block" id="AmmosIFReader.read_next_if_data_body"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_if_data_body">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_if_data_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">number_of_data_blocks</span><span class="p">,</span> <span class="n">data_length</span><span class="p">):</span>
     114        <span class="sd">&quot;&quot;&quot;</span>
     115<span class="sd">        I return the next data body read from current position in file.</span>
     116
     117<span class="sd">        :param number_of_data_blocks: the number of data blocks inside the body</span>
     118<span class="sd">        :type number_of_data_blocks: int</span>
     119
     120<span class="sd">        :param data_length: the length of the raw data inside a single block</span>
     121<span class="sd">        :type data_length: int</span>
     122<span class="sd">        &quot;&quot;&quot;</span>
     123        <span class="n">header_size</span> <span class="o">=</span> <span class="n">AmmosIFDataBlockHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span>
     124
     125        <span class="n">data_body</span> <span class="o">=</span> <span class="n">AmmosIFDataBody</span><span class="p">()</span>
     126
     127        <span class="n">block_length</span> <span class="o">=</span> <span class="n">header_size</span> <span class="o">+</span> <span class="n">data_length</span>
     128
     129        <span class="n">total</span> <span class="o">=</span> <span class="n">number_of_data_blocks</span><span class="o">*</span><span class="n">block_length</span>
     130
     131        <span class="n">byte_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">ammos_file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">block_length</span><span class="p">)</span>
     132
     133        <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">byte_string</span><span class="p">)</span> <span class="o">!=</span> <span class="n">total</span><span class="p">:</span>
     134            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Can not read all </span><span class="si">%s</span><span class="s2"> bytes of data body&quot;</span><span class="p">,</span> <span class="n">total</span><span class="p">)</span>
    130135            <span class="k">return</span> <span class="kc">None</span>
    131136
    132         <span class="n">data_header</span> <span class="o">=</span> <span class="n">AmmosIFDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span>
    133         <span class="c1"># print(&quot;Data header&quot;, data_header)</span>
    134         <span class="k">return</span> <span class="n">data_header</span></div>
     137        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">number_of_data_blocks</span><span class="p">):</span>
     138            <span class="n">result</span> <span class="o">=</span> <span class="n">byte_string</span><span class="p">[</span><span class="n">i</span><span class="o">*</span><span class="n">block_length</span><span class="p">:(</span><span class="n">i</span><span class="o">*</span><span class="n">block_length</span><span class="o">+</span><span class="n">block_length</span><span class="p">)]</span>
     139            <span class="n">data_body</span><span class="o">.</span><span class="n">add_data_block</span><span class="p">(</span><span class="n">AmmosIFDataBlock</span><span class="p">(</span><span class="n">AmmosIFDataBlockHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="n">header_size</span><span class="p">]),</span>
     140                                                      <span class="n">result</span><span class="p">[</span><span class="n">header_size</span><span class="p">:]))</span>
    135141
    136 <div class="viewcode-block" id="AmmosIFReader.read_next_global_frame_body_extended_data_header"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body_extended_data_header">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_body_extended_data_header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     142        <span class="k">return</span> <span class="n">data_body</span></div>
    137143
    138         <span class="nb">bytes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">76</span><span class="p">)</span>
    139         <span class="c1"># print(&quot;\nReading global frame body extended data header\n&quot;)</span>
     144<div class="viewcode-block" id="AmmosIFReader.read_next_global_frame_body"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_header_length</span><span class="p">):</span>
     145        <span class="sd">&quot;&quot;&quot;</span>
     146<span class="sd">        I return the next global frame body read from current position in file.</span>
    140147
    141         <span class="k">if</span> <span class="p">((</span><span class="ow">not</span> <span class="nb">bytes</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span> <span class="o">&lt;</span> <span class="mi">76</span><span class="p">)):</span>
    142             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not read all &quot;</span><span class="p">,</span> <span class="mi">76</span><span class="p">,</span> <span class="s2">&quot;bytes of global frame extended data header&quot;</span><span class="p">)</span>
    143             <span class="k">return</span> <span class="kc">None</span>
    144         <span class="n">extended_data_header</span> <span class="o">=</span> <span class="n">AmmosExtendedIFDataHeader</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="nb">bytes</span><span class="p">)</span>
    145         <span class="c1"># print(&quot;Extended data header&quot;, extended_data_header)</span>
    146         <span class="k">return</span> <span class="n">extended_data_header</span></div>
    147 
    148 <div class="viewcode-block" id="AmmosIFReader.read_next_if_data_blocks"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_if_data_blocks">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_if_data_blocks</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">length</span><span class="p">):</span>
    149 
    150         <span class="c1"># FIXME: Describe the parameters better</span>
    151 
    152         <span class="n">data_blocks</span> <span class="o">=</span> <span class="p">[]</span>
    153 
    154         <span class="n">block_length</span> <span class="o">=</span> <span class="mi">4</span> <span class="o">+</span> <span class="n">length</span>
    155 
    156         <span class="n">total</span> <span class="o">=</span> <span class="n">n</span><span class="o">*</span><span class="n">block_length</span>
    157 
    158         <span class="n">byte_string</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">file</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">block_length</span><span class="p">)</span>
    159 
    160         <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">byte_string</span><span class="p">)</span> <span class="o">!=</span> <span class="n">total</span><span class="p">:</span>
    161             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Can not read all&quot;</span><span class="p">,</span> <span class="n">total</span><span class="p">,</span> <span class="s2">&quot;bytes of data body&quot;</span><span class="p">)</span>
    162             <span class="k">return</span> <span class="kc">None</span>
    163 
    164         <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">n</span><span class="p">):</span>
    165             <span class="n">result</span> <span class="o">=</span> <span class="n">byte_string</span><span class="p">[</span><span class="n">i</span><span class="o">*</span><span class="n">block_length</span><span class="p">:(</span><span class="n">i</span><span class="o">*</span><span class="n">block_length</span><span class="o">+</span><span class="n">block_length</span><span class="p">)]</span>
    166             <span class="n">data_blocks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">AmmosIFDataBlock</span><span class="p">(</span><span class="n">result</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">4</span><span class="p">],</span> <span class="n">result</span><span class="p">[</span><span class="mi">4</span><span class="p">:]))</span>
    167 
    168         <span class="k">return</span> <span class="n">data_blocks</span></div>
    169 
    170 <div class="viewcode-block" id="AmmosIFReader.read_next_global_frame_body"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_global_frame_body</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">global_frame_header</span><span class="p">):</span>
    171 
     148<span class="sd">        :param data_header_length: the length of the data header</span>
     149<span class="sd">        :type data_header_length: int</span>
     150<span class="sd">        &quot;&quot;&quot;</span>
    172151        <span class="n">if_data_header</span> <span class="o">=</span> <span class="kc">None</span>
    173152
    174         <span class="k">if</span> <span class="n">global_frame_header</span><span class="o">.</span><span class="n">data_header_length</span> <span class="o">==</span> <span class="mi">56</span><span class="p">:</span>
     153        <span class="k">if</span> <span class="n">data_header_length</span> <span class="o">==</span> <span class="n">AmmosIFDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span><span class="p">:</span>
    175154            <span class="n">if_data_header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_global_frame_body_data_header</span><span class="p">()</span>
    176         <span class="k">else</span><span class="p">:</span>
     155        <span class="k">if</span> <span class="n">data_header_length</span> <span class="o">==</span> <span class="n">AmmosExtendedIFDataHeader</span><span class="o">.</span><span class="n">HEADER_SIZE</span><span class="p">:</span>
    177156            <span class="n">if_data_header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_global_frame_body_extended_data_header</span><span class="p">()</span>
    178157
    179158        <span class="k">if</span> <span class="n">if_data_header</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    180             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Data header missing&quot;</span><span class="p">)</span>
     159            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Data header missing&quot;</span><span class="p">)</span>
    181160            <span class="k">return</span> <span class="kc">None</span>
    182161
    183         <span class="n">if_data_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_if_data_blocks</span><span class="p">(</span><span class="n">if_data_header</span><span class="o">.</span><span class="n">block_count</span><span class="p">,</span> <span class="n">if_data_header</span><span class="o">.</span><span class="n">block_length</span><span class="p">)</span>
     162        <span class="n">if_data_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_if_data_body</span><span class="p">(</span><span class="n">if_data_header</span><span class="o">.</span><span class="n">block_count</span><span class="p">,</span> <span class="n">if_data_header</span><span class="o">.</span><span class="n">block_length</span><span class="p">)</span>
    184163
    185164        <span class="k">if</span> <span class="n">if_data_body</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    186             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Data body missing&quot;</span><span class="p">)</span>
     165            <span class="n">logging</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s2">&quot;Data body missing&quot;</span><span class="p">)</span>
    187166            <span class="k">return</span> <span class="kc">None</span>
    188167
    189168        <span class="k">return</span> <span class="n">AmmosGlobalFrameBody</span><span class="p">(</span><span class="n">if_data_header</span><span class="p">,</span> <span class="n">if_data_body</span><span class="p">)</span></div>
    190169
    191 <div class="viewcode-block" id="AmmosIFReader.read_next_single_frame"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_single_frame">[docs]</a>    <span class="k">def</span> <span class="nf">read_next_single_frame</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
    192 
    193         <span class="n">global_frame_header</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_global_frame_header</span><span class="p">()</span>
    194 
    195         <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Reading next global frame header</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">global_frame_header</span><span class="p">)</span>
    196         <span class="c1"># print(&quot;File pointer&quot;, self.file.tell())</span>
    197 
    198         <span class="k">if</span> <span class="n">global_frame_header</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    199             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Global frame header missing&quot;</span><span class="p">)</span>
    200             <span class="k">return</span> <span class="kc">None</span>
    201 
    202         <span class="k">if</span> <span class="n">global_frame_header</span><span class="o">.</span><span class="n">data_header_length</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    203             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Data header length empty&quot;</span><span class="p">)</span>
    204             <span class="k">return</span> <span class="kc">None</span>
    205 
    206         <span class="k">if</span> <span class="n">global_frame_header</span><span class="o">.</span><span class="n">frame_type</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
    207 
    208             <span class="n">global_frame_body</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_next_global_frame_body</span><span class="p">(</span><span class="n">global_frame_header</span><span class="p">)</span>
    209             <span class="k">if</span> <span class="n">global_frame_body</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
    210                 <span class="k">return</span> <span class="kc">None</span>
    211 
    212         <span class="k">else</span><span class="p">:</span>
    213             <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Unsupported frame type&quot;</span><span class="p">,</span> <span class="n">global_frame_header</span><span class="o">.</span><span class="n">frame_type</span><span class="p">,</span> <span class="s2">&quot;found&quot;</span><span class="p">)</span>
    214             <span class="k">return</span> <span class="kc">None</span>
    215 
    216         <span class="k">return</span> <span class="n">AmmosSingleFrame</span><span class="p">(</span><span class="n">global_frame_header</span><span class="p">,</span> <span class="n">global_frame_body</span><span class="p">)</span></div></div>
     170<div class="viewcode-block" id="AmmosIFReader.data"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.data">[docs]</a>    <span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     171        <span class="k">return</span> <span class="sa">b</span><span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">each</span><span class="o">.</span><span class="n">global_frame_body</span><span class="o">.</span><span class="n">data_body</span><span class="o">.</span><span class="n">data</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">container</span><span class="o">.</span><span class="n">global_frames</span><span class="p">])</span></div></div>
    217172</pre></div>
    218173
  • doc/html/_modules/ammosreader/AmmosSingleFrame.html

    reab48d0 r299c79c  
    6767
    6868    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">global_frame_header</span><span class="p">,</span> <span class="n">global_frame_body</span><span class="p">):</span>
    69         <span class="bp">self</span><span class="o">.</span><span class="n">global_frame_header</span> <span class="o">=</span> <span class="n">global_frame_header</span>
    70         <span class="bp">self</span><span class="o">.</span><span class="n">global_frame_body</span> <span class="o">=</span> <span class="n">global_frame_body</span>
     69        <span class="bp">self</span><span class="o">.</span><span class="n">__global_frame_header</span> <span class="o">=</span> <span class="n">global_frame_header</span>
     70        <span class="bp">self</span><span class="o">.</span><span class="n">__global_frame_body</span> <span class="o">=</span> <span class="n">global_frame_body</span>
     71
     72    <span class="nd">@property</span>
     73    <span class="k">def</span> <span class="nf">global_frame_header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     74        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__global_frame_header</span>
     75
     76    <span class="nd">@property</span>
     77    <span class="k">def</span> <span class="nf">global_frame_body</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     78        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__global_frame_body</span>
    7179
    7280<div class="viewcode-block" id="AmmosSingleFrame.data"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.AmmosSingleFrame.AmmosSingleFrame.data">[docs]</a>    <span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     
    8391            <span class="s2">&quot;Global frame header</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    8492            <span class="s2">&quot;-------------------</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    85             <span class="s2">&quot;Frame tyoe:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">global_frame_header</span><span class="o">.</span><span class="n">frame_type</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
     93            <span class="s2">&quot;Frame type:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">global_frame_header</span><span class="o">.</span><span class="n">frame_type</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    8694            <span class="s2">&quot;Frame count:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">global_frame_header</span><span class="o">.</span><span class="n">running_frame_number</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    8795            <span class="s2">&quot;Data header length:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">global_frame_header</span><span class="o">.</span><span class="n">data_header_length</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot; bytes</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
  • doc/html/_modules/ammosreader/PDW.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.PDW</h1><div class="highlight"><pre>
    66 <span></span><span class="kn">import</span> <span class="nn">struct</span>
     66<span></span><span class="sd">&quot;&quot;&quot;I store the information of a single PDW block.&quot;&quot;&quot;</span>
     67
     68<span class="kn">import</span> <span class="nn">struct</span>
    6769<span class="kn">import</span> <span class="nn">math</span>
    6870<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
    69 
    70 <span class="c1"># TODO: Use BitArray module in future versions</span>
    7171
    7272
     
    7676
    7777<span class="sd">    .. automethod:: __init__</span>
    78 
    7978<span class="sd">    &quot;&quot;&quot;</span>
    8079
    8180<div class="viewcode-block" id="PDW.from_bytes"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PDW.PDW.from_bytes">[docs]</a>    <span class="nd">@classmethod</span>
    8281    <span class="k">def</span> <span class="nf">from_bytes</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">byte_string</span><span class="p">):</span>
    83 
    8482        <span class="sd">&quot;&quot;&quot;</span>
    85 
    86 <span class="sd">        I create an instance of class PDW from data body (8 * 32 bits)</span>
     83<span class="sd">        I create an instance of class PDW from data body (8 * 32 bits).</span>
    8784
    8885<span class="sd">        :param byte_string: a byte string containing a single data body read from a ppdw file</span>
     
    9188<span class="sd">        :return: an instance of class PDW with attributes set according to the data of a data body</span>
    9289<span class="sd">        :rtype: PDW</span>
    93 
    9490<span class="sd">        &quot;&quot;&quot;</span>
    95 
    9691        <span class="k">assert</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">byte_string</span><span class="p">)</span> <span class="o">==</span> <span class="mi">32</span><span class="p">)</span>
    9792
    98         <span class="n">parts</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;Q4s4s4s4s4s4s&#39;</span><span class="p">,</span> <span class="n">byte_string</span><span class="p">)</span>
     93        <span class="n">parts</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="s1">&#39;&lt;Q4s4s4s4s4s4s&#39;</span><span class="p">,</span> <span class="n">byte_string</span><span class="p">)</span>
    9994        <span class="n">nanoseconds</span> <span class="o">=</span> <span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
    100         <span class="n">time_of_arrival</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">datetime64</span><span class="p">(</span><span class="n">nanoseconds</span><span class="p">,</span> <span class="s1">&#39;ns&#39;</span><span class="p">)</span>  <span class="c1">#datetime.datetime.utcfromtimestamp(seconds / 1000000000)</span>
     95        <span class="n">time_of_arrival</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">datetime64</span><span class="p">(</span><span class="n">nanoseconds</span><span class="p">,</span> <span class="s1">&#39;ns&#39;</span><span class="p">)</span>
    10196
    10297        <span class="n">third_entry</span> <span class="o">=</span> <span class="nb">bin</span><span class="p">(</span><span class="nb">int</span><span class="o">.</span><span class="n">from_bytes</span><span class="p">(</span><span class="n">parts</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">byteorder</span><span class="o">=</span><span class="s1">&#39;little&#39;</span><span class="p">))</span>
     
    159154                 <span class="n">pulse_level_or_pulse_field_strength</span><span class="p">,</span> <span class="n">region_of_interest</span><span class="p">,</span> <span class="n">azimuth_confidence</span><span class="p">,</span> <span class="n">modulation</span><span class="p">,</span>
    160155                 <span class="n">sector</span><span class="p">,</span> <span class="n">polarity</span><span class="p">,</span> <span class="n">df_quality</span><span class="p">,</span> <span class="n">elevation</span><span class="p">,</span> <span class="n">azimuth</span><span class="p">,</span> <span class="n">channel</span><span class="p">):</span>
    161 
    162         <span class="sd">&quot;&quot;&quot;</span>
     156        <span class="sa">r</span><span class="sd">&quot;&quot;&quot;</span>
     157<span class="sd">        I return an instance of an Pulse Data word.</span>
    163158
    164159<span class="sd">        :param time_of_arrival: nanoseconds since 1970-01-01 00:00:00</span>
     
    207202<span class="sd">        :return: An instance of class PDW with attributes set according to the data of a data body</span>
    208203<span class="sd">        :rtype: PDW</span>
    209 
    210204<span class="sd">        &quot;&quot;&quot;</span>
    211 
    212         <span class="bp">self</span><span class="o">.</span><span class="n">time_of_arrival</span> <span class="o">=</span> <span class="n">time_of_arrival</span>
     205        <span class="bp">self</span><span class="o">.</span><span class="n">time_of_arrival</span> <span class="o">=</span> <span class="n">time_of_arrival</span> <span class="c1">#</span>
    213206        <span class="bp">self</span><span class="o">.</span><span class="n">pdw_format_identifier</span> <span class="o">=</span> <span class="n">pdw_format_identifier</span>
    214         <span class="bp">self</span><span class="o">.</span><span class="n">center_frequency</span> <span class="o">=</span> <span class="n">center_frequency</span>
    215         <span class="bp">self</span><span class="o">.</span><span class="n">is_valid</span> <span class="o">=</span> <span class="n">is_valid</span>
    216         <span class="bp">self</span><span class="o">.</span><span class="n">is_pulse</span> <span class="o">=</span> <span class="n">is_pulse</span>
    217         <span class="bp">self</span><span class="o">.</span><span class="n">level_unit</span> <span class="o">=</span> <span class="n">level_unit</span>
     207        <span class="bp">self</span><span class="o">.</span><span class="n">center_frequency</span> <span class="o">=</span> <span class="n">center_frequency</span> <span class="c1">#</span>
     208        <span class="bp">self</span><span class="o">.</span><span class="n">is_valid</span> <span class="o">=</span> <span class="n">is_valid</span> <span class="c1">#</span>
     209        <span class="bp">self</span><span class="o">.</span><span class="n">is_pulse</span> <span class="o">=</span> <span class="n">is_pulse</span> <span class="c1">#</span>
     210        <span class="bp">self</span><span class="o">.</span><span class="n">level_unit</span> <span class="o">=</span> <span class="n">level_unit</span> <span class="c1">#</span>
    218211        <span class="bp">self</span><span class="o">.</span><span class="n">signal_start_missing</span> <span class="o">=</span> <span class="n">signal_start_missing</span>
    219212        <span class="bp">self</span><span class="o">.</span><span class="n">signal_end_missing</span> <span class="o">=</span> <span class="n">signal_end_missing</span>
    220         <span class="bp">self</span><span class="o">.</span><span class="n">pulse_width</span> <span class="o">=</span> <span class="n">pulse_width</span>
    221         <span class="bp">self</span><span class="o">.</span><span class="n">frequency_shift_or_bandwidth</span> <span class="o">=</span> <span class="n">frequency_shift_or_bandwidth</span>
    222         <span class="bp">self</span><span class="o">.</span><span class="n">pulse_level_or_pulse_field_strength</span> <span class="o">=</span> <span class="n">pulse_level_or_pulse_field_strength</span>
     213        <span class="bp">self</span><span class="o">.</span><span class="n">pulse_width</span> <span class="o">=</span> <span class="n">pulse_width</span> <span class="c1">#</span>
     214        <span class="bp">self</span><span class="o">.</span><span class="n">frequency_shift_or_bandwidth</span> <span class="o">=</span> <span class="n">frequency_shift_or_bandwidth</span> <span class="c1">#</span>
     215        <span class="bp">self</span><span class="o">.</span><span class="n">pulse_level_or_pulse_field_strength</span> <span class="o">=</span> <span class="n">pulse_level_or_pulse_field_strength</span> <span class="c1">#</span>
    223216        <span class="bp">self</span><span class="o">.</span><span class="n">region_of_interest</span> <span class="o">=</span> <span class="n">region_of_interest</span>
    224217        <span class="bp">self</span><span class="o">.</span><span class="n">azimuth_confidence</span> <span class="o">=</span> <span class="n">azimuth_confidence</span>
    225         <span class="bp">self</span><span class="o">.</span><span class="n">modulation</span> <span class="o">=</span> <span class="n">modulation</span>
     218        <span class="bp">self</span><span class="o">.</span><span class="n">modulation</span> <span class="o">=</span> <span class="n">modulation</span> <span class="c1">#</span>
    226219        <span class="bp">self</span><span class="o">.</span><span class="n">sector</span> <span class="o">=</span> <span class="n">sector</span>
    227220        <span class="bp">self</span><span class="o">.</span><span class="n">polarity</span> <span class="o">=</span> <span class="n">polarity</span>
    228         <span class="bp">self</span><span class="o">.</span><span class="n">df_quality</span> <span class="o">=</span> <span class="n">df_quality</span>
    229         <span class="bp">self</span><span class="o">.</span><span class="n">elevation</span> <span class="o">=</span> <span class="n">elevation</span>
     221        <span class="bp">self</span><span class="o">.</span><span class="n">df_quality</span> <span class="o">=</span> <span class="n">df_quality</span> <span class="c1">#</span>
     222        <span class="bp">self</span><span class="o">.</span><span class="n">elevation</span> <span class="o">=</span> <span class="n">elevation</span> <span class="c1">#</span>
    230223        <span class="bp">self</span><span class="o">.</span><span class="n">azimuth</span> <span class="o">=</span> <span class="n">azimuth</span>
    231         <span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span></div>
     224        <span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span> <span class="c1">#</span></div>
    232225
    233226    <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     227        <span class="sd">&quot;&quot;&quot;</span>
     228<span class="sd">        I return the string representation of myself.</span>
     229
     230<span class="sd">        :rtype: str</span>
     231<span class="sd">        &quot;&quot;&quot;</span>
    234232        <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="s2">&quot;Time of arrival: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">time_of_arrival</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
    235233                  <span class="s2">&quot;PDW Format identifier: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pdw_format_identifier</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span>
     
    287285        <span class="n">output</span> <span class="o">+=</span> <span class="s2">&quot;Channel: &quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span> <span class="o">+</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span>
    288286
    289         <span class="k">return</span> <span class="n">output</span></div>
    290 
     287        <span class="k">return</span> <span class="n">output</span>
     288
     289<div class="viewcode-block" id="PDW.to_json"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PDW.PDW.to_json">[docs]</a>    <span class="k">def</span> <span class="nf">to_json</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     290        <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;TIMEOFARRIVAL&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">time_of_arrival</span><span class="o">.</span><span class="n">item</span><span class="p">(),</span>
     291                <span class="s1">&#39;CENTERFREQUENCY&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">center_frequency</span><span class="p">,</span>
     292                <span class="s1">&#39;VALID&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_valid</span><span class="p">,</span>
     293                <span class="s1">&#39;PULSE&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_pulse</span><span class="p">,</span>
     294                <span class="s1">&#39;PULSEWIDTH&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pulse_width</span><span class="p">,</span>
     295                <span class="s1">&#39;LEVELUNIT&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">level_unit</span><span class="p">,</span>
     296                <span class="s1">&#39;FREQUENCYSHIFTORBANDWIDTH&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">frequency_shift_or_bandwidth</span><span class="p">,</span>
     297                <span class="s1">&#39;PULSELEVELORFIELDSTRENGTH&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">pulse_level_or_pulse_field_strength</span><span class="p">,</span>
     298                <span class="s1">&#39;MODULATION&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">modulation</span><span class="p">,</span>
     299                <span class="s1">&#39;ELEVATION&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">elevation</span><span class="p">,</span>
     300                <span class="s1">&#39;AZIMUTH&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">azimuth</span><span class="p">,</span>
     301                <span class="s1">&#39;CHANNEL&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel</span>
     302                <span class="p">}</span></div></div>
    291303
    292304<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
  • doc/html/_modules/ammosreader/PPDWContainer.html

    reab48d0 r299c79c  
    6464           
    6565  <h1>Source code for ammosreader.PPDWContainer</h1><div class="highlight"><pre>
    66 <div class="viewcode-block" id="PPDWContainer"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer">[docs]</a><span></span><span class="k">class</span> <span class="nc">PPDWContainer</span><span class="p">():</span>
     66<span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
     67<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
    6768
     69
     70<div class="viewcode-block" id="PPDWContainer"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer">[docs]</a><span class="k">class</span> <span class="nc">PPDWContainer</span><span class="p">():</span>
    6871    <span class="sd">&quot;&quot;&quot;</span>
    69 
    7072<span class="sd">    I store multiple signals imported from one or more .ppdw files</span>
    71 
    7273<span class="sd">    .. automethod:: __init__</span>
    73 
    7474<span class="sd">    &quot;&quot;&quot;</span>
    7575
    76 <div class="viewcode-block" id="PPDWContainer.__init__"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.__init__">[docs]</a>    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">signals</span><span class="p">):</span>
     76    <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">signals</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
    7777
    78         <span class="bp">self</span><span class="o">.</span><span class="n">signals</span> <span class="o">=</span> <span class="n">signals</span></div></div>
     78        <span class="k">if</span> <span class="n">signals</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
     79            <span class="bp">self</span><span class="o">.</span><span class="n">signals</span> <span class="o">=</span> <span class="p">[]</span>
     80        <span class="k">else</span><span class="p">:</span>
     81            <span class="bp">self</span><span class="o">.</span><span class="n">signals</span> <span class="o">=</span> <span class="n">signals</span>
    7982
     83    <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     84        <span class="k">return</span> <span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s2">&quot;Number of pulses:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">signals</span><span class="p">)),</span>
     85                          <span class="s2">&quot;Start time:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">start_time</span><span class="p">()),</span>
     86                          <span class="s2">&quot;End time:&quot;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">end_time</span><span class="p">())])</span>
     87
     88<div class="viewcode-block" id="PPDWContainer.add"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.add">[docs]</a>    <span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">a_pdw</span><span class="p">):</span>
     89        <span class="bp">self</span><span class="o">.</span><span class="n">signals</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">a_pdw</span><span class="p">)</span></div>
     90
     91<div class="viewcode-block" id="PPDWContainer.julian_date_string"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.julian_date_string">[docs]</a>    <span class="k">def</span> <span class="nf">julian_date_string</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     92        <span class="n">ts</span> <span class="o">=</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">start_time</span><span class="p">()</span> <span class="o">-</span> <span class="n">np</span><span class="o">.</span><span class="n">datetime64</span><span class="p">(</span><span class="s1">&#39;1970-01-01T00:00:00&#39;</span><span class="p">))</span> <span class="o">/</span> <span class="n">np</span><span class="o">.</span><span class="n">timedelta64</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s1">&#39;s&#39;</span><span class="p">)</span>
     93        <span class="n">time_tuple</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">utcfromtimestamp</span><span class="p">(</span><span class="n">ts</span><span class="p">)</span><span class="o">.</span><span class="n">timetuple</span><span class="p">()</span>
     94        <span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="n">time_tuple</span><span class="o">.</span><span class="n">tm_year</span><span class="p">)[</span><span class="mi">2</span><span class="p">:]</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">time_tuple</span><span class="o">.</span><span class="n">tm_yday</span><span class="p">)</span><span class="o">.</span><span class="n">zfill</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span></div>
     95
     96<div class="viewcode-block" id="PPDWContainer.center_frequencies"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.center_frequencies">[docs]</a>    <span class="k">def</span> <span class="nf">center_frequencies</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     97        <span class="k">return</span> <span class="nb">list</span><span class="p">({</span><span class="n">each</span><span class="o">.</span><span class="n">center_frequency</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">signals</span><span class="p">})</span></div>
     98
     99<div class="viewcode-block" id="PPDWContainer.channels"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.channels">[docs]</a>    <span class="k">def</span> <span class="nf">channels</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     100        <span class="k">return</span> <span class="nb">list</span><span class="p">({</span><span class="n">each</span><span class="o">.</span><span class="n">channel</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">signals</span><span class="p">})</span></div>
     101
     102<div class="viewcode-block" id="PPDWContainer.modulations"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.modulations">[docs]</a>    <span class="k">def</span> <span class="nf">modulations</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     103        <span class="k">return</span> <span class="nb">list</span><span class="p">({</span><span class="n">each</span><span class="o">.</span><span class="n">modulation</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">signals</span><span class="p">})</span></div>
     104
     105<div class="viewcode-block" id="PPDWContainer.bandwidths"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.bandwidths">[docs]</a>    <span class="k">def</span> <span class="nf">bandwidths</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     106        <span class="k">return</span> <span class="nb">list</span><span class="p">({</span><span class="n">each</span><span class="o">.</span><span class="n">frequency_shift_or_bandwidth</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">signals</span><span class="p">})</span></div>
     107
     108<div class="viewcode-block" id="PPDWContainer.start_time"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.start_time">[docs]</a>    <span class="k">def</span> <span class="nf">start_time</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     109        <span class="k">return</span> <span class="nb">min</span><span class="p">([</span><span class="n">each</span><span class="o">.</span><span class="n">time_of_arrival</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">signals</span><span class="p">])</span></div>
     110
     111<div class="viewcode-block" id="PPDWContainer.end_time"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.end_time">[docs]</a>    <span class="k">def</span> <span class="nf">end_time</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     112        <span class="k">return</span> <span class="nb">max</span><span class="p">([</span><span class="n">each</span><span class="o">.</span><span class="n">time_of_arrival</span> <span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">signals</span><span class="p">])</span></div>
     113
     114<div class="viewcode-block" id="PPDWContainer.to_json"><a class="viewcode-back" href="../../ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.to_json">[docs]</a>    <span class="k">def</span> <span class="nf">to_json</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
     115        <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;JULIANDATE&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">julian_date_string</span><span class="p">(),</span>
     116                <span class="s1">&#39;STARTTIME&#39;</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">start_time</span><span class="p">()),</span>
     117                <span class="s1">&#39;ENDTIME&#39;</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">end_time</span><span class="p">()),</span>
     118                <span class="c1"># &#39;CENTERFREQUENCIES&#39;: self.center_frequencies(),</span>
     119                <span class="s1">&#39;CHANNELS&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">channels</span><span class="p">()</span>
     120                <span class="c1"># &#39;MODULATIONS&#39;: self.modulations(),</span>
     121                <span class="c1"># &#39;BANDWIDTHS&#39;: self.bandwidths()</span>
     122                <span class="p">}</span></div></div>
    80123
    81124<span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
  • doc/html/_modules/index.html

    reab48d0 r299c79c  
    8686    <p>
    8787      &copy; Copyright 2022, KIDZg.
    88       Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.4.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
     88      Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.5.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
    8989    (Revision )
    9090        </p>
  • doc/html/_static/doctools.js

    reab48d0 r299c79c  
    155155    this.highlightSearchWords();
    156156    this.initIndexTable();
    157     if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
    158       this.initOnKeyListeners();
    159     }
     157    this.initOnKeyListeners();
    160158  },
    161159
     
    270268  },
    271269
     270   /**
     271   * helper function to focus on search bar
     272   */
     273  focusSearchBar : function() {
     274    $('input[name=q]').first().focus();
     275  },
     276
    272277  /**
    273278   * make the url absolute
     
    292297
    293298  initOnKeyListeners: function() {
     299    // only install a listener if it is really needed
     300    if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS &&
     301        !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS)
     302        return;
     303
    294304    $(document).keydown(function(event) {
    295305      var activeElementType = document.activeElement.tagName;
    296306      // don't navigate when in search box, textarea, dropdown or button
    297307      if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT'
    298           && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey
    299           && !event.shiftKey) {
    300         switch (event.keyCode) {
    301           case 37: // left
    302             var prevHref = $('link[rel="prev"]').prop('href');
    303             if (prevHref) {
    304               window.location.href = prevHref;
    305               return false;
    306             }
    307             break;
    308           case 39: // right
    309             var nextHref = $('link[rel="next"]').prop('href');
    310             if (nextHref) {
    311               window.location.href = nextHref;
    312               return false;
    313             }
    314             break;
     308          && activeElementType !== 'BUTTON') {
     309        if (event.altKey || event.ctrlKey || event.metaKey)
     310          return;
     311
     312          if (!event.shiftKey) {
     313            switch (event.key) {
     314              case 'ArrowLeft':
     315                if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS)
     316                  break;
     317                var prevHref = $('link[rel="prev"]').prop('href');
     318                if (prevHref) {
     319                  window.location.href = prevHref;
     320                  return false;
     321                }
     322                break;
     323              case 'ArrowRight':
     324                if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS)
     325                  break;
     326                var nextHref = $('link[rel="next"]').prop('href');
     327                if (nextHref) {
     328                  window.location.href = nextHref;
     329                  return false;
     330                }
     331                break;
     332              case 'Escape':
     333                if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS)
     334                  break;
     335                Documentation.hideSearchWords();
     336                return false;
     337          }
     338        }
     339
     340        // some keyboard layouts may need Shift to get /
     341        switch (event.key) {
     342          case '/':
     343            if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS)
     344              break;
     345            Documentation.focusSearchBar();
     346            return false;
    315347        }
    316348      }
  • doc/html/_static/documentation_options.js

    reab48d0 r299c79c  
    99    HAS_SOURCE: true,
    1010    SOURCELINK_SUFFIX: '.txt',
    11     NAVIGATION_WITH_KEYS: false
     11    NAVIGATION_WITH_KEYS: false,
     12    SHOW_SEARCH_SUMMARY: true,
     13    ENABLE_SEARCH_SHORTCUTS: true,
    1214};
  • doc/html/_static/searchtools.js

    reab48d0 r299c79c  
    173173      // stem the word
    174174      var word = stemmer.stemWord(tmp[i].toLowerCase());
    175       // prevent stemmer from cutting word smaller than two chars
    176       if(word.length < 3 && tmp[i].length >= 3) {
    177         word = tmp[i];
    178       }
    179175      var toAppend;
    180176      // select the correct list
     
    277273            displayNextItem();
    278274          }, 5);
    279         } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
     275        } else if (DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY) {
    280276          $.ajax({url: requestUrl,
    281277                  dataType: "text",
     
    294290                  }});
    295291        } else {
    296           // no source available, just display title
     292          // just display title
    297293          Search.output.append(listItem);
    298294          setTimeout(function() {
  • doc/html/ammosreader.html

    reab48d0 r299c79c  
    9696<section id="module-ammosreader.AmmosAudioDataHeader">
    9797<span id="ammosreader-ammosaudiodataheader-module"></span><h2>ammosreader.AmmosAudioDataHeader module<a class="headerlink" href="#module-ammosreader.AmmosAudioDataHeader" title="Permalink to this headline">¶</a></h2>
     98<p>I provide an AMMOS data header for audio data frames.</p>
    9899<dl class="py class">
    99100<dt class="sig sig-object py" id="ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader">
    100 <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosAudioDataHeader.</span></span><span class="sig-name descname"><span class="pre">AmmosAudioDataHeader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sample_rate</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">frequency</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">demod_bandwidth</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">demod_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_count</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_count</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_size</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioDataHeader.html#AmmosAudioDataHeader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader" title="Permalink to this definition">¶</a></dt>
    101 <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     101<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosAudioDataHeader.</span></span><span class="sig-name descname"><span class="pre">AmmosAudioDataHeader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sample_rate</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">frequency</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">demod_bandwidth</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">demod_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number_of_samples</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number_of_channels</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_size</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioDataHeader.html#AmmosAudioDataHeader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader" title="Permalink to this definition">¶</a></dt>
     102<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     103<p>I implement an AMMOS data header for audio data frames.</p>
     104<dl class="py attribute">
     105<dt class="sig sig-object py" id="ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader.HEADER_SIZE">
     106<span class="sig-name descname"><span class="pre">HEADER_SIZE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">36</span></em><a class="headerlink" href="#ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader.HEADER_SIZE" title="Permalink to this definition">¶</a></dt>
     107<dd></dd></dl>
     108
    102109<dl class="py method">
    103110<dt class="sig sig-object py" id="ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader.from_bytes">
    104111<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">bytes</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioDataHeader.html#AmmosAudioDataHeader.from_bytes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader.from_bytes" title="Permalink to this definition">¶</a></dt>
    105 <dd></dd></dl>
    106 
    107 </dd></dl>
    108 
    109 <dl class="py class">
    110 <dt class="sig sig-object py" id="ammosreader.AmmosAudioDataHeader.AmmosAudioDemodType">
    111 <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosAudioDataHeader.</span></span><span class="sig-name descname"><span class="pre">AmmosAudioDemodType</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">demod_type</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioDataHeader.html#AmmosAudioDemodType"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioDataHeader.AmmosAudioDemodType" title="Permalink to this definition">¶</a></dt>
    112 <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
    113 <dl class="py property">
    114 <dt class="sig sig-object py" id="ammosreader.AmmosAudioDataHeader.AmmosAudioDemodType.mapping">
    115 <em class="property"><span class="pre">class</span><span class="w"> </span><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">mapping</span></span><a class="headerlink" href="#ammosreader.AmmosAudioDataHeader.AmmosAudioDemodType.mapping" title="Permalink to this definition">¶</a></dt>
    116 <dd><p>dict() -&gt; new empty dictionary
    117 dict(mapping) -&gt; new dictionary initialized from a mapping object’s</p>
    118 <blockquote>
    119 <div><p>(key, value) pairs</p>
    120 </div></blockquote>
    121 <dl>
    122 <dt>dict(iterable) -&gt; new dictionary initialized as if via:</dt><dd><p>d = {}
    123 for k, v in iterable:</p>
    124 <blockquote>
    125 <div><p>d[k] = v</p>
    126 </div></blockquote>
    127 </dd>
    128 <dt>dict(<a href="#id1"><span class="problematic" id="id2">**</span></a>kwargs) -&gt; new dictionary initialized with the name=value pairs</dt><dd><p>in the keyword argument list.  For example:  dict(one=1, two=2)</p>
    129 </dd>
    130 </dl>
     112<dd><p>I return an AMMOS data header from given bytes.</p>
    131113</dd></dl>
    132114
     
    136118<section id="module-ammosreader.AmmosAudioReader">
    137119<span id="ammosreader-ammosaudioreader-module"></span><h2>ammosreader.AmmosAudioReader module<a class="headerlink" href="#module-ammosreader.AmmosAudioReader" title="Permalink to this headline">¶</a></h2>
    138 <p>I parse an R&amp;S AMMOS recording.</p>
     120<p>I provide a specialized Ammos Reader for audio data.</p>
    139121<dl class="py class">
    140122<dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader">
    141123<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosAudioReader.</span></span><span class="sig-name descname"><span class="pre">AmmosAudioReader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader" title="Permalink to this definition">¶</a></dt>
    142 <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     124<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">ammosreader.AbstractAmmosReader.AbstractAmmosReader</span></code></p>
    143125<p>I read the audio data embedded in an R&amp;S AMMOS recording.</p>
    144 <dl class="py attribute">
    145 <dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.EXTENDED_AUDIO_DATA_HEADER_SIZE">
    146 <span class="sig-name descname"><span class="pre">EXTENDED_AUDIO_DATA_HEADER_SIZE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">44</span></em><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.EXTENDED_AUDIO_DATA_HEADER_SIZE" title="Permalink to this definition">¶</a></dt>
    147 <dd></dd></dl>
    148 
    149 <dl class="py attribute">
    150 <dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.GLOBAL_HEADER_SIZE">
    151 <span class="sig-name descname"><span class="pre">GLOBAL_HEADER_SIZE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">24</span></em><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.GLOBAL_HEADER_SIZE" title="Permalink to this definition">¶</a></dt>
    152 <dd></dd></dl>
    153 
    154 <dl class="py attribute">
    155 <dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.STANDARD_AUDIO_DATA_HEADER_SIZE">
    156 <span class="sig-name descname"><span class="pre">STANDARD_AUDIO_DATA_HEADER_SIZE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">36</span></em><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.STANDARD_AUDIO_DATA_HEADER_SIZE" title="Permalink to this definition">¶</a></dt>
    157 <dd></dd></dl>
    158 
    159 <dl class="py method">
    160 <dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.add_tag">
    161 <span class="sig-name descname"><span class="pre">add_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tag</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.add_tag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.add_tag" title="Permalink to this definition">¶</a></dt>
    162 <dd><p>I add a tag to my tag list.</p>
    163 <dl class="field-list simple">
    164 <dt class="field-odd">Parameters</dt>
    165 <dd class="field-odd"><p><strong>tag</strong> (<em>dict</em>) – The tag to add to my tag list</p>
    166 </dd>
    167 </dl>
    168 </dd></dl>
    169 
    170 <dl class="py method">
    171 <dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.read_all_frames_left">
    172 <span class="sig-name descname"><span class="pre">read_all_frames_left</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.read_all_frames_left"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.read_all_frames_left" title="Permalink to this definition">¶</a></dt>
    173 <dd><p>I read all remaining frames into my container until end of file is reached.</p>
    174 <dl class="field-list simple">
    175 <dt class="field-odd">Returns</dt>
    176 <dd class="field-odd"><p>a container containing all frames read</p>
     126<dl class="py method">
     127<dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.pcm_for_channel">
     128<span class="sig-name descname"><span class="pre">pcm_for_channel</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">a_channel</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.pcm_for_channel"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.pcm_for_channel" title="Permalink to this definition">¶</a></dt>
     129<dd><p>I return the raw pcm audio data for a given channel.</p>
     130<dl class="field-list simple">
     131<dt class="field-odd">Parameters</dt>
     132<dd class="field-odd"><p><strong>a_channel</strong> (<em>int</em>) – the channel I have to extract</p>
    177133</dd>
    178134<dt class="field-even">Return type</dt>
    179 <dd class="field-even"><p><a class="reference internal" href="#ammosreader.AmmosContainer.AmmosContainer" title="ammosreader.AmmosContainer.AmmosContainer">AmmosContainer</a></p>
     135<dd class="field-even"><p>bytes</p>
    180136</dd>
    181137</dl>
     
    184140<dl class="py method">
    185141<dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_audio_data_body">
    186 <span class="sig-name descname"><span class="pre">read_next_audio_data_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sample_count</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_count</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_size</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.read_next_audio_data_body"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_audio_data_body" title="Permalink to this definition">¶</a></dt>
     142<span class="sig-name descname"><span class="pre">read_next_audio_data_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">number_of_samples</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number_of_channels</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_size</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.read_next_audio_data_body"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_audio_data_body" title="Permalink to this definition">¶</a></dt>
    187143<dd><p>I return the next audio data read from current position in file.</p>
    188144<dl class="field-list simple">
    189145<dt class="field-odd">Parameters</dt>
    190146<dd class="field-odd"><ul class="simple">
    191 <li><p><strong>sample_count</strong> (<em>int</em>) – the number of samples per channel inside data body</p></li>
    192 <li><p><strong>channel_count</strong> (<em>int</em>) – number of channels (e.g. mono, stereo or even more)</p></li>
     147<li><p><strong>number_of_samples</strong> (<em>int</em>) – the number of samples per channel inside data body</p></li>
     148<li><p><strong>number_of_channels</strong> (<em>int</em>) – number of channels (e.g. mono, stereo or even more)</p></li>
    193149<li><p><strong>sample_size</strong> (<em>int</em>) – sample size in bytes (1, 2 or 4 bytes)</p></li>
    194150</ul>
     
    205161<dl class="py method">
    206162<dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_body">
    207 <span class="sig-name descname"><span class="pre">read_next_global_frame_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">global_frame_header</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.read_next_global_frame_body"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_body" title="Permalink to this definition">¶</a></dt>
    208 <dd></dd></dl>
     163<span class="sig-name descname"><span class="pre">read_next_global_frame_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_header_length</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.read_next_global_frame_body"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_body" title="Permalink to this definition">¶</a></dt>
     164<dd><p>I return the next global frame body read from current position in file.</p>
     165<dl class="field-list simple">
     166<dt class="field-odd">Parameters</dt>
     167<dd class="field-odd"><p><strong>global_frame_header</strong> – </p>
     168</dd>
     169</dl>
     170</dd></dl>
    209171
    210172<dl class="py method">
     
    239201</dd></dl>
    240202
    241 <dl class="py method">
    242 <dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_header">
    243 <span class="sig-name descname"><span class="pre">read_next_global_frame_header</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.read_next_global_frame_header"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_header" title="Permalink to this definition">¶</a></dt>
    244 <dd><p>I return the next global frame header read from current position in file.</p>
    245 <dl class="field-list simple">
    246 <dt class="field-odd">Returns</dt>
    247 <dd class="field-odd"><p>the next global frame header or None if incomplete</p>
    248 </dd>
    249 <dt class="field-even">Return type</dt>
    250 <dd class="field-even"><p><a class="reference internal" href="#ammosreader.AmmosGlobalFrameHeader.AmmosGlobalFrameHeader" title="ammosreader.AmmosGlobalFrameHeader.AmmosGlobalFrameHeader">AmmosGlobalFrameHeader</a></p>
    251 </dd>
    252 </dl>
    253 </dd></dl>
    254 
    255 <dl class="py method">
    256 <dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_single_frame">
    257 <span class="sig-name descname"><span class="pre">read_next_single_frame</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.read_next_single_frame"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_single_frame" title="Permalink to this definition">¶</a></dt>
    258 <dd></dd></dl>
    259 
    260 <dl class="py method">
    261 <dt class="sig sig-object py" id="ammosreader.AmmosAudioReader.AmmosAudioReader.rewind_to_start">
    262 <span class="sig-name descname"><span class="pre">rewind_to_start</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioReader.html#AmmosAudioReader.rewind_to_start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioReader.AmmosAudioReader.rewind_to_start" title="Permalink to this definition">¶</a></dt>
    263 <dd><p>I set the file pointer to the beginning of the file for the next operation.</p>
    264 </dd></dl>
    265 
    266203</dd></dl>
    267204
     
    269206<section id="module-ammosreader.AmmosAudioSocketReader">
    270207<span id="ammosreader-ammosaudiosocketreader-module"></span><h2>ammosreader.AmmosAudioSocketReader module<a class="headerlink" href="#module-ammosreader.AmmosAudioSocketReader" title="Permalink to this headline">¶</a></h2>
     208<p>I read a Ammos datastream from a socket.</p>
    271209<dl class="py class">
    272210<dt class="sig sig-object py" id="ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader">
    273 <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosAudioSocketReader.</span></span><span class="sig-name descname"><span class="pre">AmmosAudioSocketReader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">socket</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">socket.socket</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioSocketReader.html#AmmosAudioSocketReader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader" title="Permalink to this definition">¶</a></dt>
     211<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosAudioSocketReader.</span></span><span class="sig-name descname"><span class="pre">AmmosAudioSocketReader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">socket</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">socket.socket</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">debug</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosAudioSocketReader.html#AmmosAudioSocketReader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader" title="Permalink to this definition">¶</a></dt>
    274212<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
    275213<dl class="py method">
    276214<dt class="sig sig-object py" id="ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader.read_next_frame">
    277 <span class="sig-name descname"><span class="pre">read_next_frame</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">bytearray</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="_modules/ammosreader/AmmosAudioSocketReader.html#AmmosAudioSocketReader.read_next_frame"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader.read_next_frame" title="Permalink to this definition">¶</a></dt>
    278 <dd><p>reads the next ammos audio frame</p>
    279 <dl class="field-list simple">
    280 <dt class="field-odd">Returns</dt>
    281 <dd class="field-odd"><p>contains the audio data and the sample rate</p>
    282 </dd>
    283 <dt class="field-even">Return type</dt>
    284 <dd class="field-even"><p>tuple[bytearray, int]</p>
     215<span class="sig-name descname"><span class="pre">read_next_frame</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">&#x2192;</span> <span class="sig-return-typehint"><span class="pre">tuple</span><span class="p"><span class="pre">[</span></span><span class="pre">numpy.ndarray</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">int</span><span class="p"><span class="pre">]</span></span></span></span><a class="reference internal" href="_modules/ammosreader/AmmosAudioSocketReader.html#AmmosAudioSocketReader.read_next_frame"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader.read_next_frame" title="Permalink to this definition">¶</a></dt>
     216<dd><p>Reads the next ammos audio frame from socket</p>
     217<dl class="field-list simple">
     218<dt class="field-odd">Raises</dt>
     219<dd class="field-odd"><p><strong>TimeoutError</strong> – Raisees TimeoutError if the socket does not serve data anymore</p>
     220</dd>
     221<dt class="field-even">Returns</dt>
     222<dd class="field-even"><p>Contains the audio data and the sample rate</p>
     223</dd>
     224<dt class="field-odd">Return type</dt>
     225<dd class="field-odd"><p>tuple[np.ndarray, int]</p>
    285226</dd>
    286227</dl>
     
    308249
    309250<dl class="py method">
     251<dt class="sig sig-object py" id="ammosreader.AmmosContainer.AmmosContainer.data_only">
     252<span class="sig-name descname"><span class="pre">data_only</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosContainer.html#AmmosContainer.data_only"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosContainer.AmmosContainer.data_only" title="Permalink to this definition">¶</a></dt>
     253<dd></dd></dl>
     254
     255<dl class="py method">
    310256<dt class="sig sig-object py" id="ammosreader.AmmosContainer.AmmosContainer.frequencies">
    311257<span class="sig-name descname"><span class="pre">frequencies</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosContainer.html#AmmosContainer.frequencies"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosContainer.AmmosContainer.frequencies" title="Permalink to this definition">¶</a></dt>
    312258<dd></dd></dl>
    313259
     260<dl class="py property">
     261<dt class="sig sig-object py" id="ammosreader.AmmosContainer.AmmosContainer.global_frames">
     262<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">global_frames</span></span><a class="headerlink" href="#ammosreader.AmmosContainer.AmmosContainer.global_frames" title="Permalink to this definition">¶</a></dt>
     263<dd></dd></dl>
     264
     265<dl class="py property">
     266<dt class="sig sig-object py" id="ammosreader.AmmosContainer.AmmosContainer.name">
     267<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">name</span></span><a class="headerlink" href="#ammosreader.AmmosContainer.AmmosContainer.name" title="Permalink to this definition">¶</a></dt>
     268<dd></dd></dl>
     269
    314270<dl class="py method">
    315271<dt class="sig sig-object py" id="ammosreader.AmmosContainer.AmmosContainer.size">
     
    322278<section id="module-ammosreader.AmmosExtendedAudioDataHeader">
    323279<span id="ammosreader-ammosextendedaudiodataheader-module"></span><h2>ammosreader.AmmosExtendedAudioDataHeader module<a class="headerlink" href="#module-ammosreader.AmmosExtendedAudioDataHeader" title="Permalink to this headline">¶</a></h2>
     280<p>I provide an Ammos extended data header for audio data frames.</p>
    324281<dl class="py class">
    325282<dt class="sig sig-object py" id="ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader">
    326 <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosExtendedAudioDataHeader.</span></span><span class="sig-name descname"><span class="pre">AmmosExtendedAudioDataHeader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sample_rate</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">frequency</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">demod_bandwidth</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">demod_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_count</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_count</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_size</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timestamp</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosExtendedAudioDataHeader.html#AmmosExtendedAudioDataHeader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader" title="Permalink to this definition">¶</a></dt>
    327 <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     283<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosExtendedAudioDataHeader.</span></span><span class="sig-name descname"><span class="pre">AmmosExtendedAudioDataHeader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">sample_rate</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">frequency</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">demod_bandwidth</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">demod_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number_of_samples</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">number_of_channels</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_size</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timestamp</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosExtendedAudioDataHeader.html#AmmosExtendedAudioDataHeader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader" title="Permalink to this definition">¶</a></dt>
     284<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     285<dl class="py attribute">
     286<dt class="sig sig-object py" id="ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader.HEADER_SIZE">
     287<span class="sig-name descname"><span class="pre">HEADER_SIZE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">44</span></em><a class="headerlink" href="#ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader.HEADER_SIZE" title="Permalink to this definition">¶</a></dt>
     288<dd></dd></dl>
     289
    328290<dl class="py method">
    329291<dt class="sig sig-object py" id="ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader.from_bytes">
    330292<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">bytes</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosExtendedAudioDataHeader.html#AmmosExtendedAudioDataHeader.from_bytes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader.from_bytes" title="Permalink to this definition">¶</a></dt>
    331 <dd></dd></dl>
     293<dd><p>I return a new AMMOS extended data header for audio frames built from given bytes.</p>
     294</dd></dl>
    332295
    333296</dd></dl>
     
    340303<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosExtendedIFDataHeader.</span></span><span class="sig-name descname"><span class="pre">AmmosExtendedIFDataHeader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">size</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">block_count</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">block_length</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timestamp</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source_state</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">frequency</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bandwidth</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_rate</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">interpolation</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">decimation</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">voltage_ref</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">stream_start</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_counter</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">antenna_correction</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosExtendedIFDataHeader.html#AmmosExtendedIFDataHeader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader" title="Permalink to this definition">¶</a></dt>
    341304<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     305<p>I implement an Ammos extended data header for IF data frames.</p>
     306<dl class="py attribute">
     307<dt class="sig sig-object py" id="ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader.HEADER_SIZE">
     308<span class="sig-name descname"><span class="pre">HEADER_SIZE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">76</span></em><a class="headerlink" href="#ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader.HEADER_SIZE" title="Permalink to this definition">¶</a></dt>
     309<dd></dd></dl>
     310
    342311<dl class="py method">
    343312<dt class="sig sig-object py" id="ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader.from_bytes">
    344313<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">bytes</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosExtendedIFDataHeader.html#AmmosExtendedIFDataHeader.from_bytes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader.from_bytes" title="Permalink to this definition">¶</a></dt>
    345 <dd></dd></dl>
     314<dd><p>I return an AMMOS extended data header from given bytes.</p>
     315</dd></dl>
    346316
    347317</dd></dl>
     
    350320<section id="module-ammosreader.AmmosGlobalFrameBody">
    351321<span id="ammosreader-ammosglobalframebody-module"></span><h2>ammosreader.AmmosGlobalFrameBody module<a class="headerlink" href="#module-ammosreader.AmmosGlobalFrameBody" title="Permalink to this headline">¶</a></h2>
     322<p>I provide an AMMOS global frame body.</p>
    352323<dl class="py class">
    353324<dt class="sig sig-object py" id="ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody">
    354325<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosGlobalFrameBody.</span></span><span class="sig-name descname"><span class="pre">AmmosGlobalFrameBody</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_header</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_body</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosGlobalFrameBody.html#AmmosGlobalFrameBody"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody" title="Permalink to this definition">¶</a></dt>
    355326<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     327<p>I implement an AMMOS global frame body.</p>
     328<p>AMMOS frames can store data of various types.
     329The data is described in the data header.
     330The raw data is then stored in the data body.</p>
     331<dl class="py property">
     332<dt class="sig sig-object py" id="ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_body">
     333<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">data_body</span></span><a class="headerlink" href="#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_body" title="Permalink to this definition">¶</a></dt>
     334<dd></dd></dl>
     335
    356336<dl class="py method">
    357337<dt class="sig sig-object py" id="ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_bytes_only">
    358338<span class="sig-name descname"><span class="pre">data_bytes_only</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosGlobalFrameBody.html#AmmosGlobalFrameBody.data_bytes_only"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_bytes_only" title="Permalink to this definition">¶</a></dt>
     339<dd></dd></dl>
     340
     341<dl class="py property">
     342<dt class="sig sig-object py" id="ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_header">
     343<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">data_header</span></span><a class="headerlink" href="#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_header" title="Permalink to this definition">¶</a></dt>
    359344<dd></dd></dl>
    360345
     
    390375<dl class="py class">
    391376<dt class="sig sig-object py" id="ammosreader.AmmosIFDataBlock.AmmosIFDataBlock">
    392 <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosIFDataBlock.</span></span><span class="sig-name descname"><span class="pre">AmmosIFDataBlock</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">if_datablock_header</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">if_data</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFDataBlock.html#AmmosIFDataBlock"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFDataBlock.AmmosIFDataBlock" title="Permalink to this definition">¶</a></dt>
    393 <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     377<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosIFDataBlock.</span></span><span class="sig-name descname"><span class="pre">AmmosIFDataBlock</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">header</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFDataBlock.html#AmmosIFDataBlock"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFDataBlock.AmmosIFDataBlock" title="Permalink to this definition">¶</a></dt>
     378<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     379<dl class="py property">
     380<dt class="sig sig-object py" id="ammosreader.AmmosIFDataBlock.AmmosIFDataBlock.data">
     381<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">data</span></span><a class="headerlink" href="#ammosreader.AmmosIFDataBlock.AmmosIFDataBlock.data" title="Permalink to this definition">¶</a></dt>
     382<dd></dd></dl>
     383
     384<dl class="py property">
     385<dt class="sig sig-object py" id="ammosreader.AmmosIFDataBlock.AmmosIFDataBlock.header">
     386<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">header</span></span><a class="headerlink" href="#ammosreader.AmmosIFDataBlock.AmmosIFDataBlock.header" title="Permalink to this definition">¶</a></dt>
     387<dd></dd></dl>
     388
    394389</dd></dl>
    395390
     
    397392<section id="module-ammosreader.AmmosIFDataHeader">
    398393<span id="ammosreader-ammosifdataheader-module"></span><h2>ammosreader.AmmosIFDataHeader module<a class="headerlink" href="#module-ammosreader.AmmosIFDataHeader" title="Permalink to this headline">¶</a></h2>
     394<p>I provide a Ammos data header for IF data frames.</p>
    399395<dl class="py class">
    400396<dt class="sig sig-object py" id="ammosreader.AmmosIFDataHeader.AmmosIFDataHeader">
    401397<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosIFDataHeader.</span></span><span class="sig-name descname"><span class="pre">AmmosIFDataHeader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">block_count</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">block_length</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timestamp</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source_id</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">source_state</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">frequency</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">bandwidth</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sample_rate</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">interpolation</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">decimation</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">voltage_ref</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFDataHeader.html#AmmosIFDataHeader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFDataHeader.AmmosIFDataHeader" title="Permalink to this definition">¶</a></dt>
    402398<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     399<p>I implement an Ammos data header for IF data frames.</p>
     400<dl class="py attribute">
     401<dt class="sig sig-object py" id="ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.HEADER_SIZE">
     402<span class="sig-name descname"><span class="pre">HEADER_SIZE</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">56</span></em><a class="headerlink" href="#ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.HEADER_SIZE" title="Permalink to this definition">¶</a></dt>
     403<dd></dd></dl>
     404
    403405<dl class="py method">
    404406<dt class="sig sig-object py" id="ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.from_bytes">
    405407<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">bytes</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFDataHeader.html#AmmosIFDataHeader.from_bytes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.from_bytes" title="Permalink to this definition">¶</a></dt>
    406 <dd></dd></dl>
    407 
    408 <dl class="py method">
    409 <dt class="sig sig-object py" id="ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.header_size">
    410 <span class="sig-name descname"><span class="pre">header_size</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFDataHeader.html#AmmosIFDataHeader.header_size"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.header_size" title="Permalink to this definition">¶</a></dt>
    411 <dd></dd></dl>
     408<dd><p>I return an AMMOS data header from given bytes.</p>
     409</dd></dl>
    412410
    413411</dd></dl>
     
    416414<section id="module-ammosreader.AmmosIFReader">
    417415<span id="ammosreader-ammosifreader-module"></span><h2>ammosreader.AmmosIFReader module<a class="headerlink" href="#module-ammosreader.AmmosIFReader" title="Permalink to this headline">¶</a></h2>
     416<p>I provide a specialized Ammos Reader for IF data.</p>
    418417<dl class="py class">
    419418<dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader">
    420419<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.AmmosIFReader.</span></span><span class="sig-name descname"><span class="pre">AmmosIFReader</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">file_name</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader" title="Permalink to this definition">¶</a></dt>
    421 <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
    422 <dl class="py method">
    423 <dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.add_tag">
    424 <span class="sig-name descname"><span class="pre">add_tag</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">tag</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.add_tag"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.add_tag" title="Permalink to this definition">¶</a></dt>
    425 <dd></dd></dl>
    426 
    427 <dl class="py method">
    428 <dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.read_all_frames_left">
    429 <span class="sig-name descname"><span class="pre">read_all_frames_left</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.read_all_frames_left"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.read_all_frames_left" title="Permalink to this definition">¶</a></dt>
     420<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">ammosreader.AbstractAmmosReader.AbstractAmmosReader</span></code></p>
     421<p>I read the IF data embedded in an R&amp;S AMMOS recording.</p>
     422<dl class="py method">
     423<dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.data">
     424<span class="sig-name descname"><span class="pre">data</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.data"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.data" title="Permalink to this definition">¶</a></dt>
    430425<dd></dd></dl>
    431426
    432427<dl class="py method">
    433428<dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body">
    434 <span class="sig-name descname"><span class="pre">read_next_global_frame_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">global_frame_header</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.read_next_global_frame_body"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body" title="Permalink to this definition">¶</a></dt>
    435 <dd></dd></dl>
     429<span class="sig-name descname"><span class="pre">read_next_global_frame_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_header_length</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.read_next_global_frame_body"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body" title="Permalink to this definition">¶</a></dt>
     430<dd><p>I return the next global frame body read from current position in file.</p>
     431<dl class="field-list simple">
     432<dt class="field-odd">Parameters</dt>
     433<dd class="field-odd"><p><strong>data_header_length</strong> (<em>int</em>) – the length of the data header</p>
     434</dd>
     435</dl>
     436</dd></dl>
    436437
    437438<dl class="py method">
     
    443444<dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body_extended_data_header">
    444445<span class="sig-name descname"><span class="pre">read_next_global_frame_body_extended_data_header</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.read_next_global_frame_body_extended_data_header"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_body_extended_data_header" title="Permalink to this definition">¶</a></dt>
    445 <dd></dd></dl>
    446 
    447 <dl class="py method">
    448 <dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_header">
    449 <span class="sig-name descname"><span class="pre">read_next_global_frame_header</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.read_next_global_frame_header"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_header" title="Permalink to this definition">¶</a></dt>
    450 <dd></dd></dl>
    451 
    452 <dl class="py method">
    453 <dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.read_next_if_data_blocks">
    454 <span class="sig-name descname"><span class="pre">read_next_if_data_blocks</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">n</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">length</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.read_next_if_data_blocks"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.read_next_if_data_blocks" title="Permalink to this definition">¶</a></dt>
    455 <dd></dd></dl>
    456 
    457 <dl class="py method">
    458 <dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.read_next_single_frame">
    459 <span class="sig-name descname"><span class="pre">read_next_single_frame</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.read_next_single_frame"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.read_next_single_frame" title="Permalink to this definition">¶</a></dt>
    460 <dd></dd></dl>
    461 
    462 <dl class="py method">
    463 <dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.rewind_to_start">
    464 <span class="sig-name descname"><span class="pre">rewind_to_start</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.rewind_to_start"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.rewind_to_start" title="Permalink to this definition">¶</a></dt>
    465 <dd></dd></dl>
     446<dd><p>I return the next global frame body extended data header from current position in file.</p>
     447<dl class="field-list simple">
     448<dt class="field-odd">Returns</dt>
     449<dd class="field-odd"><p>the next Ammos Extended IF data header or None if incomplete</p>
     450</dd>
     451<dt class="field-even">Return type</dt>
     452<dd class="field-even"><p><a class="reference internal" href="#ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader" title="ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader">AmmosExtendedIFDataHeader</a></p>
     453</dd>
     454</dl>
     455</dd></dl>
     456
     457<dl class="py method">
     458<dt class="sig sig-object py" id="ammosreader.AmmosIFReader.AmmosIFReader.read_next_if_data_body">
     459<span class="sig-name descname"><span class="pre">read_next_if_data_body</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">number_of_data_blocks</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">data_length</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/AmmosIFReader.html#AmmosIFReader.read_next_if_data_body"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.AmmosIFReader.AmmosIFReader.read_next_if_data_body" title="Permalink to this definition">¶</a></dt>
     460<dd><p>I return the next data body read from current position in file.</p>
     461<dl class="field-list simple">
     462<dt class="field-odd">Parameters</dt>
     463<dd class="field-odd"><ul class="simple">
     464<li><p><strong>number_of_data_blocks</strong> (<em>int</em>) – the number of data blocks inside the body</p></li>
     465<li><p><strong>data_length</strong> (<em>int</em>) – the length of the raw data inside a single block</p></li>
     466</ul>
     467</dd>
     468</dl>
     469</dd></dl>
    466470
    467471</dd></dl>
     
    479483<dd></dd></dl>
    480484
     485<dl class="py property">
     486<dt class="sig sig-object py" id="ammosreader.AmmosSingleFrame.AmmosSingleFrame.global_frame_body">
     487<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">global_frame_body</span></span><a class="headerlink" href="#ammosreader.AmmosSingleFrame.AmmosSingleFrame.global_frame_body" title="Permalink to this definition">¶</a></dt>
     488<dd></dd></dl>
     489
     490<dl class="py property">
     491<dt class="sig sig-object py" id="ammosreader.AmmosSingleFrame.AmmosSingleFrame.global_frame_header">
     492<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">global_frame_header</span></span><a class="headerlink" href="#ammosreader.AmmosSingleFrame.AmmosSingleFrame.global_frame_header" title="Permalink to this definition">¶</a></dt>
     493<dd></dd></dl>
     494
    481495<dl class="py method">
    482496<dt class="sig sig-object py" id="ammosreader.AmmosSingleFrame.AmmosSingleFrame.size_correct">
     
    503517<section id="module-ammosreader.PDW">
    504518<span id="ammosreader-pdw-module"></span><h2>ammosreader.PDW module<a class="headerlink" href="#module-ammosreader.PDW" title="Permalink to this headline">¶</a></h2>
     519<p>I store the information of a single PDW block.</p>
    505520<dl class="py class">
    506521<dt class="sig sig-object py" id="ammosreader.PDW.PDW">
     
    511526<dt class="sig sig-object py" id="ammosreader.PDW.PDW.__init__">
    512527<span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">time_of_arrival</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pdw_format_identifier</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">center_frequency</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_valid</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">is_pulse</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">level_unit</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">signal_start_missing</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">signal_end_missing</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pulse_width</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">frequency_shift_or_bandwidth</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">pulse_level_or_pulse_field_strength</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">region_of_interest</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">azimuth_confidence</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">modulation</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">sector</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">polarity</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">df_quality</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">elevation</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">azimuth</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PDW.html#PDW.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PDW.PDW.__init__" title="Permalink to this definition">¶</a></dt>
    513 <dd><dl class="field-list simple">
     528<dd><p>I return an instance of an Pulse Data word.</p>
     529<dl class="field-list simple">
    514530<dt class="field-odd">Parameters</dt>
    515531<dd class="field-odd"><ul class="simple">
     
    524540<li><p><strong>pulse_width</strong> (<em>Integer</em>) – pulse width in nanoseconds - Zero if no valid pulse detected</p></li>
    525541<li><p><strong>frequency_shift_or_bandwidth</strong> (<em>Integer</em>) – Value in KHz - Value set to 1048575 means Unknown</p></li>
    526 <li><p><strong>pulse_level_or_pulse_field_strength</strong> (<em>Float</em>) – Pulse level or Pulse Field Strength depending on level_unit          (-200.0…200.0) in 0.1 steps / minus 204.8 means no valid level detected</p></li>
     542<li><p><strong>pulse_level_or_pulse_field_strength</strong> (<em>Float</em>) – Pulse level or Pulse Field Strength depending on level_unit (-200.0…200.0) in 0.1 steps / minus 204.8 means no valid level detected</p></li>
    527543<li><p><strong>region_of_interest</strong> (<em>Boolean</em>) – Marks if signal is from region of interest</p></li>
    528544<li><p><strong>azimuth_confidence</strong> (<em>Float</em>) – degree in steps of 0.1 (0.0-6.2) / 6.3 means confidence unknown</p></li>
     
    531547<li><p><strong>polarity</strong> (<em>String</em>) – Horizontal, Vertical, Clockwise, Counter clockwise</p></li>
    532548<li><p><strong>df_quality</strong> (<em>Integer</em>) – Direction finding quality in percent (0-100) - Zero means unknown</p></li>
    533 <li><p><strong>elevation</strong> (<em>Float</em>) – elevation of incoming signal (from -90 to 90 degree) in steps of 0.1 degree         minus 102.4 means unknown</p></li>
    534 <li><p><strong>azimuth</strong> (<em>Float</em>) – azimuth of incoming signal (from 0 to 359.9 degree) in steps of 0.1 degree         plus 409.5 means unknown</p></li>
    535 <li><p><strong>channel</strong> (<em>Integer</em>) – detecting channel (0-16) - Zero means unknown</p></li>
     549<li><p><strong>elevation</strong> – elevation of incoming signal (from -90 to 90 degree) in steps of 0.1 degree </p></li>
    536550</ul>
    537551</dd>
     552</dl>
     553<p>minus 102.4 means unknown
     554:type elevation: Float
     555:param azimuth: azimuth of incoming signal (from 0 to 359.9 degree) in steps of 0.1 degree plus 409.5 means unknown
     556:type azimuth: Float
     557:param channel: detecting channel (0-16) - Zero means unknown
     558:type channel: Integer
     559:return: An instance of class PDW with attributes set according to the data of a data body
     560:rtype: PDW</p>
     561</dd></dl>
     562
     563<dl class="py method">
     564<dt class="sig sig-object py" id="ammosreader.PDW.PDW.from_bytes">
     565<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">byte_string</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PDW.html#PDW.from_bytes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PDW.PDW.from_bytes" title="Permalink to this definition">¶</a></dt>
     566<dd><p>I create an instance of class PDW from data body (8 * 32 bits).</p>
     567<dl class="field-list simple">
     568<dt class="field-odd">Parameters</dt>
     569<dd class="field-odd"><p><strong>byte_string</strong> (<em>byte string</em>) – a byte string containing a single data body read from a ppdw file</p>
     570</dd>
    538571<dt class="field-even">Returns</dt>
    539 <dd class="field-even"><p>An instance of class PDW with attributes set according to the data of a data body</p>
     572<dd class="field-even"><p>an instance of class PDW with attributes set according to the data of a data body</p>
    540573</dd>
    541574<dt class="field-odd">Return type</dt>
     
    546579
    547580<dl class="py method">
    548 <dt class="sig sig-object py" id="ammosreader.PDW.PDW.from_bytes">
    549 <em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_bytes</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">byte_string</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PDW.html#PDW.from_bytes"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PDW.PDW.from_bytes" title="Permalink to this definition">¶</a></dt>
    550 <dd><p>I create an instance of class PDW from data body (8 * 32 bits)</p>
    551 <dl class="field-list simple">
    552 <dt class="field-odd">Parameters</dt>
    553 <dd class="field-odd"><p><strong>byte_string</strong> (<em>byte string</em>) – a byte string containing a single data body read from a ppdw file</p>
    554 </dd>
    555 <dt class="field-even">Returns</dt>
    556 <dd class="field-even"><p>an instance of class PDW with attributes set according to the data of a data body</p>
    557 </dd>
    558 <dt class="field-odd">Return type</dt>
    559 <dd class="field-odd"><p><a class="reference internal" href="#ammosreader.PDW.PDW" title="ammosreader.PDW.PDW">PDW</a></p>
    560 </dd>
    561 </dl>
    562 </dd></dl>
     581<dt class="sig sig-object py" id="ammosreader.PDW.PDW.to_json">
     582<span class="sig-name descname"><span class="pre">to_json</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PDW.html#PDW.to_json"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PDW.PDW.to_json" title="Permalink to this definition">¶</a></dt>
     583<dd></dd></dl>
    563584
    564585</dd></dl>
     
    569590<dl class="py class">
    570591<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer">
    571 <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.PPDWContainer.</span></span><span class="sig-name descname"><span class="pre">PPDWContainer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">signals</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer" title="Permalink to this definition">¶</a></dt>
    572 <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
    573 <p>I store multiple signals imported from one or more .ppdw files</p>
    574 <dl class="py method">
    575 <dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.__init__">
    576 <span class="sig-name descname"><span class="pre">__init__</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">signals</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.__init__"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.__init__" title="Permalink to this definition">¶</a></dt>
     592<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">ammosreader.PPDWContainer.</span></span><span class="sig-name descname"><span class="pre">PPDWContainer</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">signals</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer" title="Permalink to this definition">¶</a></dt>
     593<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
     594<p>I store multiple signals imported from one or more .ppdw files
     595.. automethod:: __init__</p>
     596<dl class="py method">
     597<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.add">
     598<span class="sig-name descname"><span class="pre">add</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">a_pdw</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.add"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.add" title="Permalink to this definition">¶</a></dt>
     599<dd></dd></dl>
     600
     601<dl class="py method">
     602<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.bandwidths">
     603<span class="sig-name descname"><span class="pre">bandwidths</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.bandwidths"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.bandwidths" title="Permalink to this definition">¶</a></dt>
     604<dd></dd></dl>
     605
     606<dl class="py method">
     607<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.center_frequencies">
     608<span class="sig-name descname"><span class="pre">center_frequencies</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.center_frequencies"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.center_frequencies" title="Permalink to this definition">¶</a></dt>
     609<dd></dd></dl>
     610
     611<dl class="py method">
     612<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.channels">
     613<span class="sig-name descname"><span class="pre">channels</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.channels"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.channels" title="Permalink to this definition">¶</a></dt>
     614<dd></dd></dl>
     615
     616<dl class="py method">
     617<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.end_time">
     618<span class="sig-name descname"><span class="pre">end_time</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.end_time"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.end_time" title="Permalink to this definition">¶</a></dt>
     619<dd></dd></dl>
     620
     621<dl class="py method">
     622<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.julian_date_string">
     623<span class="sig-name descname"><span class="pre">julian_date_string</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.julian_date_string"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.julian_date_string" title="Permalink to this definition">¶</a></dt>
     624<dd></dd></dl>
     625
     626<dl class="py method">
     627<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.modulations">
     628<span class="sig-name descname"><span class="pre">modulations</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.modulations"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.modulations" title="Permalink to this definition">¶</a></dt>
     629<dd></dd></dl>
     630
     631<dl class="py method">
     632<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.start_time">
     633<span class="sig-name descname"><span class="pre">start_time</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.start_time"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.start_time" title="Permalink to this definition">¶</a></dt>
     634<dd></dd></dl>
     635
     636<dl class="py method">
     637<dt class="sig sig-object py" id="ammosreader.PPDWContainer.PPDWContainer.to_json">
     638<span class="sig-name descname"><span class="pre">to_json</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/ammosreader/PPDWContainer.html#PPDWContainer.to_json"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#ammosreader.PPDWContainer.PPDWContainer.to_json" title="Permalink to this definition">¶</a></dt>
    577639<dd></dd></dl>
    578640
     
    592654    <p>
    593655      &copy; Copyright 2022, KIDZg.
    594       Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.4.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
     656      Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.5.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
    595657    (Revision )
    596658        </p>
  • doc/html/genindex.html

    reab48d0 r299c79c  
    7171 <a href="#_"><strong>_</strong></a>
    7272 | <a href="#A"><strong>A</strong></a>
     73 | <a href="#B"><strong>B</strong></a>
     74 | <a href="#C"><strong>C</strong></a>
    7375 | <a href="#D"><strong>D</strong></a>
    7476 | <a href="#E"><strong>E</strong></a>
     
    7779 | <a href="#H"><strong>H</strong></a>
    7880 | <a href="#I"><strong>I</strong></a>
     81 | <a href="#J"><strong>J</strong></a>
    7982 | <a href="#M"><strong>M</strong></a>
     83 | <a href="#N"><strong>N</strong></a>
    8084 | <a href="#P"><strong>P</strong></a>
    8185 | <a href="#R"><strong>R</strong></a>
    8286 | <a href="#S"><strong>S</strong></a>
     87 | <a href="#T"><strong>T</strong></a>
    8388 
    8489</div>
     
    8792  <td style="width: 33%; vertical-align: top;"><ul>
    8893      <li><a href="ammosreader.html#ammosreader.PDW.PDW.__init__">__init__() (ammosreader.PDW.PDW method)</a>
    89 
    90       <ul>
    91         <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.__init__">(ammosreader.PPDWContainer.PPDWContainer method)</a>
    92 </li>
    93       </ul></li>
     94</li>
    9495  </ul></td>
    9596</tr></table>
     
    9899<table style="width: 100%" class="indextable genindextable"><tr>
    99100  <td style="width: 33%; vertical-align: top;"><ul>
     101      <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.add">add() (ammosreader.PPDWContainer.PPDWContainer method)</a>
     102</li>
    100103      <li><a href="ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.add_frame">add_frame() (ammosreader.AmmosContainer.AmmosContainer method)</a>
    101104</li>
    102       <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.add_tag">add_tag() (ammosreader.AmmosAudioReader.AmmosAudioReader method)</a>
    103 
    104       <ul>
    105         <li><a href="ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.add_tag">(ammosreader.AmmosContainer.AmmosContainer method)</a>
    106 </li>
    107         <li><a href="ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.add_tag">(ammosreader.AmmosIFReader.AmmosIFReader method)</a>
    108 </li>
    109       </ul></li>
     105      <li><a href="ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.add_tag">add_tag() (ammosreader.AmmosContainer.AmmosContainer method)</a>
     106</li>
    110107      <li><a href="ammosreader.html#ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader">AmmosAudioDataHeader (class in ammosreader.AmmosAudioDataHeader)</a>
    111108</li>
    112       <li><a href="ammosreader.html#ammosreader.AmmosAudioDataHeader.AmmosAudioDemodType">AmmosAudioDemodType (class in ammosreader.AmmosAudioDataHeader)</a>
    113 </li>
    114109      <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader">AmmosAudioReader (class in ammosreader.AmmosAudioReader)</a>
    115110</li>
     
    160155</li>
    161156      </ul></li>
    162   </ul></td>
    163   <td style="width: 33%; vertical-align: top;"><ul>
    164157      <li>
    165158    ammosreader.AmmosContainer
     
    169162</li>
    170163      </ul></li>
     164  </ul></td>
     165  <td style="width: 33%; vertical-align: top;"><ul>
    171166      <li>
    172167    ammosreader.AmmosExtendedAudioDataHeader
     
    251246</tr></table>
    252247
     248<h2 id="B">B</h2>
     249<table style="width: 100%" class="indextable genindextable"><tr>
     250  <td style="width: 33%; vertical-align: top;"><ul>
     251      <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.bandwidths">bandwidths() (ammosreader.PPDWContainer.PPDWContainer method)</a>
     252</li>
     253  </ul></td>
     254</tr></table>
     255
     256<h2 id="C">C</h2>
     257<table style="width: 100%" class="indextable genindextable"><tr>
     258  <td style="width: 33%; vertical-align: top;"><ul>
     259      <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.center_frequencies">center_frequencies() (ammosreader.PPDWContainer.PPDWContainer method)</a>
     260</li>
     261  </ul></td>
     262  <td style="width: 33%; vertical-align: top;"><ul>
     263      <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.channels">channels() (ammosreader.PPDWContainer.PPDWContainer method)</a>
     264</li>
     265  </ul></td>
     266</tr></table>
     267
    253268<h2 id="D">D</h2>
    254269<table style="width: 100%" class="indextable genindextable"><tr>
    255270  <td style="width: 33%; vertical-align: top;"><ul>
    256       <li><a href="ammosreader.html#ammosreader.AmmosSingleFrame.AmmosSingleFrame.data">data() (ammosreader.AmmosSingleFrame.AmmosSingleFrame method)</a>
    257 </li>
    258   </ul></td>
    259   <td style="width: 33%; vertical-align: top;"><ul>
     271      <li><a href="ammosreader.html#ammosreader.AmmosIFDataBlock.AmmosIFDataBlock.data">data (ammosreader.AmmosIFDataBlock.AmmosIFDataBlock property)</a>
     272</li>
     273      <li><a href="ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.data">data() (ammosreader.AmmosIFReader.AmmosIFReader method)</a>
     274
     275      <ul>
     276        <li><a href="ammosreader.html#ammosreader.AmmosSingleFrame.AmmosSingleFrame.data">(ammosreader.AmmosSingleFrame.AmmosSingleFrame method)</a>
     277</li>
     278      </ul></li>
     279  </ul></td>
     280  <td style="width: 33%; vertical-align: top;"><ul>
     281      <li><a href="ammosreader.html#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_body">data_body (ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody property)</a>
     282</li>
    260283      <li><a href="ammosreader.html#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_bytes_only">data_bytes_only() (ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody method)</a>
    261284</li>
     285      <li><a href="ammosreader.html#ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody.data_header">data_header (ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody property)</a>
     286</li>
     287      <li><a href="ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.data_only">data_only() (ammosreader.AmmosContainer.AmmosContainer method)</a>
     288</li>
    262289  </ul></td>
    263290</tr></table>
     
    266293<table style="width: 100%" class="indextable genindextable"><tr>
    267294  <td style="width: 33%; vertical-align: top;"><ul>
    268       <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.EXTENDED_AUDIO_DATA_HEADER_SIZE">EXTENDED_AUDIO_DATA_HEADER_SIZE (ammosreader.AmmosAudioReader.AmmosAudioReader attribute)</a>
     295      <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.end_time">end_time() (ammosreader.PPDWContainer.PPDWContainer method)</a>
    269296</li>
    270297  </ul></td>
     
    298325<table style="width: 100%" class="indextable genindextable"><tr>
    299326  <td style="width: 33%; vertical-align: top;"><ul>
    300       <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.GLOBAL_HEADER_SIZE">GLOBAL_HEADER_SIZE (ammosreader.AmmosAudioReader.AmmosAudioReader attribute)</a>
     327      <li><a href="ammosreader.html#ammosreader.AmmosSingleFrame.AmmosSingleFrame.global_frame_body">global_frame_body (ammosreader.AmmosSingleFrame.AmmosSingleFrame property)</a>
     328</li>
     329  </ul></td>
     330  <td style="width: 33%; vertical-align: top;"><ul>
     331      <li><a href="ammosreader.html#ammosreader.AmmosSingleFrame.AmmosSingleFrame.global_frame_header">global_frame_header (ammosreader.AmmosSingleFrame.AmmosSingleFrame property)</a>
     332</li>
     333      <li><a href="ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.global_frames">global_frames (ammosreader.AmmosContainer.AmmosContainer property)</a>
    301334</li>
    302335  </ul></td>
     
    306339<table style="width: 100%" class="indextable genindextable"><tr>
    307340  <td style="width: 33%; vertical-align: top;"><ul>
    308       <li><a href="ammosreader.html#ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.header_size">header_size() (ammosreader.AmmosIFDataHeader.AmmosIFDataHeader method)</a>
    309 </li>
     341      <li><a href="ammosreader.html#ammosreader.AmmosIFDataBlock.AmmosIFDataBlock.header">header (ammosreader.AmmosIFDataBlock.AmmosIFDataBlock property)</a>
     342</li>
     343      <li><a href="ammosreader.html#ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader.HEADER_SIZE">HEADER_SIZE (ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader attribute)</a>
     344
     345      <ul>
     346        <li><a href="ammosreader.html#ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader.HEADER_SIZE">(ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader attribute)</a>
     347</li>
     348        <li><a href="ammosreader.html#ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader.HEADER_SIZE">(ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader attribute)</a>
     349</li>
     350        <li><a href="ammosreader.html#ammosreader.AmmosIFDataHeader.AmmosIFDataHeader.HEADER_SIZE">(ammosreader.AmmosIFDataHeader.AmmosIFDataHeader attribute)</a>
     351</li>
     352      </ul></li>
    310353  </ul></td>
    311354</tr></table>
     
    319362</tr></table>
    320363
     364<h2 id="J">J</h2>
     365<table style="width: 100%" class="indextable genindextable"><tr>
     366  <td style="width: 33%; vertical-align: top;"><ul>
     367      <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.julian_date_string">julian_date_string() (ammosreader.PPDWContainer.PPDWContainer method)</a>
     368</li>
     369  </ul></td>
     370</tr></table>
     371
    321372<h2 id="M">M</h2>
    322373<table style="width: 100%" class="indextable genindextable"><tr>
     
    324375      <li><a href="ammosreader.html#ammosreader.AmmosGlobalFrameHeader.AmmosGlobalFrameHeader.MAGIC_WORD">MAGIC_WORD (ammosreader.AmmosGlobalFrameHeader.AmmosGlobalFrameHeader attribute)</a>
    325376</li>
    326       <li><a href="ammosreader.html#ammosreader.AmmosAudioDataHeader.AmmosAudioDemodType.mapping">mapping (ammosreader.AmmosAudioDataHeader.AmmosAudioDemodType property)</a>
     377      <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.modulations">modulations() (ammosreader.PPDWContainer.PPDWContainer method)</a>
    327378</li>
    328379      <li>
     
    366417</tr></table>
    367418
     419<h2 id="N">N</h2>
     420<table style="width: 100%" class="indextable genindextable"><tr>
     421  <td style="width: 33%; vertical-align: top;"><ul>
     422      <li><a href="ammosreader.html#ammosreader.AmmosContainer.AmmosContainer.name">name (ammosreader.AmmosContainer.AmmosContainer property)</a>
     423</li>
     424  </ul></td>
     425</tr></table>
     426
    368427<h2 id="P">P</h2>
    369428<table style="width: 100%" class="indextable genindextable"><tr>
    370429  <td style="width: 33%; vertical-align: top;"><ul>
     430      <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.pcm_for_channel">pcm_for_channel() (ammosreader.AmmosAudioReader.AmmosAudioReader method)</a>
     431</li>
     432  </ul></td>
     433  <td style="width: 33%; vertical-align: top;"><ul>
    371434      <li><a href="ammosreader.html#ammosreader.PDW.PDW">PDW (class in ammosreader.PDW)</a>
    372435</li>
    373   </ul></td>
    374   <td style="width: 33%; vertical-align: top;"><ul>
    375436      <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer">PPDWContainer (class in ammosreader.PPDWContainer)</a>
    376437</li>
     
    381442<table style="width: 100%" class="indextable genindextable"><tr>
    382443  <td style="width: 33%; vertical-align: top;"><ul>
    383       <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_all_frames_left">read_all_frames_left() (ammosreader.AmmosAudioReader.AmmosAudioReader method)</a>
    384 
    385       <ul>
    386         <li><a href="ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_all_frames_left">(ammosreader.AmmosIFReader.AmmosIFReader method)</a>
    387 </li>
    388       </ul></li>
    389444      <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_audio_data_body">read_next_audio_data_body() (ammosreader.AmmosAudioReader.AmmosAudioReader method)</a>
    390445</li>
     
    397452</li>
    398453      </ul></li>
     454  </ul></td>
     455  <td style="width: 33%; vertical-align: top;"><ul>
    399456      <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_body_data_header">read_next_global_frame_body_data_header() (ammosreader.AmmosAudioReader.AmmosAudioReader method)</a>
    400457
     
    403460</li>
    404461      </ul></li>
    405   </ul></td>
    406   <td style="width: 33%; vertical-align: top;"><ul>
    407462      <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_body_extended_data_header">read_next_global_frame_body_extended_data_header() (ammosreader.AmmosAudioReader.AmmosAudioReader method)</a>
    408463
     
    411466</li>
    412467      </ul></li>
    413       <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_global_frame_header">read_next_global_frame_header() (ammosreader.AmmosAudioReader.AmmosAudioReader method)</a>
    414 
    415       <ul>
    416         <li><a href="ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_global_frame_header">(ammosreader.AmmosIFReader.AmmosIFReader method)</a>
    417 </li>
    418       </ul></li>
    419       <li><a href="ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_if_data_blocks">read_next_if_data_blocks() (ammosreader.AmmosIFReader.AmmosIFReader method)</a>
    420 </li>
    421       <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.read_next_single_frame">read_next_single_frame() (ammosreader.AmmosAudioReader.AmmosAudioReader method)</a>
    422 
    423       <ul>
    424         <li><a href="ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_single_frame">(ammosreader.AmmosIFReader.AmmosIFReader method)</a>
    425 </li>
    426       </ul></li>
    427       <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.rewind_to_start">rewind_to_start() (ammosreader.AmmosAudioReader.AmmosAudioReader method)</a>
    428 
    429       <ul>
    430         <li><a href="ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.rewind_to_start">(ammosreader.AmmosIFReader.AmmosIFReader method)</a>
    431 </li>
    432       </ul></li>
     468      <li><a href="ammosreader.html#ammosreader.AmmosIFReader.AmmosIFReader.read_next_if_data_body">read_next_if_data_body() (ammosreader.AmmosIFReader.AmmosIFReader method)</a>
     469</li>
    433470  </ul></td>
    434471</tr></table>
     
    447484      <li><a href="ammosreader.html#ammosreader.AmmosSingleFrame.AmmosSingleFrame.size_correct">size_correct() (ammosreader.AmmosSingleFrame.AmmosSingleFrame method)</a>
    448485</li>
    449       <li><a href="ammosreader.html#ammosreader.AmmosAudioReader.AmmosAudioReader.STANDARD_AUDIO_DATA_HEADER_SIZE">STANDARD_AUDIO_DATA_HEADER_SIZE (ammosreader.AmmosAudioReader.AmmosAudioReader attribute)</a>
    450 </li>
     486      <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.start_time">start_time() (ammosreader.PPDWContainer.PPDWContainer method)</a>
     487</li>
     488  </ul></td>
     489</tr></table>
     490
     491<h2 id="T">T</h2>
     492<table style="width: 100%" class="indextable genindextable"><tr>
     493  <td style="width: 33%; vertical-align: top;"><ul>
     494      <li><a href="ammosreader.html#ammosreader.PDW.PDW.to_json">to_json() (ammosreader.PDW.PDW method)</a>
     495
     496      <ul>
     497        <li><a href="ammosreader.html#ammosreader.PPDWContainer.PPDWContainer.to_json">(ammosreader.PPDWContainer.PPDWContainer method)</a>
     498</li>
     499      </ul></li>
    451500  </ul></td>
    452501</tr></table>
     
    460509    <p>
    461510      &copy; Copyright 2022, KIDZg.
    462       Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.4.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
     511      Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.5.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
    463512    (Revision )
    464513        </p>
  • doc/html/index.html

    reab48d0 r299c79c  
    105105    <p>
    106106      &copy; Copyright 2022, KIDZg.
    107       Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.4.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
     107      Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.5.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
    108108    (Revision )
    109109        </p>
  • doc/html/modules.html

    reab48d0 r299c79c  
    103103    <p>
    104104      &copy; Copyright 2022, KIDZg.
    105       Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.4.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
     105      Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.5.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
    106106    (Revision )
    107107        </p>
  • doc/html/py-modindex.html

    reab48d0 r299c79c  
    166166    <p>
    167167      &copy; Copyright 2022, KIDZg.
    168       Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.4.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
     168      Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.5.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
    169169    (Revision )
    170170        </p>
  • doc/html/search.html

    reab48d0 r299c79c  
    9393    <p>
    9494      &copy; Copyright 2022, KIDZg.
    95       Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.4.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
     95      Created using <a href="http://www.sphinx-doc.org/">Sphinx</a> 4.5.0 <a href="https://github.com/mga-sphinx/sphinx_adc_theme">ADC Theme</a> .
    9696    (Revision )
    9797        </p>
  • doc/html/searchindex.js

    reab48d0 r299c79c  
    1 Search.setIndex({docnames:["ammosreader","index","modules"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["ammosreader.rst","index.rst","modules.rst"],objects:{"":[[0,0,0,"-","ammosreader"]],"ammosreader.AmmosAudioDataHeader":[[0,1,1,"","AmmosAudioDataHeader"],[0,1,1,"","AmmosAudioDemodType"]],"ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader":[[0,2,1,"","from_bytes"]],"ammosreader.AmmosAudioDataHeader.AmmosAudioDemodType":[[0,3,1,"","mapping"]],"ammosreader.AmmosAudioReader":[[0,1,1,"","AmmosAudioReader"]],"ammosreader.AmmosAudioReader.AmmosAudioReader":[[0,4,1,"","EXTENDED_AUDIO_DATA_HEADER_SIZE"],[0,4,1,"","GLOBAL_HEADER_SIZE"],[0,4,1,"","STANDARD_AUDIO_DATA_HEADER_SIZE"],[0,2,1,"","add_tag"],[0,2,1,"","read_all_frames_left"],[0,2,1,"","read_next_audio_data_body"],[0,2,1,"","read_next_global_frame_body"],[0,2,1,"","read_next_global_frame_body_data_header"],[0,2,1,"","read_next_global_frame_body_extended_data_header"],[0,2,1,"","read_next_global_frame_header"],[0,2,1,"","read_next_single_frame"],[0,2,1,"","rewind_to_start"]],"ammosreader.AmmosAudioSocketReader":[[0,1,1,"","AmmosAudioSocketReader"]],"ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader":[[0,2,1,"","read_next_frame"]],"ammosreader.AmmosContainer":[[0,1,1,"","AmmosContainer"]],"ammosreader.AmmosContainer.AmmosContainer":[[0,2,1,"","add_frame"],[0,2,1,"","add_tag"],[0,2,1,"","frequencies"],[0,2,1,"","size"]],"ammosreader.AmmosExtendedAudioDataHeader":[[0,1,1,"","AmmosExtendedAudioDataHeader"]],"ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader":[[0,2,1,"","from_bytes"]],"ammosreader.AmmosExtendedIFDataHeader":[[0,1,1,"","AmmosExtendedIFDataHeader"]],"ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader":[[0,2,1,"","from_bytes"]],"ammosreader.AmmosGlobalFrameBody":[[0,1,1,"","AmmosGlobalFrameBody"]],"ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody":[[0,2,1,"","data_bytes_only"]],"ammosreader.AmmosGlobalFrameHeader":[[0,1,1,"","AmmosGlobalFrameHeader"]],"ammosreader.AmmosGlobalFrameHeader.AmmosGlobalFrameHeader":[[0,4,1,"","MAGIC_WORD"],[0,2,1,"","from_bytes"],[0,2,1,"","size"]],"ammosreader.AmmosIFDataBlock":[[0,1,1,"","AmmosIFDataBlock"]],"ammosreader.AmmosIFDataHeader":[[0,1,1,"","AmmosIFDataHeader"]],"ammosreader.AmmosIFDataHeader.AmmosIFDataHeader":[[0,2,1,"","from_bytes"],[0,2,1,"","header_size"]],"ammosreader.AmmosIFReader":[[0,1,1,"","AmmosIFReader"]],"ammosreader.AmmosIFReader.AmmosIFReader":[[0,2,1,"","add_tag"],[0,2,1,"","read_all_frames_left"],[0,2,1,"","read_next_global_frame_body"],[0,2,1,"","read_next_global_frame_body_data_header"],[0,2,1,"","read_next_global_frame_body_extended_data_header"],[0,2,1,"","read_next_global_frame_header"],[0,2,1,"","read_next_if_data_blocks"],[0,2,1,"","read_next_single_frame"],[0,2,1,"","rewind_to_start"]],"ammosreader.AmmosSingleFrame":[[0,1,1,"","AmmosSingleFrame"]],"ammosreader.AmmosSingleFrame.AmmosSingleFrame":[[0,2,1,"","data"],[0,2,1,"","size_correct"]],"ammosreader.IQDWTXBlock":[[0,1,1,"","IQDWTXBLOCK"]],"ammosreader.IQDWTXBlock.IQDWTXBLOCK":[[0,2,1,"","from_bytes"]],"ammosreader.PDW":[[0,1,1,"","PDW"]],"ammosreader.PDW.PDW":[[0,2,1,"","__init__"],[0,2,1,"","from_bytes"]],"ammosreader.PPDWContainer":[[0,1,1,"","PPDWContainer"]],"ammosreader.PPDWContainer.PPDWContainer":[[0,2,1,"","__init__"]],ammosreader:[[0,0,0,"-","AmmosAudioDataHeader"],[0,0,0,"-","AmmosAudioReader"],[0,0,0,"-","AmmosAudioSocketReader"],[0,0,0,"-","AmmosContainer"],[0,0,0,"-","AmmosExtendedAudioDataHeader"],[0,0,0,"-","AmmosExtendedIFDataHeader"],[0,0,0,"-","AmmosGlobalFrameBody"],[0,0,0,"-","AmmosGlobalFrameHeader"],[0,0,0,"-","AmmosIFDataBlock"],[0,0,0,"-","AmmosIFDataHeader"],[0,0,0,"-","AmmosIFReader"],[0,0,0,"-","AmmosSingleFrame"],[0,0,0,"-","IQDWTXBlock"],[0,0,0,"-","PDW"],[0,0,0,"-","PPDWContainer"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","property","Python property"],"4":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:property","4":"py:attribute"},terms:{"0":0,"00":0,"01":0,"1":0,"100":0,"102":0,"1048575":0,"15":0,"16":0,"1970":0,"2":0,"200":0,"204":0,"24":0,"3":0,"32":0,"359":0,"36":0,"4":0,"409":0,"44":0,"5":0,"6":0,"726574fb":0,"8":0,"9":0,"90":0,"boolean":0,"byte":0,"class":0,"db\u00b5v":0,"float":0,"import":0,"int":0,"new":0,"return":0,For:0,The:0,__init__:0,access:0,accord:0,add:0,add_fram:0,add_tag:0,after:0,all:0,ammo:0,ammosaudiodatahead:[1,2],ammosaudiodemodtyp:0,ammosaudioread:[1,2],ammosaudiosocketread:[1,2],ammoscontain:[1,2],ammosextendedaudiodatahead:[1,2],ammosextendedifdatahead:[1,2],ammosglobalframebodi:[1,2],ammosglobalframehead:[1,2],ammosifdatablock:[1,2],ammosifdatahead:[1,2],ammosifread:[1,2],ammossinglefram:[1,2],an:0,antenna:0,antenna_correct:0,argument:0,arriv:0,attribut:0,audio:0,azimuth:0,azimuth_confid:0,bandwidth:0,base:0,befor:0,begin:0,bit:0,block:0,block_count:0,block_length:0,bodi:0,byte_str:0,bytearrai:0,center:0,center_frequ:0,channel:0,channel_count:0,classmethod:0,clockwis:0,code:0,confid:0,contain:0,content:[1,2],continu:0,counter:0,creat:0,current:0,d:0,data:0,data_bodi:0,data_bytes_onli:0,data_head:0,data_header_length:0,data_header_s:0,decim:0,degre:0,demod_bandwidth:0,demod_typ:0,depend:0,detect:0,df_qualiti:0,dict:0,dictionari:0,direct:0,e:0,elev:0,embed:0,empti:0,end:0,etc:0,even:0,exampl:0,extend:0,extended_audio_data_header_s:0,field:0,file:0,file_nam:0,find:0,flag:0,fm:0,format:0,frame:0,frame_length:0,frame_typ:0,frequenc:0,frequency_shift_or_bandwidth:0,from:0,from_byt:0,g:0,global:0,global_frame_bodi:0,global_frame_head:0,global_header_s:0,header:0,header_s:0,horizont:0,i:0,if_data:0,if_datablock_head:0,incom:0,incomplet:0,inform:0,initi:0,insid:0,instanc:0,integ:0,interest:0,interpol:0,iq:0,iqdwtxblock:[1,2],is_puls:0,is_valid:0,iter:0,k:0,kei:0,keyword:0,khz:0,kwarg:0,length:0,level:0,level_unit:0,list:0,m:0,magic_word:0,map:0,mark:0,mean:0,minu:0,modul:[1,2],mono:0,more:0,multipl:0,my:0,n:0,name:0,nanosecond:0,next:0,none:0,number:0,object:0,one:0,oper:0,packag:[1,2],pair:0,paramet:0,pars:0,pdw:[1,2],pdw_format:0,pdw_format_identifi:0,per:0,percent:0,plu:0,pointer:0,polar:0,posit:0,ppdw:0,ppdwcontain:[1,2],properti:0,psk:0,puls:0,pulse_level_or_pulse_field_strength:0,pulse_width:0,qualiti:0,r:0,rate:0,reach:0,read:0,read_all_frames_left:0,read_next_audio_data_bodi:0,read_next_fram:0,read_next_global_frame_bodi:0,read_next_global_frame_body_data_head:0,read_next_global_frame_body_extended_data_head:0,read_next_global_frame_head:0,read_next_if_data_block:0,read_next_single_fram:0,record:0,refer:0,region:0,region_of_interest:0,remain:0,reserv:0,rewind_to_start:0,running_frame_numb:0,s:0,sampl:0,sample_count:0,sample_r:0,sample_s:0,sector:0,set:0,signal:0,signal_end_miss:0,signal_start_miss:0,sinc:0,singl:0,size:0,size_correct:0,socket:0,sourc:0,source_id:0,source_st:0,standard_audio_data_header_s:0,start:0,statu:0,step:0,stereo:0,stop:0,store:0,stream_start:0,strength:0,string:0,submodul:[1,2],tag:0,time:0,time_of_arriv:0,timestamp:0,tupl:0,two:0,type:0,unknown:0,until:0,v:0,valid:0,valu:0,vertic:0,via:0,voltage_ref:0,wai:0,wave:0,width:0,zero:0},titles:["ammosreader package","ammosreader","ammosreader"],titleterms:{ammosaudiodatahead:0,ammosaudioread:0,ammosaudiosocketread:0,ammoscontain:0,ammosextendedaudiodatahead:0,ammosextendedifdatahead:0,ammosglobalframebodi:0,ammosglobalframehead:0,ammosifdatablock:0,ammosifdatahead:0,ammosifread:0,ammosread:[0,1,2],ammossinglefram:0,content:0,iqdwtxblock:0,modul:0,packag:0,pdw:0,ppdwcontain:0,submodul:0}})
     1Search.setIndex({docnames:["ammosreader","index","modules"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":5,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.viewcode":1,sphinx:56},filenames:["ammosreader.rst","index.rst","modules.rst"],objects:{"":[[0,0,0,"-","ammosreader"]],"ammosreader.AmmosAudioDataHeader":[[0,1,1,"","AmmosAudioDataHeader"]],"ammosreader.AmmosAudioDataHeader.AmmosAudioDataHeader":[[0,2,1,"","HEADER_SIZE"],[0,3,1,"","from_bytes"]],"ammosreader.AmmosAudioReader":[[0,1,1,"","AmmosAudioReader"]],"ammosreader.AmmosAudioReader.AmmosAudioReader":[[0,3,1,"","pcm_for_channel"],[0,3,1,"","read_next_audio_data_body"],[0,3,1,"","read_next_global_frame_body"],[0,3,1,"","read_next_global_frame_body_data_header"],[0,3,1,"","read_next_global_frame_body_extended_data_header"]],"ammosreader.AmmosAudioSocketReader":[[0,1,1,"","AmmosAudioSocketReader"]],"ammosreader.AmmosAudioSocketReader.AmmosAudioSocketReader":[[0,3,1,"","read_next_frame"]],"ammosreader.AmmosContainer":[[0,1,1,"","AmmosContainer"]],"ammosreader.AmmosContainer.AmmosContainer":[[0,3,1,"","add_frame"],[0,3,1,"","add_tag"],[0,3,1,"","data_only"],[0,3,1,"","frequencies"],[0,4,1,"","global_frames"],[0,4,1,"","name"],[0,3,1,"","size"]],"ammosreader.AmmosExtendedAudioDataHeader":[[0,1,1,"","AmmosExtendedAudioDataHeader"]],"ammosreader.AmmosExtendedAudioDataHeader.AmmosExtendedAudioDataHeader":[[0,2,1,"","HEADER_SIZE"],[0,3,1,"","from_bytes"]],"ammosreader.AmmosExtendedIFDataHeader":[[0,1,1,"","AmmosExtendedIFDataHeader"]],"ammosreader.AmmosExtendedIFDataHeader.AmmosExtendedIFDataHeader":[[0,2,1,"","HEADER_SIZE"],[0,3,1,"","from_bytes"]],"ammosreader.AmmosGlobalFrameBody":[[0,1,1,"","AmmosGlobalFrameBody"]],"ammosreader.AmmosGlobalFrameBody.AmmosGlobalFrameBody":[[0,4,1,"","data_body"],[0,3,1,"","data_bytes_only"],[0,4,1,"","data_header"]],"ammosreader.AmmosGlobalFrameHeader":[[0,1,1,"","AmmosGlobalFrameHeader"]],"ammosreader.AmmosGlobalFrameHeader.AmmosGlobalFrameHeader":[[0,2,1,"","MAGIC_WORD"],[0,3,1,"","from_bytes"],[0,3,1,"","size"]],"ammosreader.AmmosIFDataBlock":[[0,1,1,"","AmmosIFDataBlock"]],"ammosreader.AmmosIFDataBlock.AmmosIFDataBlock":[[0,4,1,"","data"],[0,4,1,"","header"]],"ammosreader.AmmosIFDataHeader":[[0,1,1,"","AmmosIFDataHeader"]],"ammosreader.AmmosIFDataHeader.AmmosIFDataHeader":[[0,2,1,"","HEADER_SIZE"],[0,3,1,"","from_bytes"]],"ammosreader.AmmosIFReader":[[0,1,1,"","AmmosIFReader"]],"ammosreader.AmmosIFReader.AmmosIFReader":[[0,3,1,"","data"],[0,3,1,"","read_next_global_frame_body"],[0,3,1,"","read_next_global_frame_body_data_header"],[0,3,1,"","read_next_global_frame_body_extended_data_header"],[0,3,1,"","read_next_if_data_body"]],"ammosreader.AmmosSingleFrame":[[0,1,1,"","AmmosSingleFrame"]],"ammosreader.AmmosSingleFrame.AmmosSingleFrame":[[0,3,1,"","data"],[0,4,1,"","global_frame_body"],[0,4,1,"","global_frame_header"],[0,3,1,"","size_correct"]],"ammosreader.IQDWTXBlock":[[0,1,1,"","IQDWTXBLOCK"]],"ammosreader.IQDWTXBlock.IQDWTXBLOCK":[[0,3,1,"","from_bytes"]],"ammosreader.PDW":[[0,1,1,"","PDW"]],"ammosreader.PDW.PDW":[[0,3,1,"","__init__"],[0,3,1,"","from_bytes"],[0,3,1,"","to_json"]],"ammosreader.PPDWContainer":[[0,1,1,"","PPDWContainer"]],"ammosreader.PPDWContainer.PPDWContainer":[[0,3,1,"","add"],[0,3,1,"","bandwidths"],[0,3,1,"","center_frequencies"],[0,3,1,"","channels"],[0,3,1,"","end_time"],[0,3,1,"","julian_date_string"],[0,3,1,"","modulations"],[0,3,1,"","start_time"],[0,3,1,"","to_json"]],ammosreader:[[0,0,0,"-","AmmosAudioDataHeader"],[0,0,0,"-","AmmosAudioReader"],[0,0,0,"-","AmmosAudioSocketReader"],[0,0,0,"-","AmmosContainer"],[0,0,0,"-","AmmosExtendedAudioDataHeader"],[0,0,0,"-","AmmosExtendedIFDataHeader"],[0,0,0,"-","AmmosGlobalFrameBody"],[0,0,0,"-","AmmosGlobalFrameHeader"],[0,0,0,"-","AmmosIFDataBlock"],[0,0,0,"-","AmmosIFDataHeader"],[0,0,0,"-","AmmosIFReader"],[0,0,0,"-","AmmosSingleFrame"],[0,0,0,"-","IQDWTXBlock"],[0,0,0,"-","PDW"],[0,0,0,"-","PPDWContainer"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","attribute","Python attribute"],"3":["py","method","Python method"],"4":["py","property","Python property"]},objtypes:{"0":"py:module","1":"py:class","2":"py:attribute","3":"py:method","4":"py:property"},terms:{"0":0,"00":0,"01":0,"1":0,"100":0,"102":0,"1048575":0,"15":0,"16":0,"1970":0,"2":0,"200":0,"204":0,"3":0,"32":0,"359":0,"36":0,"4":0,"409":0,"44":0,"5":0,"56":0,"6":0,"726574fb":0,"76":0,"8":0,"9":0,"90":0,"boolean":0,"byte":0,"class":0,"db\u00b5v":0,"float":0,"import":0,"int":0,"new":0,"return":0,"true":0,IF:0,The:0,__init__:0,a_channel:0,a_pdw:0,abstractammosread:0,access:0,accord:0,add:0,add_fram:0,add_tag:0,after:0,ammo:0,ammosaudiodatahead:[1,2],ammosaudioread:[1,2],ammosaudiosocketread:[1,2],ammoscontain:[1,2],ammosextendedaudiodatahead:[1,2],ammosextendedifdatahead:[1,2],ammosglobalframebodi:[1,2],ammosglobalframehead:[1,2],ammosifdatablock:[1,2],ammosifdatahead:[1,2],ammosifread:[1,2],ammossinglefram:[1,2],an:0,antenna:0,antenna_correct:0,anymor:0,arriv:0,attribut:0,audio:0,automethod:0,azimuth:0,azimuth_confid:0,bandwidth:0,base:0,befor:0,bit:0,block:0,block_count:0,block_length:0,bodi:0,built:0,byte_str:0,can:0,center:0,center_frequ:0,channel:0,classmethod:0,clockwis:0,code:0,confid:0,contain:0,content:[1,2],continu:0,counter:0,creat:0,current:0,data:0,data_bodi:0,data_bytes_onli:0,data_head:0,data_header_length:0,data_header_s:0,data_length:0,data_onli:0,datastream:0,debug:0,decim:0,degre:0,demod_bandwidth:0,demod_typ:0,depend:0,describ:0,detect:0,df_qualiti:0,direct:0,doe:0,e:0,elev:0,embed:0,end_tim:0,etc:0,even:0,extend:0,extract:0,field:0,file:0,file_nam:0,find:0,flag:0,fm:0,format:0,frame:0,frame_length:0,frame_typ:0,frequenc:0,frequency_shift_or_bandwidth:0,from:0,from_byt:0,g:0,given:0,global:0,global_fram:0,global_frame_bodi:0,global_frame_head:0,have:0,header:0,header_s:0,horizont:0,i:0,implement:0,incom:0,incomplet:0,inform:0,insid:0,instanc:0,integ:0,interest:0,interpol:0,iq:0,iqdwtxblock:[1,2],is_puls:0,is_valid:0,julian_date_str:0,khz:0,length:0,level:0,level_unit:0,m:0,magic_word:0,mark:0,mean:0,minu:0,modul:[1,2],mono:0,more:0,multipl:0,name:0,nanosecond:0,ndarrai:0,next:0,none:0,np:0,number:0,number_of_channel:0,number_of_data_block:0,number_of_sampl:0,numpi:0,object:0,one:0,packag:[1,2],param:0,paramet:0,pcm:0,pcm_for_channel:0,pdw:[1,2],pdw_format:0,pdw_format_identifi:0,per:0,percent:0,plu:0,polar:0,posit:0,ppdw:0,ppdwcontain:[1,2],properti:0,provid:0,psk:0,puls:0,pulse_level_or_pulse_field_strength:0,pulse_width:0,qualiti:0,r:0,rais:0,raise:0,rate:0,raw:0,read:0,read_next_audio_data_bodi:0,read_next_fram:0,read_next_global_frame_bodi:0,read_next_global_frame_body_data_head:0,read_next_global_frame_body_extended_data_head:0,read_next_if_data_bodi:0,reader:0,record:0,refer:0,region:0,region_of_interest:0,reserv:0,rtype:0,running_frame_numb:0,s:0,sampl:0,sample_count:0,sample_r:0,sample_s:0,sector:0,serv:0,set:0,signal:0,signal_end_miss:0,signal_start_miss:0,sinc:0,singl:0,size:0,size_correct:0,socket:0,sourc:0,source_id:0,source_st:0,special:0,start:0,start_tim:0,statu:0,step:0,stereo:0,stop:0,store:0,stream_start:0,strength:0,string:0,submodul:[1,2],tag:0,time:0,time_of_arriv:0,timeouterror:0,timestamp:0,to_json:0,tupl:0,type:0,unknown:0,valid:0,valu:0,variou:0,vertic:0,voltage_ref:0,wai:0,wave:0,width:0,word:0,zero:0},titles:["ammosreader package","ammosreader","ammosreader"],titleterms:{ammosaudiodatahead:0,ammosaudioread:0,ammosaudiosocketread:0,ammoscontain:0,ammosextendedaudiodatahead:0,ammosextendedifdatahead:0,ammosglobalframebodi:0,ammosglobalframehead:0,ammosifdatablock:0,ammosifdatahead:0,ammosifread:0,ammosread:[0,1,2],ammossinglefram:0,content:0,iqdwtxblock:0,modul:0,packag:0,pdw:0,ppdwcontain:0,submodul:0}})
Note: See TracChangeset for help on using the changeset viewer.