Clean up annoying class structure in wbx
[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);
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   bool d_first;
48   int  d_spi_format;
49   int  d_spi_enable;
50   int  d_power_on;
51   int  d_PD;
52
53   adf4350 *d_common;
54 };
55
56 // ----------------------------------------------------------------
57
58 class db_wbxng_tx : public wbxng_base
59 {
60 protected:
61   void shutdown();
62
63 public:
64   db_wbxng_tx(usrp_basic_sptr usrp, int which);
65   ~db_wbxng_tx();
66
67   float gain_min();
68   float gain_max();
69   float gain_db_per_step();
70
71   bool set_auto_tr(bool on);
72   bool set_enable(bool on);
73   bool set_gain(float gain);
74 };
75
76 class db_wbxng_rx : public wbxng_base
77 {
78 protected:
79   void shutdown();
80   bool _set_attn(float attn);
81
82 public:
83   db_wbxng_rx(usrp_basic_sptr usrp, int which);
84   ~db_wbxng_rx();
85
86   bool set_auto_tr(bool on);
87   bool select_rx_antenna(int which_antenna);
88   bool select_rx_antenna(const std::string &which_antenna);
89   bool set_gain(float gain);
90
91   float gain_min();
92   float gain_max();
93   float gain_db_per_step();
94   bool i_and_q_swapped();
95 };
96
97 #endif /* INCLUDED_DB_WBXNG_H */