blob: 5f84b8dcf63953d407831a29ba68b08921563fab [file] [log] [blame]
ptrkrysika136ff52014-11-28 23:38:23 +01001#!/usr/bin/env python
2##################################################
3# Gnuradio Python Flow Graph
4# Title: Airprobe File
ptrkrysikd8d4fbc2015-02-07 19:37:42 +01005# Generated: Sat Feb 7 19:30:42 2015
ptrkrysika136ff52014-11-28 23:38:23 +01006##################################################
7
8from gnuradio import blocks
9from gnuradio import eng_notation
10from gnuradio import gr
11from gnuradio.eng_option import eng_option
12from gnuradio.filter import firdes
13from optparse import OptionParser
ptrkrysik3be74a72014-12-13 10:11:00 +010014import grgsm
ptrkrysik3b776542015-01-03 00:06:39 +010015import pmt
ptrkrysika136ff52014-11-28 23:38:23 +010016
17class airprobe_file(gr.top_block):
18
19 def __init__(self, input_file_name="input.cfile", fc=937e6, samp_rate=1e6):
20 gr.top_block.__init__(self, "Airprobe File")
21
22 ##################################################
23 # Parameters
24 ##################################################
25 self.input_file_name = input_file_name
26 self.fc = fc
27 self.samp_rate = samp_rate
28
29 ##################################################
30 # Variables
31 ##################################################
32 self.SDCCH = SDCCH = 6
33 self.RACH = RACH = 3
34 self.PCH = PCH = 5
35 self.CHANNEL_UNKNOWN = CHANNEL_UNKNOWN = 0
36 self.CCCH = CCCH = 2
37 self.BCCH = BCCH = 1
38 self.AGCH = AGCH = 4
39
40 ##################################################
41 # Blocks
42 ##################################################
ptrkrysikd8d4fbc2015-02-07 19:37:42 +010043 self.gsm_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(0, ([2,6,12,16,22,26,32,36,42,46]), ([BCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH]))
ptrkrysik3be74a72014-12-13 10:11:00 +010044 self.gsm_receiver_0 = grgsm.receiver(4, ([0]), ([]))
ptrkrysik3b776542015-01-03 00:06:39 +010045 self.gsm_message_printer_0 = grgsm.message_printer(pmt.intern(""))
ptrkrysik3be74a72014-12-13 10:11:00 +010046 self.gsm_input_0 = grgsm.gsm_input(
ptrkrysika136ff52014-11-28 23:38:23 +010047 ppm=0,
48 osr=4,
49 fc=fc,
50 samp_rate_in=samp_rate,
51 )
ptrkrysik3b776542015-01-03 00:06:39 +010052 self.gsm_control_channels_decoder_0 = grgsm.control_channels_decoder()
53 self.gsm_clock_offset_control_0 = grgsm.clock_offset_control(fc)
ptrkrysik0b926a92015-02-08 19:37:41 +010054 self.blocks_socket_pdu_0 = blocks.socket_pdu("UDP_CLIENT", "127.0.0.1", "4729", 10000)
ptrkrysika136ff52014-11-28 23:38:23 +010055 self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, input_file_name, False)
56
57 ##################################################
58 # Connections
59 ##################################################
ptrkrysikd8d4fbc2015-02-07 19:37:42 +010060 self.msg_connect(self.gsm_clock_offset_control_0, 'ppm', self.gsm_input_0, 'ppm_in')
61 self.msg_connect(self.gsm_control_channels_decoder_0, 'msgs', self.blocks_socket_pdu_0, 'pdus')
62 self.msg_connect(self.gsm_control_channels_decoder_0, 'msgs', self.gsm_message_printer_0, 'msgs')
63 self.msg_connect(self.gsm_receiver_0, 'measurements', self.gsm_clock_offset_control_0, 'measurements')
64 self.msg_connect(self.gsm_receiver_0, 'C0', self.gsm_universal_ctrl_chans_demapper_0, 'bursts')
65 self.msg_connect(self.gsm_universal_ctrl_chans_demapper_0, 'bursts', self.gsm_control_channels_decoder_0, 'bursts')
66 self.connect((self.blocks_file_source_0, 0), (self.gsm_input_0, 0))
67 self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
ptrkrysika136ff52014-11-28 23:38:23 +010068
69
70 def get_input_file_name(self):
71 return self.input_file_name
72
73 def set_input_file_name(self, input_file_name):
74 self.input_file_name = input_file_name
75 self.blocks_file_source_0.open(self.input_file_name, False)
76
77 def get_fc(self):
78 return self.fc
79
80 def set_fc(self, fc):
81 self.fc = fc
82 self.gsm_input_0.set_fc(self.fc)
83
84 def get_samp_rate(self):
85 return self.samp_rate
86
87 def set_samp_rate(self, samp_rate):
88 self.samp_rate = samp_rate
89 self.gsm_input_0.set_samp_rate_in(self.samp_rate)
90
91 def get_SDCCH(self):
92 return self.SDCCH
93
94 def set_SDCCH(self, SDCCH):
95 self.SDCCH = SDCCH
96
97 def get_RACH(self):
98 return self.RACH
99
100 def set_RACH(self, RACH):
101 self.RACH = RACH
102
103 def get_PCH(self):
104 return self.PCH
105
106 def set_PCH(self, PCH):
107 self.PCH = PCH
108
109 def get_CHANNEL_UNKNOWN(self):
110 return self.CHANNEL_UNKNOWN
111
112 def set_CHANNEL_UNKNOWN(self, CHANNEL_UNKNOWN):
113 self.CHANNEL_UNKNOWN = CHANNEL_UNKNOWN
114
115 def get_CCCH(self):
116 return self.CCCH
117
118 def set_CCCH(self, CCCH):
119 self.CCCH = CCCH
120
121 def get_BCCH(self):
122 return self.BCCH
123
124 def set_BCCH(self, BCCH):
125 self.BCCH = BCCH
126
127 def get_AGCH(self):
128 return self.AGCH
129
130 def set_AGCH(self, AGCH):
131 self.AGCH = AGCH
132
133if __name__ == '__main__':
134 parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
135 parser.add_option("-i", "--input-file-name", dest="input_file_name", type="string", default="input.cfile",
136 help="Set input.cfile [default=%default]")
137 parser.add_option("-f", "--fc", dest="fc", type="eng_float", default=eng_notation.num_to_str(937e6),
138 help="Set fc [default=%default]")
139 parser.add_option("-s", "--samp-rate", dest="samp_rate", type="eng_float", default=eng_notation.num_to_str(1e6),
140 help="Set samp_rate [default=%default]")
141 (options, args) = parser.parse_args()
142 tb = airprobe_file(input_file_name=options.input_file_name, fc=options.fc, samp_rate=options.samp_rate)
143 tb.start()
144 tb.wait()