3 // Copyright 2008,2009 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.
27 #include <db_boards.h>
28 #include <usrp/usrp_dbid.h>
29 #include <usrp/db_basic.h>
30 #include <usrp/db_tv_rx.h>
31 #include <usrp/db_tv_rx_mimo.h>
32 #include <usrp/db_dbs_rx.h>
33 #include <usrp/db_flexrf.h>
34 #include <usrp/db_flexrf_mimo.h>
35 #include <usrp/db_wbxng.h>
36 #include <usrp/db_xcvr2450.h>
37 #include <usrp/db_dtt754.h>
38 #include <usrp/db_dtt768.h>
41 std::vector<db_base_sptr>
42 instantiate_dbs(int dbid, usrp_basic_sptr usrp, int which_side)
44 std::vector<db_base_sptr> db;
48 case(USRP_DBID_BASIC_TX):
49 db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
52 case(USRP_DBID_BASIC_RX):
53 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
54 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));
55 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 2)));
58 case(USRP_DBID_LF_TX):
59 db.push_back(db_base_sptr(new db_lf_tx(usrp, which_side)));
62 case(USRP_DBID_LF_RX):
63 db.push_back(db_base_sptr(new db_lf_rx(usrp, which_side, 0)));
64 db.push_back(db_base_sptr(new db_lf_rx(usrp, which_side, 1)));
65 db.push_back(db_base_sptr(new db_lf_rx(usrp, which_side, 2)));
68 case(USRP_DBID_DBS_RX):
69 db.push_back(db_base_sptr(new db_dbs_rx(usrp, which_side)));
72 case(USRP_DBID_TV_RX):
73 db.push_back(db_base_sptr(new db_tv_rx(usrp, which_side, 43.75e6, 5.75e6)));
75 case(USRP_DBID_TV_RX_REV_2):
76 db.push_back(db_base_sptr(new db_tv_rx(usrp, which_side, 44e6, 20e6)));
78 case(USRP_DBID_TV_RX_REV_3):
79 db.push_back(db_base_sptr(new db_tv_rx(usrp, which_side, 44e6, 20e6)));
81 case(USRP_DBID_TV_RX_MIMO):
82 db.push_back(db_base_sptr(new db_tv_rx_mimo(usrp, which_side, 43.75e6, 5.75e6)));
84 case(USRP_DBID_TV_RX_REV_2_MIMO):
85 db.push_back(db_base_sptr(new db_tv_rx_mimo(usrp, which_side, 44e6, 20e6)));
87 case(USRP_DBID_TV_RX_REV_3_MIMO):
88 db.push_back(db_base_sptr(new db_tv_rx_mimo(usrp, which_side, 44e6, 20e6)));
91 case(USRP_DBID_FLEX_2400_TX):
92 db.push_back(db_base_sptr(new db_flexrf_2400_tx(usrp, which_side)));
94 case(USRP_DBID_FLEX_2400_RX):
95 db.push_back(db_base_sptr(new db_flexrf_2400_rx(usrp, which_side)));
97 case(USRP_DBID_FLEX_1200_TX):
98 db.push_back(db_base_sptr(new db_flexrf_1200_tx(usrp, which_side)));
100 case(USRP_DBID_FLEX_1200_RX):
101 db.push_back(db_base_sptr(new db_flexrf_1200_rx(usrp, which_side)));
103 case(USRP_DBID_FLEX_1800_TX):
104 db.push_back(db_base_sptr(new db_flexrf_1800_tx(usrp, which_side)));
106 case(USRP_DBID_FLEX_1800_RX):
107 db.push_back(db_base_sptr(new db_flexrf_1800_rx(usrp, which_side)));
109 case(USRP_DBID_FLEX_900_TX):
110 db.push_back(db_base_sptr(new db_flexrf_900_tx(usrp, which_side)));
112 case(USRP_DBID_FLEX_900_RX):
113 db.push_back(db_base_sptr(new db_flexrf_900_rx(usrp, which_side)));
115 case(USRP_DBID_FLEX_400_TX):
116 db.push_back(db_base_sptr(new db_flexrf_400_tx(usrp, which_side)));
118 case(USRP_DBID_FLEX_400_RX):
119 db.push_back(db_base_sptr(new db_flexrf_400_rx(usrp, which_side)));
121 case(USRP_DBID_FLEX_2400_TX_MIMO_A):
122 db.push_back(db_base_sptr(new db_flexrf_2400_tx_mimo_a(usrp, which_side)));
124 case(USRP_DBID_FLEX_2400_RX_MIMO_A):
125 db.push_back(db_base_sptr(new db_flexrf_2400_rx_mimo_a(usrp, which_side)));
127 case(USRP_DBID_FLEX_1800_TX_MIMO_A):
128 db.push_back(db_base_sptr(new db_flexrf_1800_tx_mimo_a(usrp, which_side)));
130 case(USRP_DBID_FLEX_1800_RX_MIMO_A):
131 db.push_back(db_base_sptr(new db_flexrf_1800_rx_mimo_a(usrp, which_side)));
133 case(USRP_DBID_FLEX_1200_TX_MIMO_A):
134 db.push_back(db_base_sptr(new db_flexrf_1200_tx_mimo_a(usrp, which_side)));
136 case(USRP_DBID_FLEX_1200_RX_MIMO_A):
137 db.push_back(db_base_sptr(new db_flexrf_1200_rx_mimo_a(usrp, which_side)));
139 case(USRP_DBID_FLEX_900_TX_MIMO_A):
140 db.push_back(db_base_sptr(new db_flexrf_900_tx_mimo_a(usrp, which_side)));
142 case(USRP_DBID_FLEX_900_RX_MIMO_A):
143 db.push_back(db_base_sptr(new db_flexrf_900_rx_mimo_a(usrp, which_side)));
145 case(USRP_DBID_FLEX_400_TX_MIMO_A):
146 db.push_back(db_base_sptr(new db_flexrf_400_tx_mimo_a(usrp, which_side)));
148 case(USRP_DBID_FLEX_400_RX_MIMO_A):
149 db.push_back(db_base_sptr(new db_flexrf_400_rx_mimo_a(usrp, which_side)));
151 case(USRP_DBID_FLEX_2400_TX_MIMO_B):
152 db.push_back(db_base_sptr(new db_flexrf_2400_tx_mimo_b(usrp, which_side)));
154 case(USRP_DBID_FLEX_2400_RX_MIMO_B):
155 db.push_back(db_base_sptr(new db_flexrf_2400_rx_mimo_b(usrp, which_side)));
157 case(USRP_DBID_FLEX_1800_TX_MIMO_B):
158 db.push_back(db_base_sptr(new db_flexrf_1800_tx_mimo_b(usrp, which_side)));
160 case(USRP_DBID_FLEX_1800_RX_MIMO_B):
161 db.push_back(db_base_sptr(new db_flexrf_1800_rx_mimo_b(usrp, which_side)));
163 case(USRP_DBID_FLEX_1200_TX_MIMO_B):
164 db.push_back(db_base_sptr(new db_flexrf_1200_tx_mimo_b(usrp, which_side)));
166 case(USRP_DBID_FLEX_1200_RX_MIMO_B):
167 db.push_back(db_base_sptr(new db_flexrf_1200_rx_mimo_b(usrp, which_side)));
169 case(USRP_DBID_FLEX_900_TX_MIMO_B):
170 db.push_back(db_base_sptr(new db_flexrf_900_tx_mimo_b(usrp, which_side)));
172 case(USRP_DBID_FLEX_900_RX_MIMO_B):
173 db.push_back(db_base_sptr(new db_flexrf_900_rx_mimo_b(usrp, which_side)));
175 case(USRP_DBID_FLEX_400_TX_MIMO_B):
176 db.push_back(db_base_sptr(new db_flexrf_400_tx_mimo_b(usrp, which_side)));
178 case(USRP_DBID_FLEX_400_RX_MIMO_B):
179 db.push_back(db_base_sptr(new db_flexrf_400_rx_mimo_b(usrp, which_side)));
182 case(USRP_DBID_XCVR2450_TX):
183 db.push_back(db_base_sptr(new db_xcvr2450_tx(usrp, which_side)));
185 case(USRP_DBID_XCVR2450_RX):
186 db.push_back(db_base_sptr(new db_xcvr2450_rx(usrp, which_side)));
189 #if 0 // FIXME wbx doesn't compile
190 case(USRP_DBID_WBX_LO_TX):
191 db.push_back(db_base_sptr(new db_wbx_lo_tx(usrp, which_side)));
193 case(USRP_DBID_WBX_LO_RX):
194 db.push_back(db_base_sptr(new db_wbx_lo_rx(usrp, which_side)));
198 case(USRP_DBID_WBX_NG_TX):
199 db.push_back(db_base_sptr(new db_wbxng_tx(usrp, which_side)));
201 case(USRP_DBID_WBX_NG_RX):
202 db.push_back(db_base_sptr(new db_wbxng_rx(usrp, which_side)));
205 case(USRP_DBID_DTT754):
206 db.push_back(db_base_sptr(new db_dtt754(usrp, which_side)));
208 case(USRP_DBID_DTT768):
209 db.push_back(db_base_sptr(new db_dtt768(usrp, which_side)));
213 if (boost::dynamic_pointer_cast<usrp_basic_tx>(usrp)){
214 db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
217 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
218 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));
224 if (boost::dynamic_pointer_cast<usrp_basic_tx>(usrp)){
225 fprintf(stderr, "\n\aWarning: Treating daughterboard with invalid EEPROM contents as if it were a \"Basic Tx.\"\n");
226 fprintf(stderr, "Warning: This is almost certainly wrong... Use appropriate burn-*-eeprom utility.\n\n");
227 db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
230 fprintf(stderr, "\n\aWarning: Treating daughterboard with invalid EEPROM contents as if it were a \"Basic Rx.\"\n");
231 fprintf(stderr, "Warning: This is almost certainly wrong... Use appropriate burn-*-eeprom utility.\n\n");
232 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
233 db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));