[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r6687 - in gnuradio/branches/features/inband-usb/usrp/
From: |
gnychis |
Subject: |
[Commit-gnuradio] r6687 - in gnuradio/branches/features/inband-usb/usrp/host: apps-inband lib/inband |
Date: |
Wed, 24 Oct 2007 13:26:32 -0600 (MDT) |
Author: gnychis
Date: 2007-10-24 13:26:31 -0600 (Wed, 24 Oct 2007)
New Revision: 6687
Removed:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_cs.cc
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/test_usrp_inband.cc
Modified:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/Makefile.am
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_overrun.cc
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_registers.cc
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_rx.cc
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_timestamps.cc
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_tx.cc
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_underrun.cc
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/Makefile.am
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_inband_usb_packet.cc
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_inband_usb_packet.h
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_server.cc
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_server.h
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_usb_interface.cc
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_usb_interface.h
Log:
Merging from -r6658:6686 developers/gnychis/inband
Modified:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/Makefile.am
===================================================================
--- gnuradio/branches/features/inband-usb/usrp/host/apps-inband/Makefile.am
2007-10-24 19:24:59 UTC (rev 6686)
+++ gnuradio/branches/features/inband-usb/usrp/host/apps-inband/Makefile.am
2007-10-24 19:26:31 UTC (rev 6687)
@@ -29,7 +29,6 @@
bin_PROGRAMS =
noinst_PROGRAMS = \
- test_usrp_inband_cs \
test_usrp_inband_ping \
test_usrp_inband_registers \
test_usrp_inband_rx \
@@ -60,9 +59,6 @@
$(COMPILE_MBH) $(srcdir)/gmac.mbh gmac_mbh.cc
-test_usrp_inband_cs_SOURCES = test_usrp_inband_cs.cc ui_sincos.c
-test_usrp_inband_cs_LDADD = $(USRP_LA) $(USRP_INBAND_LA)
-
test_usrp_inband_ping_SOURCES = test_usrp_inband_ping.cc
test_usrp_inband_ping_LDADD = $(USRP_LA) $(USRP_INBAND_LA)
Deleted:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_cs.cc
Modified:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_overrun.cc
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_overrun.cc
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_overrun.cc
2007-10-24 19:26:31 UTC (rev 6687)
@@ -104,7 +104,7 @@
// Specify the RBF to use
pmt_dict_set(usrp_dict,
pmt_intern("rbf"),
- pmt_intern("nanocell9.rbf"));
+ pmt_intern("std_inband.rbf"));
pmt_dict_set(usrp_dict,
pmt_intern("decim-rx"),
Modified:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_registers.cc
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_registers.cc
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_registers.cc
2007-10-24 19:26:31 UTC (rev 6687)
@@ -119,7 +119,7 @@
// Specify the RBF to use
pmt_dict_set(usrp_dict,
pmt_intern("rbf"),
- pmt_intern("boe2.rbf"));
+ pmt_intern("std_inband.rbf"));
// Set TX and RX interpolations
pmt_dict_set(usrp_dict,
Modified:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_rx.cc
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_rx.cc
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_rx.cc
2007-10-24 19:26:31 UTC (rev 6687)
@@ -108,7 +108,7 @@
// Specify the RBF to use
pmt_dict_set(usrp_dict,
pmt_intern("rbf"),
- pmt_intern("usrp_inband_profiling.rbf"));
+ pmt_intern("std_inband.rbf"));
pmt_dict_set(usrp_dict,
pmt_intern("decim-rx"),
Modified:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_timestamps.cc
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_timestamps.cc
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_timestamps.cc
2007-10-24 19:26:31 UTC (rev 6687)
@@ -149,7 +149,7 @@
// Specify the RBF to use
pmt_dict_set(usrp_dict,
pmt_intern("rbf"),
- pmt_intern("tmac5.rbf"));
+ pmt_intern("std_inband.rbf"));
define_component("server", "usrp_server", usrp_dict);
Modified:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_tx.cc
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_tx.cc
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_tx.cc
2007-10-24 19:26:31 UTC (rev 6687)
@@ -119,7 +119,7 @@
// Specify the RBF to use
pmt_dict_set(usrp_dict,
pmt_intern("rbf"),
- pmt_intern("usrp_inband_profiling.rbf"));
+ pmt_intern("std_inband.rbf"));
// Set TX and RX interpolations
pmt_dict_set(usrp_dict,
Modified:
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_underrun.cc
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_underrun.cc
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/apps-inband/test_usrp_inband_underrun.cc
2007-10-24 19:26:31 UTC (rev 6687)
@@ -145,7 +145,7 @@
// Specify the RBF to use
pmt_dict_set(usrp_dict,
pmt_intern("rbf"),
- pmt_intern("usrp_inband_profiling.rbf"));
+ pmt_intern("std_inband.rbf"));
// Set TX and RX interpolations
pmt_dict_set(usrp_dict,
Modified: gnuradio/branches/features/inband-usb/usrp/host/lib/inband/Makefile.am
===================================================================
--- gnuradio/branches/features/inband-usb/usrp/host/lib/inband/Makefile.am
2007-10-24 19:24:59 UTC (rev 6686)
+++ gnuradio/branches/features/inband-usb/usrp/host/lib/inband/Makefile.am
2007-10-24 19:26:31 UTC (rev 6687)
@@ -111,15 +111,10 @@
# ------------------------------------------------------------------------
noinst_PROGRAMS = \
- test_inband \
- test_usrp_inband
+ test_inband
test_inband_SOURCES = test_inband.cc
test_inband_LDADD = libusrp_inband-qa.la
-test_usrp_inband_SOURCES = test_usrp_inband.cc
-test_usrp_inband_LDADD = libusrp_inband-qa.la
-
-
MOSTLYCLEANFILES = \
$(BUILT_SOURCES) *~ *.pyc
Deleted:
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/test_usrp_inband.cc
Modified:
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_inband_usb_packet.cc
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_inband_usb_packet.cc
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_inband_usb_packet.cc
2007-10-24 19:26:31 UTC (rev 6687)
@@ -77,13 +77,8 @@
*payload = host_to_usrp_u32(ping);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + CS_PING_LEN;
+ incr_header_len(CS_FIXED_LEN + CS_PING_LEN);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -110,13 +105,8 @@
*payload = host_to_usrp_u32(ping);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + CS_PING_LEN;
+ incr_header_len(CS_FIXED_LEN + CS_PING_LEN);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -148,13 +138,8 @@
*payload = host_to_usrp_u32((uint32_t) val);
// Rebuild the header to update the payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + CS_WRITEREG_LEN;
+ incr_header_len(CS_FIXED_LEN + CS_WRITEREG_LEN);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -189,13 +174,8 @@
*payload = host_to_usrp_u32((uint32_t) mask);
// Rebuild the header to update the payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + CS_WRITEREGMASKED_LEN;
+ incr_header_len(CS_FIXED_LEN + CS_WRITEREGMASKED_LEN);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -221,13 +201,8 @@
*payload = host_to_usrp_u32(read_reg);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + CS_READREG_LEN;
+ incr_header_len(CS_FIXED_LEN + CS_READREG_LEN);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -257,13 +232,8 @@
*payload = host_to_usrp_u32((uint32_t) reg_val);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + CS_READREGREPLY_LEN;
+ incr_header_len(CS_FIXED_LEN + CS_READREGREPLY_LEN);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -288,13 +258,8 @@
*payload = host_to_usrp_u32(delay);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + CS_DELAY_LEN;
+ incr_header_len(CS_FIXED_LEN + CS_DELAY_LEN);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -327,13 +292,8 @@
memcpy(payload, i2c_data, data_len);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + i2c_len;
+ incr_header_len(CS_FIXED_LEN + i2c_len);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -366,13 +326,8 @@
*payload = host_to_usrp_u32(word1);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + CS_I2CREAD_LEN;
+ incr_header_len(CS_FIXED_LEN + CS_I2CREAD_LEN);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -405,13 +360,8 @@
memcpy(payload, i2c_data, i2c_data_len);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + i2c_len;
+ incr_header_len(CS_FIXED_LEN + i2c_len);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -453,13 +403,8 @@
memcpy(payload, spi_data, spi_data_len);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + spi_len;
+ incr_header_len(CS_FIXED_LEN + spi_len);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -507,13 +452,8 @@
*payload = host_to_usrp_u32(word);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + CS_SPIREAD_LEN;
+ incr_header_len(CS_FIXED_LEN + CS_SPIREAD_LEN);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
@@ -545,13 +485,8 @@
memcpy(payload, spi_data, spi_data_len);
// Update payload length
- int h_flags = flags();
- int h_chan = chan();
- int h_tag = tag();
- int h_payload_len = payload_len() + CS_FIXED_LEN + spi_len;
+ incr_header_len(CS_FIXED_LEN + spi_len);
- set_header(h_flags, h_chan, h_tag, h_payload_len);
-
return true;
}
Modified:
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_inband_usb_packet.h
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_inband_usb_packet.h
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_inband_usb_packet.h
2007-10-24 19:26:31 UTC (rev 6687)
@@ -150,6 +150,10 @@
| ((payload_len & PAYLOAD_LEN_MASK) <<
PAYLOAD_LEN_SHIFT));
d_word0 = host_to_usrp_u32(word0);
}
+
+ void incr_header_len(int val) {
+ set_header(flags(), chan(), tag(), payload_len() + val);
+ }
uint32_t timestamp() const {
return usrp_to_host_u32(d_timestamp);
Modified:
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_server.cc
===================================================================
--- gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_server.cc
2007-10-24 19:24:59 UTC (rev 6686)
+++ gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_server.cc
2007-10-24 19:26:31 UTC (rev 6687)
@@ -28,6 +28,8 @@
#include <mb_class_registry.h>
#include <vector>
#include <usrp_usb_interface.h>
+#include <fpga_regs_common.h>
+#include <fpga_regs_standard.h>
#include <symbols_usrp_server_cs.h>
#include <symbols_usrp_channel.h>
@@ -39,7 +41,7 @@
typedef usrp_inband_usb_packet transport_pkt; // makes conversion to gigabit
easy
-const static bool verbose = false;
+const static bool verbose = true;
static std::string
str(long x)
@@ -51,14 +53,43 @@
usrp_server::usrp_server(mb_runtime *rt, const std::string &instance_name,
pmt_t user_arg)
: mb_mblock(rt, instance_name, user_arg),
+ d_fpga_debug(false),
+ d_interp_tx(128), // these should match the lower level defaults (rx
also)
+ d_decim_rx(128),
d_fake_rx(false)
{
if(verbose)
std::cout << "[USRP_SERVER] Initializing...\n";
// Dictionary for arguments to all of the components
- pmt_t usrp_dict = user_arg;
+ d_usrp_dict = user_arg;
+ if (pmt_is_dict(d_usrp_dict)) {
+
+ if(pmt_t fpga_debug = pmt_dict_ref(d_usrp_dict,
+ pmt_intern("fpga-debug"),
+ PMT_NIL)) {
+ if(pmt_eqv(fpga_debug, PMT_T))
+ d_fpga_debug=true;
+ }
+
+ // Read the TX interpolations
+ if(pmt_t interp_tx = pmt_dict_ref(d_usrp_dict,
+ pmt_intern("interp-tx"),
+ PMT_NIL)) {
+ if(!pmt_eqv(interp_tx, PMT_NIL))
+ d_interp_tx = pmt_to_long(interp_tx);
+ }
+
+ // Read the RX decimation rate
+ if(pmt_t decim_rx = pmt_dict_ref(d_usrp_dict,
+ pmt_intern("decim-rx"),
+ PMT_NIL)) {
+ if(!pmt_eqv(decim_rx, PMT_NIL))
+ d_decim_rx = pmt_to_long(decim_rx);
+ }
+ }
+
// control & status port
d_cs = define_port("cs", "usrp-server-cs", true, mb_port::EXTERNAL);
d_cs_usrp = define_port("cs_usrp", "usrp-interface-cs", false,
mb_port::INTERNAL);
@@ -80,7 +111,7 @@
mb_port::EXTERNAL));
}
- define_component("usrp", "usrp_usb_interface", usrp_dict);
+ define_component("usrp", "usrp_usb_interface", d_usrp_dict);
connect("self", "cs_usrp", "usrp", "cs");
d_defer=false;
@@ -176,6 +207,8 @@
pmt_t status = pmt_nth(1, data);
d_cs->send(s_response_open, pmt_list2(invocation_handle, status));
+ initialize_registers();
+
if(pmt_eqv(status,PMT_T)) {
d_opened = true;
d_defer = false;
@@ -1387,4 +1420,205 @@
return -1;
}
+// Need to initialize several registers according to the specified settings of
+// the user
+//
+// FIXME: I believe this is specific to the basic daughterboards, this would
+// need to change when daughterboard support is added
+void
+usrp_server::initialize_registers()
+{
+ // We use handle_cmd_to_control_channel() to create the register writes using
+ // PMT_NIL as the response port to tell usrp_server not to pass the response
+ // up to any application.
+ if(verbose)
+ std::cout << "[USRP_SERVER] Initializing registers...\n";
+
+ // RX mode to normal (0)
+ set_register(FR_MODE, 0);
+
+ // FPGA debugging?
+ if(d_fpga_debug) {
+ set_register(FR_DEBUG_EN, 1);
+ // FIXME: need to figure out exact register writes to control daughterboard
+ // pins that need to be written to
+ } else {
+ set_register(FR_DEBUG_EN, 0);
+ }
+
+ // Set the transmit sample rate divisor, which is 4-1
+ set_register(FR_TX_SAMPLE_RATE_DIV, 3);
+
+ // Dboard IO buffer and register settings
+ set_register(FR_OE_0, (0xffff << 16) | 0x0000);
+ set_register(FR_IO_0, (0xffff << 16) | 0x0000);
+ set_register(FR_OE_1, (0xffff << 16) | 0x0000);
+ set_register(FR_IO_1, (0xffff << 16) | 0x0000);
+ set_register(FR_OE_2, (0xffff << 16) | 0x0000);
+ set_register(FR_IO_2, (0xffff << 16) | 0x0000);
+ set_register(FR_OE_3, (0xffff << 16) | 0x0000);
+ set_register(FR_IO_3, (0xffff << 16) | 0x0000);
+
+ // zero Tx side Auto Transmit/Receive regs
+ set_register(FR_ATR_MASK_0, 0);
+ set_register(FR_ATR_TXVAL_0, 0);
+ set_register(FR_ATR_RXVAL_0, 0);
+ set_register(FR_ATR_MASK_1, 0);
+ set_register(FR_ATR_TXVAL_1, 0);
+ set_register(FR_ATR_RXVAL_1, 0);
+ set_register(FR_ATR_MASK_2, 0);
+ set_register(FR_ATR_TXVAL_2, 0);
+ set_register(FR_ATR_RXVAL_2, 0);
+ set_register(FR_ATR_MASK_3, 0);
+ set_register(FR_ATR_TXVAL_3, 0);
+ set_register(FR_ATR_RXVAL_3, 0);
+
+ // Configure TX mux, this is a hacked value
+ set_register(FR_TX_MUX, 0x00000081);
+
+ // Set the interpolation rate, which is the rate divided by 4, minus 1
+ set_register(FR_INTERP_RATE, (d_interp_tx/4)-1);
+
+ // Apparently this register changes again
+ set_register(FR_TX_MUX, 0x00000981);
+
+ // Set the receive sample rate divisor, which is 2-1
+ set_register(FR_RX_SAMPLE_RATE_DIV, 1);
+
+ // DC offset
+ set_register(FR_DC_OFFSET_CL_EN, 0x0000000f);
+
+ // Reset the DC correction offsets
+ set_register(FR_ADC_OFFSET_0, 0);
+ set_register(FR_ADC_OFFSET_1, 0);
+
+ // Some hard-coded RX configuration
+ set_register(FR_RX_FORMAT, 0x00000300);
+ set_register(FR_RX_MUX, 1);
+
+ // RX decimation rate is divided by two, then subtract 1
+ set_register(FR_DECIM_RATE, (d_decim_rx/2)-1);
+
+ // More hard coding
+ set_register(FR_RX_MUX, 0x000e4e41);
+
+ // Resetting RX registers
+ set_register(FR_RX_PHASE_0, 0);
+ set_register(FR_RX_PHASE_1, 0);
+ set_register(FR_RX_PHASE_2, 0);
+ set_register(FR_RX_PHASE_3, 0);
+ set_register(FR_RX_FREQ_0, 0x28000000);
+ set_register(FR_RX_FREQ_1, 0);
+ set_register(FR_RX_FREQ_2, 0);
+ set_register(FR_RX_FREQ_3, 0);
+
+ // DEBUGGING
+ check_register_initialization();
+}
+
+// FIXME: used for debugging to determine if all the registers are actually
+// being set correctly
+void
+usrp_server::check_register_initialization()
+{
+ // RX mode to normal (0)
+ read_register(FR_MODE);
+
+ // FPGA debugging?
+ if(d_fpga_debug) {
+ read_register(FR_DEBUG_EN);
+ // FIXME: need to figure out exact register writes to control daughterboard
+ // pins that need to be written to
+ } else {
+ read_register(FR_DEBUG_EN);
+ }
+
+ // Set the transmit sample rate divisor, which is 4-1
+ read_register(FR_TX_SAMPLE_RATE_DIV);
+
+ // Dboard IO buffer and register settings
+ read_register(FR_OE_0);
+ read_register(FR_IO_0);
+ read_register(FR_OE_1);
+ read_register(FR_IO_1);
+ read_register(FR_OE_2);
+ read_register(FR_IO_2);
+ read_register(FR_OE_3);
+ read_register(FR_IO_3);
+
+ // zero Tx side Auto Transmit/Receive regs
+ read_register(FR_ATR_MASK_0);
+ read_register(FR_ATR_TXVAL_0);
+ read_register(FR_ATR_RXVAL_0);
+ read_register(FR_ATR_MASK_1);
+ read_register(FR_ATR_TXVAL_1);
+ read_register(FR_ATR_RXVAL_1);
+ read_register(FR_ATR_MASK_2);
+ read_register(FR_ATR_TXVAL_2);
+ read_register(FR_ATR_RXVAL_2);
+ read_register(FR_ATR_MASK_3);
+ read_register(FR_ATR_TXVAL_3);
+ read_register(FR_ATR_RXVAL_3);
+
+ // Configure TX mux, this is a hacked value
+ read_register(FR_TX_MUX);
+
+ // Set the interpolation rate, which is the rate divided by 4, minus 1
+ read_register(FR_INTERP_RATE);
+
+ // Apparently this register changes again
+ read_register(FR_TX_MUX);
+
+ // Set the receive sample rate divisor, which is 2-1
+ read_register(FR_RX_SAMPLE_RATE_DIV);
+
+ // DC offset
+ read_register(FR_DC_OFFSET_CL_EN);
+
+ // Reset the DC correction offsets
+ read_register(FR_ADC_OFFSET_0);
+ read_register(FR_ADC_OFFSET_1);
+
+ // Some hard-coded RX configuration
+ read_register(FR_RX_FORMAT);
+ read_register(FR_RX_MUX);
+
+ // RX decimation rate is divided by two, then subtract 1
+ read_register(FR_DECIM_RATE);
+
+ // More hard coding
+ read_register(FR_RX_MUX);
+
+ // Resetting RX registers
+ read_register(FR_RX_PHASE_0);
+ read_register(FR_RX_PHASE_1);
+ read_register(FR_RX_PHASE_2);
+ read_register(FR_RX_PHASE_3);
+ read_register(FR_RX_FREQ_0);
+ read_register(FR_RX_FREQ_1);
+ read_register(FR_RX_FREQ_2);
+ read_register(FR_RX_FREQ_3);
+}
+
+// THIS IS ONLY FOR INTERNAL USRP_SERVER USAGE
+void
+usrp_server::set_register(long reg, long val)
+{
+ handle_cmd_to_control_channel(d_tx[0], d_chaninfo_tx,
+ pmt_list2(PMT_NIL, // empty invoc handle
+ pmt_list1(pmt_list2(s_op_write_reg,
+ pmt_list2(pmt_from_long(reg),
+ pmt_from_long(val))))));
+}
+
+void
+usrp_server::read_register(long reg)
+{
+ handle_cmd_to_control_channel(d_tx[0], d_chaninfo_tx,
+ pmt_list2(PMT_NIL, // empty invoc handle
+ pmt_list1(pmt_list2(s_op_read_reg,
+ pmt_list2(pmt_from_long(0),
+ pmt_from_long(reg))))));
+}
+
REGISTER_MBLOCK_CLASS(usrp_server);
Modified:
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_server.h
===================================================================
--- gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_server.h
2007-10-24 19:24:59 UTC (rev 6686)
+++ gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_server.h
2007-10-24 19:26:31 UTC (rev 6687)
@@ -51,6 +51,13 @@
long d_ntx_chan;
long d_nrx_chan;
+ pmt_t d_usrp_dict;
+
+ bool d_fpga_debug;
+
+ long d_interp_tx;
+ long d_decim_rx;
+
// Keep track of the request IDs
struct rid_info {
pmt_t owner;
@@ -114,6 +121,10 @@
bool check_valid(mb_port_sptr port, long channel, std::vector<struct
channel_info> &chan_info, pmt_t signal_info);
void parse_control_pkt(pmt_t invocation_handle, transport_pkt *pkt);
long next_rid();
+ void initialize_registers();
+ void set_register(long reg, long val);
+ void read_register(long reg);
+ void check_register_initialization();
};
#endif /* INCLUDED_USRP_SERVER_H */
Modified:
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_usb_interface.cc
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_usb_interface.cc
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_usb_interface.cc
2007-10-24 19:26:31 UTC (rev 6687)
@@ -51,7 +51,6 @@
// need to take number of TX and RX channels as parameter
usrp_usb_interface::usrp_usb_interface(mb_runtime *rt, const std::string
&instance_name, pmt_t user_arg)
: mb_mblock(rt, instance_name, user_arg),
- d_fpga_debug(false),
d_fake_usrp(false),
d_rx_reading(false),
d_interp_tx(128),
@@ -147,8 +146,6 @@
d_utx = NULL;
d_urx = NULL;
- d_fpga_debug=true; // WARNING: DO NOT ENABLE WITH D'BOARDS OTHER THAN
BASIC TX/RX
-
}
usrp_usb_interface::~usrp_usb_interface()
@@ -330,19 +327,6 @@
return;
}
- if(d_fpga_debug) {
- d_utx->_write_fpga_reg(FR_DEBUG_EN,0xf);
- d_utx->_write_oe(0, 0xffff, 0xffff);
- d_urx->_write_oe(0, 0xffff, 0xffff);
- d_utx->_write_oe(1, 0xffff, 0xffff);
- d_urx->_write_oe(1, 0xffff, 0xffff);
-
-// while(1){
-// for(int i=0; i<0xffff; i++)
-// d_urx->write_io(0, i, 0xffff);
-// }
- }
-
if (verbose)
std::cout << "[USRP_USB_INTERFACE] Setup RX channel\n";
Modified:
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_usb_interface.h
===================================================================
---
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_usb_interface.h
2007-10-24 19:24:59 UTC (rev 6686)
+++
gnuradio/branches/features/inband-usb/usrp/host/lib/inband/usrp_usb_interface.h
2007-10-24 19:26:31 UTC (rev 6687)
@@ -42,8 +42,6 @@
long d_ntx_chan;
long d_nrx_chan;
- long d_fpga_debug;
-
bool d_fake_usrp;
bool d_rx_reading;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r6687 - in gnuradio/branches/features/inband-usb/usrp/host: apps-inband lib/inband,
gnychis <=