Imported Upstream version 3.2.2
[debian/gnuradio] / gr-usrp / src / usrp_swig.i
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2008,2009 Free Software Foundation, Inc.
4  * 
5  * This file is part of GNU Radio
6  * 
7  * GNU Radio is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 3, or (at your option)
10  * any later version.
11  * 
12  * GNU Radio is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with GNU Radio; see the file COPYING.  If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street,
20  * Boston, MA 02110-1301, USA.
21  */
22
23 %include "gnuradio.i"   // the common stuff
24
25 %{
26 #include <vector>
27 %}
28
29 %include <usrp_subdev_spec.h>
30 %include <db_base.i>
31 %include <fpga_regs_common.h>
32 %include <fpga_regs_standard.h>
33 %include "usrp_standard.i"
34 %include "usrp_base.i"
35 %include "usrp_source_base.i"
36 %include "usrp_source_c.i"
37 %include "usrp_source_s.i"
38 %include "usrp_sink_base.i"
39 %include "usrp_sink_c.i"
40 %include "usrp_sink_s.i"
41
42 //---Allow a more Pythonic interface
43 %pythoncode %{
44
45 # Allow subdev_spec to be tuple
46 def __selected_subdev(self, subdev_spec):
47   ss = usrp_subdev_spec(subdev_spec[0], subdev_spec[1])
48   return self._real_selected_subdev(ss)
49
50 # Allow subdev_spec to be tuple
51 def __determine_tx_mux_value(self, subdev_spec, subdev_spec_=None):
52     ss = usrp_subdev_spec(subdev_spec[0], subdev_spec[1])
53     if subdev_spec_ is None: return self._real_determine_tx_mux_value(ss)
54     ss_ = usrp_subdev_spec(subdev_spec_[0], subdev_spec_[1])
55     return self._real_determine_tx_mux_value(ss, ss_)
56
57 # Allow subdev_spec to be tuple
58 def __determine_rx_mux_value(self, subdev_spec, subdev_spec_=None):
59     ss = usrp_subdev_spec(subdev_spec[0], subdev_spec[1])
60     if subdev_spec_ is None: return self._real_determine_rx_mux_value(ss)
61     ss_ = usrp_subdev_spec(subdev_spec_[0], subdev_spec_[1])
62     return self._real_determine_rx_mux_value(ss, ss_)
63
64 # Allow subdev_spec to be tuple
65 def __pick_subdev(self, candidates=[]):
66     ss = self._real_pick_subdev(candidates)
67     return (ss.side, ss.subdev)
68
69 # Allow subdev_spec to be tuple
70 def __pick_tx_subdevice(self):
71     ss = self._real_pick_tx_subdevice()
72     return (ss.side, ss.subdev)
73
74 # Allow subdev_spec to be tuple
75 def __pick_rx_subdevice(self):
76     ss = self._real_pick_rx_subdevice()
77     return (ss.side, ss.subdev)
78
79 # Make return tune_result or None on failure
80 def __tune(self, chan, db, target_freq):
81     tr = usrp_tune_result()
82     r = self._real_tune(chan, db, target_freq, tr)
83     if r:
84         return tr
85     else:
86         return None
87
88 # Allow to be called as a free function
89 def tune(u, chan, subdev, target_freq):
90     return u.tune(chan, subdev, target_freq)
91
92 # Allow to be called as free function
93 def determine_tx_mux_value(u, subdev_spec, subdev_spec_=None):
94     return u.determine_tx_mux_value(subdev_spec, subdev_spec_)
95
96 # Allow to be called as free function
97 def determine_rx_mux_value(u, subdev_spec, subdev_spec_=None):
98     return u.determine_rx_mux_value(subdev_spec, subdev_spec_)
99
100 # Allow to be called as free function
101 def selected_subdev(u, subdev_spec):
102     return u.selected_subdev(subdev_spec)
103
104 # Allow to be called as free function
105 def pick_subdev(u, candidates=[]):
106     return u.pick_subdev(candidates);
107
108 # Allow to be called as free function
109 def pick_tx_subdevice(u):
110     return u.pick_tx_subdevice();
111
112 # Allow to be called as free function
113 def pick_rx_subdevice(u):
114     return u.pick_rx_subdevice();
115
116 # Jam into Python objects
117 usrp_sink_c_sptr.determine_tx_mux_value   = __determine_tx_mux_value
118 usrp_sink_s_sptr.determine_tx_mux_value   = __determine_tx_mux_value
119
120 usrp_source_c_sptr.determine_rx_mux_value = __determine_rx_mux_value
121 usrp_source_s_sptr.determine_rx_mux_value = __determine_rx_mux_value
122
123 usrp_sink_c_sptr.selected_subdev          = __selected_subdev
124 usrp_sink_s_sptr.selected_subdev          = __selected_subdev
125 usrp_source_c_sptr.selected_subdev        = __selected_subdev
126 usrp_source_s_sptr.selected_subdev        = __selected_subdev
127
128 usrp_sink_c_sptr.tune                     = __tune
129 usrp_sink_s_sptr.tune                     = __tune
130 usrp_source_c_sptr.tune                   = __tune
131 usrp_source_s_sptr.tune                   = __tune
132
133 usrp_sink_c_sptr.pick_subdev              = __pick_subdev
134 usrp_sink_s_sptr.pick_subdev              = __pick_subdev
135 usrp_source_c_sptr.pick_subdev            = __pick_subdev
136 usrp_source_s_sptr.pick_subdev            = __pick_subdev
137
138 usrp_sink_c_sptr.pick_tx_subdevice        = __pick_tx_subdevice
139 usrp_sink_s_sptr.pick_tx_subdevice        = __pick_tx_subdevice
140 usrp_source_c_sptr.pick_rx_subdevice      = __pick_rx_subdevice
141 usrp_source_s_sptr.pick_rx_subdevice      = __pick_rx_subdevice
142
143 %}