switch source package format to 3.0 quilt
[debian/gnuradio] / usrp / host / lib / db_boards.cc
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_bitshark_rx.h>
40 #include <cstdio>
41
42 std::vector<db_base_sptr>
43 instantiate_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_BITSHARK_RX):
214     db.push_back(db_base_sptr(new db_bitshark_rx(usrp, which_side)));
215     break;
216
217   case(-1):
218     if (boost::dynamic_pointer_cast<usrp_basic_tx>(usrp)){
219       db.push_back(db_base_sptr(new db_basic_tx(usrp, which_side)));
220     }
221     else {
222       db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
223       db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));
224     }
225     break;
226
227   case(-2):
228   default:
229     if (boost::dynamic_pointer_cast<usrp_basic_tx>(usrp)){
230       fprintf(stderr, "\n\aWarning: Treating daughterboard with invalid EEPROM contents as if it were a \"Basic Tx.\"\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_tx(usrp, which_side)));
233     }
234     else {
235       fprintf(stderr, "\n\aWarning: Treating daughterboard with invalid EEPROM contents as if it were a \"Basic Rx.\"\n");
236       fprintf(stderr, "Warning: This is almost certainly wrong...  Use appropriate burn-*-eeprom utility.\n\n");
237       db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 0)));
238       db.push_back(db_base_sptr(new db_basic_rx(usrp, which_side, 1)));
239     }
240     break;
241   }
242
243   return db;
244 }