Merge branch 'wip/wbxng' of git@gnuradio.org:jcorgan
[debian/gnuradio] / usrp / host / include / usrp / db_wbxng.h
1 /* -*- c++ -*- */
2 //
3 // Copyright 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 #ifndef INCLUDED_DB_WBXNG_H
23 #define INCLUDED_DB_WBXNG_H
24
25 #include <usrp/db_base.h>
26 #include <cmath>
27
28 class adf4350;
29
30 class wbxng_base : public db_base
31 {
32 public:
33   wbxng_base(usrp_basic_sptr usrp, int which, int _power_on=0);
34   ~wbxng_base();
35
36   struct freq_result_t set_freq(double freq);
37
38   bool  is_quadrature();
39   double freq_min();
40   double freq_max();
41
42 protected:
43   bool _lock_detect();
44   bool _set_pga(float pga_gain);
45
46   int power_on() { return d_power_on; }
47   int power_off() { return 0; }
48
49   bool d_first;
50   int  d_spi_format;
51   int  d_spi_enable;
52   int  d_power_on;
53   int  d_PD;
54
55   adf4350 *d_common;
56 };
57
58 // ----------------------------------------------------------------
59
60 class wbxng_base_tx : public wbxng_base
61 {
62 protected:
63   void shutdown();
64
65 public:
66   wbxng_base_tx(usrp_basic_sptr usrp, int which, int _power_on=0);
67   ~wbxng_base_tx();
68
69   float gain_min();
70   float gain_max();
71   float gain_db_per_step();
72
73   bool set_auto_tr(bool on);
74   bool set_enable(bool on);
75   bool set_gain(float gain);
76 };
77
78 class wbxng_base_rx : public wbxng_base
79 {
80 protected:
81   void shutdown();
82   bool _set_attn(float attn);
83
84 public:
85   wbxng_base_rx(usrp_basic_sptr usrp, int which, int _power_on=0);
86   ~wbxng_base_rx();
87
88   bool set_auto_tr(bool on);
89   bool select_rx_antenna(int which_antenna);
90   bool select_rx_antenna(const std::string &which_antenna);
91   bool set_gain(float gain);
92 };
93
94 // ----------------------------------------------------------------
95
96 class db_wbxng_tx : public wbxng_base_tx
97 {
98  public:
99   db_wbxng_tx(usrp_basic_sptr usrp, int which);
100   ~db_wbxng_tx();
101 };
102
103 class db_wbxng_rx : public wbxng_base_rx
104 {
105 public:
106   db_wbxng_rx(usrp_basic_sptr usrp, int which);
107   ~db_wbxng_rx();
108
109   float gain_min();
110   float gain_max();
111   float gain_db_per_step();
112   bool i_and_q_swapped();
113 };
114
115 #endif /* INCLUDED_DB_WBXNG_H */