Added gnuradio-companion examples
diff --git a/examples/gsm_receiver_usrp_channelizer_python.py b/examples/gsm_receiver_usrp_channelizer_python.py
new file mode 100755
index 0000000..e769472
--- /dev/null
+++ b/examples/gsm_receiver_usrp_channelizer_python.py
@@ -0,0 +1,208 @@
+#!/usr/bin/env python
+##################################################
+# Gnuradio Python Flow Graph
+# Title: Gsm Receiver Usrp Channelizer Python
+# Generated: Sun Feb  9 12:46:36 2014
+##################################################
+
+from gnuradio import blocks
+from gnuradio import eng_notation
+from gnuradio import gr
+from gnuradio import uhd
+from gnuradio.eng_option import eng_option
+from gnuradio.filter import firdes
+from gnuradio.filter import pfb
+from optparse import OptionParser
+import gsm
+import time
+from numpy import fft
+
+
+class gsm_receiver_usrp_channelizer_python(gr.top_block):
+
+    def __init__(self, length=0.2, gain=25, channelizer_osr=1, fc=937e6, usrp_decim=4, fs=100e6):
+        gr.top_block.__init__(self, "Gsm Receiver Usrp Channelizer Python")
+
+        ##################################################
+        # Parameters
+        ##################################################
+        self.length = length
+        self.gain = gain
+        self.channelizer_osr = channelizer_osr
+        self.fc = fc
+        self.usrp_decim = usrp_decim
+        self.channels_num = int(round(fs/usrp_decim/200e3))
+        self.fs = fs
+
+        ##################################################
+        # Variables
+        ##################################################
+        self.samp_rate = 100e6/self.usrp_decim
+        self.samp_rate_channelizer_out = self.samp_rate/self.channels_num*channelizer_osr
+        self.freqs = fft.fftfreq(self.channels_num,1/self.samp_rate)+self.fc
+        self.arfcns = get_arfcns_from_freqs(self.freqs,"e")
+        print self.freqs
+        print self.arfcns
+
+        ##################################################
+        # Blocks
+        ##################################################
+        self.uhd_usrp_source_0 = uhd.usrp_source(
+        	device_addr="addr=192.168.11.2",
+        	stream_args=uhd.stream_args(
+        		cpu_format="fc32",
+        		otw_format="sc16",
+        		channels=range(1),
+        	),
+        )
+        self.uhd_usrp_source_0.set_samp_rate(self.samp_rate)
+        self.uhd_usrp_source_0.set_center_freq(fc, 0)
+        self.uhd_usrp_source_0.set_gain(gain, 0)
+        self.pfb_channelizer_ccf_0 = pfb.channelizer_ccf(
+        	  self.channels_num,
+        	  (),
+        	  channelizer_osr,
+        	  100)
+        self.pfb_channelizer_ccf_0.set_channel_map(([]))
+
+        self.blocks_head_0 = blocks.head(gr.sizeof_gr_complex*1, int(self.samp_rate*length))
+        self.gsm_bursts_printer_0 = gsm.bursts_printer()
+        
+        self.connect((self.uhd_usrp_source_0, 0), (self.blocks_head_0, 0))
+        self.connect((self.blocks_head_0, 0), (self.pfb_channelizer_ccf_0, 0))
+
+        self.gsm_receiver_hier = {}        
+
+        for ii in xrange(0,self.channels_num):
+            self.gsm_receiver_hier[ii] = gsm.receiver_hier(self.samp_rate_channelizer_out, 4, int(self.freqs[ii]/1e5))
+            self.connect((self.pfb_channelizer_ccf_0, ii), (self.gsm_receiver_hier[ii], 0))
+            self.msg_connect(self.gsm_receiver_hier[ii], "bursts", self.gsm_bursts_printer_0, "bursts")
+        
+
+# QT sink close method reimplementation
+
+    def get_length(self):
+        return self.length
+
+    def set_length(self, length):
+        self.length = length
+
+    def get_gain(self):
+        return self.gain
+
+    def set_gain(self, gain):
+        self.gain = gain
+        self.uhd_usrp_source_0.set_gain(self.gain, 0)
+
+    def get_channelizer_osr(self):
+        return self.channelizer_osr
+
+    def set_channelizer_osr(self, channelizer_osr):
+        self.channelizer_osr = channelizer_osr
+        self.set_samp_rate_channelizer_out(self.samp_rate/self.channels_num*self.channelizer_osr)
+
+    def get_fc(self):
+        return self.fc
+
+    def set_fc(self, fc):
+        self.fc = fc
+        self.uhd_usrp_source_0.set_center_freq(self.fc, 0)
+
+    def get_usrp_decim(self):
+        return self.usrp_decim
+
+    def set_usrp_decim(self, usrp_decim):
+        self.usrp_decim = usrp_decim
+        self.set_samp_rate(100e6/self.usrp_decim)
+
+    def get_channels_num(self):
+        return self.channels_num
+
+    def set_channels_num(self, channels_num):
+        self.channels_num = channels_num
+        self.set_samp_rate_channelizer_out(self.samp_rate/self.channels_num*self.channelizer_osr)
+
+    def get_fs(self):
+        return self.fs
+
+    def set_fs(self, fs):
+        self.fs = fs
+
+    def get_samp_rate(self):
+        return self.samp_rate
+
+    def set_samp_rate(self, samp_rate):
+        self.samp_rate = samp_rate
+        self.set_samp_rate_channelizer_out(self.samp_rate/self.channels_num*self.channelizer_osr)
+        self.uhd_usrp_source_0.set_samp_rate(self.samp_rate)
+
+    def get_samp_rate_channelizer_out(self):
+        return self.samp_rate_channelizer_out
+
+    def set_samp_rate_channelizer_out(self, samp_rate_channelizer_out):
+        self.samp_rate_channelizer_out = samp_rate_channelizer_out
+
+def get_arfcns_from_freqs(freqs,region):
+    arfcns = {}
+    for ii in xrange(0,len(freqs)):
+        arfcns[ii] = get_arfcn_from_freq(freqs[ii],region)
+    
+    return arfcns
+
+def get_arfcn_from_freq(freq,region):
+	freq = freq / 1e6
+	# GSM 450
+	if freq <= 450.6 + 0.2*(293 - 259) + 10:
+		arfcn = ((freq - (450.6 + 10)) / 0.2) + 259
+	# GSM 480
+	elif freq <= 479 + 0.2*(340 - 306) + 10:
+		arfcn = ((freq - (479 + 10)) / 0.2) + 306
+	# GSM 850
+	elif freq <= 824.2 + 0.2*(251 - 128) + 45:
+		arfcn = ((freq - (824.2 + 45)) / 0.2) + 128
+	#E/R-GSM 900
+	elif freq <= 890 + 0.2*(1023 - 1024) + 45:
+		arfcn = ((freq - (890 + 45)) / -0.2) + 955
+	# GSM 900
+	elif freq <= 890 + 0.2*124 + 45:
+		arfcn = (freq - (890 + 45)) / 0.2
+	else:
+		if region is "u":
+			if freq > 1850.2 + 0.2*(810 - 512) + 80:
+				arfcn = 0;
+			else:
+				arfcn = (freq - (1850.2 + 80) / 0.2) + 512
+		elif region is "e":
+			if freq > 1710.2 + 0.2*(885 - 512) + 95:
+				arfcn = 0;
+			else:
+				arfcn = (freq - (1710.2 + 95) / 0.2) + 512
+		else:
+			arfcn = 0
+
+	if arfcn<0:
+		return 255
+	else:
+		return round(arfcn)
+	
+
+if __name__ == '__main__':
+    parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
+    parser.add_option("", "--length", dest="length", type="eng_float", default=eng_notation.num_to_str(0.2),
+        help="Set length [default=%default]")
+    parser.add_option("", "--gain", dest="gain", type="intx", default=30,
+        help="Set gain [default=%default]")
+    parser.add_option("", "--channelizer-osr", dest="channelizer_osr", type="intx", default=2,
+        help="Set channelizer_osr [default=%default]")
+    parser.add_option("", "--fc", dest="fc", type="eng_float", default=eng_notation.num_to_str(937e6),
+        help="Set fc [default=%default]")
+    parser.add_option("", "--usrp-decim", dest="usrp_decim", type="intx", default=5,
+        help="Set usrp_decim [default=%default]")
+    parser.add_option("", "--fs", dest="fs", type="eng_float", default=eng_notation.num_to_str(100e6),
+        help="Set fs [default=%default]")
+    (options, args) = parser.parse_args()
+    tb = gsm_receiver_usrp_channelizer_python(length=options.length, gain=options.gain, channelizer_osr=options.channelizer_osr, fc=options.fc, usrp_decim=options.usrp_decim, fs=options.fs)
+    tb.start()
+    tb.wait()
+
+