Changeset 299c79c in ammosreader for doc/html/_modules
- Timestamp:
- 06/30/22 13:28:16 (3 years ago)
- Branches:
- AmmosSource, guix
- Children:
- 93661be
- Parents:
- eab48d0
- Location:
- doc/html/_modules
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
doc/html/_modules/ammosreader/AmmosAudioDataHeader.html
reab48d0 r299c79c 64 64 65 65 <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">"""I provide an AMMOS data header for audio data frames."""</span> 68 67 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> 70 70 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">'FM'</span><span class="p">,</span> <span class="mi">1</span><span class="p">:</span> <span class="s1">'AM'</span><span class="p">,</span> <span class="mi">5</span><span class="p">:</span> <span class="s1">'ISB'</span><span class="p">,</span> <span class="mi">6</span><span class="p">:</span> <span class="s1">'CW'</span><span class="p">,</span>75 <span class="mi">7</span><span class="p">:</span> <span class="s1">'USB'</span><span class="p">,</span> <span class="mi">8</span><span class="p">:</span> <span class="s1">'LSB'</span><span class="p">,</span> <span class="mi">256</span><span class="p">:</span> <span class="s1">'DIGITAL'</span><span class="p">,</span>76 <span class="mh">0xFFFFFFFF</span><span class="p">:</span> <span class="s1">'UNKNOWN'</span><span class="p">}</span>77 71 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">"""I implement an AMMOS data header for audio data frames."""</span> 80 74 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> 85 76 86 77 <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> 87 78 <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">"""I return an AMMOS data header from given bytes."""</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> 88 81 <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">'<IIQIIIII'</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">)</span> 89 82 <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> … … 91 84 <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> 92 85 <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> 96 89 <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> 97 90 <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> 99 92 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">"""I create a new instance of myself using the above parameters."""</span> 101 96 <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> 102 97 <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">status</span> … … 104 99 <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> 105 100 <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> 108 103 <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> 109 104 110 105 <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">"""I return the string representation of myself."""</span> 111 107 <span class="k">return</span> <span class="p">(</span><span class="s2">"</span><span class="se">\n</span><span class="s2">AmmosAudioDataHeader</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 112 108 <span class="s2">"Sample rate:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> … … 115 111 <span class="s2">"Demodulation bandwidth:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 116 112 <span class="s2">"Demodulation type:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 117 <span class="s2">"Sample count:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span>118 <span class="s2">"Channel count:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span>113 <span class="s2">"Sample count:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 114 <span class="s2">"Channel count:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 119 115 <span class="s2">"Sample size:"</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">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span></div> 120 116 </pre></div> -
doc/html/_modules/ammosreader/AmmosAudioReader.html
reab48d0 r299c79c 64 64 65 65 <h1>Source code for ammosreader.AmmosAudioReader</h1><div class="highlight"><pre> 66 <span></span><span class="sd">"""I p arse an R&S AMMOS recording."""</span>67 68 <span class="kn">import</span> <span class="nn">os</span> 69 66 <span></span><span class="sd">"""I provide a specialized Ammos Reader for audio data."""</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> 70 70 <span class="kn">from</span> <span class="nn">ammosreader.AmmosGlobalFrameBody</span> <span class="kn">import</span> <span class="n">AmmosGlobalFrameBody</span> 71 71 <span class="kn">from</span> <span class="nn">ammosreader.AmmosAudioDataHeader</span> <span class="kn">import</span> <span class="n">AmmosAudioDataHeader</span> 72 72 <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> 79 77 <span class="sd">"""I read the audio data embedded in an R&S AMMOS recording."""</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>84 78 85 79 <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> … … 90 84 <span class="sd"> :type file_name: str</span> 91 85 <span class="sd"> """</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">"rb"</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">"""I set the file pointer to the beginning of the file for the next operation."""</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">"""</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"> """</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">"""</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"> """</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">"Reading single frame"</span><span class="p">,</span> <span class="n">frames_read</span><span class="p">,</span> <span class="s1">'...'</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">"#"</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s2">""</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">"Frame:"</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">" incomplete"</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">"frames read"</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">"""</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"> """</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">"Reading next global frame header"</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"><</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">"Can not read all"</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">"bytes of global frame header"</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("Current global frame header", 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> 153 87 154 88 <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> … … 161 95 <span class="sd"> :rtype: AmmosAudioDataHeader</span> 162 96 <span class="sd"> """</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("\nReading global frame body standard data header\n")</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"><</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">"Can not read all"</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">"bytes of global frame body data header"</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">"</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">"</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"><</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">"Can not read all </span><span class="si">%s</span><span class="s2"> bytes of global frame body data header"</span><span class="p">,</span> <span class="n">header_size</span><span class="p">)</span> 169 104 <span class="k">return</span> <span class="kc">None</span> 170 105 <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> … … 177 112 <span class="sd"> :rtype: AmmosExtendedAudioDataHeader</span> 178 113 <span class="sd"> """</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"><</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">"Can not read all "</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">" bytes of global frame extended data header"</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"><</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">"Can not read all </span><span class="si">%s</span><span class="s2"> bytes of global frame extended data header"</span><span class="p">,</span> <span class="n">header_size</span><span class="p">)</span> 184 120 <span class="k">return</span> <span class="kc">None</span> 185 121 <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> 186 122 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> 188 124 <span class="sd">"""</span> 189 125 <span class="sd"> I return the next audio data read from current position in file.</span> 190 126 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> 196 132 197 133 <span class="sd"> :param sample_size: sample size in bytes (1, 2 or 4 bytes)</span> … … 201 137 <span class="sd"> :rtype: bytes</span> 202 138 <span class="sd"> """</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> 208 142 209 143 <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">"Can not read all"</span><span class="p">,</span> <span class="n">total</span><span class="p">,</span> <span class="s2">"bytes of data body"</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">"Can not read all </span><span class="si">%s</span><span class="s2"> bytes of data body"</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">"""</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"> """</span> 217 154 <span class="n">audio_data_header</span> <span class="o">=</span> <span class="kc">None</span> 218 155 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="n b">print</span><span class="p">(</span><span class="s2">"Read standard data header"</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">"Read standard data header"</span><span class="p">)</span> 221 158 <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> 222 159 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">"Read extended data header"</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">"Data header length </span><span class="si">%s</span><span class="s2">"</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">"Read extended data header"</span><span class="p">)</span> 225 163 <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> 226 164 227 165 <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="n b">print</span><span class="p">(</span><span class="s2">"Data header missing or format unknown"</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">"Data header missing or format unknown"</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> 233 171 <span class="n">audio_data_header</span><span class="o">.</span><span class="n">sample_size</span><span class="p">)</span> 234 172 235 173 <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="n b">print</span><span class="p">(</span><span class="s2">"Data body missing"</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">"Data body missing"</span><span class="p">)</span> 237 175 <span class="k">return</span> <span class="kc">None</span> 238 176 239 177 <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> 240 178 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">"Global frame header missing"</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">"Data header length empty"</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">"Audio Datastream found"</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">"Unsupported frame type"</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">"found"</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">"""</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"> """</span> 188 <span class="k">return</span> <span class="sa">b</span><span class="s2">""</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> 266 189 </pre></div> 267 190 -
doc/html/_modules/ammosreader/AmmosAudioSocketReader.html
reab48d0 r299c79c 64 64 65 65 <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">"""I read a Ammos datastream from a socket."""</span> 67 68 <span class="kn">import</span> <span class="nn">select</span> 69 <span class="kn">import</span> <span class="nn">socket</span> 67 70 <span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">deque</span> 68 69 71 <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> 70 72 <span class="kn">from</span> <span class="nn">ammosreader.AmmosAudioDataHeader</span> <span class="kn">import</span> <span class="n">AmmosAudioDataHeader</span> … … 74 76 75 77 <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> 77 79 <span class="sd">"""</span> 78 80 <span class="sd"> Initializes the AmmosAudioSocketReader</span> … … 80 82 <span class="sd"> Args:</span> 81 83 <span class="sd"> socket (socket.socket): socket to read from</span> 84 <span class="sd"> debug (bool): if true, prints debug information</span> 82 85 <span class="sd"> """</span> 83 86 … … 88 91 <span class="bp">self</span><span class="o">.</span><span class="n">__socket</span> <span class="o">=</span> <span class="n">socket</span> 89 92 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">-></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">-></span> <span class="nb">bytearray</span><span class="p">:</span> 91 97 <span class="sd">"""</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> 93 99 94 100 <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> 98 105 99 106 <span class="sd"> Returns:</span> 100 <span class="sd"> bytearray: contains the audio data</span> 101 <span class="sd"> """</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"> """</span> 109 104 110 <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">''</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> 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">''</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">''</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">"Can not read all"</span><span class="p">,</span> <span class="n">total</span><span class="p">,</span> <span class="s2">"bytes of data body"</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">''</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">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">"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">''</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">"</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">''</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">"Socket timed out while reading data"</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">"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">''</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"</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 112 126 <span class="k">return</span> <span class="sa">b</span><span class="s1">''</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">byte_array</span><span class="p">)</span> 113 127 … … 125 139 <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> 126 140 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">-></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">"""</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">-></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">"""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> 130 146 131 147 <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"> """</span> 148 <span class="sd"> tuple[np.ndarray, int]: Contains the audio data and the sample rate</span> 149 <span class="sd"> """</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"><</span> <span class="mi">1</span><span class="p">:</span> 157 <span class="k">raise</span> <span class="ne">TimeoutError</span> 158 134 159 <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> 138 161 <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> 140 163 <span class="n">byte_array</span> <span class="o">=</span> <span class="sa">b</span><span class="s1">''</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> 141 164 … … 144 167 145 168 <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">''</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"><</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">''</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''.join(ammos_global_header_buffer)) < 24:</span> 171 <span class="c1"># ammos_global_header_buffer.append(self.__socket.recv(24 - len(b''.join(ammos_global_header_buffer))))</span> 148 172 149 173 <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">''</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> 151 176 152 177 <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">''</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"><</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">''</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">''</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''.join(byte_array_header)) < 44:</span> 180 <span class="c1"># byte_array_header.append(self.__socket.recv(44 - len(b''.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> 162 188 163 189 <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> 165 192 166 193 <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> 167 194 168 195 <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">''</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"><</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">''</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">''</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''.join(byte_array_header)) < 36:</span> 198 <span class="c1"># byte_array_header.append(self.__socket.recv(36 - len(b''.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> 178 206 179 207 <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> 181 210 182 211 <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> 183 212 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"><</span> <span class="mi">1</span><span class="p">:</span> 219 <span class="k">raise</span> <span class="ne">TimeoutError</span> 185 220 186 221 <span class="k">return</span> <span class="kc">None</span></div></div> … … 193 228 <p> 194 229 © 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> . 196 231 (Revision ) 197 232 </p> -
doc/html/_modules/ammosreader/AmmosContainer.html
reab48d0 r299c79c 69 69 70 70 <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> 74 86 75 87 <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> 77 89 78 90 <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> 80 92 81 93 <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> 83 95 84 96 <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> 86 98 87 99 <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> 90 102 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> 92 104 93 105 <span class="k">return</span> <span class="p">(</span><span class="s2">"Start time: "</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">"</span><span class="se">\n</span><span class="s2">End time : "</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">"</span><span class="se">\n</span><span class="s2">Frequencies: "</span> <span class="o">+</span> <span class="n">frq</span><span class="p">)</span></div> 106 <span class="s2">"</span><span class="se">\n</span><span class="s2">End time : "</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">"</span><span class="se">\n</span><span class="s2">Frequencies: "</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> 95 110 </pre></div> 96 111 … … 101 116 <p> 102 117 © 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> . 104 119 (Revision ) 105 120 </p> -
doc/html/_modules/ammosreader/AmmosExtendedAudioDataHeader.html
reab48d0 r299c79c 64 64 65 65 <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">"""I provide an Ammos extended data header for audio data frames."""</span> 67 68 <span class="kn">import</span> <span class="nn">struct</span> 68 69 <span class="kn">from</span> <span class="nn">ammosreader.AmmosAudioDataHeader</span> <span class="kn">import</span> <span class="n">AmmosAudioDataHeader</span> 69 70 70 71 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> 72 75 73 76 <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> 74 77 <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">'Q'</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">"""I return a new AMMOS extended data header for audio frames built from given bytes."""</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">'<Q'</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> 77 82 <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> 78 83 <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> … … 81 86 <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> 82 87 <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> 85 90 <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> 86 91 <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> 88 93 89 94 <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">"""I return a new AMMOS extended data header for audio frames built from given parameters."""</span> 91 97 <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> 92 98 <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">status</span> … … 94 100 <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> 95 101 <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> 98 104 <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> 99 105 <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 70 70 71 71 <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">"""I implement an Ammos extended data header for IF data frames."""</span> 73 74 <span class="n">HEADER_SIZE</span> <span class="o">=</span> <span class="mi">76</span> 72 75 73 76 <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> 74 77 <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">'QQI'</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">"""I return an AMMOS extended data header from given bytes."""</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">'<QQI'</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> 77 81 <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> 78 82 <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> … … 99 103 <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> 100 104 <span class="n">antenna_correction</span><span class="p">):</span> 101 105 <span class="sd">"""I create a new instance of myself using the above parameters."""</span> 102 106 <span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">size</span> 103 107 <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> … … 129 133 <span class="s2">"Stream start:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 130 134 <span class="s2">"Sample counter:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 131 <span class="s2">"Antenna correction:"</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">"</span><span class="se">\n</span><span class="s2">"</span> 132 <span class="p">)</span> 133 135 <span class="s2">"Antenna correction:"</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">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">)</span> 134 136 <span class="k">return</span> <span class="n">output</span></div> 135 137 </pre></div> -
doc/html/_modules/ammosreader/AmmosGlobalFrameBody.html
reab48d0 r299c79c 64 64 65 65 <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">"""I provide an AMMOS global frame body."""</span> 67 67 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">"""</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"> """</span> 68 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">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> 71 95 72 96 <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> 73 97 74 <span class="n">byte_string</span> <span class="o">=</span> <span class="s 2">""</span>98 <span class="n">byte_string</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">""</span> 75 99 76 100 <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> … … 78 102 <span class="nb">print</span><span class="p">(</span><span class="s2">"Block is nil"</span><span class="p">)</span> 79 103 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> 81 105 82 106 <span class="k">return</span> <span class="n">byte_string</span></div></div> -
doc/html/_modules/ammosreader/AmmosGlobalFrameHeader.html
reab48d0 r299c79c 74 74 <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 75 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">' 4s4s4s4s4s4s'</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">'<4s4s4s4s4s4s'</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">)</span> 77 77 78 78 <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> … … 93 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">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> 94 94 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> 96 96 <span class="nb">print</span><span class="p">(</span><span class="s2">"Wrong magic word"</span><span class="p">)</span> 97 97 <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>99 98 <span class="k">else</span><span class="p">:</span> 100 99 <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 64 64 65 65 <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> 67 67 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> 71 79 </pre></div> 72 80 -
doc/html/_modules/ammosreader/AmmosIFDataHeader.html
reab48d0 r299c79c 64 64 65 65 <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">"""I provide a Ammos data header for IF data frames."""</span> 67 68 <span class="kn">import</span> <span class="nn">struct</span> 67 69 <span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span> 68 70 69 71 70 72 <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">"""I implement an Ammos data header for IF data frames."""</span> 74 75 <span class="n">HEADER_SIZE</span> <span class="o">=</span> <span class="mi">56</span> 71 76 72 77 <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> 73 78 <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">"""I return an AMMOS data header from given bytes."""</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> 74 81 <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">'<IIQIIIQIIIIi'</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">)</span> 75 82 <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> … … 92 99 <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> 93 100 <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">"""I create a new instance of myself using the above parameters."""</span> 94 102 <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> 95 103 <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> … … 104 112 <span class="bp">self</span><span class="o">.</span><span class="n">decimation</span> <span class="o">=</span> <span class="n">decimation</span> 105 113 <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>109 114 110 115 <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 64 64 65 65 <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">"""I provide a specialized Ammos Reader for IF data."""</span> 67 <span class="kn">import</span> <span class="nn">logging</span> 68 68 69 <span class="kn">from</span> <span class="nn">ammosreader.AbstractAmmosReader</span> <span class="kn">import</span> <span class="n">AbstractAmmosReader</span> 69 70 <span class="kn">from</span> <span class="nn">ammosreader.AmmosGlobalFrameBody</span> <span class="kn">import</span> <span class="n">AmmosGlobalFrameBody</span> 70 71 <span class="kn">from</span> <span class="nn">ammosreader.AmmosIFDataHeader</span> <span class="kn">import</span> <span class="n">AmmosIFDataHeader</span> 71 72 <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> 74 74 <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.Ammos Container</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> 76 76 77 77 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">"""I read the IF data embedded in an R&S AMMOS recording."""</span> 79 80 80 81 <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">"rb"</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">"Reading single frame"</span><span class="p">,</span> <span class="n">frames_read</span><span class="p">,</span> <span class="s1">'...'</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">"#"</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="s2">""</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">"Frame:"</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">" incomplete"</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">"frames read"</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">"Reading next global frame header"</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"><</span> <span class="mi">24</span><span class="p">)):</span> 118 <span class="nb">print</span><span class="p">(</span><span class="s2">"Can not read all 24 bytes of global frame header"</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> 122 83 123 84 <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> 124 85 125 <span class="n b">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> 126 87 127 <span class="c1"># print("\nReading global frame body standard data header\n")</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"><</span> <span class="mi">56</span><span class="p">)):</span> 129 <span class="nb">print</span><span class="p">(</span><span class="s2">"Can not read all 56 bytes of global frame body data header"</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">"</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">"</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"><</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">"Can not read all </span><span class="si">%s</span><span class="s2"> bytes of global frame body data header"</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">"""</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"> """</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">"</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">"</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"><</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">"Can not read all </span><span class="si">%s</span><span class="s2"> bytes of global frame extended data header"</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">"""</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"> """</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">"Can not read all </span><span class="si">%s</span><span class="s2"> bytes of data body"</span><span class="p">,</span> <span class="n">total</span><span class="p">)</span> 130 135 <span class="k">return</span> <span class="kc">None</span> 131 136 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("Data header", 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> 135 141 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> 137 143 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("\nReading global frame body extended data header\n")</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">"""</span> 146 <span class="sd"> I return the next global frame body read from current position in file.</span> 140 147 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"><</span> <span class="mi">76</span><span class="p">)):</span> 142 <span class="nb">print</span><span class="p">(</span><span class="s2">"Can not read all "</span><span class="p">,</span> <span class="mi">76</span><span class="p">,</span> <span class="s2">"bytes of global frame extended data header"</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("Extended data header", 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">"Can not read all"</span><span class="p">,</span> <span class="n">total</span><span class="p">,</span> <span class="s2">"bytes of data body"</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"> """</span> 172 151 <span class="n">if_data_header</span> <span class="o">=</span> <span class="kc">None</span> 173 152 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> 175 154 <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> 177 156 <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> 178 157 179 158 <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="n b">print</span><span class="p">(</span><span class="s2">"Data header missing"</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">"Data header missing"</span><span class="p">)</span> 181 160 <span class="k">return</span> <span class="kc">None</span> 182 161 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_b locks</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> 184 163 185 164 <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="n b">print</span><span class="p">(</span><span class="s2">"Data body missing"</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">"Data body missing"</span><span class="p">)</span> 187 166 <span class="k">return</span> <span class="kc">None</span> 188 167 189 168 <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> 190 169 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">"</span><span class="se">\n</span><span class="s2">Reading next global frame header</span><span class="se">\n</span><span class="s2">"</span><span class="p">,</span> <span class="n">global_frame_header</span><span class="p">)</span> 196 <span class="c1"># print("File pointer", 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">"Global frame header missing"</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">"Data header length empty"</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">"Unsupported frame type"</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">"found"</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">""</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> 217 172 </pre></div> 218 173 -
doc/html/_modules/ammosreader/AmmosSingleFrame.html
reab48d0 r299c79c 67 67 68 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">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> 71 79 72 80 <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> … … 83 91 <span class="s2">"Global frame header</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 84 92 <span class="s2">"-------------------</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 85 <span class="s2">"Frame ty oe:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span>93 <span class="s2">"Frame type:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 86 94 <span class="s2">"Frame count:"</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 87 95 <span class="s2">"Data header length:"</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">" bytes</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> -
doc/html/_modules/ammosreader/PDW.html
reab48d0 r299c79c 64 64 65 65 <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">"""I store the information of a single PDW block."""</span> 67 68 <span class="kn">import</span> <span class="nn">struct</span> 67 69 <span class="kn">import</span> <span class="nn">math</span> 68 70 <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>71 71 72 72 … … 76 76 77 77 <span class="sd"> .. automethod:: __init__</span> 78 79 78 <span class="sd"> """</span> 80 79 81 80 <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> 82 81 <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 84 82 <span class="sd">"""</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> 87 84 88 85 <span class="sd"> :param byte_string: a byte string containing a single data body read from a ppdw file</span> … … 91 88 <span class="sd"> :return: an instance of class PDW with attributes set according to the data of a data body</span> 92 89 <span class="sd"> :rtype: PDW</span> 93 94 90 <span class="sd"> """</span> 95 96 91 <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> 97 92 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">' Q4s4s4s4s4s4s'</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">'<Q4s4s4s4s4s4s'</span><span class="p">,</span> <span class="n">byte_string</span><span class="p">)</span> 99 94 <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">'ns'</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">'ns'</span><span class="p">)</span> 101 96 102 97 <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">'little'</span><span class="p">))</span> … … 159 154 <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> 160 155 <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">"""</span>156 <span class="sa">r</span><span class="sd">"""</span> 157 <span class="sd"> I return an instance of an Pulse Data word.</span> 163 158 164 159 <span class="sd"> :param time_of_arrival: nanoseconds since 1970-01-01 00:00:00</span> … … 207 202 <span class="sd"> :return: An instance of class PDW with attributes set according to the data of a data body</span> 208 203 <span class="sd"> :rtype: PDW</span> 209 210 204 <span class="sd"> """</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> 213 206 <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> 218 211 <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> 219 212 <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> 223 216 <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> 224 217 <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> 226 219 <span class="bp">self</span><span class="o">.</span><span class="n">sector</span> <span class="o">=</span> <span class="n">sector</span> 227 220 <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> 230 223 <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> 232 225 233 226 <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">"""</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"> """</span> 234 232 <span class="n">output</span> <span class="o">=</span> <span class="p">(</span><span class="s2">"Time of arrival: "</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> 235 233 <span class="s2">"PDW Format identifier: "</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">"</span><span class="se">\n</span><span class="s2">"</span> <span class="o">+</span> … … 287 285 <span class="n">output</span> <span class="o">+=</span> <span class="s2">"Channel: "</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">"</span><span class="se">\n</span><span class="s2">"</span> 288 286 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">'TIMEOFARRIVAL'</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">'CENTERFREQUENCY'</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">'VALID'</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">'PULSE'</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">'PULSEWIDTH'</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">'LEVELUNIT'</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">'FREQUENCYSHIFTORBANDWIDTH'</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">'PULSELEVELORFIELDSTRENGTH'</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">'MODULATION'</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">'ELEVATION'</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">'AZIMUTH'</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">'CHANNEL'</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> 291 303 292 304 <span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span> -
doc/html/_modules/ammosreader/PPDWContainer.html
reab48d0 r299c79c 64 64 65 65 <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> 67 68 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> 68 71 <span class="sd">"""</span> 69 70 72 <span class="sd"> I store multiple signals imported from one or more .ppdw files</span> 71 72 73 <span class="sd"> .. automethod:: __init__</span> 73 74 74 <span class="sd"> """</span> 75 75 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> 77 77 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> 79 82 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">"</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s2">"Number of pulses:"</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">"Start time:"</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">"End time:"</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">'1970-01-01T00:00:00'</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">'s'</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">'JULIANDATE'</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">'STARTTIME'</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">'ENDTIME'</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"># 'CENTERFREQUENCIES': self.center_frequencies(),</span> 119 <span class="s1">'CHANNELS'</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"># 'MODULATIONS': self.modulations(),</span> 121 <span class="c1"># 'BANDWIDTHS': self.bandwidths()</span> 122 <span class="p">}</span></div></div> 80 123 81 124 <span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">'__main__'</span><span class="p">:</span> -
doc/html/_modules/index.html
reab48d0 r299c79c 86 86 <p> 87 87 © 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> . 89 89 (Revision ) 90 90 </p>
Note:
See TracChangeset
for help on using the changeset viewer.