[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r8880 - gnuradio/branches/developers/trondeau/dbs/gr-u
From: |
trondeau |
Subject: |
[Commit-gnuradio] r8880 - gnuradio/branches/developers/trondeau/dbs/gr-usrp/src |
Date: |
Sun, 13 Jul 2008 13:48:47 -0600 (MDT) |
Author: trondeau
Date: 2008-07-13 13:48:46 -0600 (Sun, 13 Jul 2008)
New Revision: 8880
Modified:
gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.cc
gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.h
gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.i
Log:
returning proper mux value.
Modified: gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.cc
===================================================================
--- gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.cc
2008-07-13 17:42:39 UTC (rev 8879)
+++ gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.cc
2008-07-13 19:48:46 UTC (rev 8880)
@@ -30,6 +30,28 @@
#include <assert.h>
+truth_table_element_t::truth_table_element_t(int side, unsigned int uses,
+ bool swap_iq, unsigned int
mux_val=0)
+ : d_side(side), d_uses(uses), d_swap_iq(swap_iq), d_mux_val(mux_val)
+{
+}
+
+bool
+truth_table_element_t::operator ==(const truth_table_element_t &in)
+{
+ return ((d_side == in.d_side) && (d_uses == in.d_uses)
+ && (d_swap_iq == in.d_swap_iq));
+}
+
+bool
+truth_table_element_t::operator !=(const truth_table_element_t &in)
+{
+ return !(*this == in);
+}
+
+
+
+
usrp1_base::usrp1_base(const std::string &name, gr_io_signature_sptr insig,
gr_io_signature_sptr outsig)
: gr_sync_block (name, insig, outsig)
{
@@ -88,7 +110,7 @@
int
-usrp1_base::determine_rx_mux_value(int subdev_spec_side, int subdev_spec)
+usrp1_base::determine_rx_mux_value(const std::vector<int> &subdev_spec)
{
/*
Determine appropriate Rx mux value as a function of the subdevice choosen
and the
@@ -115,21 +137,22 @@
(side, 1) says connect only the A/D's used by subdevice 1 to the DDC.
*/
- int side = subdev_spec_side; // side A = 0, side B = 1
-
+ int side = subdev_spec[0]; // side A = 0, side B = 1
+ int spec = subdev_spec[1];
+
if(!((side == 0 || side == 1))) {
throw "Invalid subdev_spec";
//raise ValueError, "Invalid subdev_spec: %r:" % (subdev_spec,)
}
- /*
- db_base *db = u->d_db[side]; // This is a tuple of length 1 or 2
containing the subdevice
+ db_base *db = d_db[side]; // This is a tuple of length 1 or 2 containing
the subdevice
// classes for the selected side.
unsigned int subdev0_uses, subdev1_uses, uses;
// compute bitmasks of used A/D's
+ printf("db[0].is_quadrature(): %d\n", db[0].is_quadrature());
if(db[0].is_quadrature()) {
subdev0_uses = 0x3; // uses A/D 0 and 1
}
@@ -144,10 +167,10 @@
subdev1_uses = 0x0; // uses no A/D (doesn't exist)
}
- if(subdev_spec == 0) {
+ if(spec == 0) {
uses = subdev0_uses;
}
- else if(subdev_spec == 1) {
+ else if(spec == 1) {
uses = subdev1_uses;
}
else {
@@ -161,29 +184,31 @@
}
bool swap_iq = db[0].i_and_q_swapped();
-
- struct elements_t truth_table_elements[8] = {
+
+ truth_table_element_t truth_table[8] = {
// (side, uses, swap_iq) : mux_val
- {0, 0x1, false, 0xf0f0f0f0},
- {0, 0x2, false, 0xf0f0f0f1},
- {0, 0x3, false, 0x00000010},
- {0, 0x3, true, 0x00000001},
- {1, 0x1, false, 0xf0f0f0f2},
- {1, 0x2, false, 0xf0f0f0f3},
- {1, 0x3, false, 0x00000032},
- {1, 0x3, true, 0x00000023}
+ truth_table_element_t(0, 0x1, false, 0xf0f0f0f0),
+ truth_table_element_t(0, 0x2, false, 0xf0f0f0f1),
+ truth_table_element_t(0, 0x3, false, 0x00000010),
+ truth_table_element_t(0, 0x3, true, 0x00000001),
+ truth_table_element_t(1, 0x1, false, 0xf0f0f0f2),
+ truth_table_element_t(1, 0x2, false, 0xf0f0f0f3),
+ truth_table_element_t(1, 0x3, false, 0x00000032),
+ truth_table_element_t(1, 0x3, true, 0x00000023)
};
- truth_table_t truth_table(truth_table_elements, 8);
- //return hexint(truth_table.search(side, uses, swap_iq));
- */
+ truth_table_element_t match(side, uses, swap_iq);
+
+ int i=0;
+ while((i < 8) && (truth_table[i] != match))
+ i++;
- return 0x00000010;
+ return hexint(truth_table[i].mux_val());
}
int
-usrp1_base::determine_tx_mux_value(int subdev_spec_side, int subdev_spec)
+usrp1_base::determine_tx_mux_value(const std::vector<int> &subdev_spec)
{
/*
Determine appropriate Tx mux value as a function of the subdevice choosen.
@@ -198,7 +223,7 @@
determine the value manually.
*/
- int side = subdev_spec_side; // side A = 0, side B = 1
+ int side = subdev_spec[0]; // side A = 0, side B = 1
if(!((side == 0) || (side == 1))) {
throw "Invalid subdev_spec";
//raise ValueError, "Invalid subdev_spec: %r:" % (subdev_spec,)
@@ -218,7 +243,7 @@
}
db_base *
-usrp1_base::selected_subdev(int subdev_spec_side, int subdev_spec)
+usrp1_base::selected_subdev(const std::vector<int> &subdev_spec)
{
/*
Return the user specified daughterboard subdevice.
@@ -229,7 +254,7 @@
*/
// FIXME: make sure we don't leave this in memory
- return &d_db[subdev_spec_side][subdev_spec];
+ return &d_db[subdev_spec[0]][subdev_spec[1]];
//return d_db;
}
@@ -370,4 +395,3 @@
throw "No suitable daughterboard found!";
//raise RuntimeError, "No suitable daughterboard found!";
}
-
Modified: gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.h
===================================================================
--- gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.h
2008-07-13 17:42:39 UTC (rev 8879)
+++ gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.h
2008-07-13 19:48:46 UTC (rev 8880)
@@ -40,9 +40,28 @@
#define FPGA_MODE_COUNTING usrp_standard_rx::FPGA_MODE_COUNTING
+class truth_table_element_t
+{
+public:
+ truth_table_element_t(int side, unsigned int uses, bool swap_iq, unsigned
int mux_val);
+ bool operator==(const truth_table_element_t &in);
+ bool operator!=(const truth_table_element_t &in);
+
+ unsigned int mux_val() { return d_mux_val; }
+
+private:
+ int d_side;
+ unsigned int d_uses;
+ bool d_swap_iq;
+ unsigned int d_mux_val;
+};
+
/*!
* \brief abstract interface to Universal Software Radio Peripheral (Rev 1)
*/
+
+typedef std::vector<int> subdev_spec_t;
+
class usrp1_base : public gr_sync_block
{
protected:
@@ -60,10 +79,9 @@
db_base * db(int side) { return d_db[side]; }
- int determine_tx_mux_value(int subdev_spec_side, int subdev_spec);
- int determine_rx_mux_value(int subdev_spec_side, int subdev_spec);
- //db_base_sptr selected_subdev(int subdev_spec_side, int subdev_spec);
- db_base * selected_subdev(int subdev_spec_side, int subdev_spec);
+ int determine_tx_mux_value(const std::vector<int> &subdev_spec);
+ int determine_rx_mux_value(const std::vector<int> &subdev_spec);
+ db_base * selected_subdev(const std::vector<int> &subdev_spec);
virtual bool start() {return false;}
virtual bool stop() {return false;}
@@ -380,8 +398,4 @@
struct subdev_spec pick_rx_subdevice(usrp1_base &u);
struct subdev_spec pick_subdev(usrp1_base &u, int candidates[], int
ncandidates);
-//bool tune(usrp1_base *u, int chan, db_base *subdev, float target_freq,
tune_result_sptr res);
-//bool tune(usrp1_base *u, int chan, db_base *subdev, float target_freq);
-
-
#endif /* INCLUDED_USRP1_BASE_H */
Modified: gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.i
===================================================================
--- gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.i
2008-07-13 17:42:39 UTC (rev 8879)
+++ gnuradio/branches/developers/trondeau/dbs/gr-usrp/src/usrp1_base.i
2008-07-13 19:48:46 UTC (rev 8880)
@@ -48,10 +48,9 @@
db_base * db(int side);
- int determine_tx_mux_value(int subdev_spec_side, int subdev_spec);
- int determine_rx_mux_value(int subdev_spec_side, int subdev_spec);
- //db_base_sptr selected_subdev(int subdev_spec_side, int subdev_spec);
- db_base * selected_subdev(int subdev_spec_side, int subdev_spec);
+ int determine_tx_mux_value(const std::vector<int> &subdev_spec);
+ int determine_rx_mux_value(const std::vector<int> &subdev_spec);
+ db_base * selected_subdev(const std::vector<int> &subdev_spec);
virtual bool start() {return false;}
virtual bool stop() {return false;}
@@ -109,3 +108,4 @@
int nddc();
int nduc();
};
+
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r8880 - gnuradio/branches/developers/trondeau/dbs/gr-usrp/src,
trondeau <=