blob: 48d195941efb6243a020ef4284e745d7edde6738 [file] [log] [blame]
ptrkrysika136ff52014-11-28 23:38:23 +01001#!/usr/bin/env python
2##################################################
3# Gnuradio Python Flow Graph
4# Title: Airprobe File
ptrkrysik3b776542015-01-03 00:06:39 +01005# Generated: Sat Jan 3 00:02:07 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 ##################################################
ptrkrysik3be74a72014-12-13 10:11:00 +010043 self.gsm_universal_ctrl_chans_demapper_0 = grgsm.universal_ctrl_chans_demapper(([2,6,12,16,22,26,32,36,42,46]), ([BCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH,CCCH]))
44 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)
54 self.blocks_socket_pdu_0 = blocks.socket_pdu("UDP_CLIENT", "127.0.0.1", "4729", 10000, False)
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 ##################################################
ptrkrysika136ff52014-11-28 23:38:23 +010060 self.connect((self.blocks_file_source_0, 0), (self.gsm_input_0, 0))
ptrkrysik3b776542015-01-03 00:06:39 +010061 self.connect((self.gsm_input_0, 0), (self.gsm_receiver_0, 0))
ptrkrysika136ff52014-11-28 23:38:23 +010062
63 ##################################################
ptrkrysik3b776542015-01-03 00:06:39 +010064 # Message Connections
ptrkrysika136ff52014-11-28 23:38:23 +010065 ##################################################
ptrkrysika136ff52014-11-28 23:38:23 +010066 self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.blocks_socket_pdu_0, "pdus")
ptrkrysik3b776542015-01-03 00:06:39 +010067 self.msg_connect(self.gsm_clock_offset_control_0, "ppm", self.gsm_input_0, "ppm_in")
68 self.msg_connect(self.gsm_receiver_0, "C0", self.gsm_universal_ctrl_chans_demapper_0, "bursts")
69 self.msg_connect(self.gsm_universal_ctrl_chans_demapper_0, "bursts", self.gsm_control_channels_decoder_0, "bursts")
70 self.msg_connect(self.gsm_control_channels_decoder_0, "msgs", self.gsm_message_printer_0, "msgs")
71 self.msg_connect(self.gsm_receiver_0, "measurements", self.gsm_clock_offset_control_0, "measurements")
ptrkrysika136ff52014-11-28 23:38:23 +010072
73
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()