summaryrefslogtreecommitdiff
path: root/gssm/src/python/gssm_usrp.py
diff options
context:
space:
mode:
Diffstat (limited to 'gssm/src/python/gssm_usrp.py')
-rwxr-xr-xgssm/src/python/gssm_usrp.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/gssm/src/python/gssm_usrp.py b/gssm/src/python/gssm_usrp.py
new file mode 100755
index 0000000..f8ea583
--- /dev/null
+++ b/gssm/src/python/gssm_usrp.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+
+# $Id: gssm_usrp.py,v 1.2 2007-07-07 16:31:44 jl Exp $
+
+from gnuradio import gr, usrp, db_dbs_rx, blks
+from gnuradio.blksimpl import gmsk
+from usrpm import usrp_dbid
+import gssm
+import sys
+
+# constant
+gsm_rate = 1625000.0 / 6.0
+
+# script constant
+decim = 112
+gain = 70
+
+# bts channel
+c0 = 875.4e6
+
+# experimental constant
+default_usrp_offset = 12e3
+
+class gssm_flow_graph(gr.flow_graph):
+ def __init__(self, usrp_offset):
+ gr.flow_graph.__init__(self)
+
+ u = usrp.source_c(decim_rate = decim)
+ s = usrp.pick_subdev(u, (usrp_dbid.DBS_RX,))
+ u.set_mux(usrp.determine_rx_mux_value(u, s))
+ subdev = usrp.selected_subdev(u, s)
+
+ if subdev.dbid() != usrp_dbid.DBS_RX:
+ raise Exception('dbs daughterboard not detected!')
+
+ subdev.set_gain(gain)
+
+ sps = u.adc_freq() / u.decim_rate()
+ if sps < 2 * gsm_rate:
+ raise Exception('sample rate too low')
+
+ u.tune(0, subdev, c0 + usrp_offset)
+
+ xcf = 150e3
+ xtw = 50e3
+ xt = gr.firdes.low_pass(1.0, sps, xcf, xtw,
+ gr.firdes.WIN_HAMMING)
+ xf = gr.fir_filter_ccf(1, xt)
+
+ g = gssm.sink(sps)
+
+ self.connect(u, xf, g)
+
+def main():
+ if len(sys.argv) == 2:
+ uo = float(sys.argv[1])
+ else:
+ uo = default_usrp_offset
+ g = gssm_flow_graph(uo)
+ g.run()
+
+if __name__ == '__main__':
+ main()
personal git repositories of Harald Welte. Your mileage may vary