commit-gnuradio
[Top][All Lists]
Advanced

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

[Commit-gnuradio] r5467 - in gnuradio/branches/developers/jcorgan/snd/gr


From: jcorgan
Subject: [Commit-gnuradio] r5467 - in gnuradio/branches/developers/jcorgan/snd/gr-sounder/src: fpga fpga/lib fpga/top python
Date: Mon, 14 May 2007 16:53:03 -0600 (MDT)

Author: jcorgan
Date: 2007-05-14 16:53:02 -0600 (Mon, 14 May 2007)
New Revision: 5467

Removed:
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/rbf/
Modified:
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/Makefile.am
   
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/lfsr_constants.v
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder.v
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder_rx.v
   gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/Makefile.am
   
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/usrp_sounder.v
   
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/usrp_sounder.py
Log:
Work in progress.

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/Makefile.am
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/Makefile.am    
    2007-05-14 18:22:31 UTC (rev 5466)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/Makefile.am    
    2007-05-14 22:53:02 UTC (rev 5467)
@@ -28,3 +28,4 @@
        sounder_rx.v \
        sounder_tx.v
 
+MOSTLYCLEANFILES = *~
\ No newline at end of file

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/lfsr_constants.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/lfsr_constants.v
   2007-05-14 18:22:31 UTC (rev 5466)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/lfsr_constants.v
   2007-05-14 22:53:02 UTC (rev 5467)
@@ -24,8 +24,9 @@
    output reg  [15:0] mask_o;
    output wire [15:0] len_o;
    
-   assign len_o = (16'b1 << degree_i) - 1;
-
+   wire [31:0] len = (32'b1 << degree_i) - 32'b1;
+   assign len_o = len[15:0];
+   
    always @*
      case (degree_i)
        5'd00: mask_o = 16'h0000;

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder.v
===================================================================
--- gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder.v  
2007-05-14 18:22:31 UTC (rev 5466)
+++ gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder.v  
2007-05-14 22:53:02 UTC (rev 5467)
@@ -22,63 +22,64 @@
 `include "../../../../usrp/firmware/include/fpga_regs_common.v"
 `include "../../../../usrp/firmware/include/fpga_regs_standard.v"
 
-module 
sounder(clk_i,saddr_i,sdata_i,s_strobe_i,tx_rst_i,tx_enable_i,tx_strobe_i,
-              tx_dac_i_o,tx_dac_q_o,
-              rx_rst_i,rx_enable_i,rx_strobe_i,rx_strobe_o,
-              rx_adc_i_i,rx_adc_q_i,rx_imp_i_o,rx_imp_q_o);
+module sounder(clk_i, saddr_i, sdata_i, s_strobe_i,
+              tx_strobe_i, tx_dac_i_o,tx_dac_q_o,
+              rx_strobe_i, rx_adc_i_i,rx_adc_q_i,
+              rx_strobe_o, rx_imp_i_o,rx_imp_q_o,
+              reset_o);
 
    // System interface
    input         clk_i;                // Master clock @ 64 MHz
    input  [6:0]  saddr_i;      // Configuration bus address
    input  [31:0] sdata_i;      // Configuration bus data
    input        s_strobe_i;    // Configuration bus write
+   output        reset_o;       // Passes up internal reset to top level module
    
    // Transmit subsystem
-   input         tx_rst_i;     // Independent subsystem reset
-   input         tx_enable_i;  // Turn on transmitter functionality
    input         tx_strobe_i;  // Generate an transmitter output sample
    output [15:0] tx_dac_i_o;   // I channel transmitter output to DAC
    output [15:0] tx_dac_q_o;    // Q channel transmitter output to DAC
 
    // Receive subsystem
-   input        rx_rst_i;      // Independent subsystem reset
-   input        rx_enable_i;   // Turn on receiver functionality
    input         rx_strobe_i;  // Indicates receive sample ready from ADC
    output       rx_strobe_o;   // Indicates output samples ready for Rx FIFO
    input  [15:0] rx_adc_i_i;   // I channel input from ADC
    input  [15:0] rx_adc_q_i;   // Q channel input from ADC
    output [15:0] rx_imp_i_o;   // I channel impulse response to Rx FIFO
    output [15:0] rx_imp_q_o;   // Q channel impulse response to Rx FIFO
+        
+   // Internal variables
+   wire         transmit;
+   wire         receive;
+   wire         loopback;
+   wire [4:0]   degree;
+   wire [15:0]          mask;
+   wire [15:0]          len;
 
-   // Configuration
-   wire   [4:0]  degree;       // LFSR register length
-   wire   [15:0] mask;         // LFSR parity mask
-   wire   [15:0] len;          // PN code sequence length
-   wire          loopback;     // Enable digital loopback
+   setting_reg #(`FR_USER_0) sr_mode
+     ( 
.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
+       .out({loopback,receive,transmit,reset_o}) );
 
+   setting_reg #(`FR_USER_1) sr_lfsr_degree
+     ( 
.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),.out(degree)
 );
+   
+   lfsr_constants constants(.degree_i(degree),.mask_o(mask),.len_o(len));
+
    // Loopback implementation
    wire   [15:0] tx_i, tx_q, rx_i, rx_q; // Internal transmit and receive data 
bus
 
-   assign       tx_dac_i_o = loopback ? 16'b0 : tx_i;
-   assign       tx_dac_q_o = loopback ? 16'b0 : tx_q;
-   assign       rx_i = loopback ? tx_i : rx_adc_i_i;
-   assign       rx_q = loopback ? tx_q : rx_adc_q_i;
+   assign tx_dac_i_o = loopback ? 16'b0 : tx_i;
+   assign tx_dac_q_o = loopback ? 16'b0 : tx_q;
+   assign rx_i       = loopback ? tx_i  : rx_adc_i_i;
+   assign rx_q       = loopback ? tx_q  : rx_adc_q_i;
    
-   setting_reg #(`FR_USER_0) sr_lfsr_degree
-     ( 
.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),.out(degree)
 );
