blob: 2a88a270ce47a3cc45945519f017c2f86bdf851f [file] [log] [blame]
ptrkrysika136ff52014-11-28 23:38:23 +01001#!/usr/bin/env python
2##################################################
3# Gnuradio Python Flow Graph
4# Title: Airprobe File
ptrkrysik3be74a72014-12-13 10:11:00 +01005# Generated: Sat Dec 13 09:44:41 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
ptrkrysik3be74a72014-12-13 10:11:00 +010014import grgsm
ptrkrysika136ff52014-11-28 23:38:23 +010015
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 ##################################################
ptrkrysik3be74a72014-12-13 10:11:00 +010042 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]))
43 self.gsm_receiver_0 = grgsm.receiver(4, ([0]), ([]))
44 self.gsm_message_printer_0 = grgsm.message_printer()
45 self.gsm_input_0 = grgsm.gsm_input(
ptrkrysika136ff52014-11-28 23:38:23 +010046 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
72
73 def get_input_file_name(self):
74 return self.input_file_name
75
76 def set_input_file_name(self, input_file_name):
77 self.input_file_name = input_file_name
78 self.blocks_file_source_0.open(self.input_file_name, False)
79
80 def get_fc(self):
81 return self.fc
82
83 def set_fc(self, fc):
84 self.fc = fc
85 self.gsm_input_0.set_fc(self.fc)
86
87 def get_samp_rate(self):
88 return self.samp_rate
89
90 def set_samp_rate(self, samp_rate):
91 self.samp_rate = samp_rate
92 self.gsm_input_0.set_samp_rate_in(self.samp_rate)
93
94 def get_SDCCH(self):
95 return self.SDCCH
96
97 def set_SDCCH(self, SDCCH):
98 self.SDCCH = SDCCH
99
100 def get_RACH(self):
101 return self.RACH
102
103 def set_RACH(self, RACH):
104 self.RACH = RACH
105
106 def get_PCH(self):
107 return self.PCH
108
109 def set_PCH(self, PCH):
110 self.PCH = PCH
111
112 def get_CHANNEL_UNKNOWN(self):
113 return self.CHANNEL_UNKNOWN
114
115 def set_CHANNEL_UNKNOWN(self, CHANNEL_UNKNOWN):
116 self.CHANNEL_UNKNOWN = CHANNEL_UNKNOWN
117
118 def get_CCCH(self):
119 return self.CCCH
120
121 def set_CCCH(self, CCCH):
122 self.CCCH = CCCH
123
124 def get_BCCH(self):
125 return self.BCCH
126
127 def set_BCCH(self, BCCH):
128 self.BCCH = BCCH
129
130 def get_AGCH(self):
131 return self.AGCH
132
133 def set_AGCH(self, AGCH):
134 self.AGCH = AGCH
135
136if __name__ == '__main__':
137 parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
138 parser.add_option("-i", "--input-file-name", dest="input_file_name", type="string", default="input.cfile",
139 help="Set input.cfile [default=%default]")
140 parser.add_option("-f", "--fc", dest="fc", type="eng_float", default=eng_notation.num_to_str(937e6),
141 help="Set fc [default=%default]")
142 parser.add_option("-s", "--samp-rate", dest="samp_rate", type="eng_float", default=eng_notation.num_to_str(1e6),
143 help="Set samp_rate [default=%default]")
144 (options, args) = parser.parse_args()
145 tb = airprobe_file(input_file_name=options.input_file_name, fc=options.fc, samp_rate=options.samp_rate)
146 tb.start()
147 tb.wait()