root/vtcross/branches/hasan/rfic_rev2/db_boards.cc @ 549

Revision 549, 8.7 KB (checked in by hasan, 14 years ago)

revised version for the git copy

Line 
1/* -*- c++ -*- */
2//
3// Copyright 2008,2009 Free Software Foundation, Inc.
4//
5// This file is part of GNU Radio
6//
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)
10// any later version.
11//
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.
16//
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.
21//
22
23#ifdef HAVE_CONFIG_H
24#include "config.h"
25#endif
26
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>
39#include <usrp/db_rfic.h>
40#include <cstdio>
41
42std::vector<db_base_sptr>
43instantiate_dbs(int dbid, usrp_basic_sptr usrp, int which_side)
44{
45  std::vector<db_base_sptr> db;
46
47  switch(dbid) {
48
49  case(USRP_DBID_BASIC_TX):
50    db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
51    break;
52
53  case(USRP_DBID_BASIC_RX):
54    db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
55    db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));
56    db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 2)));
57    break;
58
59  case(USRP_DBID_LF_TX):
60    db.push_back(db_base_sptr(new db_lf_tx(usrp, which_side)));
61    break;
62
63  case(USRP_DBID_LF_RX):
64    db.push_back(db_base_sptr(new db_lf_rx(usrp, which_side, 0)));
65    db.push_back(db_base_sptr(new db_lf_rx(usrp, which_side, 1)));
66    db.push_back(db_base_sptr(new db_lf_rx(usrp, which_side, 2)));
67    break;
68
69  case(USRP_DBID_DBS_RX):
70    db.push_back(db_base_sptr(new db_dbs_rx(usrp, which_side)));
71    break;
72
73  case(USRP_DBID_TV_RX):
74    db.push_back(db_base_sptr(new db_tv_rx(usrp, which_side, 43.75e6, 5.75e6)));
75    break;
76  case(USRP_DBID_TV_RX_REV_2):
77    db.push_back(db_base_sptr(new db_tv_rx(usrp, which_side, 44e6, 20e6)));
78    break;
79  case(USRP_DBID_TV_RX_REV_3):
80    db.push_back(db_base_sptr(new db_tv_rx(usrp, which_side, 44e6, 20e6)));
81    break;
82  case(USRP_DBID_TV_RX_MIMO):
83    db.push_back(db_base_sptr(new db_tv_rx_mimo(usrp, which_side, 43.75e6, 5.75e6)));
84    break;
85  case(USRP_DBID_TV_RX_REV_2_MIMO):
86    db.push_back(db_base_sptr(new db_tv_rx_mimo(usrp, which_side, 44e6, 20e6)));
87    break;
88  case(USRP_DBID_TV_RX_REV_3_MIMO):
89    db.push_back(db_base_sptr(new db_tv_rx_mimo(usrp, which_side, 44e6, 20e6)));
90    break;
91
92  case(USRP_DBID_FLEX_2400_TX):
93    db.push_back(db_base_sptr(new db_flexrf_2400_tx(usrp, which_side)));
94    break;
95  case(USRP_DBID_FLEX_2400_RX):
96    db.push_back(db_base_sptr(new db_flexrf_2400_rx(usrp, which_side)));
97    break;
98  case(USRP_DBID_FLEX_1200_TX):
99    db.push_back(db_base_sptr(new db_flexrf_1200_tx(usrp, which_side)));
100    break;
101  case(USRP_DBID_FLEX_1200_RX):
102    db.push_back(db_base_sptr(new db_flexrf_1200_rx(usrp, which_side)));
103    break;
104  case(USRP_DBID_FLEX_1800_TX):
105    db.push_back(db_base_sptr(new db_flexrf_1800_tx(usrp, which_side)));
106    break;
107  case(USRP_DBID_FLEX_1800_RX):
108    db.push_back(db_base_sptr(new db_flexrf_1800_rx(usrp, which_side)));
109    break;
110  case(USRP_DBID_FLEX_900_TX):
111    db.push_back(db_base_sptr(new db_flexrf_900_tx(usrp, which_side)));
112    break;
113  case(USRP_DBID_FLEX_900_RX):
114    db.push_back(db_base_sptr(new db_flexrf_900_rx(usrp, which_side)));
115    break;
116  case(USRP_DBID_FLEX_400_TX):
117    db.push_back(db_base_sptr(new db_flexrf_400_tx(usrp, which_side)));
118    break;
119  case(USRP_DBID_FLEX_400_RX):
120    db.push_back(db_base_sptr(new db_flexrf_400_rx(usrp, which_side)));
121    break;
122  case(USRP_DBID_FLEX_2400_TX_MIMO_A):
123    db.push_back(db_base_sptr(new db_flexrf_2400_tx_mimo_a(usrp, which_side)));
124    break;
125  case(USRP_DBID_FLEX_2400_RX_MIMO_A):
126    db.push_back(db_base_sptr(new db_flexrf_2400_rx_mimo_a(usrp, which_side)));
127    break;
128  case(USRP_DBID_FLEX_1800_TX_MIMO_A):
129    db.push_back(db_base_sptr(new db_flexrf_1800_tx_mimo_a(usrp, which_side)));
130    break;
131  case(USRP_DBID_FLEX_1800_RX_MIMO_A):
132    db.push_back(db_base_sptr(new db_flexrf_1800_rx_mimo_a(usrp, which_side)));
133    break;
134  case(USRP_DBID_FLEX_1200_TX_MIMO_A):
135    db.push_back(db_base_sptr(new db_flexrf_1200_tx_mimo_a(usrp, which_side)));
136    break;
137  case(USRP_DBID_FLEX_1200_RX_MIMO_A):
138    db.push_back(db_base_sptr(new db_flexrf_1200_rx_mimo_a(usrp, which_side)));
139    break;
140  case(USRP_DBID_FLEX_900_TX_MIMO_A):
141    db.push_back(db_base_sptr(new db_flexrf_900_tx_mimo_a(usrp, which_side)));
142    break;
143  case(USRP_DBID_FLEX_900_RX_MIMO_A):
144    db.push_back(db_base_sptr(new db_flexrf_900_rx_mimo_a(usrp, which_side)));
145    break;
146  case(USRP_DBID_FLEX_400_TX_MIMO_A):
147    db.push_back(db_base_sptr(new db_flexrf_400_tx_mimo_a(usrp, which_side)));
148    break;
149  case(USRP_DBID_FLEX_400_RX_MIMO_A):
150    db.push_back(db_base_sptr(new db_flexrf_400_rx_mimo_a(usrp, which_side)));
151    break;
152  case(USRP_DBID_FLEX_2400_TX_MIMO_B):
153    db.push_back(db_base_sptr(new db_flexrf_2400_tx_mimo_b(usrp, which_side)));
154    break;
155  case(USRP_DBID_FLEX_2400_RX_MIMO_B):
156    db.push_back(db_base_sptr(new db_flexrf_2400_rx_mimo_b(usrp, which_side)));
157    break;
158  case(USRP_DBID_FLEX_1800_TX_MIMO_B):
159    db.push_back(db_base_sptr(new db_flexrf_1800_tx_mimo_b(usrp, which_side)));
160    break;
161  case(USRP_DBID_FLEX_1800_RX_MIMO_B):
162    db.push_back(db_base_sptr(new db_flexrf_1800_rx_mimo_b(usrp, which_side)));
163    break;
164  case(USRP_DBID_FLEX_1200_TX_MIMO_B):
165    db.push_back(db_base_sptr(new db_flexrf_1200_tx_mimo_b(usrp, which_side)));
166    break;
167  case(USRP_DBID_FLEX_1200_RX_MIMO_B):
168    db.push_back(db_base_sptr(new db_flexrf_1200_rx_mimo_b(usrp, which_side)));
169    break;
170  case(USRP_DBID_FLEX_900_TX_MIMO_B):
171    db.push_back(db_base_sptr(new db_flexrf_900_tx_mimo_b(usrp, which_side)));
172    break;
173  case(USRP_DBID_FLEX_900_RX_MIMO_B):
174    db.push_back(db_base_sptr(new db_flexrf_900_rx_mimo_b(usrp, which_side)));
175    break;
176  case(USRP_DBID_FLEX_400_TX_MIMO_B):
177    db.push_back(db_base_sptr(new db_flexrf_400_tx_mimo_b(usrp, which_side)));
178    break;
179  case(USRP_DBID_FLEX_400_RX_MIMO_B):
180    db.push_back(db_base_sptr(new db_flexrf_400_rx_mimo_b(usrp, which_side)));
181    break;
182
183  case(USRP_DBID_XCVR2450_TX):
184    db.push_back(db_base_sptr(new db_xcvr2450_tx(usrp, which_side)));
185    break;
186  case(USRP_DBID_XCVR2450_RX):
187    db.push_back(db_base_sptr(new db_xcvr2450_rx(usrp, which_side)));
188    break;
189
190#if 0   // FIXME wbx doesn't compile
191  case(USRP_DBID_WBX_LO_TX):
192    db.push_back(db_base_sptr(new db_wbx_lo_tx(usrp, which_side)));
193    break;
194  case(USRP_DBID_WBX_LO_RX):
195    db.push_back(db_base_sptr(new db_wbx_lo_rx(usrp, which_side)));
196    break;
197#endif
198
199  case(USRP_DBID_WBX_NG_TX):
200    db.push_back(db_base_sptr(new db_wbxng_tx(usrp, which_side)));
201    break;
202  case(USRP_DBID_WBX_NG_RX):
203    db.push_back(db_base_sptr(new db_wbxng_rx(usrp, which_side)));
204    break;
205
206  case(USRP_DBID_DTT754):
207    db.push_back(db_base_sptr(new db_dtt754(usrp, which_side)));
208    break;
209  case(USRP_DBID_DTT768):
210    db.push_back(db_base_sptr(new db_dtt768(usrp, which_side)));
211    break;
212
213  case(USRP_DBID_RFIC_TX):
214    db.push_back(db_base_sptr(new db_rfic_tx(usrp, which_side)));
215    break;
216
217  case(USRP_DBID_RFIC_RX):
218    db.push_back(db_base_sptr(new db_rfic_rx(usrp, which_side)));
219    break;
220
221  case(-1):
222    if (boost::dynamic_pointer_cast<usrp_basic_tx>(usrp)){
223      db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
224    }
225    else {
226      db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
227      db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));
228    }
229    break;
230
231  case(-2):
232  default:
233    if (boost::dynamic_pointer_cast<usrp_basic_tx>(usrp)){
234      fprintf(stderr, "\n\aWarning: Treating daughterboard with invalid EEPROM contents as if it were a \"Basic Tx.\"\n");
235      fprintf(stderr, "Warning: This is almost certainly wrong...  Use appropriate burn-*-eeprom utility.\n\n");
236      db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
237    }
238    else {
239      fprintf(stderr, "\n\aWarning: Treating daughterboard with invalid EEPROM contents as if it were a \"Basic Rx.\"\n");
240      fprintf(stderr, "Warning: This is almost certainly wrong...  Use appropriate burn-*-eeprom utility.\n\n");
241      db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
242      db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));
243    }
244    break;
245  }
246
247  return db;
248}
Note: See TracBrowser for help on using the browser.