blob: b28d1ad63540b5ca465685892b393f6c1cb82344 [file] [log] [blame]
ptrkrysika136ff52014-11-28 23:38:23 +01001#!/usr/bin/env python
2##################################################
3# Gnuradio Python Flow Graph
4# Title: Airprobe File
ptrkrysik458004e2014-12-06 15:36:35 +01005# Generated: Sat Dec 6 15:32:40 2014
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
14import gsm
15
16class airprobe_file(gr.top_block):
17
18 def __init__(self, input_file_name="input.cfile", fc=937e6, samp_rate=1e6):
19 gr.top_block.__init__(self, "Airprobe File")
20
21 ##################################################
22 # Parameters
23 ##################################################
24 self.input_file_name = input_file_name
25 self.fc = fc
26 self.samp_rate = samp_rate
27
28 ##################################################
29 # Variables
30 ##################################################
31 self.SDCCH = SDCCH = 6
32 self.RACH = RACH = 3
33 self.PCH = PCH = 5
34 self.CHANNEL_UNKNOWN = CHANNEL_UNKNOWN = 0
35 self.CCCH = CCCH = 2
36 self.BCCH = BCCH = 1
37 self.AGCH = AGCH = 4
38
39 ##################################################
40 # Blocks
41 ##################################################
42 self.gsm_universal_ctrl_chans_demapper_0 = gsm.universal_ctrl_chans_demapper(([2,6,12,16,22,26,32,36,42,46]), ([BCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH]))
43 self.gsm_receiver_0 = gsm.receiver(4, ([0]), ([]))
44 self.gsm_message_printer_0 = gsm.message_printer()
45 self.gsm_input_0 = gsm.gsm_input(
46 ppm=0,
47 osr=4,
48 fc=fc,
49 samp_rate_in=samp_rate,
50 )
51 self.gsm_control_channels_decoder_0 = gsm.control_channels_decoder()
ptrkrysik77509fa2014-12-03 08:04:42 +010052 self.gsm_clock_offset_control_0 = gsm.clock_offset_control(fc)
ptrkrysik458004e2014-12-06 15:36:35 +010053 self.blocks_socket_pdu_0 = blocks.socket_pdu("UDP_CLIENT", "127.0.0.1", "4729", 10000)
ptrkrysika136ff52014-11-28 23:38:23 +010054 self.blocks_file_source_0 = blocks.file_source(gr.sizeof_gr_complex*1, input_file_name, False)
55
56 ##################################################
57 # Connections
58 ##################################################
59 self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
60 self.connect((self.blocks_file_source_0, 0), (self.gsm_input_0, 0))
61
62 ##################################################
63 # Asynch Message Connections
64 ##################################################
65 self.msg_connect(self.gsm_receiver_0, "measurements", self.gsm_clock_offset_control_0, "measurements")
66 self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.gsm_message_printer_0, "msgs")
67 self.msg_connect(self.gsm_universal_ctrl_chans_demapper_0, "bursts", self.gsm_control_channels_decoder_0, "bursts")
68 self.msg_connect(self.gsm_receiver_0, "C0", self.gsm_universal_ctrl_chans_demapper_0, "bursts")
69 self.msg_connect(self.gsm_clock_offset_control_0, "ppm", self.gsm_input_0, "ppm_in")
70 self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.blocks_socket_pdu_0, "pdus")
71
ptrkrysik458004e2014-12-06 15:36:35 +010072# QT sink close method reimplementation
ptrkrysika136ff52014-11-28 23:38:23 +010073
74 def get_input_file_name(self):
75 return self.input_file_name
76
77 def set_input_file_name(self, input_file_name):
78 self.input_file_name = input_file_name
79 self.blocks_file_source_0.open(self.input_file_name, False)
80
81 def get_fc(self):
82 return self.fc
83
84 def set_fc(self, fc):
85 self.fc = fc
86 self.gsm_input_0.set_fc(self.fc)
87
88 def get_samp_rate(self):
89 return self.samp_rate
90
91 def set_samp_rate(self, samp_rate):
92 self.samp_rate = samp_rate
93 self.gsm_input_0.set_samp_rate_in(self.samp_rate)
94
95 def get_SDCCH(self):
96 return self.SDCCH
97
98 def set_SDCCH(self, SDCCH):
99 self.SDCCH = SDCCH
100
101 def get_RACH(self):
102 return self.RACH
103
104 def set_RACH(self, RACH):
105 self.RACH = RACH
106
107 def get_PCH(self):
108 return self.PCH
109
110 def set_PCH(self, PCH):
111 self.PCH = PCH
112
113 def get_CHANNEL_UNKNOWN(self):
114 return self.CHANNEL_UNKNOWN
115
116 def set_CHANNEL_UNKNOWN(self, CHANNEL_UNKNOWN):
117 self.CHANNEL_UNKNOWN = CHANNEL_UNKNOWN
118
119 def get_CCCH(self):
120 return self.CCCH
121
122 def set_CCCH(self, CCCH):
123 self.CCCH = CCCH
124
125 def get_BCCH(self):
126 return self.BCCH
127
128 def set_BCCH(self, BCCH):
129 self.BCCH = BCCH
130
131 def get_AGCH(self):
132 return self.AGCH
133
134 def set_AGCH(self, AGCH):
135 self.AGCH = AGCH
136
137if __name__ == '__main__':
138 parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
139 parser.add_option("-i", "--input-file-name", dest="input_file_name", type="string", default="input.cfile",
140 help="Set input.cfile [default=%default]")
141 parser.add_option("-f", "--fc", dest="fc", type="eng_float", default=eng_notation.num_to_str(937e6),
142 help="Set fc [default=%default]")
143 parser.add_option("-s", "--samp-rate", dest="samp_rate", type="eng_float", default=eng_notation.num_to_str(1e6),
144 help="Set samp_rate [default=%default]")
145 (options, args) = parser.parse_args()
146 tb = airprobe_file(input_file_name=options.input_file_name, fc=options.fc, samp_rate=options.samp_rate)
147 tb.start()
148 tb.wait()
ptrkrysik458004e2014-12-06 15:36:35 +0100149