aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Krysik <ptrkrysik@gmail.com>2016-02-14 20:24:54 +0100
committerPiotr Krysik <ptrkrysik@gmail.com>2016-02-14 20:24:54 +0100
commit7185b6664fc86e5ad75d0e1da9b2b0a5eebd20ae (patch)
tree28d6622049c22c529edaf0867156f904a4bb21b7
parentc3a822e5e4fe319efdb8ea20cc15f113fd147162 (diff)
Added ability to supply device arguments as parameter to applications.
Change adressing #140 enhancement request. It is possible to select rtl-sdr dongle: -with device index through commanline parameter: `--args="rtl=1"` (where 1 is the device index). Caution: device index is not unique identifier and it changes on each connection of the dongle. -with devices serial number, the commandline option in this case has following form: `--args="rtl=00000001"` (where 00000001 is the serial number). NOTE: You can set the serial number with use of: ```sh rtl_eeprom -s <serial_number> ```
-rwxr-xr-xapps/grgsm_livemon9
-rw-r--r--apps/grgsm_livemon.grc67
-rwxr-xr-xapps/grgsm_scanner11
-rwxr-xr-xapps/helpers/grgsm_capture.py5
4 files changed, 68 insertions, 24 deletions
diff --git a/apps/grgsm_livemon b/apps/grgsm_livemon
index 9c5e8a9..7bf4ee3 100755
--- a/apps/grgsm_livemon
+++ b/apps/grgsm_livemon
@@ -35,7 +35,7 @@ import time
class grgsm_livemon(gr.top_block, Qt.QWidget):
- def __init__(self, fc=939.4e6, gain=30, ppm=0, samp_rate=2000000.052982, shiftoff=400e3):
+ def __init__(self, fc=939.4e6, gain=30, ppm=0, samp_rate=2000000.052982, shiftoff=400e3, args=""):
gr.top_block.__init__(self, "Gr-gsm Livemon")
Qt.QWidget.__init__(self)
self.setWindowTitle("Gr-gsm Livemon")
@@ -86,7 +86,7 @@ class grgsm_livemon(gr.top_block, Qt.QWidget):
self._fc_slider_range = Range(925e6, 1990e6, 2e5, fc, 100)
self._fc_slider_win = RangeWidget(self._fc_slider_range, self.set_fc_slider, "Frequency", "counter_slider", float)
self.top_layout.addWidget(self._fc_slider_win)
- self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + "" )
+ self.rtlsdr_source_0 = osmosdr.source( args="numchan=" + str(1) + " " + args )
self.rtlsdr_source_0.set_sample_rate(samp_rate)
self.rtlsdr_source_0.set_center_freq(fc_slider-shiftoff, 0)
self.rtlsdr_source_0.set_freq_corr(ppm_slider, 0)
@@ -260,13 +260,16 @@ if __name__ == '__main__':
help="Set samp_rate [default=%default]")
parser.add_option("-o", "--shiftoff", dest="shiftoff", type="eng_float", default=eng_notation.num_to_str(400e3),
help="Set shiftoff [default=%default]")
+ parser.add_option("", "--args", dest="args", type="string", default="",
+ help="Set device arguments [default=%default]")
+
(options, args) = parser.parse_args()
# from distutils.version import StrictVersion
# if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"):
# Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
qapp = Qt.QApplication(sys.argv)
- tb = grgsm_livemon(fc=options.fc, gain=options.gain, ppm=options.ppm, samp_rate=options.samp_rate, shiftoff=options.shiftoff)
+ tb = grgsm_livemon(fc=options.fc, gain=options.gain, ppm=options.ppm, samp_rate=options.samp_rate, shiftoff=options.shiftoff, args=options.args)
tb.start()
tb.show()
diff --git a/apps/grgsm_livemon.grc b/apps/grgsm_livemon.grc
index fc740fa..22c30b0 100644
--- a/apps/grgsm_livemon.grc
+++ b/apps/grgsm_livemon.grc
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
-<?grc format='1' created='3.7.10'?>
+<?grc format='1' created='3.7.8'?>
<flow_graph>
<timestamp>Sat Dec 13 10:49:59 2014</timestamp>
<block>
@@ -9,6 +9,10 @@
<value>Piotr Krysik</value>
</param>
<param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
<key>window_size</key>
<value>2280, 1024</value>
</param>
@@ -41,10 +45,6 @@
<value>qt_gui</value>
</param>
<param>
- <key>hier_block_src_path</key>
- <value>.:</value>
- </param>
- <param>
<key>id</key>
<value>grgsm_livemon</value>
</param>
@@ -53,18 +53,10 @@
<value>0</value>
</param>
<param>
- <key>qt_qss_theme</key>
- <value></value>
- </param>
- <param>
<key>realtime_scheduling</key>
<value></value>
</param>
<param>
- <key>run_command</key>
- <value>{python} -u {filename}</value>
- </param>
- <param>
<key>run_options</key>
<value>prompt</value>
</param>
@@ -271,6 +263,49 @@
</param>
</block>
<block>
+ <key>parameter</key>
+ <param>
+ <key>alias</key>
+ <value></value>
+ </param>
+ <param>
+ <key>comment</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(872, 11)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>id</key>
+ <value>args</value>
+ </param>
+ <param>
+ <key>label</key>
+ <value>Device Arguments</value>
+ </param>
+ <param>
+ <key>short_id</key>
+ <value></value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>string</value>
+ </param>
+ <param>
+ <key>value</key>
+ <value>""</value>
+ </param>
+ </block>
+ <block>
<key>blocks_rotator_cc</key>
<param>
<key>alias</key>
@@ -960,7 +995,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(880, 11)</value>
+ <value>(1016, 11)</value>
</param>
<param>
<key>_rotation</key>
@@ -2601,7 +2636,7 @@
</param>
<param>
<key>args</key>
- <value></value>
+ <value>args</value>
</param>
<param>
<key>_enabled</key>
@@ -2728,7 +2763,7 @@
</param>
<param>
<key>_coordinate</key>
- <value>(16, 75)</value>
+ <value>(16, 115)</value>
</param>
<param>
<key>_rotation</key>
diff --git a/apps/grgsm_scanner b/apps/grgsm_scanner
index 4fd7c88..94bba43 100755
--- a/apps/grgsm_scanner
+++ b/apps/grgsm_scanner
@@ -201,7 +201,7 @@ class wideband_receiver(grgsm.hier_block):
class wideband_scanner(gr.top_block):
- def __init__(self, rec_len=3, sample_rate=2e6, carrier_frequency=939e6, ppm=0):
+ def __init__(self, rec_len=3, sample_rate=2e6, carrier_frequency=939e6, ppm=0, args=""):
gr.top_block.__init__(self, "Wideband Scanner")
@@ -211,7 +211,8 @@ class wideband_scanner(gr.top_block):
self.ppm = ppm
# if no file name is given process data from rtl_sdr source
- self.rtlsdr_source = osmosdr.source( args="numchan=" + str(1) + " " + "" )
+ print "Args=",args
+ self.rtlsdr_source = osmosdr.source( args="numchan=" + str(1) + " " + args )
self.rtlsdr_source.set_sample_rate(sample_rate)
@@ -302,10 +303,12 @@ if __name__ == '__main__':
help="Specify the GSM band for the frequency.\nAvailable bands are: " + bands_list)
parser.add_option("-s", "--samp-rate", dest="samp_rate", type="float", default=2e6,
help="Set sample rate [default=%default] - allowed values even_number*0.2e6")
- parser.add_option("-p", "--ppm", dest="ppm", type="intx", default=-45,
+ parser.add_option("-p", "--ppm", dest="ppm", type="intx", default=0,
help="Set frequency correction in ppm [default=%default]")
parser.add_option("-g", "--gain", dest="gain", type="eng_float", default=24.0,
help="Set gain [default=%default]")
+ parser.add_option("", "--args", dest="args", type="string", default="",
+ help="Set device arguments [default=%default]")
parser.add_option("--speed", dest="speed", type="intx", default=4,
help="Scan speed [default=%default]. Value range 0-5.")
parser.add_option("-v", "--verbose", action="store_true",
@@ -351,7 +354,7 @@ if __name__ == '__main__':
scanner = wideband_scanner(rec_len=6-options.speed,
sample_rate=options.samp_rate,
carrier_frequency=current_freq,
- ppm=options.ppm)
+ ppm=options.ppm, args=options.args)
# start recording
scanner.start()
diff --git a/apps/helpers/grgsm_capture.py b/apps/helpers/grgsm_capture.py
index 98696f4..bdce7d8 100755
--- a/apps/helpers/grgsm_capture.py
+++ b/apps/helpers/grgsm_capture.py
@@ -38,7 +38,7 @@ import sys
class grgsm_capture(gr.top_block):
- def __init__(self, fc, gain, samp_rate, ppm, arfcn, cfile=None, burst_file=None, band=None, verbose=False, rec_length=None):
+ def __init__(self, fc, gain, samp_rate, ppm, arfcn, cfile=None, burst_file=None, band=None, verbose=False, rec_length=None, args=""):
gr.top_block.__init__(self, "Gr-gsm Capture")
@@ -209,6 +209,9 @@ if __name__ == '__main__':
parser.add_option("--band", dest="band",
help="Specify the GSM band for the frequency.\nAvailable bands are: " + bands_list + ".\nIf no band is specified, it will be determined automatically, defaulting to 0." )
+ parser.add_option("", "--args", dest="args", type="string", default="",
+ help="Set device arguments [default=%default]")
+
parser.add_option("-v", "--verbose", action="store_true",
help="If set, the captured bursts are printed to stdout")