aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/receiver_file.grc180
-rw-r--r--examples/receiver_rtlsdr.grc468
-rw-r--r--examples/receiver_usrp.grc508
-rw-r--r--grc/CMakeLists.txt27
-rw-r--r--grc/decoding/gsm_control_channels_decoder.xml (renamed from grc/gsm_control_channels_decoder.xml)0
-rw-r--r--grc/demapping/gsm_get_bcch_or_ccch_bursts.xml (renamed from grc/gsm_get_bcch_or_ccch_bursts.xml)0
-rw-r--r--grc/misc_utils/gsm_bursts_printer.xml (renamed from grc/gsm_bursts_printer.xml)0
-rw-r--r--grc/misc_utils/gsm_clock_offset_corrector.xml (renamed from grc/gsm_clock_offset_corrector.xml)34
-rw-r--r--grc/misc_utils/gsm_controlled_const_source_f.xml (renamed from grc/gsm_controlled_const_source_f.xml)0
-rw-r--r--grc/misc_utils/gsm_controlled_rotator_cc.xml (renamed from grc/gsm_controlled_rotator_cc.xml)0
-rw-r--r--grc/misc_utils/gsm_extract_system_info.xml (renamed from grc/gsm_extract_system_info.xml)0
-rw-r--r--grc/misc_utils/gsm_message_printer.xml (renamed from grc/gsm_message_printer.xml)0
-rw-r--r--grc/receiver/gsm_clock_offset_control.xml (renamed from grc/gsm_clock_offset_control.xml)2
-rw-r--r--grc/receiver/gsm_fcch_burst_tagger.xml (renamed from grc/gsm_fcch_burst_tagger.xml)0
-rw-r--r--grc/receiver/gsm_fcch_detector.xml (renamed from grc/gsm_fcch_detector.xml)0
-rw-r--r--grc/receiver/gsm_receiver.xml38
-rw-r--r--grc/receiver/gsm_receiver_hier.xml (renamed from grc/gsm_receiver_hier.xml)4
-rw-r--r--grc/receiver/gsm_sch_detector.xml (renamed from grc/gsm_sch_detector.xml)0
-rw-r--r--hier_blocks/gsm_fcch_detector.grc567
-rw-r--r--hier_blocks/misc_utils/gsm_clock_offset_corrector.grc (renamed from hier_blocks/clock_offset_corrector.grc)371
-rw-r--r--hier_blocks/receiver/gsm_fcch_detector.grc (renamed from examples/gsm_fcch_detector.grc)0
-rw-r--r--include/gsm/CMakeLists.txt16
-rw-r--r--include/gsm/decoding/control_channels_decoder.h (renamed from include/gsm/control_channels_decoder.h)1
-rw-r--r--include/gsm/demapping/get_bcch_or_ccch_bursts.h (renamed from include/gsm/get_bcch_or_ccch_bursts.h)0
-rw-r--r--include/gsm/misc_utils/bursts_printer.h (renamed from include/gsm/bursts_printer.h)0
-rw-r--r--include/gsm/misc_utils/controlled_const_source_f.h (renamed from include/gsm/controlled_const_source_f.h)0
-rw-r--r--include/gsm/misc_utils/controlled_rotator_cc.h (renamed from include/gsm/controlled_rotator_cc.h)0
-rw-r--r--include/gsm/misc_utils/extract_system_info.h (renamed from include/gsm/extract_system_info.h)0
-rw-r--r--include/gsm/misc_utils/message_printer.h (renamed from include/gsm/message_printer.h)0
-rw-r--r--include/gsm/receiver/receiver.h (renamed from include/gsm/receiver.h)4
-rw-r--r--lib/misc_utils/controlled_const_source_f_impl.cc2
-rw-r--r--lib/misc_utils/controlled_rotator_cc_impl.cc6
-rw-r--r--lib/misc_utils/extract_system_info_impl.cc17
-rw-r--r--lib/receiver/receiver_impl.cc2
-rw-r--r--python/CMakeLists.txt14
-rw-r--r--python/misc_utils/clock_offset_corrector.py (renamed from python/clock_offset_corrector.py)63
-rw-r--r--python/receiver/chirpz.py (renamed from python/chirpz.py)0
-rw-r--r--python/receiver/clock_offset_control.py (renamed from python/clock_offset_control.py)12
-rw-r--r--python/receiver/fcch_burst_tagger.py (renamed from python/fcch_burst_tagger.py)0
-rw-r--r--python/receiver/fcch_detector.py (renamed from python/fcch_detector.py)0
-rw-r--r--python/receiver/receiver_hier.py (renamed from python/receiver_hier.py)2
-rw-r--r--python/receiver/sch_detector.py (renamed from python/sch_detector.py)0
42 files changed, 992 insertions, 1346 deletions
diff --git a/examples/receiver_file.grc b/examples/receiver_file.grc
index 507d3e5..8292b96 100644
--- a/examples/receiver_file.grc
+++ b/examples/receiver_file.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Thu Aug 7 10:53:22 2014</timestamp>
+ <timestamp>Wed Aug 13 19:03:06 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -143,42 +143,46 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>gsm_clock_offset_control</key>
<param>
<key>id</key>
- <value>input_file_name</value>
+ <value>gsm_clock_offset_control_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>input_file_name</value>
+ <key>fc</key>
+ <value>fc</value>
</param>
<param>
- <key>value</key>
- <value>input.cfile</value>
+ <key>samp_rate</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>type</key>
- <value>string</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>short_id</key>
- <value>i</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
</param>
<param>
<key>_coordinate</key>
- <value>(194, 11)</value>
+ <value>(330, 261)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
@@ -192,16 +196,20 @@
<value>True</value>
</param>
<param>
+ <key>fc</key>
+ <value>fc</value>
+ </param>
+ <param>
<key>ppm</key>
<value>0</value>
</param>
<param>
- <key>samp_rate</key>
- <value>samp_rate</value>
+ <key>samp_rate_in</key>
+ <value>1625000.0/6.0*4.0</value>
</param>
<param>
- <key>fc</key>
- <value>fc</value>
+ <key>samp_rate_out</key>
+ <value>1625000.0/6.0*4.0</value>
</param>
<param>
<key>alias</key>
@@ -229,32 +237,16 @@
</param>
</block>
<block>
- <key>blocks_file_source</key>
+ <key>gsm_message_printer</key>
<param>
<key>id</key>
- <value>blocks_file_source_0</value>
+ <value>gsm_message_printer_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>file</key>
- <value>input_file_name</value>
- </param>
- <param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>repeat</key>
- <value>False</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
<key>alias</key>
<value></value>
</param>
@@ -263,16 +255,8 @@
<value></value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
<key>_coordinate</key>
- <value>(39, 346)</value>
+ <value>(1135, 366)</value>
</param>
<param>
<key>_rotation</key>
@@ -280,16 +264,20 @@
</param>
</block>
<block>
- <key>gsm_control_channels_decoder</key>
+ <key>gsm_get_bcch_or_ccch_bursts</key>
<param>
<key>id</key>
- <value>gsm_control_channels_decoder_0</value>
+ <value>gsm_get_bcch_or_ccch_bursts_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>d_fn51_start</key>
+ <value>2</value>
+ </param>
+ <param>
<key>alias</key>
<value></value>
</param>
@@ -307,7 +295,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(897, 358)</value>
+ <value>(668, 362)</value>
</param>
<param>
<key>_rotation</key>
@@ -315,20 +303,16 @@
</param>
</block>
<block>
- <key>gsm_get_bcch_or_ccch_bursts</key>
+ <key>gsm_control_channels_decoder</key>
<param>
<key>id</key>
- <value>gsm_get_bcch_or_ccch_bursts_0</value>
+ <value>gsm_control_channels_decoder_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>d_fn51_start</key>
- <value>2</value>
- </param>
- <param>
<key>alias</key>
<value></value>
</param>
@@ -346,7 +330,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(652, 354)</value>
+ <value>(913, 366)</value>
</param>
<param>
<key>_rotation</key>
@@ -393,7 +377,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(449, 355)</value>
+ <value>(465, 363)</value>
</param>
<param>
<key>_rotation</key>
@@ -401,26 +385,38 @@
</param>
</block>
<block>
- <key>gsm_message_printer</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>gsm_message_printer_0</value>
+ <value>input_file_name</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>label</key>
+ <value>input_file_name</value>
</param>
<param>
- <key>affinity</key>
+ <key>value</key>
+ <value>input.cfile</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value>i</value>
+ </param>
+ <param>
+ <key>alias</key>
<value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(1119, 358)</value>
+ <value>(193, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -428,22 +424,30 @@
</param>
</block>
<block>
- <key>gsm_clock_offset_control</key>
+ <key>blocks_file_source</key>
<param>
<key>id</key>
- <value>gsm_clock_offset_control_0</value>
+ <value>blocks_file_source_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>fc</key>
- <value>fc</value>
+ <key>file</key>
+ <value>input_file_name</value>
</param>
<param>
- <key>samp_rate</key>
- <value>samp_rate</value>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>repeat</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>alias</key>
@@ -463,11 +467,11 @@
</param>
<param>
<key>_coordinate</key>
- <value>(333, 261)</value>
+ <value>(23, 354)</value>
</param>
<param>
<key>_rotation</key>
- <value>180</value>
+ <value>0</value>
</param>
</block>
<connection>
@@ -477,28 +481,22 @@
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>gsm_clock_offset_control_0</source_block_id>
- <sink_block_id>clock_offset_corrector_0</sink_block_id>
- <source_key>ppm</source_key>
- <sink_key>ppm</sink_key>
- </connection>
- <connection>
<source_block_id>blocks_file_source_0</source_block_id>
<sink_block_id>clock_offset_corrector_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>gsm_receiver_hier_0</source_block_id>
- <sink_block_id>gsm_get_bcch_or_ccch_bursts_0</sink_block_id>
- <source_key>bursts</source_key>
- <sink_key>bursts</sink_key>
+ <source_block_id>gsm_clock_offset_control_0</source_block_id>
+ <sink_block_id>clock_offset_corrector_0</sink_block_id>
+ <source_key>ppm</source_key>
+ <sink_key>ppm_in</sink_key>
</connection>
<connection>
- <source_block_id>gsm_get_bcch_or_ccch_bursts_0</source_block_id>
- <sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
- <source_key>bursts</source_key>
- <sink_key>bursts</sink_key>
+ <source_block_id>gsm_receiver_hier_0</source_block_id>
+ <sink_block_id>gsm_clock_offset_control_0</sink_block_id>
+ <source_key>measurements</source_key>
+ <sink_key>measurements</sink_key>
</connection>
<connection>
<source_block_id>gsm_control_channels_decoder_0</source_block_id>
@@ -507,9 +505,15 @@
<sink_key>msgs</sink_key>
</connection>
<connection>
+ <source_block_id>gsm_get_bcch_or_ccch_bursts_0</source_block_id>
+ <sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
+ <source_key>bursts</source_key>
+ <sink_key>bursts</sink_key>
+ </connection>
+ <connection>
<source_block_id>gsm_receiver_hier_0</source_block_id>
- <sink_block_id>gsm_clock_offset_control_0</sink_block_id>
- <source_key>measurements</source_key>
- <sink_key>measurements</sink_key>
+ <sink_block_id>gsm_get_bcch_or_ccch_bursts_0</sink_block_id>
+ <source_key>bursts</source_key>
+ <sink_key>bursts</sink_key>
</connection>
</flow_graph>
diff --git a/examples/receiver_rtlsdr.grc b/examples/receiver_rtlsdr.grc
index 513a28d..d7d4ccb 100644
--- a/examples/receiver_rtlsdr.grc
+++ b/examples/receiver_rtlsdr.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Thu Aug 7 16:47:30 2014</timestamp>
+ <timestamp>Wed Aug 13 19:03:28 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -29,7 +29,7 @@
</param>
<param>
<key>generate_options</key>
- <value>wx_gui</value>
+ <value>qt_gui</value>
</param>
<param>
<key>category</key>
@@ -84,7 +84,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(13, 167)</value>
+ <value>(13, 86)</value>
</param>
<param>
<key>_rotation</key>
@@ -92,10 +92,10 @@
</param>
</block>
<block>
- <key>variable_slider</key>
+ <key>variable_qtgui_range</key>
<param>
<key>id</key>
- <value>ppm</value>
+ <value>g</value>
</param>
<param>
<key>_enabled</key>
@@ -103,38 +103,38 @@
</param>
<param>
<key>label</key>
- <value></value>
+ <value>gain</value>
</param>
<param>
<key>value</key>
- <value>0</value>
+ <value>43</value>
</param>
<param>
- <key>min</key>
- <value>-50</value>
+ <key>start</key>
+ <value>0</value>
</param>
<param>
- <key>max</key>
+ <key>stop</key>
<value>50</value>
</param>
<param>
- <key>num_steps</key>
- <value>100</value>
+ <key>step</key>
+ <value>0.5</value>
</param>
<param>
- <key>style</key>
- <value>wx.SL_HORIZONTAL</value>
+ <key>widget</key>
+ <value>counter</value>
</param>
<param>
- <key>converver</key>
- <value>float_converter</value>
+ <key>orient</key>
+ <value>Qt.Horizontal</value>
</param>
<param>
- <key>grid_pos</key>
- <value></value>
+ <key>min_len</key>
+ <value>100</value>
</param>
<param>
- <key>notebook</key>
+ <key>gui_hint</key>
<value></value>
</param>
<param>
@@ -143,7 +143,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(462, 28)</value>
+ <value>(218, 10)</value>
</param>
<param>
<key>_rotation</key>
@@ -151,7 +151,7 @@
</param>
</block>
<block>
- <key>variable_slider</key>
+ <key>variable_qtgui_range</key>
<param>
<key>id</key>
<value>fc</value>
@@ -162,38 +162,38 @@
</param>
<param>
<key>label</key>
- <value></value>
+ <value>center_frequency</value>
</param>
<param>
<key>value</key>
- <value>940e6</value>
+ <value>939.4e6</value>
</param>
<param>
- <key>min</key>
- <value>800e6</value>
+ <key>start</key>
+ <value>925e6</value>
</param>
<param>
- <key>max</key>
- <value>1000e6</value>
+ <key>stop</key>
+ <value>960e6</value>
</param>
<param>
- <key>num_steps</key>
- <value>1000</value>
+ <key>step</key>
+ <value>2e5</value>
</param>
<param>
- <key>style</key>
- <value>wx.SL_HORIZONTAL</value>
+ <key>widget</key>
+ <value>counter_slider</value>
</param>
<param>
- <key>converver</key>
- <value>float_converter</value>
+ <key>orient</key>
+ <value>Qt.Horizontal</value>
</param>
<param>
- <key>grid_pos</key>
- <value></value>
+ <key>min_len</key>
+ <value>100</value>
</param>
<param>
- <key>notebook</key>
+ <key>gui_hint</key>
<value></value>
</param>
<param>
@@ -202,7 +202,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(333, 29)</value>
+ <value>(330, 9)</value>
</param>
<param>
<key>_rotation</key>
@@ -210,10 +210,10 @@
</param>
</block>
<block>
- <key>variable_slider</key>
+ <key>variable_qtgui_range</key>
<param>
<key>id</key>
- <value>g</value>
+ <value>ppm</value>
</param>
<param>
<key>_enabled</key>
@@ -221,86 +221,47 @@
</param>
<param>
<key>label</key>
- <value></value>
+ <value>clock_correction</value>
</param>
<param>
<key>value</key>
- <value>43</value>
- </param>
- <param>
- <key>min</key>
<value>0</value>
</param>
<param>
- <key>max</key>
- <value>100</value>
+ <key>start</key>
+ <value>-50</value>
</param>
<param>
- <key>num_steps</key>
- <value>100</value>
+ <key>stop</key>
+ <value>50</value>
</param>
<param>
- <key>style</key>
- <value>wx.SL_HORIZONTAL</value>
+ <key>step</key>
+ <value>1</value>
</param>
<param>
- <key>converver</key>
- <value>float_converter</value>
+ <key>widget</key>
+ <value>counter</value>
</param>
<param>
- <key>grid_pos</key>
- <value></value>
+ <key>orient</key>
+ <value>Qt.Horizontal</value>
</param>
<param>
- <key>notebook</key>
- <value></value>
+ <key>min_len</key>
+ <value>100</value>
</param>
<param>
- <key>alias</key>
+ <key>gui_hint</key>
<value></value>
</param>
<param>
- <key>_coordinate</key>
- <value>(217, 29)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gsm_get_bcch_or_ccch_bursts</key>
- <param>
- <key>id</key>
- <value>gsm_get_bcch_or_ccch_bursts_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>d_fn51_start</key>
- <value>2</value>
- </param>
- <param>
<key>alias</key>
<value></value>
</param>
<param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
<key>_coordinate</key>
- <value>(659, 316)</value>
+ <value>(473, 10)</value>
</param>
<param>
<key>_rotation</key>
@@ -391,7 +352,7 @@
</param>
<param>
<key>gain_mode1</key>
- <value>0</value>
+ <value>True</value>
</param>
<param>
<key>gain1</key>
@@ -431,7 +392,7 @@
</param>
<param>
<key>gain_mode2</key>
- <value>0</value>
+ <value>True</value>
</param>
<param>
<key>gain2</key>
@@ -471,7 +432,7 @@
</param>
<param>
<key>gain_mode3</key>
- <value>0</value>
+ <value>True</value>
</param>
<param>
<key>gain3</key>
@@ -511,7 +472,7 @@
</param>
<param>
<key>gain_mode4</key>
- <value>0</value>
+ <value>True</value>
</param>
<param>
<key>gain4</key>
@@ -551,7 +512,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(5, 244)</value>
+ <value>(4, 171)</value>
</param>
<param>
<key>_rotation</key>
@@ -559,10 +520,10 @@
</param>
</block>
<block>
- <key>wxgui_fftsink2</key>
+ <key>qtgui_sink_x</key>
<param>
<key>id</key>
- <value>wxgui_fftsink2_0</value>
+ <value>qtgui_sink_x_0</value>
</param>
<param>
<key>_enabled</key>
@@ -573,72 +534,99 @@
<value>complex</value>
</param>
<param>
- <key>title</key>
- <value>FFT Plot</value>
+ <key>name</key>
+ <value>""</value>
</param>
<param>
- <key>samp_rate</key>
- <value>samp_rate</value>
+ <key>fftsize</key>
+ <value>1024</value>
</param>
<param>
- <key>baseband_freq</key>
- <value>0</value>
+ <key>wintype</key>
+ <value>firdes.WIN_BLACKMAN_hARRIS</value>
</param>
<param>
- <key>y_per_div</key>
- <value>10</value>
+ <key>fc</key>
+ <value>fc</value>
</param>
<param>
- <key>y_divs</key>
- <value>10</value>
+ <key>bw</key>
+ <value>samp_rate</value>
</param>
<param>
- <key>ref_level</key>
- <value>0</value>
+ <key>rate</key>
+ <value>10</value>
</param>
<param>
- <key>ref_scale</key>
- <value>2.0</value>
+ <key>showrf</key>
+ <value>True</value>
</param>
<param>
- <key>fft_size</key>
- <value>1024</value>
+ <key>plotfreq</key>
+ <value>True</value>
</param>
<param>
- <key>fft_rate</key>
- <value>15</value>
+ <key>plotwaterfall</key>
+ <value>True</value>
</param>
<param>
- <key>peak_hold</key>
- <value>False</value>
+ <key>plottime</key>
+ <value>True</value>
</param>
<param>
- <key>average</key>
- <value>False</value>
+ <key>plotconst</key>
+ <value>True</value>
</param>
<param>
- <key>avg_alpha</key>
- <value>0</value>
+ <key>gui_hint</key>
+ <value></value>
</param>
<param>
- <key>win</key>
+ <key>freqchangevar</key>
<value>None</value>
</param>
<param>
- <key>win_size</key>
- <value></value>
+ <key>showports</key>
+ <value>True</value>
</param>
<param>
- <key>grid_pos</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>notebook</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
- <key>freqvar</key>
- <value>None</value>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(455, 374)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gsm_get_bcch_or_ccch_bursts</key>
+ <param>
+ <key>id</key>
+ <value>gsm_get_bcch_or_ccch_bursts_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>d_fn51_start</key>
+ <value>2</value>
</param>
<param>
<key>alias</key>
@@ -649,8 +637,16 @@
<value></value>
</param>
<param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(455, 398)</value>
+ <value>(660, 243)</value>
</param>
<param>
<key>_rotation</key>
@@ -658,16 +654,24 @@
</param>
</block>
<block>
- <key>gsm_control_channels_decoder</key>
+ <key>gsm_clock_offset_control</key>
<param>
<key>id</key>
- <value>gsm_control_channels_decoder_0</value>
+ <value>gsm_clock_offset_control_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>fc</key>
+ <value>fc</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
<key>alias</key>
<value></value>
</param>
@@ -685,11 +689,11 @@
</param>
<param>
<key>_coordinate</key>
- <value>(919, 320)</value>
+ <value>(329, 155)</value>
</param>
<param>
<key>_rotation</key>
- <value>0</value>
+ <value>180</value>
</param>
</block>
<block>
@@ -703,16 +707,20 @@
<value>True</value>
</param>
<param>
+ <key>fc</key>
+ <value>fc</value>
+ </param>
+ <param>
<key>ppm</key>
<value>0</value>
</param>
<param>
- <key>samp_rate</key>
+ <key>samp_rate_in</key>
<value>samp_rate</value>
</param>
<param>
- <key>fc</key>
- <value>fc</value>
+ <key>samp_rate_out</key>
+ <value>samp_rate</value>
</param>
<param>
<key>alias</key>
@@ -732,7 +740,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(252, 317)</value>
+ <value>(251, 236)</value>
</param>
<param>
<key>_rotation</key>
@@ -740,24 +748,79 @@
</param>
</block>
<block>
- <key>gsm_clock_offset_control</key>
+ <key>blocks_tag_debug</key>
<param>
<key>id</key>
- <value>gsm_clock_offset_control_0</value>
+ <value>blocks_tag_debug_0</value>
</param>
<param>
<key>_enabled</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>name</key>
+ <value></value>
+ </param>
+ <param>
+ <key>filter</key>
+ <value>""</value>
+ </param>
+ <param>
+ <key>num_inputs</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>display</key>
<value>True</value>
</param>
<param>
- <key>fc</key>
- <value>fc</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>samp_rate</key>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(456, 477)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gsm_receiver_hier</key>
+ <param>
+ <key>id</key>
+ <value>gsm_receiver_hier_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>input_rate</key>
<value>samp_rate</value>
</param>
<param>
+ <key>osr</key>
+ <value>4</value>
+ </param>
+ <param>
+ <key>arfcn</key>
+ <value>0</value>
+ </param>
+ <param>
<key>alias</key>
<value></value>
</param>
@@ -775,18 +838,18 @@
</param>
<param>
<key>_coordinate</key>
- <value>(330, 235)</value>
+ <value>(455, 244)</value>
</param>
<param>
<key>_rotation</key>
- <value>180</value>
+ <value>0</value>
</param>
</block>
<block>
- <key>gsm_message_printer</key>
+ <key>blocks_message_debug</key>
<param>
<key>id</key>
- <value>gsm_message_printer_0</value>
+ <value>blocks_message_debug_0</value>
</param>
<param>
<key>_enabled</key>
@@ -802,7 +865,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(1140, 320)</value>
+ <value>(240, 406)</value>
</param>
<param>
<key>_rotation</key>
@@ -810,10 +873,10 @@
</param>
</block>
<block>
- <key>blocks_message_debug</key>
+ <key>gsm_control_channels_decoder</key>
<param>
<key>id</key>
- <value>blocks_message_debug_0</value>
+ <value>gsm_control_channels_decoder_0</value>
</param>
<param>
<key>_enabled</key>
@@ -828,8 +891,16 @@
<value></value>
</param>
<param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(265, 450)</value>
+ <value>(920, 247)</value>
</param>
<param>
<key>_rotation</key>
@@ -837,46 +908,53 @@
</param>
</block>
<block>
- <key>gsm_receiver_hier</key>
+ <key>gsm_message_printer</key>
<param>
<key>id</key>
- <value>gsm_receiver_hier_0</value>
+ <value>gsm_message_printer_0</value>
</param>
<param>
<key>_enabled</key>
- <value>True</value>
+ <value>False</value>
</param>
<param>
- <key>input_rate</key>
- <value>samp_rate</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>osr</key>
- <value>4</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
- <key>arfcn</key>
+ <key>_coordinate</key>
+ <value>(1128, 169)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
<value>0</value>
</param>
+ </block>
+ <block>
+ <key>gsm_message_printer</key>
<param>
- <key>alias</key>
- <value></value>
+ <key>id</key>
+ <value>gsm_message_printer_1</value>
</param>
<param>
- <key>affinity</key>
- <value></value>
+ <key>_enabled</key>
+ <value>True</value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>maxoutbuf</key>
- <value>0</value>
+ <key>affinity</key>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(458, 317)</value>
+ <value>(1141, 247)</value>
</param>
<param>
<key>_rotation</key>
@@ -884,16 +962,10 @@
</param>
</block>
<connection>
- <source_block_id>gsm_control_channels_decoder_0</source_block_id>
- <sink_block_id>gsm_message_printer_0</sink_block_id>
- <source_key>msgs</source_key>
- <sink_key>msgs</sink_key>
- </connection>
- <connection>
- <source_block_id>gsm_clock_offset_control_0</source_block_id>
- <sink_block_id>clock_offset_corrector_0</sink_block_id>
- <source_key>ppm</source_key>
- <sink_key>ppm</sink_key>
+ <source_block_id>clock_offset_corrector_0</source_block_id>
+ <sink_block_id>gsm_receiver_hier_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>rtlsdr_source_0</source_block_id>
@@ -903,15 +975,15 @@
</connection>
<connection>
<source_block_id>clock_offset_corrector_0</source_block_id>
- <sink_block_id>wxgui_fftsink2_0</sink_block_id>
+ <sink_block_id>qtgui_sink_x_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>clock_offset_corrector_0</source_block_id>
- <sink_block_id>gsm_receiver_hier_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
+ <source_block_id>gsm_get_bcch_or_ccch_bursts_0</source_block_id>
+ <sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
+ <source_key>bursts</source_key>
+ <sink_key>bursts</sink_key>
</connection>
<connection>
<source_block_id>gsm_receiver_hier_0</source_block_id>
@@ -926,10 +998,22 @@
<sink_key>measurements</sink_key>
</connection>
<connection>
- <source_block_id>gsm_get_bcch_or_ccch_bursts_0</source_block_id>
- <sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
- <source_key>bursts</source_key>
- <sink_key>bursts</sink_key>
+ <source_block_id>gsm_control_channels_decoder_0</source_block_id>
+ <sink_block_id>gsm_message_printer_0</sink_block_id>
+ <source_key>msgs</source_key>
+ <sink_key>msgs</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>gsm_clock_offset_control_0</source_block_id>
+ <sink_block_id>clock_offset_corrector_0</sink_block_id>
+ <source_key>ppm</source_key>
+ <sink_key>ppm_in</sink_key>
+ </connection>
+ <connection>
+ <source_block_id>clock_offset_corrector_0</source_block_id>
+ <sink_block_id>blocks_tag_debug_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>gsm_receiver_hier_0</source_block_id>
@@ -937,4 +1021,10 @@
<source_key>measurements</source_key>
<sink_key>print</sink_key>
</connection>
+ <connection>
+ <source_block_id>gsm_control_channels_decoder_0</source_block_id>
+ <sink_block_id>gsm_message_printer_1</sink_block_id>
+ <source_key>msgs</source_key>
+ <sink_key>msgs</sink_key>
+ </connection>
</flow_graph>
diff --git a/examples/receiver_usrp.grc b/examples/receiver_usrp.grc
index a7a8dcf..c6fd77a 100644
--- a/examples/receiver_usrp.grc
+++ b/examples/receiver_usrp.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Wed Aug 6 19:56:07 2014</timestamp>
+ <timestamp>Wed Aug 13 19:03:38 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -249,6 +249,253 @@
</param>
</block>
<block>
+ <key>wxgui_fftsink2</key>
+ <param>
+ <key>id</key>
+ <value>wxgui_fftsink2_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>title</key>
+ <value>FFT Plot</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
+ <key>baseband_freq</key>
+ <value>fc</value>
+ </param>
+ <param>
+ <key>y_per_div</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>y_divs</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>ref_level</key>
+ <value>0</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>False</value>
+ </param>
+ <param>
+ <key>avg_alpha</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>win</key>
+ <value>None</value>
+ </param>
+ <param>
+ <key>win_size</key>
+ <value></value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value>1,1,1,1</value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
+ <key>freqvar</key>
+ <value>None</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(284, 367)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gsm_receiver_hier</key>
+ <param>
+ <key>id</key>
+ <value>gsm_receiver_hier_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>input_rate</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
+ <key>osr</key>
+ <value>4</value>
+ </param>
+ <param>
+ <key>arfcn</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(266, 269)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gsm_message_printer</key>
+ <param>
+ <key>id</key>
+ <value>gsm_message_printer_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(905, 272)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gsm_control_channels_decoder</key>
+ <param>
+ <key>id</key>
+ <value>gsm_control_channels_decoder_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(694, 272)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gsm_get_bcch_or_ccch_bursts</key>
+ <param>
+ <key>id</key>
+ <value>gsm_get_bcch_or_ccch_bursts_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>d_fn51_start</key>
+ <value>2</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(452, 268)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
<key>uhd_usrp_source</key>
<param>
<key>id</key>
@@ -296,7 +543,7 @@
</param>
<param>
<key>clock_source0</key>
- <value>external</value>
+ <value></value>
</param>
<param>
<key>time_source0</key>
@@ -928,254 +1175,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(22, 253)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>wxgui_fftsink2</key>
- <param>
- <key>id</key>
- <value>wxgui_fftsink2_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>title</key>
- <value>FFT Plot</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>samp_rate</value>
- </param>
- <param>
- <key>baseband_freq</key>
- <value>fc</value>
- </param>
- <param>
- <key>y_per_div</key>
- <value>10</value>
- </param>
- <param>
- <key>y_divs</key>
- <value>10</value>
- </param>
- <param>
- <key>ref_level</key>
- <value>0</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>False</value>
- </param>
- <param>
- <key>avg_alpha</key>
- <value>0</value>
- </param>
- <param>
- <key>win</key>
- <value>None</value>
- </param>
- <param>
- <key>win_size</key>
- <value></value>
- </param>
- <param>
- <key>grid_pos</key>
- <value>1,1,1,1</value>
- </param>
- <param>
- <key>notebook</key>
- <value></value>
- </param>
- <param>
- <key>freqvar</key>
- <value>None</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(284, 367)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gsm_get_bcch_or_ccch_bursts</key>
- <param>
- <key>id</key>
- <value>gsm_get_bcch_or_ccch_bursts_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>d_fn51_start</key>
- <value>2</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(452, 268)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gsm_control_channels_decoder</key>
- <param>
- <key>id</key>
- <value>gsm_control_channels_decoder_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(694, 272)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gsm_message_printer</key>
- <param>
- <key>id</key>
- <value>gsm_message_printer_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(905, 272)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gsm_receiver_hier</key>
- <param>
- <key>id</key>
- <value>gsm_receiver_hier_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>input_rate</key>
- <value>samp_rate</value>
- </param>
- <param>
- <key>osr</key>
- <value>4</value>
- </param>
- <param>
- <key>arfcn</key>
- <value>0</value>
- </param>
- <param>
- <key>alias</key>
- <value></value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(266, 269)</value>
+ <value>(25, 261)</value>
</param>
<param>
<key>_rotation</key>
@@ -1195,8 +1195,8 @@
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>gsm_get_bcch_or_ccch_bursts_0</source_block_id>
- <sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
+ <source_block_id>gsm_receiver_hier_0</source_block_id>
+ <sink_block_id>gsm_get_bcch_or_ccch_bursts_0</sink_block_id>
<source_key>bursts</source_key>
<sink_key>bursts</sink_key>
</connection>
@@ -1207,8 +1207,8 @@
<sink_key>msgs</sink_key>
</connection>
<connection>
- <source_block_id>gsm_receiver_hier_0</source_block_id>
- <sink_block_id>gsm_get_bcch_or_ccch_bursts_0</sink_block_id>
+ <source_block_id>gsm_get_bcch_or_ccch_bursts_0</source_block_id>
+ <sink_block_id>gsm_control_channels_decoder_0</sink_block_id>
<source_key>bursts</source_key>
<sink_key>bursts</sink_key>
</connection>
diff --git a/grc/CMakeLists.txt b/grc/CMakeLists.txt
index 8aa9b02..c95646d 100644
--- a/grc/CMakeLists.txt
+++ b/grc/CMakeLists.txt
@@ -17,17 +17,18 @@
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
install(FILES
- gsm_receiver_hier.xml
- gsm_bursts_printer.xml
- gsm_fcch_burst_tagger.xml
- gsm_sch_detector.xml
- gsm_fcch_detector.xml
- gsm_get_bcch_or_ccch_bursts.xml
- gsm_control_channels_decoder.xml
- gsm_extract_system_info.xml
- gsm_controlled_rotator_cc.xml
- gsm_controlled_const_source_f.xml
- gsm_clock_offset_control.xml
- gsm_message_printer.xml
- gsm_clock_offset_corrector.xml DESTINATION share/gnuradio/grc/blocks
+ receiver/gsm_receiver.xml
+ receiver/gsm_receiver_hier.xml
+ misc_utils/gsm_bursts_printer.xml
+ receiver/gsm_fcch_burst_tagger.xml
+ receiver/gsm_sch_detector.xml
+ receiver/gsm_fcch_detector.xml
+ demapping/gsm_get_bcch_or_ccch_bursts.xml
+ decoding/gsm_control_channels_decoder.xml
+ misc_utils/gsm_extract_system_info.xml
+ misc_utils/gsm_controlled_rotator_cc.xml
+ misc_utils/gsm_controlled_const_source_f.xml
+ receiver/gsm_clock_offset_control.xml
+ misc_utils/gsm_message_printer.xml
+ misc_utils/gsm_clock_offset_corrector.xml DESTINATION share/gnuradio/grc/blocks
)
diff --git a/grc/gsm_control_channels_decoder.xml b/grc/decoding/gsm_control_channels_decoder.xml
index f04794a..f04794a 100644
--- a/grc/gsm_control_channels_decoder.xml
+++ b/grc/decoding/gsm_control_channels_decoder.xml
diff --git a/grc/gsm_get_bcch_or_ccch_bursts.xml b/grc/demapping/gsm_get_bcch_or_ccch_bursts.xml
index 5989227..5989227 100644
--- a/grc/gsm_get_bcch_or_ccch_bursts.xml
+++ b/grc/demapping/gsm_get_bcch_or_ccch_bursts.xml
diff --git a/grc/gsm_bursts_printer.xml b/grc/misc_utils/gsm_bursts_printer.xml
index c1716be..c1716be 100644
--- a/grc/gsm_bursts_printer.xml
+++ b/grc/misc_utils/gsm_bursts_printer.xml
diff --git a/grc/gsm_clock_offset_corrector.xml b/grc/misc_utils/gsm_clock_offset_corrector.xml
index a4b3cd3..7fe4a4d 100644
--- a/grc/gsm_clock_offset_corrector.xml
+++ b/grc/misc_utils/gsm_clock_offset_corrector.xml
@@ -4,10 +4,22 @@
<key>clock_offset_corrector</key>
<category>GSM</category>
<import>import gsm</import>
- <make>gsm.clock_offset_corrector(ppm=$ppm,samp_rate=$samp_rate,fc=$fc)</make>
- <callback>set_ppm($ppm)</callback>
- <callback>set_samp_rate($samp_rate)</callback>
+ <make>gsm.clock_offset_corrector(
+ fc=$fc,
+ ppm=$ppm,
+ samp_rate_in=$samp_rate_in,
+ samp_rate_out=$samp_rate_out,
+)</make>
<callback>set_fc($fc)</callback>
+ <callback>set_ppm($ppm)</callback>
+ <callback>set_samp_rate_in($samp_rate_in)</callback>
+ <callback>set_samp_rate_out($samp_rate_out)</callback>
+ <param>
+ <name>fc</name>
+ <key>fc</key>
+ <value>936.6e6</value>
+ <type>raw</type>
+ </param>
<param>
<name>ppm</name>
<key>ppm</key>
@@ -15,15 +27,15 @@
<type>raw</type>
</param>
<param>
- <name>samp_rate</name>
- <key>samp_rate</key>
- <value>samp_rate</value>
+ <name>samp_rate_in</name>
+ <key>samp_rate_in</key>
+ <value>1625000.0/6.0*4.0</value>
<type>raw</type>
</param>
<param>
- <name>fc</name>
- <key>fc</key>
- <value>fc</value>
+ <name>samp_rate_out</name>
+ <key>samp_rate_out</key>
+ <value>1625000.0/6.0*4.0</value>
<type>raw</type>
</param>
<sink>
@@ -32,7 +44,7 @@
<vlen>1</vlen>
</sink>
<sink>
- <name>ppm</name>
+ <name>ppm_in</name>
<type>message</type>
<optional>True</optional>
</sink>
@@ -42,5 +54,5 @@
<vlen>1</vlen>
</source>
<doc>Piotr Krysik</doc>
-<!-- <grc_source>/home/piotr/Odbiornik_gsm/gr-gsm/hier_blocks/clock_offset_corrector.grc</grc_source> -->
+<!-- <grc_source></grc_source> -->
</block>
diff --git a/grc/gsm_controlled_const_source_f.xml b/grc/misc_utils/gsm_controlled_const_source_f.xml
index f51ef69..f51ef69 100644
--- a/grc/gsm_controlled_const_source_f.xml
+++ b/grc/misc_utils/gsm_controlled_const_source_f.xml
diff --git a/grc/gsm_controlled_rotator_cc.xml b/grc/misc_utils/gsm_controlled_rotator_cc.xml
index 83040d4..83040d4 100644
--- a/grc/gsm_controlled_rotator_cc.xml
+++ b/grc/misc_utils/gsm_controlled_rotator_cc.xml
diff --git a/grc/gsm_extract_system_info.xml b/grc/misc_utils/gsm_extract_system_info.xml
index 4316d14..4316d14 100644
--- a/grc/gsm_extract_system_info.xml
+++ b/grc/misc_utils/gsm_extract_system_info.xml
diff --git a/grc/gsm_message_printer.xml b/grc/misc_utils/gsm_message_printer.xml
index 2c849dc..2c849dc 100644
--- a/grc/gsm_message_printer.xml
+++ b/grc/misc_utils/gsm_message_printer.xml
diff --git a/grc/gsm_clock_offset_control.xml b/grc/receiver/gsm_clock_offset_control.xml
index bb4dadb..a5c8854 100644
--- a/grc/gsm_clock_offset_control.xml
+++ b/grc/receiver/gsm_clock_offset_control.xml
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<block>
- <name>Clock offset control</name>
+ <name>GSM clock offset control</name>
<key>gsm_clock_offset_control</key>
<category>GSM</category>
<import>import gsm</import>
diff --git a/grc/gsm_fcch_burst_tagger.xml b/grc/receiver/gsm_fcch_burst_tagger.xml
index 90f5688..90f5688 100644
--- a/grc/gsm_fcch_burst_tagger.xml
+++ b/grc/receiver/gsm_fcch_burst_tagger.xml
diff --git a/grc/gsm_fcch_detector.xml b/grc/receiver/gsm_fcch_detector.xml
index d40aba7..d40aba7 100644
--- a/grc/gsm_fcch_detector.xml
+++ b/grc/receiver/gsm_fcch_detector.xml
diff --git a/grc/receiver/gsm_receiver.xml b/grc/receiver/gsm_receiver.xml
new file mode 100644
index 0000000..eb0db5f
--- /dev/null
+++ b/grc/receiver/gsm_receiver.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<block>
+ <name>GSM Receiver bare</name>
+ <key>gsm_receiver</key>
+ <category>GSM</category>
+ <import>import gsm</import>
+ <make>gsm.receiver($osr, $arfcn)</make>
+
+ <param>
+ <name>Oversampling ratio</name>
+ <key>osr</key>
+ <value>4</value>
+ <type>int</type>
+ </param>
+
+ <param>
+ <name>ARFCN</name>
+ <key>arfcn</key>
+ <value>0</value>
+ <type>int</type>
+ </param>
+
+ <sink>
+ <name>in</name>
+ <type>complex</type>
+ </sink>
+ <source>
+ <name>bursts</name>
+ <type>message</type>
+ <optional>1</optional>
+ </source>
+
+ <source>
+ <name>measurements</name>
+ <type>message</type>
+ <optional>1</optional>
+ </source>
+</block>
diff --git a/grc/gsm_receiver_hier.xml b/grc/receiver/gsm_receiver_hier.xml
index ca28972..b41eb99 100644
--- a/grc/gsm_receiver_hier.xml
+++ b/grc/receiver/gsm_receiver_hier.xml
@@ -1,10 +1,10 @@
<?xml version="1.0"?>
<block>
- <name>GSM Receiver</name>
+ <name>GSM Receiver hier</name>
<key>gsm_receiver_hier</key>
<category>GSM</category>
<import>import gsm</import>
- <make>gsm.receiver_hier($input_rate, $osr)</make>
+ <make>gsm.receiver_hier($input_rate, $osr, $arfcn)</make>
<param>
<name>Input rate</name>
<key>input_rate</key>
diff --git a/grc/gsm_sch_detector.xml b/grc/receiver/gsm_sch_detector.xml
index 3445dc6..3445dc6 100644
--- a/grc/gsm_sch_detector.xml
+++ b/grc/receiver/gsm_sch_detector.xml
diff --git a/hier_blocks/gsm_fcch_detector.grc b/hier_blocks/gsm_fcch_detector.grc
deleted file mode 100644
index 1d69b53..0000000
--- a/hier_blocks/gsm_fcch_detector.grc
+++ /dev/null
@@ -1,567 +0,0 @@
-<?xml version='1.0' encoding='ASCII'?>
-<flow_graph>
- <timestamp>Tue Jul 8 19:32:53 2014</timestamp>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>samp_rate</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>f_symb*OSR</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(10, 170)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>variable</key>
- <param>
- <key>id</key>
- <value>f_symb</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>value</key>
- <value>1625000.0/6.0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(11, 239)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>parameter</key>
- <param>
- <key>id</key>
- <value>OSR</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>OverSamplingRatio</value>
- </param>
- <param>
- <key>value</key>
- <value>4</value>
- </param>
- <param>
- <key>type</key>
- <value>intx</value>
- </param>
- <param>
- <key>short_id</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(264, 4)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>blocks_complex_to_arg</key>
- <param>
- <key>id</key>
- <value>blocks_complex_to_arg_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(641, 158)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>blocks_multiply_conjugate_cc</key>
- <param>
- <key>id</key>
- <value>blocks_multiply_conjugate_cc_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(444, 141)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>blocks_delay</key>
- <param>
- <key>id</key>
- <value>blocks_delay_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>delay</key>
- <value>int(OSR)</value>
- </param>
- <param>
- <key>num_ports</key>
- <value>1</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(319, 171)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>blocks_moving_average_xx</key>
- <param>
- <key>id</key>
- <value>blocks_moving_average_xx_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>float</value>
- </param>
- <param>
- <key>length</key>
- <value>int((142)*samp_rate/f_symb)</value>
- </param>
- <param>
- <key>scale</key>
- <value>1</value>
- </param>
- <param>
- <key>max_iter</key>
- <value>int(1e6)</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(971, 138)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>blocks_threshold_ff</key>
- <param>
- <key>id</key>
- <value>blocks_threshold_ff_0_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>low</key>
- <value>0</value>
- </param>
- <param>
- <key>high</key>
- <value>0</value>
- </param>
- <param>
- <key>init</key>
- <value>0</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(815, 138)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>pad_source</key>
- <param>
- <key>id</key>
- <value>pad_source_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>in</value>
- </param>
- <param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>num_streams</key>
- <value>1</value>
- </param>
- <param>
- <key>optional</key>
- <value>False</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(155, 137)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>blocks_threshold_ff</key>
- <param>
- <key>id</key>
- <value>blocks_threshold_ff_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>low</key>
- <value>int((138)*samp_rate/f_symb)</value>
- </param>
- <param>
- <key>high</key>
- <value>int((138)*samp_rate/f_symb)</value>
- </param>
- <param>
- <key>init</key>
- <value>0</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(1150, 138)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>gsm_fcch_burst_tagger</key>
- <param>
- <key>id</key>
- <value>gsm_fcch_burst_tagger_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>OSR</key>
- <value>OSR</value>
- </param>
- <param>
- <key>affinity</key>
- <value></value>
- </param>
- <param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(348, 303)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>pad_sink</key>
- <param>
- <key>id</key>
- <value>pad_sink_0</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>label</key>
- <value>out</value>
- </param>
- <param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>vlen</key>
- <value>1</value>
- </param>
- <param>
- <key>num_streams</key>
- <value>1</value>
- </param>
- <param>
- <key>optional</key>
- <value>False</value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(584, 316)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
- <key>options</key>
- <param>
- <key>id</key>
- <value>fcch_detector</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>title</key>
- <value>FCCH Bursts Detector</value>
- </param>
- <param>
- <key>author</key>
- <value>Piotr Krysik</value>
- </param>
- <param>
- <key>description</key>
- <value>Detects positions of FCCH bursts. At the end of each detected FCCH burst adds to the stream a tag with key "fcch" and value which is a frequency offset estimate. The input sampling frequency should be integer multiply of GSM GMKS symbol rate - 1625000/6 Hz.</value>
- </param>
- <param>
- <key>window_size</key>
- <value>1280, 1024</value>
- </param>
- <param>
- <key>generate_options</key>
- <value>hb</value>
- </param>
- <param>
- <key>category</key>
- <value>GSM</value>
- </param>
- <param>
- <key>run_options</key>
- <value>prompt</value>
- </param>
- <param>
- <key>run</key>
- <value>True</value>
- </param>
- <param>
- <key>max_nouts</key>
- <value>0</value>
- </param>
- <param>
- <key>realtime_scheduling</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(8, 0)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <connection>
- <source_block_id>pad_source_0</source_block_id>
- <sink_block_id>blocks_multiply_conjugate_cc_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>blocks_delay_0</source_block_id>
- <sink_block_id>blocks_multiply_conjugate_cc_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>1</sink_key>
- </connection>
- <connection>
- <source_block_id>blocks_complex_to_arg_0</source_block_id>
- <sink_block_id>blocks_threshold_ff_0_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pad_source_0</source_block_id>
- <sink_block_id>blocks_delay_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>blocks_multiply_conjugate_cc_0</source_block_id>
- <sink_block_id>blocks_complex_to_arg_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>blocks_moving_average_xx_0</source_block_id>
- <sink_block_id>blocks_threshold_ff_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>blocks_threshold_ff_0_0</source_block_id>
- <sink_block_id>blocks_moving_average_xx_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>gsm_fcch_burst_tagger_0</source_block_id>
- <sink_block_id>pad_sink_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>pad_source_0</source_block_id>
- <sink_block_id>gsm_fcch_burst_tagger_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>0</sink_key>
- </connection>
- <connection>
- <source_block_id>blocks_threshold_ff_0</source_block_id>
- <sink_block_id>gsm_fcch_burst_tagger_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>1</sink_key>
- </connection>
-</flow_graph>
diff --git a/hier_blocks/clock_offset_corrector.grc b/hier_blocks/misc_utils/gsm_clock_offset_corrector.grc
index 97dde85..10ed7ef 100644
--- a/hier_blocks/clock_offset_corrector.grc
+++ b/hier_blocks/misc_utils/gsm_clock_offset_corrector.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Wed Aug 6 19:56:28 2014</timestamp>
+ <timestamp>Wed Aug 13 16:44:37 2014</timestamp>
<block>
<key>options</key>
<param>
@@ -65,30 +65,18 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>import</key>
<param>
<key>id</key>
- <value>ppm</value>
+ <value>math_imp</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>ppm</value>
- </param>
- <param>
- <key>value</key>
- <value>0</value>
- </param>
- <param>
- <key>type</key>
- <value>eng_float</value>
- </param>
- <param>
- <key>short_id</key>
- <value></value>
+ <key>import</key>
+ <value>import math</value>
</param>
<param>
<key>alias</key>
@@ -96,7 +84,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(487, 22)</value>
+ <value>(11, 125)</value>
</param>
<param>
<key>_rotation</key>
@@ -104,38 +92,46 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>fractional_resampler_xx</key>
<param>
<key>id</key>
- <value>samp_rate</value>
+ <value>fractional_resampler_xx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>samp_rate</value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>value</key>
- <value>1625000.0/6.0*4.0</value>
+ <key>phase_shift</key>
+ <value>0</value>
</param>
<param>
- <key>type</key>
- <value>eng_float</value>
+ <key>resamp_ratio</key>
+ <value>1</value>
</param>
<param>
- <key>short_id</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>alias</key>
+ <key>affinity</key>
<value></value>
</param>
<param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(368, 19)</value>
+ <value>(720, 303)</value>
</param>
<param>
<key>_rotation</key>
@@ -143,10 +139,10 @@
</param>
</block>
<block>
- <key>parameter</key>
+ <key>pad_source</key>
<param>
<key>id</key>
- <value>fc</value>
+ <value>pad_source_0</value>
</param>
<param>
<key>_enabled</key>
@@ -154,27 +150,27 @@
</param>
<param>
<key>label</key>
- <value>fc</value>
+ <value>in</value>
</param>
<param>
- <key>value</key>
- <value>936.6e6</value>
+ <key>type</key>
+ <value>complex</value>
</param>
<param>
- <key>type</key>
- <value>eng_float</value>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
- <key>short_id</key>
- <value></value>
+ <key>num_streams</key>
+ <value>1</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>optional</key>
+ <value>False</value>
</param>
<param>
<key>_coordinate</key>
- <value>(274, 19)</value>
+ <value>(14, 299)</value>
</param>
<param>
<key>_rotation</key>
@@ -182,26 +178,38 @@
</param>
</block>
<block>
- <key>import</key>
+ <key>pad_sink</key>
<param>
<key>id</key>
- <value>math_imp</value>
+ <value>pad_sink_1</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>import</key>
- <value>import math</value>
+ <key>label</key>
+ <value>out</value>
</param>
<param>
- <key>alias</key>
- <value></value>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>num_streams</key>
+ <value>1</value>
+ </param>
+ <param>
+ <key>optional</key>
+ <value>False</value>
</param>
<param>
<key>_coordinate</key>
- <value>(11, 125)</value>
+ <value>(1170, 333)</value>
</param>
<param>
<key>_rotation</key>
@@ -209,46 +217,38 @@
</param>
</block>
<block>
- <key>blocks_multiply_const_vxx</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>blocks_multiply_const_vxx_0</value>
+ <value>fc</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>float</value>
+ <key>label</key>
+ <value>fc</value>
</param>
<param>
- <key>const</key>
- <value>fc/samp_rate*(2*math.pi)</value>
+ <key>value</key>
+ <value>936.6e6</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>type</key>
+ <value>eng_float</value>
</param>
<param>
- <key>alias</key>
+ <key>short_id</key>
<value></value>
</param>
<param>
- <key>affinity</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
<key>_coordinate</key>
- <value>(571, 335)</value>
+ <value>(274, 19)</value>
</param>
<param>
<key>_rotation</key>
@@ -256,46 +256,38 @@
</param>
</block>
<block>
- <key>blocks_add_const_vxx</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>blocks_add_const_vxx_0</value>
+ <value>ppm</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>float</value>
+ <key>label</key>
+ <value>ppm</value>
</param>
<param>
- <key>const</key>
- <value>1</value>
+ <key>value</key>
+ <value>0</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>type</key>
+ <value>eng_float</value>
</param>
<param>
- <key>alias</key>
+ <key>short_id</key>
<value></value>
</param>
<param>
- <key>affinity</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
<key>_coordinate</key>
- <value>(779, 217)</value>
+ <value>(496, 19)</value>
</param>
<param>
<key>_rotation</key>
@@ -303,46 +295,38 @@
</param>
</block>
<block>
- <key>blocks_multiply_const_vxx</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>blocks_multiply_const_vxx_0_0</value>
+ <value>samp_rate_in</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>type</key>
- <value>float</value>
+ <key>label</key>
+ <value>samp_rate_in</value>
</param>
<param>
- <key>const</key>
- <value>1.0/1.0e6</value>
+ <key>value</key>
+ <value>1625000.0/6.0*4.0</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>type</key>
+ <value>eng_float</value>
</param>
<param>
- <key>alias</key>
+ <key>short_id</key>
<value></value>
</param>
<param>
- <key>affinity</key>
+ <key>alias</key>
<value></value>
</param>
<param>
- <key>minoutbuf</key>
- <value>0</value>
- </param>
- <param>
- <key>maxoutbuf</key>
- <value>0</value>
- </param>
- <param>
<key>_coordinate</key>
- <value>(405, 217)</value>
+ <value>(368, 19)</value>
</param>
<param>
<key>_rotation</key>
@@ -353,7 +337,7 @@
<key>pad_source</key>
<param>
<key>id</key>
- <value>pad_source_0</value>
+ <value>ppm_in</value>
</param>
<param>
<key>_enabled</key>
@@ -361,11 +345,11 @@
</param>
<param>
<key>label</key>
- <value>in</value>
+ <value>ppm_in</value>
</param>
<param>
<key>type</key>
- <value>complex</value>
+ <value>message</value>
</param>
<param>
<key>vlen</key>
@@ -377,11 +361,11 @@
</param>
<param>
<key>optional</key>
- <value>False</value>
+ <value>True</value>
</param>
<param>
<key>_coordinate</key>
- <value>(13, 301)</value>
+ <value>(15, 217)</value>
</param>
<param>
<key>_rotation</key>
@@ -389,10 +373,10 @@
</param>
</block>
<block>
- <key>pad_sink</key>
+ <key>parameter</key>
<param>
<key>id</key>
- <value>pad_sink_1</value>
+ <value>samp_rate_out</value>
</param>
<param>
<key>_enabled</key>
@@ -400,27 +384,27 @@
</param>
<param>
<key>label</key>
- <value>out</value>
+ <value>samp_rate_out</value>
</param>
<param>
- <key>type</key>
- <value>complex</value>
+ <key>value</key>
+ <value>1625000.0/6.0*4.0</value>
</param>
<param>
- <key>vlen</key>
- <value>1</value>
+ <key>type</key>
+ <value>eng_float</value>
</param>
<param>
- <key>num_streams</key>
- <value>1</value>
+ <key>short_id</key>
+ <value></value>
</param>
<param>
- <key>optional</key>
- <value>False</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
<key>_coordinate</key>
- <value>(1174, 335)</value>
+ <value>(592, 20)</value>
</param>
<param>
<key>_rotation</key>
@@ -428,10 +412,10 @@
</param>
</block>
<block>
- <key>fractional_resampler_xx</key>
+ <key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
- <value>fractional_resampler_xx_0</value>
+ <value>blocks_multiply_const_vxx_0</value>
</param>
<param>
<key>_enabled</key>
@@ -439,14 +423,14 @@
</param>
<param>
<key>type</key>
- <value>complex</value>
+ <value>float</value>
</param>
<param>
- <key>phase_shift</key>
- <value>0</value>
+ <key>const</key>
+ <value>fc/samp_rate_out*(2*math.pi)/1e6</value>
</param>
<param>
- <key>resamp_ratio</key>
+ <key>vlen</key>
<value>1</value>
</param>
<param>
@@ -467,7 +451,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(986, 322)</value>
+ <value>(724, 217)</value>
</param>
<param>
<key>_rotation</key>
@@ -514,22 +498,26 @@
</param>
</block>
<block>
- <key>gsm_controlled_rotator_cc</key>
+ <key>blocks_add_const_vxx</key>
<param>
<key>id</key>
- <value>gsm_controlled_rotator_cc_0</value>
+ <value>blocks_add_const_vxx_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>phase_inc</key>
- <value>0</value>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
- <key>samp_rate</key>
- <value>samp_rate</value>
+ <key>const</key>
+ <value>samp_rate_in/samp_rate_out</value>
+ </param>
+ <param>
+ <key>vlen</key>
+ <value>1</value>
</param>
<param>
<key>alias</key>
@@ -549,7 +537,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(759, 305)</value>
+ <value>(571, 333)</value>
</param>
<param>
<key>_rotation</key>
@@ -557,38 +545,89 @@
</param>
</block>
<block>
- <key>pad_source</key>
+ <key>blocks_multiply_const_vxx</key>
<param>
<key>id</key>
- <value>ppm</value>
+ <value>blocks_multiply_const_vxx_0_0</value>
</param>
<param>
<key>_enabled</key>
<value>True</value>
</param>
<param>
- <key>label</key>
- <value>ppm</value>
+ <key>type</key>
+ <value>float</value>
</param>
<param>
- <key>type</key>
- <value>message</value>
+ <key>const</key>
+ <value>1.0e-6*samp_rate_in/samp_rate_out</value>
</param>
<param>
<key>vlen</key>
<value>1</value>
</param>
<param>
- <key>num_streams</key>
- <value>1</value>
+ <key>alias</key>
+ <value></value>
</param>
<param>
- <key>optional</key>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(411, 333)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
+ <block>
+ <key>gsm_controlled_rotator_cc</key>
+ <param>
+ <key>id</key>
+ <value>gsm_controlled_rotator_cc_0</value>
+ </param>
+ <param>
+ <key>_enabled</key>
<value>True</value>
</param>
<param>
+ <key>phase_inc</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>samp_rate_out</value>
+ </param>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>affinity</key>
+ <value></value>
+ </param>
+ <param>
+ <key>minoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>maxoutbuf</key>
+ <value>0</value>
+ </param>
+ <param>
<key>_coordinate</key>
- <value>(15, 217)</value>
+ <value>(973, 320)</value>
</param>
<param>
<key>_rotation</key>
@@ -596,40 +635,34 @@
</param>
</block>
<connection>
- <source_block_id>gsm_controlled_const_source_f_0</source_block_id>
- <sink_block_id>blocks_multiply_const_vxx_0_0</sink_block_id>
+ <source_block_id>blocks_add_const_vxx_0</source_block_id>
+ <sink_block_id>fractional_resampler_xx_0</sink_block_id>
<source_key>0</source_key>
- <sink_key>0</sink_key>
+ <sink_key>1</sink_key>
</connection>
<connection>
- <source_block_id>pad_source_0</source_block_id>
+ <source_block_id>blocks_multiply_const_vxx_0</source_block_id>
<sink_block_id>gsm_controlled_rotator_cc_0</sink_block_id>
<source_key>0</source_key>
- <sink_key>0</sink_key>
+ <sink_key>1</sink_key>
</connection>
<connection>
- <source_block_id>blocks_multiply_const_vxx_0_0</source_block_id>
- <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
+ <source_block_id>fractional_resampler_xx_0</source_block_id>
+ <sink_block_id>gsm_controlled_rotator_cc_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_add_const_vxx_0</source_block_id>
- <sink_block_id>fractional_resampler_xx_0</sink_block_id>
- <source_key>0</source_key>
- <sink_key>1</sink_key>
- </connection>
- <connection>
<source_block_id>gsm_controlled_rotator_cc_0</source_block_id>
- <sink_block_id>fractional_resampler_xx_0</sink_block_id>
+ <sink_block_id>pad_sink_1</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>blocks_multiply_const_vxx_0</source_block_id>
- <sink_block_id>gsm_controlled_rotator_cc_0</sink_block_id>
+ <source_block_id>pad_source_0</source_block_id>
+ <sink_block_id>fractional_resampler_xx_0</sink_block_id>
<source_key>0</source_key>
- <sink_key>1</sink_key>
+ <sink_key>0</sink_key>
</connection>
<connection>
<source_block_id>blocks_multiply_const_vxx_0_0</source_block_id>
@@ -638,15 +671,21 @@
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>fractional_resampler_xx_0</source_block_id>
- <sink_block_id>pad_sink_1</sink_block_id>
+ <source_block_id>gsm_controlled_const_source_f_0</source_block_id>
+ <sink_block_id>blocks_multiply_const_vxx_0_0</sink_block_id>
<source_key>0</source_key>
<sink_key>0</sink_key>
</connection>
<connection>
- <source_block_id>ppm</source_block_id>
+ <source_block_id>ppm_in</source_block_id>
<sink_block_id>gsm_controlled_const_source_f_0</sink_block_id>
<source_key>0</source_key>
<sink_key>constant_msg</sink_key>
</connection>
+ <connection>
+ <source_block_id>gsm_controlled_const_source_f_0</source_block_id>
+ <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id>
+ <source_key>0</source_key>
+ <sink_key>0</sink_key>
+ </connection>
</flow_graph>
diff --git a/examples/gsm_fcch_detector.grc b/hier_blocks/receiver/gsm_fcch_detector.grc
index 1d69b53..1d69b53 100644
--- a/examples/gsm_fcch_detector.grc
+++ b/hier_blocks/receiver/gsm_fcch_detector.grc
diff --git a/include/gsm/CMakeLists.txt b/include/gsm/CMakeLists.txt
index c704e26..3173e3d 100644
--- a/include/gsm/CMakeLists.txt
+++ b/include/gsm/CMakeLists.txt
@@ -22,13 +22,13 @@
########################################################################
install(FILES
api.h
- receiver.h
- bursts_printer.h
- get_bcch_or_ccch_bursts.h
- control_channels_decoder.h
+ receiver/receiver.h
+ misc_utils/bursts_printer.h
+ demapping/get_bcch_or_ccch_bursts.h
+ decoding/control_channels_decoder.h
gsmtap.h
- extract_system_info.h
- controlled_rotator_cc.h
- controlled_const_source_f.h
- message_printer.h DESTINATION include/gsm
+ misc_utils/extract_system_info.h
+ misc_utils/controlled_rotator_cc.h
+ misc_utils/controlled_const_source_f.h
+ misc_utils/message_printer.h DESTINATION include/gsm
)
diff --git a/include/gsm/control_channels_decoder.h b/include/gsm/decoding/control_channels_decoder.h
index a44f43e..49a8e35 100644
--- a/include/gsm/control_channels_decoder.h
+++ b/include/gsm/decoding/control_channels_decoder.h
@@ -47,6 +47,7 @@ namespace gr {
* creating new instances.
*/
static sptr make();
+
};
} // namespace gsm
diff --git a/include/gsm/get_bcch_or_ccch_bursts.h b/include/gsm/demapping/get_bcch_or_ccch_bursts.h
index 12f9dbc..12f9dbc 100644
--- a/include/gsm/get_bcch_or_ccch_bursts.h
+++ b/include/gsm/demapping/get_bcch_or_ccch_bursts.h
diff --git a/include/gsm/bursts_printer.h b/include/gsm/misc_utils/bursts_printer.h
index c814810..c814810 100644
--- a/include/gsm/bursts_printer.h
+++ b/include/gsm/misc_utils/bursts_printer.h
diff --git a/include/gsm/controlled_const_source_f.h b/include/gsm/misc_utils/controlled_const_source_f.h
index b175578..b175578 100644
--- a/include/gsm/controlled_const_source_f.h
+++ b/include/gsm/misc_utils/controlled_const_source_f.h
diff --git a/include/gsm/controlled_rotator_cc.h b/include/gsm/misc_utils/controlled_rotator_cc.h
index 5339660..5339660 100644
--- a/include/gsm/controlled_rotator_cc.h
+++ b/include/gsm/misc_utils/controlled_rotator_cc.h
diff --git a/include/gsm/extract_system_info.h b/include/gsm/misc_utils/extract_system_info.h
index a92c937..a92c937 100644
--- a/include/gsm/extract_system_info.h
+++ b/include/gsm/misc_utils/extract_system_info.h
diff --git a/include/gsm/message_printer.h b/include/gsm/misc_utils/message_printer.h
index e049934..e049934 100644
--- a/include/gsm/message_printer.h
+++ b/include/gsm/misc_utils/message_printer.h
diff --git a/include/gsm/receiver.h b/include/gsm/receiver/receiver.h
index 5aaca67..bf4580c 100644
--- a/include/gsm/receiver.h
+++ b/include/gsm/receiver/receiver.h
@@ -53,9 +53,9 @@ namespace gr {
virtual void set_arfcn(int arfcn) = 0;
virtual void reset() = 0;
};
-
+
} // namespace gsm
} // namespace gr
#endif /* INCLUDED_GSM_RECEIVER_H */
-
+
diff --git a/lib/misc_utils/controlled_const_source_f_impl.cc b/lib/misc_utils/controlled_const_source_f_impl.cc
index d58f04f..4aa2f14 100644
--- a/lib/misc_utils/controlled_const_source_f_impl.cc
+++ b/lib/misc_utils/controlled_const_source_f_impl.cc
@@ -78,8 +78,6 @@ namespace gr {
void controlled_const_source_f_impl::set_constant(float constant){
d_constant = constant;
}
-
-
} /* namespace gsm */
} /* namespace gr */
diff --git a/lib/misc_utils/controlled_rotator_cc_impl.cc b/lib/misc_utils/controlled_rotator_cc_impl.cc
index 5877ab1..ee72a6a 100644
--- a/lib/misc_utils/controlled_rotator_cc_impl.cc
+++ b/lib/misc_utils/controlled_rotator_cc_impl.cc
@@ -83,14 +83,16 @@ namespace gr {
while(ii < noutput_items){
//look for different values on phase increment control input
if(d_phase_inc != (*pp)){
+
set_phase_inc(*(pp)); //set new value of phase increment
float freq_offset_setting = (*(pp) / (2*M_PI)) * d_samp_rate; //send stream tag with a new value of the frequency offset
- int offset = nitems_written(0);
+
+ uint64_t offset = nitems_written(0);
pmt::pmt_t key = pmt::string_to_symbol("setting_freq_offset");
pmt::pmt_t value = pmt::from_double(freq_offset_setting);
add_item_tag(0,offset, key, value);
-
+
break;
}
pp++;
diff --git a/lib/misc_utils/extract_system_info_impl.cc b/lib/misc_utils/extract_system_info_impl.cc
index 1d20d8d..6b6ce5f 100644
--- a/lib/misc_utils/extract_system_info_impl.cc
+++ b/lib/misc_utils/extract_system_info_impl.cc
@@ -90,7 +90,6 @@ namespace gr {
info.lac = (msg_elements[6]<<8)+msg_elements[7]; //wyciągnij lac
info.mnc = (msg_elements[5]>>4); //wyciągnij id operatora
-
std::set<chan_info, compare_id>::iterator iter = d_c0_channels.find(info);
boost::mutex::scoped_lock lock(extract_mutex);
if(iter != d_c0_channels.end()){
@@ -178,7 +177,21 @@ namespace gr {
void extract_system_info_impl::reset()
{
- d_c0_channels.clear();
+ std::set<chan_info, compare_id>::iterator iter;
+
+ chan_info info;
+
+ for(iter = d_c0_channels.begin(); iter != d_c0_channels.end(); iter++){
+ info.id = iter->id;
+ info.cell_id = iter->cell_id; //wyciągnij cell id
+ info.lac = iter->lac; //wyciągnij lac
+ info.mnc = iter->mnc;
+ info.pwr_db = -111;
+ d_c0_channels.erase(iter);
+ d_c0_channels.insert(info);
+ }
+// d_c0_channels.clear();
+
if(!empty_p(pmt::mp("bursts"))){
delete_head_blocking(pmt::mp("bursts"));
}
diff --git a/lib/receiver/receiver_impl.cc b/lib/receiver/receiver_impl.cc
index a6f1a16..0917f1e 100644
--- a/lib/receiver/receiver_impl.cc
+++ b/lib/receiver/receiver_impl.cc
@@ -241,7 +241,7 @@ receiver_impl::work(int noutput_items,
d_state = fcch_search;
pmt::pmt_t msg = pmt::make_tuple(pmt::mp("freq_offset"),pmt::from_double(0.0),pmt::mp("sync_loss"));
message_port_pub(pmt::mp("measurements"), msg);
- DCOUT("Re-Synchronization!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
+ COUT("Re-Synchronization!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
}
}
diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt
index 8821d2f..9814406 100644
--- a/python/CMakeLists.txt
+++ b/python/CMakeLists.txt
@@ -31,13 +31,13 @@ endif()
GR_PYTHON_INSTALL(
FILES
__init__.py
- receiver_hier.py
- fcch_burst_tagger.py
- sch_detector.py
- fcch_detector.py
- chirpz.py
- clock_offset_control.py
- clock_offset_corrector.py DESTINATION ${GR_PYTHON_DIR}/gsm
+ receiver/receiver_hier.py
+ receiver/fcch_burst_tagger.py
+ receiver/sch_detector.py
+ receiver/fcch_detector.py
+ receiver/chirpz.py
+ receiver/clock_offset_control.py
+ misc_utils/clock_offset_corrector.py DESTINATION ${GR_PYTHON_DIR}/gsm
)
########################################################################
diff --git a/python/clock_offset_corrector.py b/python/misc_utils/clock_offset_corrector.py
index 4bfd773..807e6cc 100644
--- a/python/clock_offset_corrector.py
+++ b/python/misc_utils/clock_offset_corrector.py
@@ -3,7 +3,7 @@
# Gnuradio Python Flow Graph
# Title: Clock offset corrector
# Author: Piotr Krysik
-# Generated: Wed Aug 6 15:49:59 2014
+# Generated: Wed Aug 13 16:43:12 2014
##################################################
from gnuradio import blocks
@@ -15,7 +15,7 @@ import math
class clock_offset_corrector(gr.hier_block2):
- def __init__(self, ppm=0, samp_rate=1625000.0/6.0*4.0, fc=936.6e6):
+ def __init__(self, fc=936.6e6, ppm=0, samp_rate_in=1625000.0/6.0*4.0, samp_rate_out=1625000.0/6.0*4.0):
gr.hier_block2.__init__(
self, "Clock offset corrector",
gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
@@ -25,38 +25,46 @@ class clock_offset_corrector(gr.hier_block2):
##################################################
# Parameters
##################################################
- self.ppm = ppm
- self.samp_rate = samp_rate
self.fc = fc
+ self.ppm = ppm
+ self.samp_rate_in = samp_rate_in
+ self.samp_rate_out = samp_rate_out
##################################################
# Blocks
##################################################
- self.ppm_msg = None;self.message_port_register_hier_out("ppm")
- self.gsm_controlled_rotator_cc_0 = gsm.controlled_rotator_cc(0,samp_rate)
+ self.ppm_in = None;self.message_port_register_hier_out("ppm_in")
+ self.gsm_controlled_rotator_cc_0 = gsm.controlled_rotator_cc(0,samp_rate_out)
self.gsm_controlled_const_source_f_0 = gsm.controlled_const_source_f(ppm)
self.fractional_resampler_xx_0 = filter.fractional_resampler_cc(0, 1)
- self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_vff((1.0/1.0e6, ))
- self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((fc/samp_rate*(2*math.pi), ))
- self.blocks_add_const_vxx_0 = blocks.add_const_vff((1, ))
+ self.blocks_multiply_const_vxx_0_0 = blocks.multiply_const_vff((1.0e-6*samp_rate_in/samp_rate_out, ))
+ self.blocks_multiply_const_vxx_0 = blocks.multiply_const_vff((fc/samp_rate_out*(2*math.pi)/1e6, ))
+ self.blocks_add_const_vxx_0 = blocks.add_const_vff((samp_rate_in/samp_rate_out, ))
##################################################
# Connections
##################################################
- self.connect((self.gsm_controlled_const_source_f_0, 0), (self.blocks_multiply_const_vxx_0_0, 0))
- self.connect((self, 0), (self.gsm_controlled_rotator_cc_0, 0))
- self.connect((self.blocks_multiply_const_vxx_0_0, 0), (self.blocks_multiply_const_vxx_0, 0))
self.connect((self.blocks_add_const_vxx_0, 0), (self.fractional_resampler_xx_0, 1))
- self.connect((self.gsm_controlled_rotator_cc_0, 0), (self.fractional_resampler_xx_0, 0))
self.connect((self.blocks_multiply_const_vxx_0, 0), (self.gsm_controlled_rotator_cc_0, 1))
+ self.connect((self.fractional_resampler_xx_0, 0), (self.gsm_controlled_rotator_cc_0, 0))
+ self.connect((self.gsm_controlled_rotator_cc_0, 0), (self, 0))
+ self.connect((self, 0), (self.fractional_resampler_xx_0, 0))
self.connect((self.blocks_multiply_const_vxx_0_0, 0), (self.blocks_add_const_vxx_0, 0))
- self.connect((self.fractional_resampler_xx_0, 0), (self, 0))
+ self.connect((self.gsm_controlled_const_source_f_0, 0), (self.blocks_multiply_const_vxx_0_0, 0))
+ self.connect((self.gsm_controlled_const_source_f_0, 0), (self.blocks_multiply_const_vxx_0, 0))
##################################################
# Asynch Message Connections
##################################################
- self.msg_connect(self, "ppm", self.gsm_controlled_const_source_f_0, "constant_msg")
+ self.msg_connect(self, "ppm_in", self.gsm_controlled_const_source_f_0, "constant_msg")
+
+
+ def get_fc(self):
+ return self.fc
+ def set_fc(self, fc):
+ self.fc = fc
+ self.blocks_multiply_const_vxx_0.set_k((self.fc/self.samp_rate_out*(2*math.pi)/1e6, ))
def get_ppm(self):
return self.ppm
@@ -65,18 +73,21 @@ class clock_offset_corrector(gr.hier_block2):
self.ppm = ppm
self.gsm_controlled_const_source_f_0.set_constant(self.ppm)
- def get_samp_rate(self):
- return self.samp_rate
+ def get_samp_rate_in(self):
+ return self.samp_rate_in
- def set_samp_rate(self, samp_rate):
- self.samp_rate = samp_rate
- self.blocks_multiply_const_vxx_0.set_k((self.fc/self.samp_rate*(2*math.pi), ))
- self.gsm_controlled_rotator_cc_0.set_samp_rate(self.samp_rate)
+ def set_samp_rate_in(self, samp_rate_in):
+ self.samp_rate_in = samp_rate_in
+ self.blocks_add_const_vxx_0.set_k((self.samp_rate_in/self.samp_rate_out, ))
+ self.blocks_multiply_const_vxx_0_0.set_k((1.0e-6*self.samp_rate_in/self.samp_rate_out, ))
- def get_fc(self):
- return self.fc
+ def get_samp_rate_out(self):
+ return self.samp_rate_out
- def set_fc(self, fc):
- self.fc = fc
- self.blocks_multiply_const_vxx_0.set_k((self.fc/self.samp_rate*(2*math.pi), ))
+ def set_samp_rate_out(self, samp_rate_out):
+ self.samp_rate_out = samp_rate_out
+ self.blocks_multiply_const_vxx_0.set_k((self.fc/self.samp_rate_out*(2*math.pi)/1e6, ))
+ self.blocks_add_const_vxx_0.set_k((self.samp_rate_in/self.samp_rate_out, ))
+ self.blocks_multiply_const_vxx_0_0.set_k((1.0e-6*self.samp_rate_in/self.samp_rate_out, ))
+ self.gsm_controlled_rotator_cc_0.set_samp_rate(self.samp_rate_out)
diff --git a/python/chirpz.py b/python/receiver/chirpz.py
index 3043c44..3043c44 100644
--- a/python/chirpz.py
+++ b/python/receiver/chirpz.py
diff --git a/python/clock_offset_control.py b/python/receiver/clock_offset_control.py
index 0e3c621..506b0fd 100644
--- a/python/clock_offset_control.py
+++ b/python/receiver/clock_offset_control.py
@@ -30,7 +30,7 @@ class clock_offset_control(gr.basic_block):
"""
def __init__(self, fc, samp_rate):
gr.basic_block.__init__(self,
- name="clock_offset_control",
+ name="gsm_clock_offset_control",
in_sig=[],
out_sig=[])
self.fc = fc
@@ -38,12 +38,13 @@ class clock_offset_control(gr.basic_block):
self.message_port_register_in(pmt.intern("measurements"))
self.set_msg_handler(pmt.intern("measurements"), self.process_measurement)
self.message_port_register_out(pmt.intern("ppm"))
- self.alfa = 0.6
+ self.alfa = 0.3
self.ppm_estimate = -1e6
self.first_measurement = True
self.counter = 0
self.last_state = ""
self.timer = Timer(0.5, self.timed_reset)
+ self.last_ppm = -1e6
def process_measurement(self,msg):
if pmt.is_tuple(msg):
@@ -75,8 +76,10 @@ class clock_offset_control(gr.basic_block):
if self.counter == 5:
self.counter = 0
- msg_ppm = pmt.from_double(ppm)
- self.message_port_pub(pmt.intern("ppm"), msg_ppm)
+ if abs(self.last_ppm-self.ppm_estimate) > 0.1:
+ msg_ppm = pmt.from_double(ppm)
+ self.message_port_pub(pmt.intern("ppm"), msg_ppm)
+ self.last_ppm = self.ppm_estimate
else:
self.counter=self.counter+1
elif state == "sync_loss":
@@ -84,6 +87,7 @@ class clock_offset_control(gr.basic_block):
msg_ppm = pmt.from_double(0.0)
self.message_port_pub(pmt.intern("ppm"), msg_ppm)
+
def timed_reset(self):
if self.last_state != "synchronized":
# print "conditional reset"
diff --git a/python/fcch_burst_tagger.py b/python/receiver/fcch_burst_tagger.py
index 56fead9..56fead9 100644
--- a/python/fcch_burst_tagger.py
+++ b/python/receiver/fcch_burst_tagger.py
diff --git a/python/fcch_detector.py b/python/receiver/fcch_detector.py
index 627dd00..627dd00 100644
--- a/python/fcch_detector.py
+++ b/python/receiver/fcch_detector.py
diff --git a/python/receiver_hier.py b/python/receiver/receiver_hier.py
index 366292a..aa8fda3 100644
--- a/python/receiver_hier.py
+++ b/python/receiver/receiver_hier.py
@@ -21,7 +21,7 @@ class receiver_hier(gr.hier_block2):
self.input_rate = input_rate
self.osr = osr
self.arfcn = arfcn
- self.sps = input_rate / gsm_symb_rate / osr
+ self.sps = input_rate / (gsm_symb_rate * osr)
#create accompaning blocks
self.filtr = self._set_filter()
diff --git a/python/sch_detector.py b/python/receiver/sch_detector.py
index ca3c423..ca3c423 100644
--- a/python/sch_detector.py
+++ b/python/receiver/sch_detector.py