summaryrefslogtreecommitdiff
path: root/gr-noaa
diff options
context:
space:
mode:
authorJohnathan Corgan <jcorgan@corganenterprises.com>2009-11-06 11:21:08 -0800
committerJohnathan Corgan <jcorgan@corganenterprises.com>2009-11-09 08:05:23 -0800
commit4e0c8a37c3574f59e34186996cef0c44ff50bd16 (patch)
treea922b56ebe5f8e3f8ef489cc813a373e5a066f16 /gr-noaa
parentdf6839b8d323aa11e5739f8597a95e38745ac2e4 (diff)
gr-noaa: added HRPT minor frame parsing, renamed scripts
implemented start of minor frame parsing renamed demod_rx_hrpt to hrpt_demod, new defaults added configuration flags to hrpt_decoder added hrpt_decode app updated file_rx_hrpt with new defaults updated usrp_rx_hrpt_* with new defaults
Diffstat (limited to 'gr-noaa')
-rw-r--r--gr-noaa/README2
-rw-r--r--gr-noaa/apps/.gitignore3
-rw-r--r--gr-noaa/apps/Makefile.am6
-rw-r--r--gr-noaa/apps/file_rx_hrpt.grc543
-rwxr-xr-xgr-noaa/apps/file_rx_hrpt.py56
-rw-r--r--gr-noaa/apps/hrpt_decode.grc428
-rwxr-xr-xgr-noaa/apps/hrpt_decode.py98
-rw-r--r--gr-noaa/apps/hrpt_demod.grc (renamed from gr-noaa/apps/demod_hrpt_file.grc)421
-rwxr-xr-xgr-noaa/apps/hrpt_demod.py (renamed from gr-noaa/apps/demod_hrpt_file.py)52
-rw-r--r--gr-noaa/apps/usrp_rx_hrpt.grc438
-rwxr-xr-xgr-noaa/apps/usrp_rx_hrpt.py60
-rw-r--r--gr-noaa/apps/usrp_rx_hrpt_nogui.grc418
-rwxr-xr-xgr-noaa/apps/usrp_rx_hrpt_nogui.py60
-rw-r--r--gr-noaa/grc/noaa_hrpt_decoder.xml15
-rw-r--r--gr-noaa/lib/Makefile.am3
-rw-r--r--gr-noaa/lib/noaa_hrpt.h39
-rw-r--r--gr-noaa/lib/noaa_hrpt_decoder.cc167
-rw-r--r--gr-noaa/lib/noaa_hrpt_decoder.h39
-rw-r--r--gr-noaa/lib/noaa_hrpt_deframer.cc26
-rw-r--r--gr-noaa/lib/noaa_hrpt_deframer.h4
-rw-r--r--gr-noaa/oct/frames_to_ppm.m2
-rw-r--r--gr-noaa/swig/noaa_hrpt_decoder.i2
22 files changed, 1765 insertions, 1117 deletions
diff --git a/gr-noaa/README b/gr-noaa/README
index 29d11f5934..f00d2d28de 100644
--- a/gr-noaa/README
+++ b/gr-noaa/README
@@ -40,7 +40,7 @@ be set in the configuration file prior to running. It has no command-line
parameters, and works identically to the GUI scripts.
-demod_hrpt_file.py
+hrpt_demod_file.py
------------------
This non-GUI script will operate on a file generated with
diff --git a/gr-noaa/apps/.gitignore b/gr-noaa/apps/.gitignore
index 6bd1ab9959..cd8d543cc1 100644
--- a/gr-noaa/apps/.gitignore
+++ b/gr-noaa/apps/.gitignore
@@ -1,2 +1,3 @@
*.dat
-*.txt \ No newline at end of file
+*.txt
+*.hrpt
diff --git a/gr-noaa/apps/Makefile.am b/gr-noaa/apps/Makefile.am
index 961b09afab..e246ba76a5 100644
--- a/gr-noaa/apps/Makefile.am
+++ b/gr-noaa/apps/Makefile.am
@@ -24,15 +24,17 @@ include $(top_srcdir)/Makefile.common
if PYTHON
dist_bin_SCRIPTS = \
- demod_hrpt_file.py \
+ hrpt_decode.py \
+ hrpt_demod.py \
file_rx_hrpt.py \
usrp_rx_hrpt.py \
usrp_rx_hrpt_nogui.py \
usrp_rx_lrit.py
EXTRA_DIST = \
+ hrpt_decode.grc \
+ hrpt_demod.grc \
file_rx_hrpt.grc \
- demod_hrpt_file.grc \
usrp_rx_hrpt.grc \
usrp_rx_hrpt_nogui.grc \
usrp_rx_lrit.grc
diff --git a/gr-noaa/apps/file_rx_hrpt.grc b/gr-noaa/apps/file_rx_hrpt.grc
index f341437569..e3cccd3933 100644
--- a/gr-noaa/apps/file_rx_hrpt.grc
+++ b/gr-noaa/apps/file_rx_hrpt.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Mon Nov 2 08:30:47 2009</timestamp>
+ <timestamp>Mon Nov 9 07:47:17 2009</timestamp>
<block>
<key>options</key>
<param>
@@ -60,29 +60,6 @@
<key>variable</key>
<param>
<key>id</key>
- <value>max_carrier_offset</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>2*math.pi*100e3/sample_rate</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(575, 19)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
<value>sym_rate</value>
</param>
<param>
@@ -129,29 +106,6 @@
<key>variable</key>
<param>
<key>id</key>
- <value>hs</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>int(sps/2.0)</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(499, 19)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
<value>sample_rate</value>
</param>
<param>
@@ -172,103 +126,6 @@
</param>
</block>
<block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>max_clock_offset</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>0.1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(705, 19)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>side</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>'A'</value>
- </param>
- <param>
- <key>type</key>
- <value>string</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'side'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>side</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(194, 253)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gr_file_sink</key>
- <param>
- <key>id</key>
- <value>frame_sink</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>file</key>
- <value>output_filename</value>
- </param>
- <param>
- <key>type</key>
- <value>short</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(973, 1024)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>virtual_source</key>
<param>
<key>id</key>
@@ -491,25 +348,6 @@
</param>
</block>
<block>
- <key>noaa_hrpt_decoder</key>
- <param>
- <key>id</key>
- <value>decoder</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(974, 925)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>variable</key>
<param>
<key>id</key>
@@ -614,22 +452,26 @@
</param>
</block>
<block>
- <key>gr_throttle</key>
+ <key>gr_file_source</key>
<param>
<key>id</key>
- <value>throttle</value>
+ <value>gr_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>file</key>
+ <value>input_filename</value>
+ </param>
+ <param>
<key>type</key>
<value>short</value>
</param>
<param>
- <key>samples_per_second</key>
- <value>sample_rate</value>
+ <key>repeat</key>
+ <value>False</value>
</param>
<param>
<key>vlen</key>
@@ -637,46 +479,183 @@
</param>
<param>
<key>_coordinate</key>
- <value>(75, 679)</value>
+ <value>(76, 613)</value>
</param>
<param>
<key>_rotation</key>
- <value>180</value>
+ <value>0</value>
</param>
</block>
<block>
- <key>gr_file_source</key>
+ <key>notebook</key>
<param>
<key>id</key>
- <value>gr_file_source_0</value>
+ <value>displays</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>file</key>
- <value>input_filename</value>
+ <key>style</key>
+ <value>wx.NB_TOP</value>
+ </param>
+ <param>
+ <key>labels</key>
+ <value>['Spectrum','Demod']</value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value>1,0,1,2</value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(12, 249)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>wxgui_fftsink2</key>
+ <param>
+ <key>id</key>
+ <value>rx_fft</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
<key>type</key>
- <value>short</value>
+ <value>complex</value>
</param>
<param>
- <key>repeat</key>
+ <key>title</key>
+ <value>RX Spectrum</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>sample_rate</value>
+ </param>
+ <param>
+ <key>baseband_freq</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>y_per_div</key>
+ <value>5</value>
+ </param>
+ <param>
+ <key>y_divs</key>
+ <value>8</value>
+ </param>
+ <param>
+ <key>ref_level</key>
+ <value>-5</value>
+ </param>
+ <param>
+ <key>ref_scale</key>
+ <value>2.0</value>
+ </param>
+ <param>
+ <key>fft_size</key>
+ <value>1024</value>
+ </param>
+ <param>
+ <key>fft_rate</key>
+ <value>15</value>
+ </param>
+ <param>
+ <key>peak_hold</key>
<value>False</value>
</param>
<param>
+ <key>average</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>avg_alpha</key>
+ <value>0.1</value>
+ </param>
+ <param>
+ <key>win</key>
+ <value>None</value>
+ </param>
+ <param>
+ <key>win_size</key>
+ <value>640, 360</value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value>0, 0, 1, 1</value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value>displays, 0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(471, 450)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_binary_slicer_fb</key>
+ <param>
+ <key>id</key>
+ <value>gr_binary_slicer_fb_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(393, 975)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_throttle</key>
+ <param>
+ <key>id</key>
+ <value>throttle</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>short</value>
+ </param>
+ <param>
+ <key>samples_per_second</key>
+ <value>2*sample_rate</value>
+ </param>
+ <param>
<key>vlen</key>
<value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(76, 613)</value>
+ <value>(75, 679)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
@@ -695,7 +674,7 @@
</param>
<param>
<key>value</key>
- <value>'usrp.dat'</value>
+ <value>usrp.dat</value>
</param>
<param>
<key>type</key>
@@ -707,7 +686,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(198, 107)</value>
+ <value>(196, 98)</value>
</param>
<param>
<key>_rotation</key>
@@ -730,7 +709,7 @@
</param>
<param>
<key>value</key>
- <value>16</value>
+ <value>32</value>
</param>
<param>
<key>type</key>
@@ -742,7 +721,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(308, 107)</value>
+ <value>(307, 98)</value>
</param>
<param>
<key>_rotation</key>
@@ -797,7 +776,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(397, 108)</value>
+ <value>(397, 98)</value>
</param>
<param>
<key>_rotation</key>
@@ -852,7 +831,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(539, 105)</value>
+ <value>(540, 98)</value>
</param>
<param>
<key>_rotation</key>
@@ -860,10 +839,10 @@
</param>
</block>
<block>
- <key>variable_config</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>saved_pll_alpha</value>
+ <value>hs</value>
</param>
<param>
<key>_enabled</key>
@@ -871,31 +850,11 @@
</param>
<param>
<key>value</key>
- <value>0.05</value>
- </param>
- <param>
- <key>type</key>
- <value>real</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'pll_alpha'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>pll_alpha</value>
+ <value>int(sps/2.0)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(363, 254)</value>
+ <value>(499, 19)</value>
</param>
<param>
<key>_rotation</key>
@@ -903,10 +862,10 @@
</param>
</block>
<block>
- <key>variable_config</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>saved_clock_alpha</value>
+ <value>max_carrier_offset</value>
</param>
<param>
<key>_enabled</key>
@@ -914,31 +873,34 @@
</param>
<param>
<key>value</key>
- <value>0.05</value>
+ <value>2*math.pi*100e3/sample_rate</value>
</param>
<param>
- <key>type</key>
- <value>real</value>
+ <key>_coordinate</key>
+ <value>(575, 19)</value>
</param>
<param>
- <key>config_file</key>
- <value>config_filename</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>variable</key>
<param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
+ <key>id</key>
+ <value>max_clock_offset</value>
</param>
<param>
- <key>option</key>
- <value>'clock_alpha'</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>writeback</key>
- <value>clock_alpha</value>
+ <key>value</key>
+ <value>100e-6</value>
</param>
<param>
<key>_coordinate</key>
- <value>(527, 256)</value>
+ <value>(705, 19)</value>
</param>
<param>
<key>_rotation</key>
@@ -957,7 +919,7 @@
</param>
<param>
<key>value</key>
- <value>'frames.dat'</value>
+ <value>'frames.hrpt'</value>
</param>
<param>
<key>type</key>
@@ -981,7 +943,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(689, 257)</value>
+ <value>(521, 254)</value>
</param>
<param>
<key>_rotation</key>
@@ -989,34 +951,42 @@
</param>
</block>
<block>
- <key>notebook</key>
+ <key>variable_config</key>
<param>
<key>id</key>
- <value>displays</value>
+ <value>saved_pll_alpha</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>style</key>
- <value>wx.NB_TOP</value>
+ <key>value</key>
+ <value>0.01</value>
</param>
<param>
- <key>labels</key>
- <value>['Spectrum','Demod']</value>
+ <key>type</key>
+ <value>real</value>
</param>
<param>
- <key>grid_pos</key>
- <value>1,0,1,2</value>
+ <key>config_file</key>
+ <value>config_filename</value>
</param>
<param>
- <key>notebook</key>
- <value></value>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
+ </param>
+ <param>
+ <key>option</key>
+ <value>'pll_alpha'</value>
+ </param>
+ <param>
+ <key>writeback</key>
+ <value>pll_alpha</value>
</param>
<param>
<key>_coordinate</key>
- <value>(12, 249)</value>
+ <value>(195, 253)</value>
</param>
<param>
<key>_rotation</key>
@@ -1024,86 +994,88 @@
</param>
</block>
<block>
- <key>wxgui_fftsink2</key>
+ <key>variable_config</key>
<param>
<key>id</key>
- <value>rx_fft</value>
+ <value>saved_clock_alpha</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>title</key>
- <value>RX Spectrum</value>
+ <key>value</key>
+ <value>0.01</value>
</param>
<param>
- <key>samp_rate</key>
- <value>sample_rate</value>
+ <key>type</key>
+ <value>real</value>
</param>
<param>
- <key>baseband_freq</key>
- <value>0</value>
+ <key>config_file</key>
+ <value>config_filename</value>
</param>
<param>
- <key>y_per_div</key>
- <value>5</value>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
</param>
<param>
- <key>y_divs</key>
- <value>8</value>
+ <key>option</key>
+ <value>'clock_alpha'</value>
</param>
<param>
- <key>ref_level</key>
- <value>-5</value>
+ <key>writeback</key>
+ <value>clock_alpha</value>
</param>
<param>
- <key>ref_scale</key>
- <value>2.0</value>
+ <key>_coordinate</key>
+ <value>(360, 255)</value>
</param>
<param>
- <key>fft_size</key>
- <value>1024</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>noaa_hrpt_deframer</key>
<param>
- <key>fft_rate</key>
- <value>15</value>
+ <key>id</key>
+ <value>deframer</value>
</param>
<param>
- <key>peak_hold</key>
- <value>False</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>average</key>
- <value>True</value>
+ <key>_coordinate</key>
+ <value>(579, 975)</value>
</param>
<param>
- <key>avg_alpha</key>
- <value>0.1</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>noaa_hrpt_decoder</key>
<param>
- <key>win</key>
- <value>None</value>
+ <key>id</key>
+ <value>decoder</value>
</param>
<param>
- <key>win_size</key>
- <value>640, 360</value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>grid_pos</key>
- <value>0, 0, 1, 1</value>
+ <key>verbose</key>
+ <value>True</value>
</param>
<param>
- <key>notebook</key>
- <value>displays, 0</value>
+ <key>output</key>
+ <value>False</value>
</param>
<param>
<key>_coordinate</key>
- <value>(471, 450)</value>
+ <value>(849, 925)</value>
</param>
<param>
<key>_rotation</key>
@@ -1111,37 +1083,30 @@
</param>
</block>
<block>
- <key>gr_binary_slicer_fb</key>
+ <key>gr_file_sink</key>
<param>
<key>id</key>
- <value>gr_binary_slicer_fb_0</value>
+ <value>frame_sink</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(393, 975)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
+ <key>file</key>
+ <value>output_filename</value>
</param>
- </block>
- <block>
- <key>noaa_hrpt_deframer</key>
<param>
- <key>id</key>
- <value>deframer</value>
+ <key>type</key>
+ <value>short</value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(762, 975)</value>
+ <value>(848, 1007)</value>
</param>
<param>
<key>_rotation</key>
diff --git a/gr-noaa/apps/file_rx_hrpt.py b/gr-noaa/apps/file_rx_hrpt.py
index 1513141ec4..13b8876358 100755
--- a/gr-noaa/apps/file_rx_hrpt.py
+++ b/gr-noaa/apps/file_rx_hrpt.py
@@ -2,7 +2,7 @@
##################################################
# Gnuradio Python Flow Graph
# Title: USRP HRPT Receiver
-# Generated: Mon Nov 2 08:30:47 2009
+# Generated: Mon Nov 9 07:47:17 2009
##################################################
from gnuradio import eng_notation
@@ -22,7 +22,7 @@ import wx
class file_rx_hrpt(grc_wxgui.top_block_gui):
- def __init__(self, input_filename='usrp.dat', decim=16):
+ def __init__(self, input_filename="usrp.dat", decim=32):
grc_wxgui.top_block_gui.__init__(self, title="USRP HRPT Receiver")
##################################################
@@ -41,25 +41,20 @@ class file_rx_hrpt(grc_wxgui.top_block_gui):
self._saved_pll_alpha_config = ConfigParser.ConfigParser()
self._saved_pll_alpha_config.read(config_filename)
try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat('usrp_rx_hrpt', 'pll_alpha')
- except: saved_pll_alpha = 0.05
+ except: saved_pll_alpha = 0.01
self.saved_pll_alpha = saved_pll_alpha
self._saved_clock_alpha_config = ConfigParser.ConfigParser()
self._saved_clock_alpha_config.read(config_filename)
try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat('usrp_rx_hrpt', 'clock_alpha')
- except: saved_clock_alpha = 0.05
+ except: saved_clock_alpha = 0.01
self.saved_clock_alpha = saved_clock_alpha
- self._side_config = ConfigParser.ConfigParser()
- self._side_config.read(config_filename)
- try: side = self._side_config.get('usrp_rx_hrpt', 'side')
- except: side = 'A'
- self.side = side
self.pll_alpha = pll_alpha = saved_pll_alpha
self._output_filename_config = ConfigParser.ConfigParser()
self._output_filename_config.read(config_filename)
try: output_filename = self._output_filename_config.get('usrp_rx_hrpt', 'filename')
- except: output_filename = 'frames.dat'
+ except: output_filename = 'frames.hrpt'
self.output_filename = output_filename
- self.max_clock_offset = max_clock_offset = 0.1
+ self.max_clock_offset = max_clock_offset = 100e-6
self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate
self.hs = hs = int(sps/2.0)
self.clock_alpha = clock_alpha = saved_clock_alpha
@@ -126,7 +121,7 @@ class file_rx_hrpt(grc_wxgui.top_block_gui):
# Blocks
##################################################
self.agc = gr.agc_cc(1e-6, 1.0, 1.0, 1.0)
- self.decoder = noaa.hrpt_decoder()
+ self.decoder = noaa.hrpt_decoder(True,False)
self.deframer = noaa.hrpt_deframer()
self.demod_scope = scopesink2.scope_sink_f(
self.displays.GetPage(1).GetWin(),
@@ -164,7 +159,7 @@ class file_rx_hrpt(grc_wxgui.top_block_gui):
size=(640, 360),
)
self.displays.GetPage(0).GridAdd(self.rx_fft.win, 0, 0, 1, 1)
- self.throttle = gr.throttle(gr.sizeof_short*1, sample_rate)
+ self.throttle = gr.throttle(gr.sizeof_short*1, 2*sample_rate)
##################################################
# Connections
@@ -196,18 +191,18 @@ class file_rx_hrpt(grc_wxgui.top_block_gui):
def set_sample_rate(self, sample_rate):
self.sample_rate = sample_rate
- self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate)
self.set_sps(self.sample_rate/self.sym_rate)
self.rx_fft.set_sample_rate(self.sample_rate)
+ self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate)
def set_config_filename(self, config_filename):
self.config_filename = config_filename
- self._side_config = ConfigParser.ConfigParser()
- self._side_config.read(self.config_filename)
- if not self._side_config.has_section('usrp_rx_hrpt'):
- self._side_config.add_section('usrp_rx_hrpt')
- self._side_config.set('usrp_rx_hrpt', 'side', str(self.side))
- self._side_config.write(open(self.config_filename, 'w'))
+ self._output_filename_config = ConfigParser.ConfigParser()
+ self._output_filename_config.read(self.config_filename)
+ if not self._output_filename_config.has_section('usrp_rx_hrpt'):
+ self._output_filename_config.add_section('usrp_rx_hrpt')
+ self._output_filename_config.set('usrp_rx_hrpt', 'filename', str(self.output_filename))
+ self._output_filename_config.write(open(self.config_filename, 'w'))
self._saved_pll_alpha_config = ConfigParser.ConfigParser()
self._saved_pll_alpha_config.read(self.config_filename)
if not self._saved_pll_alpha_config.has_section('usrp_rx_hrpt'):
@@ -220,17 +215,11 @@ class file_rx_hrpt(grc_wxgui.top_block_gui):
self._saved_clock_alpha_config.add_section('usrp_rx_hrpt')
self._saved_clock_alpha_config.set('usrp_rx_hrpt', 'clock_alpha', str(self.clock_alpha))
self._saved_clock_alpha_config.write(open(self.config_filename, 'w'))
- self._output_filename_config = ConfigParser.ConfigParser()
- self._output_filename_config.read(self.config_filename)
- if not self._output_filename_config.has_section('usrp_rx_hrpt'):
- self._output_filename_config.add_section('usrp_rx_hrpt')
- self._output_filename_config.set('usrp_rx_hrpt', 'filename', str(self.output_filename))
- self._output_filename_config.write(open(self.config_filename, 'w'))
def set_sps(self, sps):
self.sps = sps
- self.set_hs(int(self.sps/2.0))
self.gr_clock_recovery_mm_xx_0.set_omega(self.sps/2.0)
+ self.set_hs(int(self.sps/2.0))
def set_saved_pll_alpha(self, saved_pll_alpha):
self.saved_pll_alpha = saved_pll_alpha
@@ -240,15 +229,6 @@ class file_rx_hrpt(grc_wxgui.top_block_gui):
self.saved_clock_alpha = saved_clock_alpha
self.set_clock_alpha(self.saved_clock_alpha)
- def set_side(self, side):
- self.side = side
- self._side_config = ConfigParser.ConfigParser()
- self._side_config.read(self.config_filename)
- if not self._side_config.has_section('usrp_rx_hrpt'):
- self._side_config.add_section('usrp_rx_hrpt')
- self._side_config.set('usrp_rx_hrpt', 'side', str(self.side))
- self._side_config.write(open(self.config_filename, 'w'))
-
def set_pll_alpha(self, pll_alpha):
self.pll_alpha = pll_alpha
self.pll.set_alpha(self.pll_alpha)
@@ -297,9 +277,9 @@ class file_rx_hrpt(grc_wxgui.top_block_gui):
if __name__ == '__main__':
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
- parser.add_option("-F", "--input-filename", dest="input_filename", type="string", default='usrp.dat',
+ parser.add_option("-F", "--input-filename", dest="input_filename", type="string", default="usrp.dat",
help="Set usrp.dat [default=%default]")
- parser.add_option("-d", "--decim", dest="decim", type="intx", default=16,
+ parser.add_option("-d", "--decim", dest="decim", type="intx", default=32,
help="Set decim [default=%default]")
(options, args) = parser.parse_args()
tb = file_rx_hrpt(input_filename=options.input_filename, decim=options.decim)
diff --git a/gr-noaa/apps/hrpt_decode.grc b/gr-noaa/apps/hrpt_decode.grc
new file mode 100644
index 0000000000..39fe195d15
--- /dev/null
+++ b/gr-noaa/apps/hrpt_decode.grc
@@ -0,0 +1,428 @@
+<?xml version='1.0' encoding='ASCII'?>
+<flow_graph>
+ <timestamp>Sun Nov 8 10:48:59 2009</timestamp>
+ <block>
+ <key>options</key>
+ <param>
+ <key>id</key>
+ <value>hrpt_decode</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>title</key>
+ <value></value>
+ </param>
+ <param>
+ <key>author</key>
+ <value></value>
+ </param>
+ <param>
+ <key>description</key>
+ <value></value>
+ </param>
+ <param>
+ <key>window_size</key>
+ <value>4096,4096</value>
+ </param>
+ <param>
+ <key>generate_options</key>
+ <value>no_gui</value>
+ </param>
+ <param>
+ <key>category</key>
+ <value>Custom</value>
+ </param>
+ <param>
+ <key>run_options</key>
+ <value>run</value>
+ </param>
+ <param>
+ <key>run</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>realtime_scheduling</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(10, 10)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>max_carrier_offset</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>2*math.pi*100e3/sample_rate</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(575, 19)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>hs</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>int(sps/2.0)</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(499, 19)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>sample_rate</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>64e6/decim</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(198, 17)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>import</key>
+ <param>
+ <key>id</key>
+ <value>import_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>import</key>
+ <value>import math, os</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(11, 103)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>max_clock_offset</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>100e-6</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(710, 17)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>sym_rate</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>600*1109</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(307, 18)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>sps</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>sample_rate/sym_rate</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(400, 17)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>id</key>
+ <value>decim</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>decim</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>32</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>intx</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value>d</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(202, 102)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>id</key>
+ <value>pll_alpha</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>pll_alpha</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0.01</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>eng_float</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value>p</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(294, 101)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>id</key>
+ <value>clock_alpha</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>clock_alpha</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0.01</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>eng_float</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value>s</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(395, 101)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gr_file_source</key>
+ <param>
+ <key>id</key>
+ <value>file_source</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>file</key>
+ <value>input_filename</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>short</value>
+ </param>
+ <param>
+ <key>repeat</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(231, 419)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>noaa_hrpt_decoder</key>
+ <param>
+ <key>id</key>
+ <value>decoder</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>verbose</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>output</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(462, 419)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>parameter</key>
+ <param>
+ <key>id</key>
+ <value>input_filename</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>input_filename</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>frames.hrpt</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value>F</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(522, 100)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <connection>
+ <source_block_id>file_source</source_block_id>
+ <sink_block_id>decoder</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
+</flow_graph>
diff --git a/gr-noaa/apps/hrpt_decode.py b/gr-noaa/apps/hrpt_decode.py
new file mode 100755
index 0000000000..158780b17a
--- /dev/null
+++ b/gr-noaa/apps/hrpt_decode.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env python
+##################################################
+# Gnuradio Python Flow Graph
+# Title: Hrpt Decode
+# Generated: Sun Nov 8 10:49:01 2009
+##################################################
+
+from gnuradio import eng_notation
+from gnuradio import gr
+from gnuradio import noaa
+from gnuradio.eng_option import eng_option
+from gnuradio.gr import firdes
+from optparse import OptionParser
+import math, os
+
+class hrpt_decode(gr.top_block):
+
+ def __init__(self, decim=32, pll_alpha=0.01, clock_alpha=0.01, input_filename="frames.hrpt"):
+ gr.top_block.__init__(self, "Hrpt Decode")
+
+ ##################################################
+ # Parameters
+ ##################################################
+ self.decim = decim
+ self.pll_alpha = pll_alpha
+ self.clock_alpha = clock_alpha
+ self.input_filename = input_filename
+
+ ##################################################
+ # Variables
+ ##################################################
+ self.sym_rate = sym_rate = 600*1109
+ self.sample_rate = sample_rate = 64e6/decim
+ self.sps = sps = sample_rate/sym_rate
+ self.max_clock_offset = max_clock_offset = 100e-6
+ self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate
+ self.hs = hs = int(sps/2.0)
+
+ ##################################################
+ # Blocks
+ ##################################################
+ self.decoder = noaa.hrpt_decoder(True,True)
+ self.file_source = gr.file_source(gr.sizeof_short*1, input_filename, False)
+
+ ##################################################
+ # Connections
+ ##################################################
+ self.connect((self.file_source, 0), (self.decoder, 0))
+
+ def set_decim(self, decim):
+ self.decim = decim
+ self.set_sample_rate(64e6/self.decim)
+
+ def set_pll_alpha(self, pll_alpha):
+ self.pll_alpha = pll_alpha
+
+ def set_clock_alpha(self, clock_alpha):
+ self.clock_alpha = clock_alpha
+
+ def set_input_filename(self, input_filename):
+ self.input_filename = input_filename
+
+ def set_sym_rate(self, sym_rate):
+ self.sym_rate = sym_rate
+ self.set_sps(self.sample_rate/self.sym_rate)
+
+ def set_sample_rate(self, sample_rate):
+ self.sample_rate = sample_rate
+ self.set_max_carrier_offset(2*math.pi*100e3/self.sample_rate)
+ self.set_sps(self.sample_rate/self.sym_rate)
+
+ def set_sps(self, sps):
+ self.sps = sps
+ self.set_hs(int(self.sps/2.0))
+
+ def set_max_clock_offset(self, max_clock_offset):
+ self.max_clock_offset = max_clock_offset
+
+ def set_max_carrier_offset(self, max_carrier_offset):
+ self.max_carrier_offset = max_carrier_offset
+
+ def set_hs(self, hs):
+ self.hs = hs
+
+if __name__ == '__main__':
+ parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
+ parser.add_option("-d", "--decim", dest="decim", type="intx", default=32,
+ help="Set decim [default=%default]")
+ parser.add_option("-p", "--pll-alpha", dest="pll_alpha", type="eng_float", default=eng_notation.num_to_str(0.01),
+ help="Set pll_alpha [default=%default]")
+ parser.add_option("-s", "--clock-alpha", dest="clock_alpha", type="eng_float", default=eng_notation.num_to_str(0.01),
+ help="Set clock_alpha [default=%default]")
+ parser.add_option("-F", "--input-filename", dest="input_filename", type="string", default="frames.hrpt",
+ help="Set frames.hrpt [default=%default]")
+ (options, args) = parser.parse_args()
+ tb = hrpt_decode(decim=options.decim, pll_alpha=options.pll_alpha, clock_alpha=options.clock_alpha, input_filename=options.input_filename)
+ tb.run()
+
diff --git a/gr-noaa/apps/demod_hrpt_file.grc b/gr-noaa/apps/hrpt_demod.grc
index 3c5e3efa4e..8af3d82dd6 100644
--- a/gr-noaa/apps/demod_hrpt_file.grc
+++ b/gr-noaa/apps/hrpt_demod.grc
@@ -1,11 +1,11 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Mon Nov 2 07:06:57 2009</timestamp>
+ <timestamp>Sun Nov 8 10:41:07 2009</timestamp>
<block>
<key>options</key>
<param>
<key>id</key>
- <value>demod_hrpt_file</value>
+ <value>hrpt_demod</value>
</param>
<param>
<key>_enabled</key>
@@ -83,7 +83,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>sym_rate</value>
+ <value>hs</value>
</param>
<param>
<key>_enabled</key>
@@ -91,11 +91,11 @@
</param>
<param>
<key>value</key>
- <value>600*1109</value>
+ <value>int(sps/2.0)</value>
</param>
<param>
<key>_coordinate</key>
- <value>(301, 19)</value>
+ <value>(499, 19)</value>
</param>
<param>
<key>_rotation</key>
@@ -106,7 +106,7 @@
<key>variable</key>
<param>
<key>id</key>
- <value>sps</value>
+ <value>sample_rate</value>
</param>
<param>
<key>_enabled</key>
@@ -114,11 +114,11 @@
</param>
<param>
<key>value</key>
- <value>sample_rate/sym_rate</value>
+ <value>64e6/decim</value>
</param>
<param>
<key>_coordinate</key>
- <value>(397, 19)</value>
+ <value>(198, 17)</value>
</param>
<param>
<key>_rotation</key>
@@ -126,22 +126,22 @@
</param>
</block>
<block>
- <key>variable</key>
+ <key>import</key>
<param>
<key>id</key>
- <value>hs</value>
+ <value>import_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>int(sps/2.0)</value>
+ <key>import</key>
+ <value>import math, os</value>
</param>
<param>
<key>_coordinate</key>
- <value>(499, 19)</value>
+ <value>(11, 103)</value>
</param>
<param>
<key>_rotation</key>
@@ -149,22 +149,34 @@
</param>
</block>
<block>
- <key>variable</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>sample_rate</value>
+ <value>input_filename</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>label</key>
+ <value>input_filename</value>
+ </param>
+ <param>
<key>value</key>
- <value>64e6/decim</value>
+ <value>usrp.dat</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value>F</value>
</param>
<param>
<key>_coordinate</key>
- <value>(198, 17)</value>
+ <value>(618, 102)</value>
</param>
<param>
<key>_rotation</key>
@@ -172,80 +184,69 @@
</param>
</block>
<block>
- <key>variable</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>max_clock_offset</value>
+ <value>output_filename</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>value</key>
- <value>0.1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(710, 17)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
+ <key>label</key>
+ <value>output_filename</value>
</param>
- </block>
- <block>
- <key>import</key>
<param>
- <key>id</key>
- <value>import_0</value>
+ <key>value</key>
+ <value>frames.dat</value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>type</key>
+ <value>string</value>
</param>
<param>
- <key>import</key>
- <value>import math, os</value>
+ <key>short_id</key>
+ <value>o</value>
</param>
<param>
<key>_coordinate</key>
- <value>(11, 103)</value>
+ <value>(726, 102)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
- <key>parameter</key>
+ <key>gr_file_source</key>
<param>
<key>id</key>
- <value>decim</value>
+ <value>file_source</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>decim</value>
+ <key>file</key>
+ <value>input_filename</value>
</param>
<param>
- <key>value</key>
- <value>16</value>
+ <key>type</key>
+ <value>short</value>
</param>
<param>
- <key>type</key>
- <value>intx</value>
+ <key>repeat</key>
+ <value>False</value>
</param>
<param>
- <key>short_id</key>
- <value>d</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(202, 102)</value>
+ <value>(63, 277)</value>
</param>
<param>
<key>_rotation</key>
@@ -253,34 +254,18 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>gr_interleaved_short_to_complex</key>
<param>
<key>id</key>
- <value>pll_alpha</value>
+ <value>cs2cf</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>pll_alpha</value>
- </param>
- <param>
- <key>value</key>
- <value>0.05</value>
- </param>
- <param>
- <key>type</key>
- <value>eng_float</value>
- </param>
- <param>
- <key>short_id</key>
- <value>p</value>
- </param>
- <param>
<key>_coordinate</key>
- <value>(294, 101)</value>
+ <value>(275, 289)</value>
</param>
<param>
<key>_rotation</key>
@@ -288,34 +273,38 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>gr_agc_xx</key>
<param>
<key>id</key>
- <value>clock_alpha</value>
+ <value>agc</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>clock_alpha</value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>value</key>
- <value>0.05</value>
+ <key>rate</key>
+ <value>1e-5</value>
</param>
<param>
- <key>type</key>
- <value>eng_float</value>
+ <key>reference</key>
+ <value>1.0</value>
</param>
<param>
- <key>short_id</key>
- <value>a</value>
+ <key>gain</key>
+ <value>1.0/32768.0</value>
+ </param>
+ <param>
+ <key>max_gain</key>
+ <value>1.0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(395, 101)</value>
+ <value>(117, 394)</value>
</param>
<param>
<key>_rotation</key>
@@ -323,34 +312,30 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>noaa_hrpt_pll_cf</key>
<param>
<key>id</key>
- <value>sync_alpha</value>
+ <value>pll</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>sync_alpha</value>
- </param>
- <param>
- <key>value</key>
- <value>0.05</value>
+ <key>alpha</key>
+ <value>pll_alpha</value>
</param>
<param>
- <key>type</key>
- <value>eng_float</value>
+ <key>beta</key>
+ <value>pll_alpha**2/4.0</value>
</param>
<param>
- <key>short_id</key>
- <value>s</value>
+ <key>max_offset</key>
+ <value>max_carrier_offset</value>
</param>
<param>
<key>_coordinate</key>
- <value>(508, 102)</value>
+ <value>(292, 402)</value>
</param>
<param>
<key>_rotation</key>
@@ -358,34 +343,34 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>gr_moving_average_xx</key>
<param>
<key>id</key>
- <value>input_filename</value>
+ <value>gr_moving_average_xx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>input_filename</value>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
- <key>value</key>
- <value>usrp.dat</value>
+ <key>length</key>
+ <value>hs</value>
</param>
<param>
- <key>type</key>
- <value>string</value>
+ <key>scale</key>
+ <value>1.0/hs</value>
</param>
<param>
- <key>short_id</key>
- <value>F</value>
+ <key>max_iter</key>
+ <value>4000</value>
</param>
<param>
<key>_coordinate</key>
- <value>(618, 102)</value>
+ <value>(504, 402)</value>
</param>
<param>
<key>_rotation</key>
@@ -393,69 +378,61 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>gr_clock_recovery_mm_xx</key>
<param>
<key>id</key>
- <value>output_filename</value>
+ <value>gr_clock_recovery_mm_xx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>output_filename</value>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
- <key>value</key>
- <value>frames.dat</value>
+ <key>omega</key>
+ <value>sps/2.0</value>
</param>
<param>
- <key>type</key>
- <value>string</value>
+ <key>gain_omega</key>
+ <value>clock_alpha**2/4.0</value>
</param>
<param>
- <key>short_id</key>
- <value>o</value>
+ <key>mu</key>
+ <value>0.5</value>
+ </param>
+ <param>
+ <key>gain_mu</key>
+ <value>clock_alpha</value>
+ </param>
+ <param>
+ <key>omega_relative_limit</key>
+ <value>max_clock_offset</value>
</param>
<param>
<key>_coordinate</key>
- <value>(726, 102)</value>
+ <value>(703, 386)</value>
</param>
<param>
<key>_rotation</key>
- <value>180</value>
+ <value>0</value>
</param>
</block>
<block>
- <key>gr_file_source</key>
+ <key>noaa_hrpt_deframer</key>
<param>
<key>id</key>
- <value>file_source</value>
+ <value>noaa_hrpt_deframer_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>file</key>
- <value>input_filename</value>
- </param>
- <param>
- <key>type</key>
- <value>short</value>
- </param>
- <param>
- <key>repeat</key>
- <value>False</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
<key>_coordinate</key>
- <value>(62, 306)</value>
+ <value>(1142, 422)</value>
</param>
<param>
<key>_rotation</key>
@@ -463,10 +440,10 @@
</param>
</block>
<block>
- <key>gr_interleaved_short_to_complex</key>
+ <key>gr_binary_slicer_fb</key>
<param>
<key>id</key>
- <value>cs2cf</value>
+ <value>gr_binary_slicer_fb_0</value>
</param>
<param>
<key>_enabled</key>
@@ -474,7 +451,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(297, 318)</value>
+ <value>(960, 422)</value>
</param>
<param>
<key>_rotation</key>
@@ -482,38 +459,45 @@
</param>
</block>
<block>
- <key>gr_agc_xx</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>agc</value>
+ <value>max_clock_offset</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>value</key>
+ <value>100e-6</value>
</param>
<param>
- <key>rate</key>
- <value>1e-5</value>
+ <key>_coordinate</key>
+ <value>(710, 17)</value>
</param>
<param>
- <key>reference</key>
- <value>1.0</value>
+ <key>_rotation</key>
+ <value>0</value>
</param>
+ </block>
+ <block>
+ <key>variable</key>
<param>
- <key>gain</key>
- <value>1.0/32768.0</value>
+ <key>id</key>
+ <value>sym_rate</value>
</param>
<param>
- <key>max_gain</key>
- <value>1.0</value>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>600*1109</value>
</param>
<param>
<key>_coordinate</key>
- <value>(538, 290)</value>
+ <value>(307, 18)</value>
</param>
<param>
<key>_rotation</key>
@@ -521,30 +505,22 @@
</param>
</block>
<block>
- <key>noaa_hrpt_pll_cf</key>
+ <key>variable</key>
<param>
<key>id</key>
- <value>pll</value>
+ <value>sps</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>alpha</key>
- <value>pll_alpha</value>
- </param>
- <param>
- <key>beta</key>
- <value>pll_alpha**2/4.0</value>
- </param>
- <param>
- <key>max_offset</key>
- <value>max_carrier_offset</value>
+ <key>value</key>
+ <value>sample_rate/sym_rate</value>
</param>
<param>
<key>_coordinate</key>
- <value>(720, 297)</value>
+ <value>(400, 17)</value>
</param>
<param>
<key>_rotation</key>
@@ -552,34 +528,34 @@
</param>
</block>
<block>
- <key>gr_moving_average_xx</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>gr_moving_average_xx_0</value>
+ <value>decim</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>float</value>
+ <key>label</key>
+ <value>decim</value>
</param>
<param>
- <key>length</key>
- <value>hs</value>
+ <key>value</key>
+ <value>32</value>
</param>
<param>
- <key>scale</key>
- <value>1.0/hs</value>
+ <key>type</key>
+ <value>intx</value>
</param>
<param>
- <key>max_iter</key>
- <value>4000</value>
+ <key>short_id</key>
+ <value>d</value>
</param>
<param>
<key>_coordinate</key>
- <value>(949, 297)</value>
+ <value>(202, 102)</value>
</param>
<param>
<key>_rotation</key>
@@ -587,42 +563,34 @@
</param>
</block>
<block>
- <key>gr_clock_recovery_mm_xx</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>gr_clock_recovery_mm_xx_0</value>
+ <value>pll_alpha</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>float</value>
- </param>
- <param>
- <key>omega</key>
- <value>sps/2.0</value>
- </param>
- <param>
- <key>gain_omega</key>
- <value>clock_alpha**2/4.0</value>
+ <key>label</key>
+ <value>pll_alpha</value>
</param>
<param>
- <key>mu</key>
- <value>0.5</value>
+ <key>value</key>
+ <value>0.01</value>
</param>
<param>
- <key>gain_mu</key>
- <value>clock_alpha</value>
+ <key>type</key>
+ <value>eng_float</value>
</param>
<param>
- <key>omega_relative_limit</key>
- <value>max_clock_offset</value>
+ <key>short_id</key>
+ <value>p</value>
</param>
<param>
<key>_coordinate</key>
- <value>(1158, 281)</value>
+ <value>(294, 101)</value>
</param>
<param>
<key>_rotation</key>
@@ -630,30 +598,34 @@
</param>
</block>
<block>
- <key>gr_file_sink</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>gr_file_sink_0</value>
+ <value>clock_alpha</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>file</key>
- <value>output_filename</value>
+ <key>label</key>
+ <value>clock_alpha</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0.01</value>
</param>
<param>
<key>type</key>
- <value>short</value>
+ <value>eng_float</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>short_id</key>
+ <value>s</value>
</param>
<param>
<key>_coordinate</key>
- <value>(732, 615)</value>
+ <value>(395, 101)</value>
</param>
<param>
<key>_rotation</key>
@@ -664,57 +636,58 @@
<key>noaa_hrpt_decoder</key>
<param>
<key>id</key>
- <value>noaa_hrpt_decoder_0</value>
+ <value>decoder</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>verbose</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>output</key>
+ <value>False</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(730, 537)</value>
+ <value>(1150, 341)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
- <key>gr_binary_slicer_fb</key>
+ <key>gr_file_sink</key>
<param>
<key>id</key>
- <value>gr_binary_slicer_fb_0</value>
+ <value>gr_file_sink_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>_coordinate</key>
- <value>(112, 537)</value>
+ <key>file</key>
+ <value>output_filename</value>
</param>
<param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>noaa_hrpt_deframer</key>
- <param>
- <key>id</key>
- <value>noaa_hrpt_deframer_0</value>
+ <key>type</key>
+ <value>short</value>
</param>
<param>
- <key>_enabled</key>
- <value>True</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>_coordinate</key>
- <value>(536, 537)</value>
+ <value>(1144, 489)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<connection>
@@ -761,7 +734,7 @@
</connection>
<connection>
<source_block_id>noaa_hrpt_deframer_0</source_block_id>
- <sink_block_id>noaa_hrpt_decoder_0</sink_block_id>
+ <sink_block_id>decoder</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
diff --git a/gr-noaa/apps/demod_hrpt_file.py b/gr-noaa/apps/hrpt_demod.py
index d866501716..38d0316861 100755
--- a/gr-noaa/apps/demod_hrpt_file.py
+++ b/gr-noaa/apps/hrpt_demod.py
@@ -1,8 +1,8 @@
#!/usr/bin/env python
##################################################
# Gnuradio Python Flow Graph
-# Title: Demod Hrpt File
-# Generated: Mon Nov 2 07:06:57 2009
+# Title: Hrpt Demod
+# Generated: Sun Nov 8 10:41:08 2009
##################################################
from gnuradio import eng_notation
@@ -13,20 +13,19 @@ from gnuradio.gr import firdes
from optparse import OptionParser
import math, os
-class demod_hrpt_file(gr.top_block):
+class hrpt_demod(gr.top_block):
- def __init__(self, decim=16, pll_alpha=0.05, clock_alpha=0.05, sync_alpha=0.05, input_filename="usrp.dat", output_filename="frames.dat"):
- gr.top_block.__init__(self, "Demod Hrpt File")
+ def __init__(self, input_filename="usrp.dat", output_filename="frames.dat", decim=32, pll_alpha=0.01, clock_alpha=0.01):
+ gr.top_block.__init__(self, "Hrpt Demod")
##################################################
# Parameters
##################################################
+ self.input_filename = input_filename
+ self.output_filename = output_filename
self.decim = decim
self.pll_alpha = pll_alpha
self.clock_alpha = clock_alpha
- self.sync_alpha = sync_alpha
- self.input_filename = input_filename
- self.output_filename = output_filename
##################################################
# Variables
@@ -34,7 +33,7 @@ class demod_hrpt_file(gr.top_block):
self.sym_rate = sym_rate = 600*1109
self.sample_rate = sample_rate = 64e6/decim
self.sps = sps = sample_rate/sym_rate
- self.max_clock_offset = max_clock_offset = 0.1
+ self.max_clock_offset = max_clock_offset = 100e-6
self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate
self.hs = hs = int(sps/2.0)
@@ -43,12 +42,12 @@ class demod_hrpt_file(gr.top_block):
##################################################
self.agc = gr.agc_cc(1e-5, 1.0, 1.0/32768.0, 1.0)
self.cs2cf = gr.interleaved_short_to_complex()
+ self.decoder = noaa.hrpt_decoder(True,False)
self.file_source = gr.file_source(gr.sizeof_short*1, input_filename, False)
self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb()
self.gr_clock_recovery_mm_xx_0 = gr.clock_recovery_mm_ff(sps/2.0, clock_alpha**2/4.0, 0.5, clock_alpha, max_clock_offset)
self.gr_file_sink_0 = gr.file_sink(gr.sizeof_short*1, output_filename)
self.gr_moving_average_xx_0 = gr.moving_average_ff(hs, 1.0/hs, 4000)
- self.noaa_hrpt_decoder_0 = noaa.hrpt_decoder()
self.noaa_hrpt_deframer_0 = noaa.hrpt_deframer()
self.pll = noaa.hrpt_pll_cf(pll_alpha, pll_alpha**2/4.0, max_carrier_offset)
@@ -62,9 +61,15 @@ class demod_hrpt_file(gr.top_block):
self.connect((self.cs2cf, 0), (self.agc, 0))
self.connect((self.agc, 0), (self.pll, 0))
self.connect((self.noaa_hrpt_deframer_0, 0), (self.gr_file_sink_0, 0))
- self.connect((self.noaa_hrpt_deframer_0, 0), (self.noaa_hrpt_decoder_0, 0))
+ self.connect((self.noaa_hrpt_deframer_0, 0), (self.decoder, 0))
self.connect((self.gr_binary_slicer_fb_0, 0), (self.noaa_hrpt_deframer_0, 0))
+ def set_input_filename(self, input_filename):
+ self.input_filename = input_filename
+
+ def set_output_filename(self, output_filename):
+ self.output_filename = output_filename
+
def set_decim(self, decim):
self.decim = decim
self.set_sample_rate(64e6/self.decim)
@@ -79,15 +84,6 @@ class demod_hrpt_file(gr.top_block):
self.gr_clock_recovery_mm_xx_0.set_gain_omega(self.clock_alpha**2/4.0)
self.gr_clock_recovery_mm_xx_0.set_gain_mu(self.clock_alpha)
- def set_sync_alpha(self, sync_alpha):
- self.sync_alpha = sync_alpha
-
- def set_input_filename(self, input_filename):
- self.input_filename = input_filename
-
- def set_output_filename(self, output_filename):
- self.output_filename = output_filename
-
def set_sym_rate(self, sym_rate):
self.sym_rate = sym_rate
self.set_sps(self.sample_rate/self.sym_rate)
@@ -115,19 +111,17 @@ class demod_hrpt_file(gr.top_block):
if __name__ == '__main__':
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
- parser.add_option("-d", "--decim", dest="decim", type="intx", default=16,
- help="Set decim [default=%default]")
- parser.add_option("-p", "--pll-alpha", dest="pll_alpha", type="eng_float", default=eng_notation.num_to_str(0.05),
- help="Set pll_alpha [default=%default]")
- parser.add_option("-a", "--clock-alpha", dest="clock_alpha", type="eng_float", default=eng_notation.num_to_str(0.05),
- help="Set clock_alpha [default=%default]")
- parser.add_option("-s", "--sync-alpha", dest="sync_alpha", type="eng_float", default=eng_notation.num_to_str(0.05),
- help="Set sync_alpha [default=%default]")
parser.add_option("-F", "--input-filename", dest="input_filename", type="string", default="usrp.dat",
help="Set usrp.dat [default=%default]")
parser.add_option("-o", "--output-filename", dest="output_filename", type="string", default="frames.dat",
help="Set frames.dat [default=%default]")
+ parser.add_option("-d", "--decim", dest="decim", type="intx", default=32,
+ help="Set decim [default=%default]")
+ parser.add_option("-p", "--pll-alpha", dest="pll_alpha", type="eng_float", default=eng_notation.num_to_str(0.01),
+ help="Set pll_alpha [default=%default]")
+ parser.add_option("-s", "--clock-alpha", dest="clock_alpha", type="eng_float", default=eng_notation.num_to_str(0.01),
+ help="Set clock_alpha [default=%default]")
(options, args) = parser.parse_args()
- tb = demod_hrpt_file(decim=options.decim, pll_alpha=options.pll_alpha, clock_alpha=options.clock_alpha, sync_alpha=options.sync_alpha, input_filename=options.input_filename, output_filename=options.output_filename)
+ tb = hrpt_demod(input_filename=options.input_filename, output_filename=options.output_filename, decim=options.decim, pll_alpha=options.pll_alpha, clock_alpha=options.clock_alpha)
tb.run()
diff --git a/gr-noaa/apps/usrp_rx_hrpt.grc b/gr-noaa/apps/usrp_rx_hrpt.grc
index ac7a87a160..990855f696 100644
--- a/gr-noaa/apps/usrp_rx_hrpt.grc
+++ b/gr-noaa/apps/usrp_rx_hrpt.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Mon Nov 2 08:31:09 2009</timestamp>
+ <timestamp>Mon Nov 9 07:56:11 2009</timestamp>
<block>
<key>options</key>
<param>
@@ -543,72 +543,6 @@
</param>
</block>
<block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>output_filename</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>'frames.dat'</value>
- </param>
- <param>
- <key>type</key>
- <value>string</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'filename'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>output_filename</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1139, 259)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>max_clock_offset</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>0.1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(705, 19)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>variable_slider</key>
<param>
<key>id</key>
@@ -667,135 +601,6 @@
<key>variable_config</key>
<param>
<key>id</key>
- <value>saved_pll_alpha</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>0.05</value>
- </param>
- <param>
- <key>type</key>
- <value>real</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'pll_alpha'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>pll_alpha</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(823, 258)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>saved_clock_alpha</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>0.05</value>
- </param>
- <param>
- <key>type</key>
- <value>real</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'clock_alpha'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>clock_alpha</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(981, 258)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>decim</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>16</value>
- </param>
- <param>
- <key>type</key>
- <value>real</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'decim'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>decim</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(351, 255)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
<value>side</value>
</param>
<param>
@@ -1124,25 +929,6 @@
</param>
</block>
<block>
- <key>noaa_hrpt_decoder</key>
- <param>
- <key>id</key>
- <value>decoder</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(974, 925)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>gr_agc_xx</key>
<param>
<key>id</key>
@@ -1365,6 +1151,228 @@
<value>0</value>
</param>
</block>
+ <block>
+ <key>variable_config</key>
+ <param>
+ <key>id</key>
+ <value>decim</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>32</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>real</value>
+ </param>
+ <param>
+ <key>config_file</key>
+ <value>config_filename</value>
+ </param>
+ <param>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
+ </param>
+ <param>
+ <key>option</key>
+ <value>'decim'</value>
+ </param>
+ <param>
+ <key>writeback</key>
+ <value>decim</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(351, 255)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_config</key>
+ <param>
+ <key>id</key>
+ <value>saved_pll_alpha</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0.01</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>real</value>
+ </param>
+ <param>
+ <key>config_file</key>
+ <value>config_filename</value>
+ </param>
+ <param>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
+ </param>
+ <param>
+ <key>option</key>
+ <value>'pll_alpha'</value>
+ </param>
+ <param>
+ <key>writeback</key>
+ <value>pll_alpha</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(823, 258)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_config</key>
+ <param>
+ <key>id</key>
+ <value>saved_clock_alpha</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0.01</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>real</value>
+ </param>
+ <param>
+ <key>config_file</key>
+ <value>config_filename</value>
+ </param>
+ <param>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
+ </param>
+ <param>
+ <key>option</key>
+ <value>'clock_alpha'</value>
+ </param>
+ <param>
+ <key>writeback</key>
+ <value>clock_alpha</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(981, 258)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_config</key>
+ <param>
+ <key>id</key>
+ <value>output_filename</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>'frames.hrpt'</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
+ </param>
+ <param>
+ <key>config_file</key>
+ <value>config_filename</value>
+ </param>
+ <param>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
+ </param>
+ <param>
+ <key>option</key>
+ <value>'filename'</value>
+ </param>
+ <param>
+ <key>writeback</key>
+ <value>output_filename</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1139, 259)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>noaa_hrpt_decoder</key>
+ <param>
+ <key>id</key>
+ <value>decoder</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>verbose</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>output</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(974, 925)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>max_clock_offset</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>100e-6</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(705, 19)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
<connection>
<source_block_id>virtual_source_0</source_block_id>
<sink_block_id>gr_binary_slicer_fb_0</sink_block_id>
diff --git a/gr-noaa/apps/usrp_rx_hrpt.py b/gr-noaa/apps/usrp_rx_hrpt.py
index a5f9a8e946..48c5f9d29f 100755
--- a/gr-noaa/apps/usrp_rx_hrpt.py
+++ b/gr-noaa/apps/usrp_rx_hrpt.py
@@ -2,7 +2,7 @@
##################################################
# Gnuradio Python Flow Graph
# Title: USRP HRPT Receiver
-# Generated: Mon Nov 2 08:31:10 2009
+# Generated: Mon Nov 9 07:56:11 2009
##################################################
from gnuradio import eng_notation
@@ -33,7 +33,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
self._decim_config = ConfigParser.ConfigParser()
self._decim_config.read(config_filename)
try: decim = self._decim_config.getfloat('usrp_rx_hrpt', 'decim')
- except: decim = 16
+ except: decim = 32
self.decim = decim
self.sym_rate = sym_rate = 600*1109
self.sample_rate = sample_rate = 64e6/decim
@@ -46,7 +46,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
self._saved_pll_alpha_config = ConfigParser.ConfigParser()
self._saved_pll_alpha_config.read(config_filename)
try: saved_pll_alpha = self._saved_pll_alpha_config.getfloat('usrp_rx_hrpt', 'pll_alpha')
- except: saved_pll_alpha = 0.05
+ except: saved_pll_alpha = 0.01
self.saved_pll_alpha = saved_pll_alpha
self._saved_gain_config = ConfigParser.ConfigParser()
self._saved_gain_config.read(config_filename)
@@ -61,16 +61,16 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
self._saved_clock_alpha_config = ConfigParser.ConfigParser()
self._saved_clock_alpha_config.read(config_filename)
try: saved_clock_alpha = self._saved_clock_alpha_config.getfloat('usrp_rx_hrpt', 'clock_alpha')
- except: saved_clock_alpha = 0.05
+ except: saved_clock_alpha = 0.01
self.saved_clock_alpha = saved_clock_alpha
self.side_text = side_text = side
self.pll_alpha = pll_alpha = saved_pll_alpha
self._output_filename_config = ConfigParser.ConfigParser()
self._output_filename_config.read(config_filename)
try: output_filename = self._output_filename_config.get('usrp_rx_hrpt', 'filename')
- except: output_filename = 'frames.dat'
+ except: output_filename = 'frames.hrpt'
self.output_filename = output_filename
- self.max_clock_offset = max_clock_offset = 0.1
+ self.max_clock_offset = max_clock_offset = 100e-6
self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate
self.hs = hs = int(sps/2.0)
self.gain = gain = saved_gain
@@ -187,7 +187,7 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
# Blocks
##################################################
self.agc = gr.agc_cc(1e-6, 1.0, 1.0, 1.0)
- self.decoder = noaa.hrpt_decoder()
+ self.decoder = noaa.hrpt_decoder(True,True)
self.deframer = noaa.hrpt_deframer()
self.demod_scope = scopesink2.scope_sink_f(
self.displays.GetPage(1).GetWin(),
@@ -256,12 +256,18 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
self._saved_gain_config.add_section('usrp_rx_hrpt')
self._saved_gain_config.set('usrp_rx_hrpt', 'gain', str(self.gain))
self._saved_gain_config.write(open(self.config_filename, 'w'))
- self._output_filename_config = ConfigParser.ConfigParser()
- self._output_filename_config.read(self.config_filename)
- if not self._output_filename_config.has_section('usrp_rx_hrpt'):
- self._output_filename_config.add_section('usrp_rx_hrpt')
- self._output_filename_config.set('usrp_rx_hrpt', 'filename', str(self.output_filename))
- self._output_filename_config.write(open(self.config_filename, 'w'))
+ self._side_config = ConfigParser.ConfigParser()
+ self._side_config.read(self.config_filename)
+ if not self._side_config.has_section('usrp_rx_hrpt'):
+ self._side_config.add_section('usrp_rx_hrpt')
+ self._side_config.set('usrp_rx_hrpt', 'side', str(self.side))
+ self._side_config.write(open(self.config_filename, 'w'))
+ self._decim_config = ConfigParser.ConfigParser()
+ self._decim_config.read(self.config_filename)
+ if not self._decim_config.has_section('usrp_rx_hrpt'):
+ self._decim_config.add_section('usrp_rx_hrpt')
+ self._decim_config.set('usrp_rx_hrpt', 'decim', str(self.decim))
+ self._decim_config.write(open(self.config_filename, 'w'))
self._saved_pll_alpha_config = ConfigParser.ConfigParser()
self._saved_pll_alpha_config.read(self.config_filename)
if not self._saved_pll_alpha_config.has_section('usrp_rx_hrpt'):
@@ -274,30 +280,24 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
self._saved_clock_alpha_config.add_section('usrp_rx_hrpt')
self._saved_clock_alpha_config.set('usrp_rx_hrpt', 'clock_alpha', str(self.clock_alpha))
self._saved_clock_alpha_config.write(open(self.config_filename, 'w'))
- self._decim_config = ConfigParser.ConfigParser()
- self._decim_config.read(self.config_filename)
- if not self._decim_config.has_section('usrp_rx_hrpt'):
- self._decim_config.add_section('usrp_rx_hrpt')
- self._decim_config.set('usrp_rx_hrpt', 'decim', str(self.decim))
- self._decim_config.write(open(self.config_filename, 'w'))
- self._side_config = ConfigParser.ConfigParser()
- self._side_config.read(self.config_filename)
- if not self._side_config.has_section('usrp_rx_hrpt'):
- self._side_config.add_section('usrp_rx_hrpt')
- self._side_config.set('usrp_rx_hrpt', 'side', str(self.side))
- self._side_config.write(open(self.config_filename, 'w'))
+ self._output_filename_config = ConfigParser.ConfigParser()
+ self._output_filename_config.read(self.config_filename)
+ if not self._output_filename_config.has_section('usrp_rx_hrpt'):
+ self._output_filename_config.add_section('usrp_rx_hrpt')
+ self._output_filename_config.set('usrp_rx_hrpt', 'filename', str(self.output_filename))
+ self._output_filename_config.write(open(self.config_filename, 'w'))
def set_decim(self, decim):
self.decim = decim
self.set_sample_rate(64e6/self.decim)
self.set_decim_text(self.decim)
+ self.usrp_source.set_decim_rate(self.decim)
self._decim_config = ConfigParser.ConfigParser()
self._decim_config.read(self.config_filename)
if not self._decim_config.has_section('usrp_rx_hrpt'):
self._decim_config.add_section('usrp_rx_hrpt')
self._decim_config.set('usrp_rx_hrpt', 'decim', str(self.decim))
self._decim_config.write(open(self.config_filename, 'w'))
- self.usrp_source.set_decim_rate(self.decim)
def set_sym_rate(self, sym_rate):
self.sym_rate = sym_rate
@@ -349,14 +349,14 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
self.pll_alpha = pll_alpha
self._pll_alpha_slider.set_value(self.pll_alpha)
self._pll_alpha_text_box.set_value(self.pll_alpha)
+ self.pll.set_alpha(self.pll_alpha)
+ self.pll.set_beta(self.pll_alpha**2/4.0)
self._saved_pll_alpha_config = ConfigParser.ConfigParser()
self._saved_pll_alpha_config.read(self.config_filename)
if not self._saved_pll_alpha_config.has_section('usrp_rx_hrpt'):
self._saved_pll_alpha_config.add_section('usrp_rx_hrpt')
self._saved_pll_alpha_config.set('usrp_rx_hrpt', 'pll_alpha', str(self.pll_alpha))
self._saved_pll_alpha_config.write(open(self.config_filename, 'w'))
- self.pll.set_alpha(self.pll_alpha)
- self.pll.set_beta(self.pll_alpha**2/4.0)
def set_output_filename(self, output_filename):
self.output_filename = output_filename
@@ -410,14 +410,14 @@ class usrp_rx_hrpt(grc_wxgui.top_block_gui):
self.clock_alpha = clock_alpha
self._clock_alpha_slider.set_value(self.clock_alpha)
self._clock_alpha_text_box.set_value(self.clock_alpha)
+ self.gr_clock_recovery_mm_xx_0.set_gain_omega(self.clock_alpha**2/4.0)
+ self.gr_clock_recovery_mm_xx_0.set_gain_mu(self.clock_alpha)
self._saved_clock_alpha_config = ConfigParser.ConfigParser()
self._saved_clock_alpha_config.read(self.config_filename)
if not self._saved_clock_alpha_config.has_section('usrp_rx_hrpt'):
self._saved_clock_alpha_config.add_section('usrp_rx_hrpt')
self._saved_clock_alpha_config.set('usrp_rx_hrpt', 'clock_alpha', str(self.clock_alpha))
self._saved_clock_alpha_config.write(open(self.config_filename, 'w'))
- self.gr_clock_recovery_mm_xx_0.set_gain_omega(self.clock_alpha**2/4.0)
- self.gr_clock_recovery_mm_xx_0.set_gain_mu(self.clock_alpha)
if __name__ == '__main__':
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
diff --git a/gr-noaa/apps/usrp_rx_hrpt_nogui.grc b/gr-noaa/apps/usrp_rx_hrpt_nogui.grc
index 02d509f08d..22bd3bdc3c 100644
--- a/gr-noaa/apps/usrp_rx_hrpt_nogui.grc
+++ b/gr-noaa/apps/usrp_rx_hrpt_nogui.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Mon Nov 2 08:31:35 2009</timestamp>
+ <timestamp>Mon Nov 9 08:03:25 2009</timestamp>
<block>
<key>options</key>
<param>
@@ -175,29 +175,6 @@
<key>variable</key>
<param>
<key>id</key>
- <value>max_clock_offset</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>0.1</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(705, 19)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
<value>config_filename</value>
</param>
<param>
@@ -244,49 +221,6 @@
<key>variable_config</key>
<param>
<key>id</key>
- <value>clock_alpha</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>0.05</value>
- </param>
- <param>
- <key>type</key>
- <value>real</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'clock_alpha'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>clock_alpha</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(986, 101)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
<value>gain</value>
</param>
<param>
@@ -373,135 +307,6 @@
<key>variable_config</key>
<param>
<key>id</key>
- <value>decim</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>16</value>
- </param>
- <param>
- <key>type</key>
- <value>real</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'decim'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>decim</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(355, 97)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>output_filename</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>'frames.dat'</value>
- </param>
- <param>
- <key>type</key>
- <value>string</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'filename'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>output_filename</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1143, 101)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
- <value>pll_alpha</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>0.05</value>
- </param>
- <param>
- <key>type</key>
- <value>real</value>
- </param>
- <param>
- <key>config_file</key>
- <value>config_filename</value>
- </param>
- <param>
- <key>section</key>
- <value>'usrp_rx_hrpt'</value>
- </param>
- <param>
- <key>option</key>
- <value>'pll_alpha'</value>
- </param>
- <param>
- <key>writeback</key>
- <value>pll_alpha</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(827, 100)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable_config</key>
- <param>
- <key>id</key>
<value>side</value>
</param>
<param>
@@ -826,10 +631,10 @@
</param>
</block>
<block>
- <key>noaa_hrpt_decoder</key>
+ <key>gr_binary_slicer_fb</key>
<param>
<key>id</key>
- <value>decoder</value>
+ <value>gr_binary_slicer_fb_0</value>
</param>
<param>
<key>_enabled</key>
@@ -837,7 +642,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1027, 623)</value>
+ <value>(446, 673)</value>
</param>
<param>
<key>_rotation</key>
@@ -845,10 +650,10 @@
</param>
</block>
<block>
- <key>gr_binary_slicer_fb</key>
+ <key>noaa_hrpt_deframer</key>
<param>
<key>id</key>
- <value>gr_binary_slicer_fb_0</value>
+ <value>deframer</value>
</param>
<param>
<key>_enabled</key>
@@ -856,7 +661,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(446, 673)</value>
+ <value>(815, 673)</value>
</param>
<param>
<key>_rotation</key>
@@ -864,18 +669,221 @@
</param>
</block>
<block>
- <key>noaa_hrpt_deframer</key>
+ <key>variable_config</key>
<param>
<key>id</key>
- <value>deframer</value>
+ <value>decim</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>value</key>
+ <value>32</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>real</value>
+ </param>
+ <param>
+ <key>config_file</key>
+ <value>config_filename</value>
+ </param>
+ <param>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
+ </param>
+ <param>
+ <key>option</key>
+ <value>'decim'</value>
+ </param>
+ <param>
+ <key>writeback</key>
+ <value>decim</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(815, 673)</value>
+ <value>(355, 97)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_config</key>
+ <param>
+ <key>id</key>
+ <value>pll_alpha</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0.01</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>real</value>
+ </param>
+ <param>
+ <key>config_file</key>
+ <value>config_filename</value>
+ </param>
+ <param>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
+ </param>
+ <param>
+ <key>option</key>
+ <value>'pll_alpha'</value>
+ </param>
+ <param>
+ <key>writeback</key>
+ <value>pll_alpha</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(827, 100)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_config</key>
+ <param>
+ <key>id</key>
+ <value>clock_alpha</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>0.01</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>real</value>
+ </param>
+ <param>
+ <key>config_file</key>
+ <value>config_filename</value>
+ </param>
+ <param>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
+ </param>
+ <param>
+ <key>option</key>
+ <value>'clock_alpha'</value>
+ </param>
+ <param>
+ <key>writeback</key>
+ <value>clock_alpha</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(986, 101)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable_config</key>
+ <param>
+ <key>id</key>
+ <value>output_filename</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>'frames.hrpt'</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
+ </param>
+ <param>
+ <key>config_file</key>
+ <value>config_filename</value>
+ </param>
+ <param>
+ <key>section</key>
+ <value>'usrp_rx_hrpt'</value>
+ </param>
+ <param>
+ <key>option</key>
+ <value>'filename'</value>
+ </param>
+ <param>
+ <key>writeback</key>
+ <value>output_filename</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1143, 101)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>variable</key>
+ <param>
+ <key>id</key>
+ <value>max_clock_offset</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>100e-6</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(705, 19)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>noaa_hrpt_decoder</key>
+ <param>
+ <key>id</key>
+ <value>decoder</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>verbose</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>output</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(1027, 623)</value>
</param>
<param>
<key>_rotation</key>
diff --git a/gr-noaa/apps/usrp_rx_hrpt_nogui.py b/gr-noaa/apps/usrp_rx_hrpt_nogui.py
index 4dc32dbda9..1b510bdb2e 100755
--- a/gr-noaa/apps/usrp_rx_hrpt_nogui.py
+++ b/gr-noaa/apps/usrp_rx_hrpt_nogui.py
@@ -2,7 +2,7 @@
##################################################
# Gnuradio Python Flow Graph
# Title: Usrp Rx Hrpt Nogui
-# Generated: Mon Nov 2 08:31:35 2009
+# Generated: Mon Nov 9 08:03:25 2009
##################################################
from gnuradio import eng_notation
@@ -27,7 +27,7 @@ class usrp_rx_hrpt_nogui(gr.top_block):
self._decim_config = ConfigParser.ConfigParser()
self._decim_config.read(config_filename)
try: decim = self._decim_config.getfloat('usrp_rx_hrpt', 'decim')
- except: decim = 16
+ except: decim = 32
self.decim = decim
self.sym_rate = sym_rate = 600*1109
self.sample_rate = sample_rate = 64e6/decim
@@ -40,14 +40,14 @@ class usrp_rx_hrpt_nogui(gr.top_block):
self._pll_alpha_config = ConfigParser.ConfigParser()
self._pll_alpha_config.read(config_filename)
try: pll_alpha = self._pll_alpha_config.getfloat('usrp_rx_hrpt', 'pll_alpha')
- except: pll_alpha = 0.05
+ except: pll_alpha = 0.01
self.pll_alpha = pll_alpha
self._output_filename_config = ConfigParser.ConfigParser()
self._output_filename_config.read(config_filename)
try: output_filename = self._output_filename_config.get('usrp_rx_hrpt', 'filename')
- except: output_filename = 'frames.dat'
+ except: output_filename = 'frames.hrpt'
self.output_filename = output_filename
- self.max_clock_offset = max_clock_offset = 0.1
+ self.max_clock_offset = max_clock_offset = 100e-6
self.max_carrier_offset = max_carrier_offset = 2*math.pi*100e3/sample_rate
self.hs = hs = int(sps/2.0)
self._gain_config = ConfigParser.ConfigParser()
@@ -63,14 +63,14 @@ class usrp_rx_hrpt_nogui(gr.top_block):
self._clock_alpha_config = ConfigParser.ConfigParser()
self._clock_alpha_config.read(config_filename)
try: clock_alpha = self._clock_alpha_config.getfloat('usrp_rx_hrpt', 'clock_alpha')
- except: clock_alpha = 0.05
+ except: clock_alpha = 0.01
self.clock_alpha = clock_alpha
##################################################
# Blocks
##################################################
self.agc = gr.agc_cc(1e-6, 1.0, 1.0, 1.0)
- self.decoder = noaa.hrpt_decoder()
+ self.decoder = noaa.hrpt_decoder(True,True)
self.deframer = noaa.hrpt_deframer()
self.frame_sink = gr.file_sink(gr.sizeof_short*1, output_filename)
self.gr_binary_slicer_fb_0 = gr.binary_slicer_fb()
@@ -96,12 +96,6 @@ class usrp_rx_hrpt_nogui(gr.top_block):
def set_config_filename(self, config_filename):
self.config_filename = config_filename
- self._clock_alpha_config = ConfigParser.ConfigParser()
- self._clock_alpha_config.read(self.config_filename)
- if not self._clock_alpha_config.has_section('usrp_rx_hrpt'):
- self._clock_alpha_config.add_section('usrp_rx_hrpt')
- self._clock_alpha_config.set('usrp_rx_hrpt', 'clock_alpha', str(self.clock_alpha))
- self._clock_alpha_config.write(open(self.config_filename, 'w'))
self._gain_config = ConfigParser.ConfigParser()
self._gain_config.read(self.config_filename)
if not self._gain_config.has_section('usrp_rx_hrpt'):
@@ -114,41 +108,47 @@ class usrp_rx_hrpt_nogui(gr.top_block):
self._freq_config.add_section('usrp_rx_hrpt')
self._freq_config.set('usrp_rx_hrpt', 'freq', str(self.freq))
self._freq_config.write(open(self.config_filename, 'w'))
+ self._side_config = ConfigParser.ConfigParser()
+ self._side_config.read(self.config_filename)
+ if not self._side_config.has_section('usrp_rx_hrpt'):
+ self._side_config.add_section('usrp_rx_hrpt')
+ self._side_config.set('usrp_rx_hrpt', 'side', str(self.side))
+ self._side_config.write(open(self.config_filename, 'w'))
self._decim_config = ConfigParser.ConfigParser()
self._decim_config.read(self.config_filename)
if not self._decim_config.has_section('usrp_rx_hrpt'):
self._decim_config.add_section('usrp_rx_hrpt')
self._decim_config.set('usrp_rx_hrpt', 'decim', str(self.decim))
self._decim_config.write(open(self.config_filename, 'w'))
- self._output_filename_config = ConfigParser.ConfigParser()
- self._output_filename_config.read(self.config_filename)
- if not self._output_filename_config.has_section('usrp_rx_hrpt'):
- self._output_filename_config.add_section('usrp_rx_hrpt')
- self._output_filename_config.set('usrp_rx_hrpt', 'filename', str(self.output_filename))
- self._output_filename_config.write(open(self.config_filename, 'w'))
self._pll_alpha_config = ConfigParser.ConfigParser()
self._pll_alpha_config.read(self.config_filename)
if not self._pll_alpha_config.has_section('usrp_rx_hrpt'):
self._pll_alpha_config.add_section('usrp_rx_hrpt')
self._pll_alpha_config.set('usrp_rx_hrpt', 'pll_alpha', str(self.pll_alpha))
self._pll_alpha_config.write(open(self.config_filename, 'w'))
- self._side_config = ConfigParser.ConfigParser()
- self._side_config.read(self.config_filename)
- if not self._side_config.has_section('usrp_rx_hrpt'):
- self._side_config.add_section('usrp_rx_hrpt')
- self._side_config.set('usrp_rx_hrpt', 'side', str(self.side))
- self._side_config.write(open(self.config_filename, 'w'))
+ self._clock_alpha_config = ConfigParser.ConfigParser()
+ self._clock_alpha_config.read(self.config_filename)
+ if not self._clock_alpha_config.has_section('usrp_rx_hrpt'):
+ self._clock_alpha_config.add_section('usrp_rx_hrpt')
+ self._clock_alpha_config.set('usrp_rx_hrpt', 'clock_alpha', str(self.clock_alpha))
+ self._clock_alpha_config.write(open(self.config_filename, 'w'))
+ self._output_filename_config = ConfigParser.ConfigParser()
+ self._output_filename_config.read(self.config_filename)
+ if not self._output_filename_config.has_section('usrp_rx_hrpt'):
+ self._output_filename_config.add_section('usrp_rx_hrpt')
+ self._output_filename_config.set('usrp_rx_hrpt', 'filename', str(self.output_filename))
+ self._output_filename_config.write(open(self.config_filename, 'w'))
def set_decim(self, decim):
self.decim = decim
self.set_sample_rate(64e6/self.decim)
+ self.usrp_source.set_decim_rate(self.decim)
self._decim_config = ConfigParser.ConfigParser()
self._decim_config.read(self.config_filename)
if not self._decim_config.has_section('usrp_rx_hrpt'):
self._decim_config.add_section('usrp_rx_hrpt')
self._decim_config.set('usrp_rx_hrpt', 'decim', str(self.decim))
self._decim_config.write(open(self.config_filename, 'w'))
- self.usrp_source.set_decim_rate(self.decim)
def set_sym_rate(self, sym_rate):
self.sym_rate = sym_rate
@@ -175,14 +175,14 @@ class usrp_rx_hrpt_nogui(gr.top_block):
def set_pll_alpha(self, pll_alpha):
self.pll_alpha = pll_alpha
+ self.pll.set_alpha(self.pll_alpha)
+ self.pll.set_beta(self.pll_alpha**2/4.0)
self._pll_alpha_config = ConfigParser.ConfigParser()
self._pll_alpha_config.read(self.config_filename)
if not self._pll_alpha_config.has_section('usrp_rx_hrpt'):
self._pll_alpha_config.add_section('usrp_rx_hrpt')
self._pll_alpha_config.set('usrp_rx_hrpt', 'pll_alpha', str(self.pll_alpha))
self._pll_alpha_config.write(open(self.config_filename, 'w'))
- self.pll.set_alpha(self.pll_alpha)
- self.pll.set_beta(self.pll_alpha**2/4.0)
def set_output_filename(self, output_filename):
self.output_filename = output_filename
@@ -226,14 +226,14 @@ class usrp_rx_hrpt_nogui(gr.top_block):
def set_clock_alpha(self, clock_alpha):
self.clock_alpha = clock_alpha
+ self.gr_clock_recovery_mm_xx_0.set_gain_omega(self.clock_alpha**2/4.0)
+ self.gr_clock_recovery_mm_xx_0.set_gain_mu(self.clock_alpha)
self._clock_alpha_config = ConfigParser.ConfigParser()
self._clock_alpha_config.read(self.config_filename)
if not self._clock_alpha_config.has_section('usrp_rx_hrpt'):
self._clock_alpha_config.add_section('usrp_rx_hrpt')
self._clock_alpha_config.set('usrp_rx_hrpt', 'clock_alpha', str(self.clock_alpha))
self._clock_alpha_config.write(open(self.config_filename, 'w'))
- self.gr_clock_recovery_mm_xx_0.set_gain_omega(self.clock_alpha**2/4.0)
- self.gr_clock_recovery_mm_xx_0.set_gain_mu(self.clock_alpha)
if __name__ == '__main__':
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
diff --git a/gr-noaa/grc/noaa_hrpt_decoder.xml b/gr-noaa/grc/noaa_hrpt_decoder.xml
index 183d72aba3..2d6e98c531 100644
--- a/gr-noaa/grc/noaa_hrpt_decoder.xml
+++ b/gr-noaa/grc/noaa_hrpt_decoder.xml
@@ -4,7 +4,20 @@
<key>noaa_hrpt_decoder</key>
<category>NOAA</category>
<import>from gnuradio import noaa</import>
- <make>noaa.hrpt_decoder()</make>
+ <make>noaa.hrpt_decoder($verbose,$output)</make>
+
+ <param>
+ <name>Verbose</name>
+ <key>verbose</key>
+ <type>bool</type>
+ </param>
+
+ <param>
+ <name>Output Files</name>
+ <key>output</key>
+ <type>bool</type>
+ </param>
+
<sink>
<name>in</name>
<type>short</type>
diff --git a/gr-noaa/lib/Makefile.am b/gr-noaa/lib/Makefile.am
index 4ef4eb87bd..f01bbfab89 100644
--- a/gr-noaa/lib/Makefile.am
+++ b/gr-noaa/lib/Makefile.am
@@ -33,6 +33,9 @@ libgnuradio_noaa_la_SOURCES = \
noaa_hrpt_deframer.cc \
noaa_hrpt_pll_cf.cc
+noinst_HEADERS = \
+ noaa_hrpt.h
+
libgnuradio_noaa_la_LIBADD = \
$(GNURADIO_CORE_LA)
diff --git a/gr-noaa/lib/noaa_hrpt.h b/gr-noaa/lib/noaa_hrpt.h
new file mode 100644
index 0000000000..3812e93685
--- /dev/null
+++ b/gr-noaa/lib/noaa_hrpt.h
@@ -0,0 +1,39 @@
+/* -*- c++ -*- */
+/*
+ * Copyright 2009 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * GNU Radio is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * GNU Radio is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Radio; see the file COPYING. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef INCLUDED_NOAA_HRPT_H
+#define INCLUDED_NOAA_HRPT_H
+
+#define HRPT_SYNC1 0x0284
+#define HRPT_SYNC2 0x016F
+#define HRPT_SYNC3 0x035C
+#define HRPT_SYNC4 0x019D
+#define HRPT_SYNC5 0x020F
+#define HRPT_SYNC6 0x0095
+
+#define HRPT_MINOR_FRAME_SYNC 0x0A116FD719D83C95LL
+
+#define HRPT_SYNC_WORDS 6
+#define HRPT_MINOR_FRAME_WORDS 11090
+#define HRPT_BITS_PER_WORD 10
+
+#endif /* INCLUDED_NOAA_HRPT_H */
diff --git a/gr-noaa/lib/noaa_hrpt_decoder.cc b/gr-noaa/lib/noaa_hrpt_decoder.cc
index 8cfaa913c4..2433100891 100644
--- a/gr-noaa/lib/noaa_hrpt_decoder.cc
+++ b/gr-noaa/lib/noaa_hrpt_decoder.cc
@@ -25,27 +25,52 @@
#endif
#include <noaa_hrpt_decoder.h>
+#include <noaa_hrpt.h>
#include <gr_io_signature.h>
+#include <cstdio>
-#define SYNC1 0x0284
-#define SYNC2 0x016F
-#define SYNC3 0x035C
-#define SYNC4 0x019D
-#define SYNC5 0x020F
-#define SYNC6 0x0095
+static const char *hrpt_ids[] = {
+ "000000",
+ "NOAA11",
+ "000002",
+ "NOAA16",
+ "000004",
+ "000005",
+ "000006",
+ "NOAA15",
+ "000008",
+ "NOAA12",
+ "000010",
+ "NOAA17",
+ "000012",
+ "NOAA18",
+ "000014",
+ "NOAA19"
+};
noaa_hrpt_decoder_sptr
-noaa_make_hrpt_decoder()
+noaa_make_hrpt_decoder(bool verbose, bool output_files)
{
- return gnuradio::get_initial_sptr(new noaa_hrpt_decoder());
+ return gnuradio::get_initial_sptr(new noaa_hrpt_decoder(verbose, output_files));
}
-noaa_hrpt_decoder::noaa_hrpt_decoder()
+noaa_hrpt_decoder::noaa_hrpt_decoder(bool verbose, bool output_files)
: gr_sync_block("noaa_hrpt_decoder",
gr_make_io_signature(1, 1, sizeof(short)),
- gr_make_io_signature(0, 0, 0))
+ gr_make_io_signature(0, 0, 0)),
+ d_verbose(verbose),
+ d_output_files(output_files),
+ d_word_num(0),
+ d_frames_seen(0),
+ d_current_mfnum(0),
+ d_expected_mfnum(0),
+ d_seq_errs(0),
+ d_address(0),
+ d_day_of_year(0),
+ d_milliseconds(0),
+ d_last_time(0)
{
- d_word_count = 0;
+ // Start of capture processing here
}
int
@@ -57,21 +82,119 @@ noaa_hrpt_decoder::work(int noutput_items,
int i = 0;
while (i < noutput_items) {
- unsigned short word = in[i++];
- d_word_count++;
- //fprintf(stderr, "%5u: ", d_word_count);
- for (int pos = 0; pos < 10; pos++) {
- char ch = (word & (1 << 9)) ? '1' : '0';
- word = word << 1;
- //fprintf(stderr, "%c ", ch);
+ d_current_word = in[i++] & 0x3FF;
+ d_word_num++;
+
+ // Per HRPT word processing here
+
+ switch (d_word_num) {
+ case 7:
+ process_mfnum();
+ process_address();
+ break;
+
+ case 9:
+ process_day_of_year();
+ break;
+
+ case 10:
+ process_milli1();
+ break;
+
+ case 11:
+ process_milli2();
+ break;
+
+ case 12:
+ process_milli3();
+ break;
+
+ default:
+ break;
}
- //fprintf(stderr, "\n");
- if (d_word_count == 11090) {
- d_word_count = 0;
- //fprintf(stderr, "\n");
+ if (d_word_num == HRPT_MINOR_FRAME_WORDS) {
+
+ // End of minor frame processing here
+ d_frames_seen++;
+ d_word_num = 0;
+ fprintf(stderr, "\n");
}
}
return i;
}
+
+void
+noaa_hrpt_decoder::process_mfnum()
+{
+ d_current_mfnum = (d_current_word & 0x180) >> 7;
+
+ if (d_verbose)
+ fprintf(stderr, "MF:");
+
+ if (d_current_mfnum != d_expected_mfnum && d_frames_seen > 0) {
+ d_seq_errs++;
+
+ if (d_verbose)
+ fprintf(stderr, "*");
+ }
+ else
+ if (d_verbose)
+ fprintf(stderr, " ");
+
+ if (d_verbose)
+ fprintf(stderr, "%i ", d_current_mfnum);
+ d_expected_mfnum = (d_current_mfnum == 3) ? 1 : d_current_mfnum+1;
+}
+
+void
+noaa_hrpt_decoder::process_address()
+{
+ d_address = ((d_current_word & 0x078) >> 3) & 0x000F;
+
+ if (d_verbose)
+ fprintf(stderr, "SA: %s ", hrpt_ids[d_address]);
+}
+
+void
+noaa_hrpt_decoder::process_day_of_year()
+{
+ d_day_of_year = d_current_word >> 1;
+
+ if (d_verbose)
+ fprintf(stderr, "DOY: %3i ", d_day_of_year);
+}
+
+void
+noaa_hrpt_decoder::process_milli1()
+{
+ d_milliseconds = (d_current_word & 0x7F) << 20;
+}
+
+void
+noaa_hrpt_decoder::process_milli2()
+{
+ d_milliseconds |= (d_current_word << 10);
+}
+
+void
+noaa_hrpt_decoder::process_milli3()
+{
+ d_milliseconds |= d_current_word;
+ int delta = d_milliseconds - d_last_time;
+ d_last_time = d_milliseconds;
+
+ if (d_verbose)
+ fprintf(stderr, "MS: %8i DT: %8i", d_milliseconds, delta);
+}
+
+noaa_hrpt_decoder::~noaa_hrpt_decoder()
+{
+ // End of capture processing here
+
+ if (d_verbose) {
+ fprintf(stderr, "Frames seen: %10i\n", d_frames_seen);
+ fprintf(stderr, "Sequence errors: %10i\n", d_seq_errs);
+ }
+}
diff --git a/gr-noaa/lib/noaa_hrpt_decoder.h b/gr-noaa/lib/noaa_hrpt_decoder.h
index 305243b09a..9d67d7108e 100644
--- a/gr-noaa/lib/noaa_hrpt_decoder.h
+++ b/gr-noaa/lib/noaa_hrpt_decoder.h
@@ -29,16 +29,45 @@ class noaa_hrpt_decoder;
typedef boost::shared_ptr<noaa_hrpt_decoder> noaa_hrpt_decoder_sptr;
noaa_hrpt_decoder_sptr
-noaa_make_hrpt_decoder();
+noaa_make_hrpt_decoder(bool verbose, bool output_files);
class noaa_hrpt_decoder : public gr_sync_block
{
- friend noaa_hrpt_decoder_sptr noaa_make_hrpt_decoder();
- noaa_hrpt_decoder();
+ friend noaa_hrpt_decoder_sptr noaa_make_hrpt_decoder(bool verbose, bool output_files);
+ noaa_hrpt_decoder(bool verbose, bool output_files);
+
+ // Configuration
+ bool d_verbose;
+ bool d_output_files;
+
+ // Frame-level state
+ unsigned short d_current_word;
+ unsigned int d_word_num;
+ int d_frames_seen;
+
+ // Minor frame number
+ int d_current_mfnum;
+ int d_expected_mfnum;
+ int d_seq_errs;
+
+ // Spacecraft address
+ int d_address;
+
+ // Minor frame timestamp
+ int d_day_of_year;
+ int d_milliseconds;
+ int d_last_time;
+
+ void process_mfnum();
+ void process_address();
+ void process_day_of_year();
+ void process_milli1();
+ void process_milli2();
+ void process_milli3();
- unsigned int d_word_count;
-
public:
+ ~noaa_hrpt_decoder();
+
int work(int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
diff --git a/gr-noaa/lib/noaa_hrpt_deframer.cc b/gr-noaa/lib/noaa_hrpt_deframer.cc
index e79894869b..1a2af6c379 100644
--- a/gr-noaa/lib/noaa_hrpt_deframer.cc
+++ b/gr-noaa/lib/noaa_hrpt_deframer.cc
@@ -26,23 +26,13 @@
#include <noaa_hrpt_deframer.h>
#include <gr_io_signature.h>
+#include <noaa_hrpt.h>
#include <cstring>
#include <cstdio>
#define ST_IDLE 0
#define ST_SYNCED 1
-#define SYNC1 0x0284
-#define SYNC2 0x016F
-#define SYNC3 0x035C
-#define SYNC4 0x019D
-#define SYNC5 0x020F
-#define SYNC6 0x0095
-
-#define HRPT_MINOR_FRAME_SYNC 0x0A116FD719D83C95LL
-
-static int frames_seen = 0;
-
noaa_hrpt_deframer_sptr
noaa_make_hrpt_deframer()
{
@@ -98,13 +88,12 @@ noaa_hrpt_deframer::general_work(int noutput_items,
d_shifter = (d_shifter << 1) | bit; // MSB transmitted first
if ((d_shifter & 0x0FFFFFFFFFFFFFFFLL) == HRPT_MINOR_FRAME_SYNC) {
- fprintf(stderr, "SYNC #%i", frames_seen++);
- out[j++] = SYNC1;
- out[j++] = SYNC2;
- out[j++] = SYNC3;
- out[j++] = SYNC4;
- out[j++] = SYNC5;
- out[j++] = SYNC6;
+ out[j++] = HRPT_SYNC1;
+ out[j++] = HRPT_SYNC2;
+ out[j++] = HRPT_SYNC3;
+ out[j++] = HRPT_SYNC4;
+ out[j++] = HRPT_SYNC5;
+ out[j++] = HRPT_SYNC6;
enter_synced();
}
break;
@@ -116,7 +105,6 @@ noaa_hrpt_deframer::general_work(int noutput_items,
d_word = 0;
d_bit_count = HRPT_BITS_PER_WORD;
if (--d_word_count == 0) {
- fprintf(stderr, "...done\n");
enter_idle();
}
}
diff --git a/gr-noaa/lib/noaa_hrpt_deframer.h b/gr-noaa/lib/noaa_hrpt_deframer.h
index 43abba0e91..b11d0fa2b6 100644
--- a/gr-noaa/lib/noaa_hrpt_deframer.h
+++ b/gr-noaa/lib/noaa_hrpt_deframer.h
@@ -23,10 +23,6 @@
#ifndef INCLUDED_NOAA_HRPT_DEFRAMER_H
#define INCLUDED_NOAA_HRPT_DEFRAMER_H
-#define HRPT_SYNC_WORDS 6
-#define HRPT_MINOR_FRAME_WORDS 11090
-#define HRPT_BITS_PER_WORD 10
-
#include <gr_block.h>
class noaa_hrpt_deframer;
diff --git a/gr-noaa/oct/frames_to_ppm.m b/gr-noaa/oct/frames_to_ppm.m
index aeb22faace..73842f0a9f 100644
--- a/gr-noaa/oct/frames_to_ppm.m
+++ b/gr-noaa/oct/frames_to_ppm.m
@@ -23,7 +23,7 @@
% Extract AVHRR images from HRPT frames.dat
clear
-fid = fopen('frames.dat');
+fid = fopen('frames.hrpt');
dat = fread(fid, 'uint16');
frame_len = 11090;
diff --git a/gr-noaa/swig/noaa_hrpt_decoder.i b/gr-noaa/swig/noaa_hrpt_decoder.i
index ddf181c280..220a5714d7 100644
--- a/gr-noaa/swig/noaa_hrpt_decoder.i
+++ b/gr-noaa/swig/noaa_hrpt_decoder.i
@@ -23,7 +23,7 @@
GR_SWIG_BLOCK_MAGIC(noaa,hrpt_decoder)
noaa_hrpt_decoder_sptr
-noaa_make_hrpt_decoder();
+noaa_make_hrpt_decoder(bool verbose, bool output_files);
class noaa_hrpt_decoder : public gr_sync_block
{