commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r9718 - gnuradio/branches/features/cppdb/gr-usrp/src


From: trondeau
Subject: [Commit-gnuradio] r9718 - gnuradio/branches/features/cppdb/gr-usrp/src
Date: Sat, 4 Oct 2008 15:51:48 -0600 (MDT)

Author: trondeau
Date: 2008-10-04 15:51:44 -0600 (Sat, 04 Oct 2008)
New Revision: 9718

Modified:
   gnuradio/branches/features/cppdb/gr-usrp/src/usrp1.i
   gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink.i
   gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.cc
   gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.h
Log:
changes to make constructor arguments in python examples work fine. This hacks 
around the **kwargs issue that allows Python to specify constructor arguments.

Modified: gnuradio/branches/features/cppdb/gr-usrp/src/usrp1.i
===================================================================
--- gnuradio/branches/features/cppdb/gr-usrp/src/usrp1.i        2008-10-04 
19:29:45 UTC (rev 9717)
+++ gnuradio/branches/features/cppdb/gr-usrp/src/usrp1.i        2008-10-04 
21:51:44 UTC (rev 9718)
@@ -53,10 +53,82 @@
 
 
 %pythoncode %{
+  import re
   def selected_subdev(u, spec):
       return u.selected_subdev(spec)
   def determine_rx_mux_value(u, spec):
       return u.determine_rx_mux_value(spec)
   def determine_tx_mux_value(u, spec):
       return u.determine_tx_mux_value(spec)
+
+  # This fakes out the source_c(*args) that swig generates and adds **kwargs 
to it.
+  # I wish I knew a cleaner way to convert the list, but I dont.
+  # This problem might be fixable by using the "-keyword" option passed to 
swig during compile time.
+  # However, this function is not well documented and can cause errors with 
overloaded function
+  # (like in shared_ptr.i). While this is kludgey, it solves the keyword 
argument problem.
+
+  def process_args(argslist):
+    # process the doc string to get the argument names and default values
+    p = re.compile("\w+=\S*")
+    m = p.findall(argslist)
+    argslist = list()
+    argsvals = list()
+    for val in m:
+      key = val.split("=")[0]
+      value = val.split("=")[1].strip(",)")
+      try:
+        v = int(value)
+      except ValueError: # convert the hex value
+        try:
+          v = int(value,16)
+        except ValueError, e:
+          v = value.strip("\"")
+      argslist.append(key)
+      argsvals.append(v)
+
+    return (argslist, argsvals)
+
+  def source_c(*args, **kwargs):
+    constructor_args = _usrp.source_c.__doc__
+    constructor_args = constructor_args.split("->")[0]
+    argslist, argsvals = process_args(constructor_args)
+    i = 0
+    for a in argslist:
+        if(kwargs.has_key(a)):
+            argsvals[i] = kwargs[a]
+        i += 1
+    return _usrp.source_c(*argsvals)
+ 
+  def source_s(*args, **kwargs):
+    constructor_args = _usrp.source_s.__doc__
+    constructor_args = constructor_args.split("->")[0]
+    argslist, argsvals = process_args(constructor_args)
+    i = 0
+    for a in argslist:
+        if(kwargs.has_key(a)):
+            argsvals[i] = kwargs[a]
+        i += 1
+    return _usrp.source_s(*argsvals)
+
+  def sink_c(*args, **kwargs):
+    constructor_args = _usrp.sink_c.__doc__
+    constructor_args = constructor_args.split("->")[0]
+    argslist, argsvals = process_args(constructor_args)
+    i = 0
+    for a in argslist:
+        if(kwargs.has_key(a)):
+            argsvals[i] = kwargs[a]
+        i += 1
+    return _usrp.sink_c(*argsvals)
+
+  def sink_s(*args, **kwargs):
+    constructor_args = _usrp.sink_s.__doc__
+    constructor_args = constructor_args.split("->")[0]
+    argslist, argsvals = process_args(constructor_args)
+    i = 0
+    for a in argslist:
+        if(kwargs.has_key(a)):
+            argsvals[i] = kwargs[a]
+        i += 1
+    return _usrp.sink_s(*argsvals)
 %}

Modified: gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink.i
===================================================================
--- gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink.i   2008-10-04 
19:29:45 UTC (rev 9717)
+++ gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink.i   2008-10-04 
21:51:44 UTC (rev 9718)
@@ -132,7 +132,7 @@
 GR_SWIG_BLOCK_MAGIC(usrp1,sink_s)
 
 usrp1_sink_s_sptr
-usrp1_make_sink_s (int which_board=0,
+usrp1_make_sink_s (int which=0,
                   unsigned int interp_rate=128,
                   int nchan=1,
                   int mux=0x98,

Modified: gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.cc
===================================================================
--- gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.cc     
2008-10-04 19:29:45 UTC (rev 9717)
+++ gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.cc     
2008-10-04 21:51:44 UTC (rev 9718)
@@ -33,7 +33,7 @@
 
 usrp1_sink_base::usrp1_sink_base (const std::string &name,
                                  gr_io_signature_sptr input_signature,
-                                 int which_board,
+                                 int which,
                                  unsigned int interp_rate,
                                  int nchan,
                                  int mux,
@@ -44,7 +44,7 @@
                                  ) throw (std::runtime_error)
   : usrp1_base(name, input_signature, gr_make_io_signature (0, 0, 0)),
     d_nunderruns (0), 
-    d_usrp(usrp_standard_tx::make (which_board, interp_rate,
+    d_usrp(usrp_standard_tx::make (which, interp_rate,
                                   nchan, mux, fusb_block_size,
                                   fusb_nblocks, fpga_filename,
                                   firmware_filename))

Modified: gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.h
===================================================================
--- gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.h      
2008-10-04 19:29:45 UTC (rev 9717)
+++ gnuradio/branches/features/cppdb/gr-usrp/src/usrp1_sink_base.h      
2008-10-04 21:51:44 UTC (rev 9718)
@@ -38,7 +38,7 @@
  protected:
   usrp1_sink_base (const std::string &name,
                   gr_io_signature_sptr input_signature,
-                  int which_board,
+                  int which,
                   unsigned int interp_rate,
                   int nchan,
                   int mux,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]