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