3 // Copyright 2008 Free Software Foundation, Inc.
5 // This file is part of GNU Radio
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 asversion 3, or (at your option)
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.
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.
23 #include <db_boards.h>
24 #include <usrp_dbid.h>
27 #include <db_dbs_rx.h>
28 #include <db_flexrf.h>
29 #include <db_flexrf_mimo.h>
30 #include <db_xcvr2450.h>
32 #include <db_dtt754.h>
33 #include <db_dtt768.h>
36 std::vector<db_base_sptr>
37 instantiate_dbs(int dbid, usrp_basic_sptr usrp, int which_side)
39 std::vector<db_base_sptr> db;
43 case(USRP_DBID_BASIC_TX):
44 db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
47 case(USRP_DBID_BASIC_RX):
48 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
49 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));
50 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 2)));
53 case(USRP_DBID_LF_TX):
54 db.push_back(db_base_sptr(new db_lf_tx(usrp, which_side)));
57 case(USRP_DBID_LF_RX):
58 db.push_back(db_base_sptr(new db_lf_rx(usrp, which_side, 0)));
59 db.push_back(db_base_sptr(new db_lf_rx(usrp, which_side, 1)));
60 db.push_back(db_base_sptr(new db_lf_rx(usrp, which_side, 2)));
63 case(USRP_DBID_DBS_RX):
64 db.push_back(db_base_sptr(new db_dbs_rx(usrp, which_side)));
67 case(USRP_DBID_TV_RX):
68 db.push_back(db_base_sptr(new db_tv_rx(usrp, which_side, 43.75e6, 5.75e6)));
70 case(USRP_DBID_TV_RX_REV_2):
71 db.push_back(db_base_sptr(new db_tv_rx(usrp, which_side, 44e6, 20e6)));
73 case(USRP_DBID_TV_RX_REV_3):
74 db.push_back(db_base_sptr(new db_tv_rx(usrp, which_side, 44e6, 20e6)));
77 case(USRP_DBID_FLEX_2400_TX):
78 db.push_back(db_base_sptr(new db_flexrf_2400_tx(usrp, which_side)));
80 case(USRP_DBID_FLEX_2400_RX):
81 db.push_back(db_base_sptr(new db_flexrf_2400_rx(usrp, which_side)));
83 case(USRP_DBID_FLEX_1200_TX):
84 db.push_back(db_base_sptr(new db_flexrf_1200_tx(usrp, which_side)));
86 case(USRP_DBID_FLEX_1200_RX):
87 db.push_back(db_base_sptr(new db_flexrf_1200_rx(usrp, which_side)));
89 case(USRP_DBID_FLEX_1800_TX):
90 db.push_back(db_base_sptr(new db_flexrf_1800_tx(usrp, which_side)));
92 case(USRP_DBID_FLEX_1800_RX):
93 db.push_back(db_base_sptr(new db_flexrf_1800_rx(usrp, which_side)));
95 case(USRP_DBID_FLEX_900_TX):
96 db.push_back(db_base_sptr(new db_flexrf_900_tx(usrp, which_side)));
98 case(USRP_DBID_FLEX_900_RX):
99 db.push_back(db_base_sptr(new db_flexrf_900_rx(usrp, which_side)));
101 case(USRP_DBID_FLEX_400_TX):
102 db.push_back(db_base_sptr(new db_flexrf_400_tx(usrp, which_side)));
104 case(USRP_DBID_FLEX_400_RX):
105 db.push_back(db_base_sptr(new db_flexrf_400_rx(usrp, which_side)));
107 case(USRP_DBID_FLEX_2400_TX_MIMO_A):
108 db.push_back(db_base_sptr(new db_flexrf_2400_tx_mimo_a(usrp, which_side)));
110 case(USRP_DBID_FLEX_2400_RX_MIMO_A):
111 db.push_back(db_base_sptr(new db_flexrf_2400_rx_mimo_a(usrp, which_side)));
113 case(USRP_DBID_FLEX_1800_TX_MIMO_A):
114 db.push_back(db_base_sptr(new db_flexrf_1800_tx_mimo_a(usrp, which_side)));
116 case(USRP_DBID_FLEX_1800_RX_MIMO_A):
117 db.push_back(db_base_sptr(new db_flexrf_1800_rx_mimo_a(usrp, which_side)));
119 case(USRP_DBID_FLEX_1200_TX_MIMO_A):
120 db.push_back(db_base_sptr(new db_flexrf_1200_tx_mimo_a(usrp, which_side)));
122 case(USRP_DBID_FLEX_1200_RX_MIMO_A):
123 db.push_back(db_base_sptr(new db_flexrf_1200_rx_mimo_a(usrp, which_side)));
125 case(USRP_DBID_FLEX_900_TX_MIMO_A):
126 db.push_back(db_base_sptr(new db_flexrf_900_tx_mimo_a(usrp, which_side)));
128 case(USRP_DBID_FLEX_900_RX_MIMO_A):
129 db.push_back(db_base_sptr(new db_flexrf_900_rx_mimo_a(usrp, which_side)));
131 case(USRP_DBID_FLEX_400_TX_MIMO_A):
132 db.push_back(db_base_sptr(new db_flexrf_400_tx_mimo_a(usrp, which_side)));
134 case(USRP_DBID_FLEX_400_RX_MIMO_A):
135 db.push_back(db_base_sptr(new db_flexrf_400_rx_mimo_a(usrp, which_side)));
137 case(USRP_DBID_FLEX_2400_TX_MIMO_B):
138 db.push_back(db_base_sptr(new db_flexrf_2400_tx_mimo_b(usrp, which_side)));
140 case(USRP_DBID_FLEX_2400_RX_MIMO_B):
141 db.push_back(db_base_sptr(new db_flexrf_2400_rx_mimo_b(usrp, which_side)));
143 case(USRP_DBID_FLEX_1800_TX_MIMO_B):
144 db.push_back(db_base_sptr(new db_flexrf_1800_tx_mimo_b(usrp, which_side)));
146 case(USRP_DBID_FLEX_1800_RX_MIMO_B):
147 db.push_back(db_base_sptr(new db_flexrf_1800_rx_mimo_b(usrp, which_side)));
149 case(USRP_DBID_FLEX_1200_TX_MIMO_B):
150 db.push_back(db_base_sptr(new db_flexrf_1200_tx_mimo_b(usrp, which_side)));
152 case(USRP_DBID_FLEX_1200_RX_MIMO_B):
153 db.push_back(db_base_sptr(new db_flexrf_1200_rx_mimo_b(usrp, which_side)));
155 case(USRP_DBID_FLEX_900_TX_MIMO_B):
156 db.push_back(db_base_sptr(new db_flexrf_900_tx_mimo_b(usrp, which_side)));
158 case(USRP_DBID_FLEX_900_RX_MIMO_B):
159 db.push_back(db_base_sptr(new db_flexrf_900_rx_mimo_b(usrp, which_side)));
161 case(USRP_DBID_FLEX_400_TX_MIMO_B):
162 db.push_back(db_base_sptr(new db_flexrf_400_tx_mimo_b(usrp, which_side)));
164 case(USRP_DBID_FLEX_400_RX_MIMO_B):
165 db.push_back(db_base_sptr(new db_flexrf_400_rx_mimo_b(usrp, which_side)));
168 case(USRP_DBID_XCVR2450_TX):
169 db.push_back(db_base_sptr(new db_xcvr2450_tx(usrp, which_side)));
171 case(USRP_DBID_XCVR2450_RX):
172 db.push_back(db_base_sptr(new db_xcvr2450_rx(usrp, which_side)));
175 #if 0 // FIXME wbx doesn't compile
176 case(USRP_DBID_WBX_LO_TX):
177 db.push_back(db_base_sptr(new db_wbx_lo_tx(usrp, which_side)));
179 case(USRP_DBID_WBX_LO_RX):
180 db.push_back(db_base_sptr(new db_wbx_lo_rx(usrp, which_side)));
184 case(USRP_DBID_DTT754):
185 db.push_back(db_base_sptr(new db_dtt754(usrp, which_side)));
187 case(USRP_DBID_DTT768):
188 db.push_back(db_base_sptr(new db_dtt768(usrp, which_side)));
192 if (boost::dynamic_pointer_cast<usrp_basic_tx>(usrp)){
193 db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
196 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
197 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));
203 if (boost::dynamic_pointer_cast<usrp_basic_tx>(usrp)){
204 fprintf(stderr, "\n\aWarning: Treating daughterboard with invalid EEPROM contents as if it were a \"Basic Tx.\"\n");
205 fprintf(stderr, "Warning: This is almost certainly wrong... Use appropriate burn-*-eeprom utility.\n\n");
206 db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
209 fprintf(stderr, "\n\aWarning: Treating daughterboard with invalid EEPROM contents as if it were a \"Basic Rx.\"\n");
210 fprintf(stderr, "Warning: This is almost certainly wrong... Use appropriate burn-*-eeprom utility.\n\n");
211 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
212 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));