aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
authorptrkrysik <ptrkrysik@gmail.com>2014-11-06 14:50:59 +0100
committerptrkrysik <ptrkrysik@gmail.com>2014-11-06 14:50:59 +0100
commite518bbfedde679650e538edcab9bb46997985e52 (patch)
treee22645c8aa45229c2beae6b4eae4004881addc37 /python
parentdcba50ff7043994cbcae353401d82048607a6f50 (diff)
Added capability to receive multiple channels of a single BTS to the receiver. It is now possible to receive bursts on channels for which frequency hopping was used. Changed examples to work without hierarhical GSM Receiver block.
Diffstat (limited to 'python')
-rw-r--r--python/misc_utils/clock_offset_corrector.py47
1 files changed, 27 insertions, 20 deletions
diff --git a/python/misc_utils/clock_offset_corrector.py b/python/misc_utils/clock_offset_corrector.py
index 807e6cc..0633ae5 100644
--- a/python/misc_utils/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 13 16:43:12 2014
+# Generated: Thu Nov 6 10:22:24 2014
##################################################
from gnuradio import blocks
@@ -15,7 +15,7 @@ import math
class clock_offset_corrector(gr.hier_block2):
- 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):
+ def __init__(self, fc=936.6e6, samp_rate_in=1625000.0/6.0*4.0, samp_rate_out=1625000.0/6.0*4.0, ppm=0):
gr.hier_block2.__init__(
self, "Clock offset corrector",
gr.io_signature(1, 1, gr.sizeof_gr_complex*1),
@@ -26,9 +26,9 @@ class clock_offset_corrector(gr.hier_block2):
# Parameters
##################################################
self.fc = fc
- self.ppm = ppm
self.samp_rate_in = samp_rate_in
self.samp_rate_out = samp_rate_out
+ self.ppm = ppm
##################################################
# Blocks
@@ -36,7 +36,8 @@ class clock_offset_corrector(gr.hier_block2):
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.fractional_resampler_xx_0_0 = filter.fractional_resampler_ff(0, samp_rate_in/samp_rate_out)
+ self.fractional_resampler_xx_0 = filter.fractional_resampler_cc(0, samp_rate_in/samp_rate_out)
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, ))
@@ -44,14 +45,16 @@ class clock_offset_corrector(gr.hier_block2):
##################################################
# Connections
##################################################
- self.connect((self.blocks_add_const_vxx_0, 0), (self.fractional_resampler_xx_0, 1))
- 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.gsm_controlled_const_source_f_0, 0), (self.blocks_multiply_const_vxx_0, 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.blocks_multiply_const_vxx_0, 0), (self.fractional_resampler_xx_0_0, 0))
+ self.connect((self.blocks_add_const_vxx_0, 0), (self.fractional_resampler_xx_0_0, 1))
+ self.connect((self.gsm_controlled_rotator_cc_0, 0), (self, 0))
+ self.connect((self.fractional_resampler_xx_0, 0), (self.gsm_controlled_rotator_cc_0, 0))
+ self.connect((self.blocks_add_const_vxx_0, 0), (self.fractional_resampler_xx_0, 1))
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))
+ 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, 0), (self.gsm_controlled_rotator_cc_0, 1))
##################################################
# Asynch Message Connections
@@ -66,28 +69,32 @@ class clock_offset_corrector(gr.hier_block2):
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
-
- def set_ppm(self, ppm):
- self.ppm = ppm
- self.gsm_controlled_const_source_f_0.set_constant(self.ppm)
-
def get_samp_rate_in(self):
return self.samp_rate_in
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.fractional_resampler_xx_0.set_resamp_ratio(self.samp_rate_in/self.samp_rate_out)
+ self.fractional_resampler_xx_0_0.set_resamp_ratio(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.blocks_add_const_vxx_0.set_k((self.samp_rate_in/self.samp_rate_out, ))
def get_samp_rate_out(self):
return self.samp_rate_out
def set_samp_rate_out(self, samp_rate_out):
self.samp_rate_out = samp_rate_out
+ self.fractional_resampler_xx_0.set_resamp_ratio(self.samp_rate_in/self.samp_rate_out)
+ self.gsm_controlled_rotator_cc_0.set_samp_rate(self.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.fractional_resampler_xx_0_0.set_resamp_ratio(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)
+ self.blocks_add_const_vxx_0.set_k((self.samp_rate_in/self.samp_rate_out, ))
+
+ def get_ppm(self):
+ return self.ppm
+
+ def set_ppm(self, ppm):
+ self.ppm = ppm
+ self.gsm_controlled_const_source_f_0.set_constant(self.ppm)