added command line option parsing
git-svn-id: http://op25.osmocom.org/svn/trunk@16 65a5c917-d112-43f1-993d-58c26a4786be
This commit is contained in:
parent
9cd3c149b0
commit
747d4a7d88
|
@ -1,4 +1,7 @@
|
|||
#!/usr/bin/env python
|
||||
from gnuradio import gr, gru, blks
|
||||
from gnuradio.eng_option import eng_option
|
||||
from optparse import OptionParser
|
||||
|
||||
"""
|
||||
simple frequency demodulator for captured P25 C4FM signals
|
||||
|
@ -7,47 +10,46 @@ input: complex sample captured by USRP
|
|||
output: real baseband sample at 48 ksps
|
||||
"""
|
||||
|
||||
from gnuradio import gr, gru, blks
|
||||
import math
|
||||
|
||||
class my_graph(gr.flow_graph):
|
||||
|
||||
def __init__(self):
|
||||
class app_flow_graph(gr.flow_graph):
|
||||
def __init__(self, options):
|
||||
gr.flow_graph.__init__(self)
|
||||
|
||||
### set these manually for target sample
|
||||
input_sample_rate = 500e3 # trunk control channel sample
|
||||
# frequency is relative to input sample
|
||||
#frequency = 87.5e3 # lower band of trunk control channel sample
|
||||
frequency = 100e3 # higher band of trunk control channel sample
|
||||
#input_sample_rate = 256e3 # *-256KSS.dat samples
|
||||
#frequency = 0 # baseband-complex-256KSS.dat
|
||||
#frequency = 30e3 # sample-complex-256KSS.dat
|
||||
bandwidth = 12.5e3
|
||||
###
|
||||
src = gr.file_source(gr.sizeof_gr_complex, "infile")
|
||||
symbol_rate = 4800
|
||||
output_samples_per_symbol = 10
|
||||
output_sample_rate = output_samples_per_symbol * symbol_rate
|
||||
lcm = gru.lcm(input_sample_rate, output_sample_rate)
|
||||
intrp = int(lcm // input_sample_rate)
|
||||
|
||||
output_sample_rate = options.samples_per_symbol * symbol_rate
|
||||
lcm = gru.lcm(options.sample_rate, output_sample_rate)
|
||||
intrp = int(lcm // options.sample_rate)
|
||||
decim = int(lcm // output_sample_rate)
|
||||
|
||||
src = gr.file_source(gr.sizeof_gr_complex, options.input_file)
|
||||
ddc_coeffs = \
|
||||
gr.firdes.low_pass (1.0,
|
||||
input_sample_rate,
|
||||
options.sample_rate,
|
||||
bandwidth/2,
|
||||
bandwidth/2,
|
||||
gr.firdes.WIN_HANN)
|
||||
ddc = gr.freq_xlating_fir_filter_ccf (1,ddc_coeffs,-frequency,input_sample_rate)
|
||||
ddc = gr.freq_xlating_fir_filter_ccf (1,ddc_coeffs,-options.frequency,options.sample_rate)
|
||||
resampler = blks.rational_resampler_ccc(self, intrp, decim)
|
||||
qdemod = gr.quadrature_demod_cf(1.0)
|
||||
f2c = gr.float_to_complex()
|
||||
sink = gr.file_sink(gr.sizeof_float, "demod")
|
||||
sink = gr.file_sink(gr.sizeof_float, options.output_file)
|
||||
|
||||
self.connect(src,ddc,resampler,qdemod,sink)
|
||||
|
||||
if __name__ == '__main__':
|
||||
def main():
|
||||
parser = OptionParser(option_class=eng_option)
|
||||
parser.add_option("-i", "--input-file", type="string", default="in.dat", help="specify the input file")
|
||||
parser.add_option("-o", "--output-file", type="string", default="demod.dat", help="specify the output file")
|
||||
parser.add_option("-r", "--sample-rate", type="eng_float", default=500e3, help="sample rate of input file", metavar="Hz")
|
||||
parser.add_option("-f", "--frequency", type="eng_float", default=0, help="frequency of signal to demodulate", metavar="Hz")
|
||||
parser.add_option("-s", "--samples-per-symbol", type="int", default=10, help="samples per symbol in output file")
|
||||
(options, args) = parser.parse_args()
|
||||
|
||||
fg = app_flow_graph(options)
|
||||
try:
|
||||
my_graph().run()
|
||||
fg.run()
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
Reference in New Issue