~ubuntu-branches/ubuntu/trusty/gnuradio/trusty

« back to all changes in this revision

Viewing changes to gnuradio-examples/python/apps/hf_explorer/hfx2.py

  • Committer: Bazaar Package Importer
  • Author(s): Kamal Mostafa
  • Date: 2010-03-13 07:46:01 UTC
  • mfrom: (2.1.2 sid)
  • Revision ID: james.westby@ubuntu.com-20100313074601-zjsa893a87bozyh7
Tags: 3.2.2.dfsg-1ubuntu1
* Fix build for Ubuntu lucid (LP: #260406)
  - add binary package dep for libusrp0, libusrp2-0: adduser
  - debian/rules clean: remove pre-built Qt moc files

Show diffs side-by-side

added added

removed removed

Lines of Context:
66
66
# added more comments.
67
67
#
68
68
# 2.4.1 updates usrp interface to support auto subdev
 
69
 
70
# 2.8.1 changed saved file format from 8-byte complex to
 
71
# 4-byte short for obvious storage space savings.
69
72
 
70
73
# Web server control disabled by default. Do not enable
71
74
# until directory structure and scripts are in place.
77
80
 
78
81
import os, wx, sys, math
79
82
import wx.lib.evtmgr as em
80
 
from gnuradio.wxgui import powermate, fftsink
 
83
from gnuradio.wxgui import powermate, fftsink2
81
84
from gnuradio import gr, audio, eng_notation, usrp, gru
82
85
from gnuradio.eng_option import eng_option
83
86
from optparse import OptionParser
115
118
    If there's a daughterboard on B, select B.
116
119
    Otherwise, select A.
117
120
    """
118
 
    if u.db[0][0].dbid() >= 0:       # dbid is < 0 if there's no d'board or a problem
 
121
    if u.db(0, 0).dbid() >= 0:       # dbid is < 0 if there's no d'board or a problem
119
122
        return (0, 0)
120
 
    if u.db[1][0].dbid() >= 0:
 
123
    if u.db(1, 0).dbid() >= 0:
121
124
        return (1, 0)
122
125
    return (0, 0)
123
126
 
206
209
        self.xdata = []
207
210
        self.ydata = []
208
211
 
209
 
        self.fg = gr.flow_graph()
 
212
        self.tb = gr.top_block()
210
213
 
211
214
        # radio variables, initial conditions
212
215
        self.frequency = self.usrp_center
242
245
        else: self.PLAY_FROM_USRP = False
243
246
 
244
247
        if self.PLAY_FROM_USRP:
245
 
           self.src = usrp.source_c(decim_rate=options.decim)
 
248
           self.src = usrp.source_s(decim_rate=options.decim)
246
249
           if options.rx_subdev_spec is None:
247
250
              options.rx_subdev_spec = pick_subdevice(self.src)
248
251
           self.src.set_mux(usrp.determine_rx_mux_value(self.src, options.rx_subdev_spec))
251
254
           self.tune_offset = 0 # -self.usrp_center - self.src.rx_freq(0)
252
255
 
253
256
        else:
254
 
           self.src = gr.file_source (gr.sizeof_gr_complex,options.input_file)
 
257
           self.src = gr.file_source (gr.sizeof_short,options.input_file)
255
258
           self.tune_offset = 2200 # 2200 works for 3.5-4Mhz band
256
259
 
257
260
        # save radio data to a file
258
261
        if SAVE_RADIO_TO_FILE:
259
 
           file = gr.file_sink(gr.sizeof_gr_complex, options.radio_file)
260
 
           self.fg.connect (self.src, file)
 
262
           file = gr.file_sink(gr.sizeof_short, options.radio_file)
 
263
           self.tb.connect (self.src, file)
261
264
 
262
265
        # 2nd DDC
263
266
        xlate_taps = gr.firdes.low_pass ( \
265
268
        self.xlate = gr.freq_xlating_fir_filter_ccf ( \
266
269
           fir_decim, xlate_taps, self.tune_offset, usb_rate )
267
270
 
 
271
        # convert rf data in interleaved short int form to complex
 
272
        s2ss = gr.stream_to_streams(gr.sizeof_short,2)
 
273
        s2f1 = gr.short_to_float()
 
274
        s2f2 = gr.short_to_float()
 
275
        src_f2c = gr.float_to_complex()
 
276
        self.tb.connect(self.src,s2ss)
 
277
        self.tb.connect((s2ss,0),s2f1)
 
278
        self.tb.connect((s2ss,1),s2f2)
 
279
        self.tb.connect(s2f1,(src_f2c,0))
 
280
        self.tb.connect(s2f2,(src_f2c,1))
 
281
 
 
282
 
268
283
        # Complex Audio filter
269
284
        audio_coeffs = gr.firdes.complex_band_pass (
270
285
                1.0,    # gain
279
294
        self.audio_filter = gr.fir_filter_ccc ( 1, audio_coeffs)
280
295
 
281
296
        # Main +/- 16Khz spectrum display
282
 
        self.fft = fftsink.fft_sink_c (self.fg, self.panel_2, fft_size=512, sample_rate=self.af_sample_rate, average=True, size=(640,240))
 
297
        self.fft = fftsink2.fft_sink_c (self.panel_2, fft_size=512, sample_rate=self.af_sample_rate, average=True, size=(640,240))
283
298
 
284
299
        # AM Sync carrier 
285
300
        if AM_SYNC_DISPLAY:
286
 
           self.fft2 = fftsink.fft_sink_c (self.fg, self.panel_9, y_per_div=20, fft_size=512, sample_rate=self.af_sample_rate, average=True, size=(640,240))
 
301
           self.fft2 = fftsink.fft_sink_c (self.tb, self.panel_9, y_per_div=20, fft_size=512, sample_rate=self.af_sample_rate, average=True, size=(640,240))
287
302
 
288
303
        c2f = gr.complex_to_float()
289
304
 
327
342
        self.scale = gr.multiply_const_ff(0.00001)
328
343
        dst = audio.sink(long(self.af_sample_rate))
329
344
 
330
 
        self.fg.connect(self.src,self.xlate,self.fft)
331
 
        self.fg.connect(self.xlate,self.audio_filter,self.sel_am,(am_det,0))
332
 
        self.fg.connect(self.sel_am,pll,self.pll_carrier_scale,self.pll_carrier_filter,c2f3)
333
 
        self.fg.connect((c2f3,0),phaser1,(f2c,0))
334
 
        self.fg.connect((c2f3,1),phaser2,(f2c,1))
335
 
        self.fg.connect(f2c,(am_det,1))
336
 
        self.fg.connect(am_det,c2f2,(combine,0))
337
 
        self.fg.connect(self.audio_filter,c2f,self.sel_sb,(combine,1))
 
345
        self.tb.connect(src_f2c,self.xlate,self.fft)
 
346
        self.tb.connect(self.xlate,self.audio_filter,self.sel_am,(am_det,0))
 
347
        self.tb.connect(self.sel_am,pll,self.pll_carrier_scale,self.pll_carrier_filter,c2f3)
 
348
        self.tb.connect((c2f3,0),phaser1,(f2c,0))
 
349
        self.tb.connect((c2f3,1),phaser2,(f2c,1))
 
350
        self.tb.connect(f2c,(am_det,1))
 
351
        self.tb.connect(am_det,c2f2,(combine,0))
 
352
        self.tb.connect(self.audio_filter,c2f,self.sel_sb,(combine,1))
338
353
        if AM_SYNC_DISPLAY:
339
 
          self.fg.connect(self.pll_carrier_filter,self.fft2)
340
 
        self.fg.connect(combine,self.scale)
341
 
        self.fg.connect(self.scale,(sqr1,0))
342
 
        self.fg.connect(self.scale,(sqr1,1))
343
 
        self.fg.connect(sqr1, intr, offset, (agc, 1))
344
 
        self.fg.connect(self.scale,(agc, 0))
345
 
        self.fg.connect(agc,dst)
 
354
          self.tb.connect(self.pll_carrier_filter,self.fft2)
 
355
        self.tb.connect(combine,self.scale)
 
356
        self.tb.connect(self.scale,(sqr1,0))
 
357
        self.tb.connect(self.scale,(sqr1,1))
 
358
        self.tb.connect(sqr1, intr, offset, (agc, 1))
 
359
        self.tb.connect(self.scale,(agc, 0))
 
360
        self.tb.connect(agc,dst)
346
361
 
347
362
        if SAVE_AUDIO_TO_FILE:
348
363
          f_out = gr.file_sink(gr.sizeof_short,options.audio_file)
349
364
          sc1 = gr.multiply_const_ff(64000)
350
365
          f2s1 = gr.float_to_short()
351
 
          self.fg.connect(agc,sc1,f2s1,f_out)
 
366
          self.tb.connect(agc,sc1,f2s1,f_out)
352
367
 
353
 
        self.fg.start()
 
368
        self.tb.start()
354
369
 
355
370
        # for mouse position reporting on fft display
356
371
        em.eventManager.Register(self.Mouse, wx.EVT_MOTION, self.fft.win)
467
482
 
468
483
    # Menu exit
469
484
    def TimeToQuit(self, event):
470
 
        self.fg.stop()
 
485
        self.tb.stop()
471
486
        self.Close(True)
472
487
 
473
488
    # Powermate being turned