d0caf8b03ba9134b22287cd866e27c2597c72488
[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   int _refclk_divisor();
44   bool _lock_detect();
45   bool _set_pga(float pga_gain);
46
47   int power_on() { return d_power_on; }
48   int power_off() { return 0; }
49
50   bool d_first;
51   int  d_spi_format;
52   int  d_spi_enable;
53   int  d_power_on;
54   int  d_PD;
55
56   adf4350 *d_common;
57 };
58
59 // ----------------------------------------------------------------
60
61 class wbxng_base_tx : public wbxng_base
62 {
63 protected:
64   void shutdown();
65
66 public:
67   wbxng_base_tx(usrp_basic_sptr usrp, int which, int _power_on=0);
68   ~wbxng_base_tx();
69
70   float gain_min();
71   float gain_max();
72   float gain_db_per_step();
73
74   bool set_auto_tr(bool on);
75   bool set_enable(bool on);
76   bool set_gain(float gain);
77 };
78
79 class wbxng_base_rx : public wbxng_base
80 {
81 protected:
82   void shutdown();
83   bool _set_attn(float attn);
84
85 public:
86   wbxng_base_rx(usrp_basic_sptr usrp, int which, int _power_on=0);
87   ~wbxng_base_rx();
88
89   bool set_auto_tr(bool on);
90   bool select_rx_antenna(int which_antenna);
91   bool select_rx_antenna(const std::string &which_antenna);
92   bool set_gain(float gain);
93 };
94
95 // ----------------------------------------------------------------
96
97 class db_wbxng_tx : public wbxng_base_tx
98 {
99  public:
100   db_wbxng_tx(usrp_basic_sptr usrp, int which);
101   ~db_wbxng_tx();
102 };
103
104 class db_wbxng_rx : public wbxng_base_rx
105 {
106 public:
107   db_wbxng_rx(usrp_basic_sptr usrp, int which);
108   ~db_wbxng_rx();
109
110   float gain_min();
111   float gain_max();
112   float gain_db_per_step();
113   bool i_and_q_swapped();
114 };
115
116 #endif /* INCLUDED_DB_WBXNG_H */