-
-   setting_reg #(`FR_USER_1) sr_mode
-     ( 
.clock(clk_i),.reset(1'b0),.strobe(s_strobe_i),.addr(saddr_i),.in(sdata_i),
-       .out({loopback}) );
-
-   lfsr_constants constants(.degree_i(degree),.mask_o(mask),.len_o(len));
-
    sounder_tx transmitter
-     ( 
.clk_i(clk_i),.rst_i(tx_rst_i),.ena_i(tx_enable_i),.strobe_i(tx_strobe_i),.mask_i(mask),
+     ( .clk_i(clk_i),.rst_i(reset_o),.ena_i(transmit),
+       .strobe_i(tx_strobe_i),.mask_i(mask),
        .tx_i_o(tx_i),.tx_q_o(tx_q) );
    
    sounder_rx receiver
-     ( .clk_i(clk_i),.rst_i(rx_rst_i),.ena_i(rx_enable_i),
+     ( .clk_i(clk_i),.rst_i(reset_o),.ena_i(receive),
        
.rx_strobe_i(rx_strobe_i),.tx_strobe_i(tx_strobe_i),.mask_i(mask),.len_i(len),
        
.rx_in_i_i(rx_i),.rx_in_q_i(rx_q),.rx_i_o(rx_imp_i_o),.rx_q_o(rx_imp_q_o),
        .rx_strobe_o(rx_strobe_o) );

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder_rx.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder_rx.v   
    2007-05-14 18:22:31 UTC (rev 5466)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/lib/sounder_rx.v   
    2007-05-14 22:53:02 UTC (rev 5467)
@@ -37,48 +37,27 @@
    output [15:0] rx_q_o;       // Q channel of impulse response
    output        rx_strobe_o;   // Impulse response value ready
 
-   // LFSR phase counter
-   reg [15:0] count;
-   wire cycle = (count == (len_i - 1));
-
+   // Just count up for debugging
+   reg [2:0]  decim;
+   reg [31:0] counter;
+   
    always @(posedge clk_i)
      if (rst_i | ~ena_i)
-       count <= 16'b0;
+       decim <= 0;
+     else if (decim == 7)
+       decim <= 0;
      else
-       if (cycle)
-        count <= 16'b0;
-       else
-        count <= count + 16'b1;
-           
-   // Retard LFSR phase once per cycle
-   wire lfsr_strobe = (tx_strobe_i & ~cycle);
+       decim <= decim + 1;
 
-   // Recreate local reference of transmitted PN code
-   wire pn;
-   lfsr reference
-     ( 
.clk_i(clk_i),.rst_i(rst_i),.ena_i(ena_i),.strobe_i(lfsr_strobe),.mask_i(mask_i),.pn_o(pn)
 );
-
-   wire [31:0] rx_i_ext, rx_q_ext;
-   sign_extend #(16,32) i_extend(rx_in_i_i, rx_i_ext);
-   sign_extend #(16,32) q_extend(rx_in_q_i, rx_q_ext);
-
-   reg [31:0] accum;
    always @(posedge clk_i)
      if (rst_i | ~ena_i)
-       accum <= 32'b0;
-     else
-       if (rx_strobe_i)
-        if (cycle)
-          accum <= 32'b0;
-        else
-          if (pn)
-            accum <= accum + rx_i_ext;
-          else
-            accum <= accum - rx_i_ext;
-   
-   assign rx_i_o = accum[31:16];
-   assign rx_q_o = accum[15:0];
-   assign rx_strobe_o = rx_strobe_i & cycle;
+       counter <= 32'b0;
+     else 
+       counter <= counter + 32'b1;
 
+   assign rx_i_o = counter[31:16];
+   assign rx_q_o = counter[15:0];
+   assign rx_strobe_o = (decim == 7);
+   
 endmodule // sounder_rx
 

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/Makefile.am
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/Makefile.am    
    2007-05-14 18:22:31 UTC (rev 5466)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/Makefile.am    
    2007-05-14 22:53:02 UTC (rev 5467)
@@ -21,23 +21,43 @@
 
 include $(top_srcdir)/Makefile.common
 
+datadir = $(prefix)/share/usrp
+
 EXTRA_DIST =                   \
        config.vh               \
        usrp_sounder.v          \
        usrp_sounder.csf        \
        usrp_sounder.esf        \
        usrp_sounder.psf        \
-       usrp_sounder.qpf
+       usrp_sounder.qpf        \
+       $(RBFS)
 
+RBFS =         usrp_sounder.rbf
+
+install-data-local:
+       @for file in $(RBFS); do \
+               echo "$(INSTALL_DATA) $(srcdir)/$$file 
$(DESTDIR)$(datadir)/rev2/$$file"; \
+               $(INSTALL_DATA) $(srcdir)/$$file 
$(DESTDIR)$(datadir)/rev2/$$file; \
+               echo "$(INSTALL_DATA) $(srcdir)/$$file 
$(DESTDIR)$(datadir)/rev4/$$file"; \
+               $(INSTALL_DATA) $(srcdir)/$$file 
$(DESTDIR)$(datadir)/rev4/$$file; \
+       done
+
+uninstall-local:
+       @for file in $(rbfs); do \
+               echo "$(RM) $(DESTDIR)$(datadir)/rev2/$$file"; \
+               $(RM) $(DESTDIR)$(datadir)/rev2/$$file; \
+               echo "$(RM) $(DESTDIR)$(datadir)/rev4/$$file"; \
+               $(RM) $(DESTDIR)$(datadir)/rev4/$$file; \
+       done
+
 MOSTLYCLEANFILES =     \
        db/*            \
        *.rpt           \
        *.summary       \
-       *.rbf           \
        *.qws           \
        *.smsg          \
        *.done          \
        *.pin           \
-       *.sof
+       *.sof           \
+       *~
 
-

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/usrp_sounder.v
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/usrp_sounder.v 
    2007-05-14 18:22:31 UTC (rev 5466)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/fpga/top/usrp_sounder.v 
    2007-05-14 22:53:02 UTC (rev 5467)
@@ -149,12 +149,16 @@
    
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Top level application
 
+   wire sounder_reset;
+   assign tx_dsp_reset = sounder_reset;
+   assign rx_dsp_reset = sounder_reset;
+   
    sounder sounder
      ( 
.clk_i(clk64),.saddr_i(serial_addr),.sdata_i(serial_data),.s_strobe_i(serial_strobe),
-       
.tx_rst_i(tx_dsp_reset),.tx_enable_i(enable_tx),.tx_strobe_i(tx_sample_strobe),
-       .tx_dac_i_o(tx_i),.tx_dac_q_o(tx_q),
-       
.rx_rst_i(rx_dsp_reset),.rx_enable_i(enable_rx),.rx_strobe_i(rx_sample_strobe),.rx_strobe_o(rx_strobe),
-       
.rx_adc_i_i(rx_adc0_i),.rx_adc_q_i(rx_adc0_q),.rx_imp_i_o(rx_buf_i),.rx_imp_q_o(rx_buf_q)
+       .tx_strobe_i(tx_sample_strobe),.tx_dac_i_o(tx_i),.tx_dac_q_o(tx_q),
+       
.rx_strobe_i(rx_sample_strobe),.rx_adc_i_i(rx_adc0_i),.rx_adc_q_i(rx_adc0_q),
+       .rx_strobe_o(rx_strobe),.rx_imp_i_o(rx_buf_i),.rx_imp_q_o(rx_buf_q),
+       .reset_o(sounder_reset)
        );
 
    
@@ -180,7 +184,7 @@
      ( .master_clk(clk64),.usbclk(usbclk),
        
.serial_addr(serial_addr),.serial_data(serial_data),.serial_strobe(serial_strobe),
        .tx_bus_reset(tx_bus_reset),.rx_bus_reset(rx_bus_reset),
-       .tx_dsp_reset(tx_dsp_reset),.rx_dsp_reset(rx_dsp_reset),
+       .tx_dsp_reset(),.rx_dsp_reset(), // These are no longer used, reset 
created in sounder module
        .enable_tx(enable_tx),.enable_rx(enable_rx),
        .interp_rate(),.decim_rate(),
        .tx_sample_strobe(tx_sample_strobe),.strobe_interp(),

Modified: 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/usrp_sounder.py
===================================================================
--- 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/usrp_sounder.py  
    2007-05-14 18:22:31 UTC (rev 5466)
+++ 
gnuradio/branches/developers/jcorgan/snd/gr-sounder/src/python/usrp_sounder.py  
    2007-05-14 22:53:02 UTC (rev 5467)
@@ -28,68 +28,138 @@
 
 n2s = eng_notation.num_to_str
 
-# Set to 0 for 32 MHz tx clock, 1 for 64 MHz tx clock
-# Must match config.vh in FPGA code
-TX_RATE_MAX = 0
-_tx_freq_divisor = 32e6*(TX_RATE_MAX+1)
+FR_MODE = usrp.FR_USER_0
+bmFR_MODE_RESET = 1 << 0       # bit 0: active high reset
+bmFR_MODE_TX    = 1 << 1       # bit 1: enable transmitter
+bmFR_MODE_RX    = 1 << 2       # bit 2: enable receiver
+bmFR_MODE_LP    = 1 << 3       # bit 3: enable digital loopback
 
-class sounder_tx:
-    def __init__(self, frequency, degree, loopback):
-       self.trans = usrp.sink_s(fpga_filename='usrp_sounder.rbf')
-        self.subdev_spec = usrp.pick_tx_subdevice(self.trans)
-        self.subdev = usrp.selected_subdev(self.trans, self.subdev_spec)
-        self.trans.tune(0, self.subdev, frequency)
-        self.set_degree(degree);
-        self.set_loopback(loopback)
-            
-    def turn_on(self):
-       self.trans.start()
+FR_DEGREE = usrp.FR_USER_1
+
+class sounder:
+    def __init__(self, options):
+       self._options = options
+       self._mode = 0
        
-    def turn_off(self):
-       self.trans.stop()
+       self._u = None
+       self._trans = None
+       self._rcvr = None
+       self._transmitting = False
+       self._receiving = False
+               
+       if options.transmit:
+           print "Creating sounder transmitter."
+           self._trans = usrp.sink_s(fpga_filename='usrp_sounder.rbf')
+            self._trans_subdev_spec = usrp.pick_tx_subdevice(self._trans)
+           self._trans_subdev = usrp.selected_subdev(self._trans, 
self._trans_subdev_spec)
+           self._trans.start()
+           self._u = self._trans
+               
+       if options.receive:
+           print "Creating sounder receiver."
+            self._fg = gr.flow_graph()
+           self._rcvr = usrp.source_s(fpga_filename='usrp_sounder.rbf')
+           self._rcvr_subdev_spec = usrp.pick_rx_subdevice(self._rcvr)
+           self._rcvr_subdev = usrp.selected_subdev(self._rcvr, 
self._rcvr_subdev_spec)
+           self._sink = gr.file_sink(gr.sizeof_short, "output.dat")
 
-    def set_degree(self, value):
-        return self.trans._write_fpga_reg(usrp.FR_USER_0, value);
+           if options.samples >= 0:
+               self._head = gr.head(gr.sizeof_short, 
2*options.samples*gr.sizeof_short)
+               self._fg.connect(self._rcvr, self._head, self._sink)
+           else:
+               self._fg.connect(self._rcvr, self._sink)
+           self._u = self._rcvr # either receiver or transmitter object will do
+       
+       self.set_reset(True)
+       self.set_freq(options.frequency)
+       self.set_degree(options.degree)
+       self.set_loopback(options.loopback)     
+       self.set_reset(False)
+               
+    def set_freq(self, frequency):
+       print "Setting center frequency to", n2s(frequency)
+       if self._rcvr:
+           self._rcvr.tune(0, self._rcvr_subdev, frequency)
+       
+       if self._trans:
+           self._trans.tune(0, self._trans_subdev, frequency)
 
+    def set_degree(self, degree):
+       print "Setting PN code degree to", degree
+        self._u._write_fpga_reg(FR_DEGREE, degree);
+           
+    def _write_mode(self):
+       print "Writing mode register with:", hex(self._mode)
+        self._u._write_fpga_reg(FR_MODE, self._mode)
+
+    def enable_tx(self, value):
+       if value:
+           print "Enabling transmitter."
+           self._mode |= bmFR_MODE_TX
+           self._transmitting = True
+       else:
+           print "Disabling transmitter."
+           self._mode &= ~bmFR_MODE_TX
+       self._write_mode()
+                   
+    def enable_rx(self, value):
+       if value:
+           print "Starting receiver flow graph."
+           self._mode |= bmFR_MODE_RX
+           self._write_mode()
+           self._fg.start()
+           self._receiving = True
+       else:
+           print "Stopping receiver flow graph."
+           self._fg.stop()
+           print "Waiting for threads..."
+           self._fg.wait()
+           print "Receiver flow graph stopped."
+           self._mode &= ~bmFR_MODE_RX
+           self._write_mode()
+           self._receiving = False
+               
     def set_loopback(self, value):
-        return self.trans._write_fpga_reg(usrp.FR_USER_1, value==True);
+       if value:
+           print "Enabling digital loopback."
+           self._mode |= bmFR_MODE_LP
+       else:
+           print "Disabling digital loopback."
+           self._mode &= ~bmFR_MODE_LP
+       self._write_mode()
 
-class sounder_rx:
-    def __init__(self, frequency, degree, samples):
-        self.fg = gr.flow_graph()
-       self.rcvr = usrp.source_s(fpga_filename='usrp_sounder.rbf', 
decim_rate=8)
-        self.subdev_spec = usrp.pick_rx_subdevice(self.rcvr)
-        self.subdev = usrp.selected_subdev(self.rcvr, self.subdev_spec)
-        self.rcvr.tune(0, self.subdev, frequency)
-        self.set_degree(degree);
-       self.sink = gr.file_sink(gr.sizeof_short, "output.dat")
-
-       if samples >= 0:
-           self.head = gr.head(gr.sizeof_short, 2*samples*gr.sizeof_short)
-           self.fg.connect(self.rcvr, self.head, self.sink)
+    def set_reset(self, value):
+       if value:
+           print "Asserting reset."
+           self._mode |= bmFR_MODE_RESET
        else:
-           self.fg.connect(self.rcvr, self.sink)
+           print "De-asserting reset."
+           self._mode &= ~bmFR_MODE_RESET
+       self._write_mode()
 
-    def receive(self):
-       self.fg.run()
-       
-    def set_degree(self, value):
-        return self.rcvr._write_fpga_reg(usrp.FR_USER_0, value);
-
+    def __del__(self):
+       if self._transmitting:
+           self.enable_tx(False)
+           
+       if self._receiving:
+           self.enable_rx(False)
+           
+# 
------------------------------------------------------------------------------
+    
 def main():
     parser = OptionParser(option_class=eng_option)
     parser.add_option("-f", "--frequency", type="eng_float", default=0.0,
                       help="set frequency to FREQ in Hz, default is %default", 
metavar="FREQ")
 
+    parser.add_option("-d", "--degree", type="int", default=16,
+                      help="set souding sequence degree (len=2^degree-1), 
default is %default")
+
     parser.add_option("-t", "--transmit", action="store_true", default=False,
                       help="enable sounding transmitter")
 
     parser.add_option("-r", "--receive", action="store_true", default=False,
                       help="enable sounding receiver")
 
-    parser.add_option("-d", "--degree", type="int", default=16,
-                      help="set souding sequence degree (len=2^degree-1), 
default is %default")
-
     parser.add_option("-n", "--samples", type="int", default=-1,
                       help="number of samples to capture on receive, default 
is infinite")
 
@@ -105,26 +175,15 @@
     print "Using PN code degree of", options.degree, "length", 
2**options.degree-1
     print "Sounding frequency range is", n2s(options.frequency-16e6), "to", 
n2s(options.frequency+16e6)
     
-    if (options.transmit):
-       print "Enabling sounder transmitter."
-       if (options.loopback):
-           print "Enabling digital loopback."
-        tx = sounder_tx(options.frequency, options.degree, options.loopback)
-       tx.turn_on()
-       
-    try:
-        if (options.receive):
-           print "Enabling sounder receiver."
-           rx = sounder_rx(options.frequency, options.degree, options.samples)
-           rx.receive()
-       else:
-           if (options.transmit):
-               while (True): time.sleep(1.0)
+    s = sounder(options)
 
-    except KeyboardInterrupt:
-       if (options.transmit):
-           tx.turn_off()
+    if options.transmit:
+       s.enable_tx(True)
 
+    if options.receive:
+       s.enable_rx(True)
+
+    raw_input("Press enter to exit.")
        
 if __name__ == "__main__":
     main()





reply via email to

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