diff options
-rw-r--r-- | examples/receiver_file.grc | 180 | ||||
-rw-r--r-- | examples/receiver_rtlsdr.grc | 468 | ||||
-rw-r--r-- | examples/receiver_usrp.grc | 508 | ||||
-rw-r--r-- | grc/CMakeLists.txt | 27 | ||||
-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.xml | 38 | ||||
-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.grc | 567 | ||||
-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.txt | 16 | ||||
-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.cc | 2 | ||||
-rw-r--r-- | lib/misc_utils/controlled_rotator_cc_impl.cc | 6 | ||||
-rw-r--r-- | lib/misc_utils/extract_system_info_impl.cc | 17 | ||||
-rw-r--r-- | lib/receiver/receiver_impl.cc | 2 | ||||
-rw-r--r-- | python/CMakeLists.txt | 14 | ||||
-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 |