Clean up for work-in-progress
[debian/gnuradio] / usrp / host / include / usrp / db_wbxng.h
index b255cf91c5a6ff85647a18d0ecb6bee3c4369f39..2158face2e77eb15077ccaf0f61254f3938b4bfb 100644 (file)
 /* -*- c++ -*- */
 //
-// Copyright 2008,2009 Free Software Foundation, Inc.
-// 
+// Copyright 2009 Free Software Foundation, Inc.
+//
 // This file is part of GNU Radio
-// 
+//
 // GNU Radio is free software; you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
 // the Free Software Foundation; either asversion 3, or (at your option)
 // any later version.
-// 
+//
 // GNU Radio is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 // GNU General Public License for more details.
-// 
+//
 // You should have received a copy of the GNU General Public License
 // along with GNU Radio; see the file COPYING.  If not, write to
 // the Free Software Foundation, Inc., 51 Franklin Street,
 // Boston, MA 02110-1301, USA.
 
-#ifndef DB_WBXNG_H
-#define DB_WBXNG_H
+#ifndef INCLUDED_DB_WBXNG_H
+#define INCLUDED_DB_WBXNG_H
 
 #include <usrp/db_base.h>
-#include <boost/shared_ptr.hpp>
+#include <cmath>
 
-class wbxng;
-typedef boost::shared_ptr<wbxng> wbxng_sptr;
+class adf4350;
 
-
-/******************************************************************************/
-
-
-class db_wbxng_base: public db_base
+class wbxng_base : public db_base
 {
-  /*
-   * Abstract base class for all wbxng boards.
-   * 
-   * Derive board specific subclasses from db_wbxng_base_{tx,rx}
-   */
 public:
-  db_wbxng_base(usrp_basic_sptr usrp, int which);
-  ~db_wbxng_base();
-  struct freq_result_t set_freq(double target_freq);
-  bool is_quadrature();
+  wbxng_base(usrp_basic_sptr usrp, int which, int _power_on=0);
+  ~wbxng_base();
+
+  struct freq_result_t set_freq(double freq);
+
+  bool  is_quadrature();
   double freq_min();
   double freq_max();
 
 protected:
-  wbxng_sptr d_wbxng;
-  void shutdown_common();
-};
+  bool _lock_detect();
 
+  //virtual bool _compute_regs(double freq, int &retR, int &retcontrol, int &retN, double &retfreq);
+  int  _compute_control_reg();
+  int _refclk_divisor();
+  double _refclk_freq();
 
-/******************************************************************************/
+  bool _set_pga(float pga_gain);
 
+  int power_on() { return d_power_on; }
+  int power_off() { return 0; }
 
-class db_wbxng_tx : public db_wbxng_base
+  bool d_first;
+  int  d_spi_format;
+  int  d_spi_enable;
+  int  d_power_on;
+  int  d_PD;
+
+  adf4350 *d_common;
+};
+
+// ----------------------------------------------------------------
+
+class wbxng_base_tx : public wbxng_base
 {
 protected:
   void shutdown();
 
 public:
-  db_wbxng_tx(usrp_basic_sptr usrp, int which);
-  ~db_wbxng_tx();
+  wbxng_base_tx(usrp_basic_sptr usrp, int which, int _power_on=0);
+  ~wbxng_base_tx();
 
   float gain_min();
   float gain_max();
   float gain_db_per_step();
-  bool  set_gain(float gain);
-  bool  i_and_q_swapped();
+
+  bool set_auto_tr(bool on);
+  bool set_enable(bool on);
+  bool set_gain(float gain);
 };
 
-class db_wbxng_rx : public db_wbxng_base
+class wbxng_base_rx : public wbxng_base
 {
 protected:
   void shutdown();
+  bool _set_attn(float attn);
 
+public:
+  wbxng_base_rx(usrp_basic_sptr usrp, int which, int _power_on=0);
+  ~wbxng_base_rx();
+
+  bool set_auto_tr(bool on);
+  bool select_rx_antenna(int which_antenna);
+  bool select_rx_antenna(const std::string &which_antenna);
+  bool set_gain(float gain);
+};
+
+// ----------------------------------------------------------------
+
+class db_wbxng_tx : public wbxng_base_tx
+{
+ public:
+  db_wbxng_tx(usrp_basic_sptr usrp, int which);
+  ~db_wbxng_tx();
+};
+
+class db_wbxng_rx : public wbxng_base_rx
+{
 public:
   db_wbxng_rx(usrp_basic_sptr usrp, int which);
   ~db_wbxng_rx();
@@ -84,9 +115,7 @@ public:
   float gain_min();
   float gain_max();
   float gain_db_per_step();
-  bool  set_gain(float gain);
+  bool i_and_q_swapped();
 };
 
-
-
-#endif
+#endif /* INCLUDED_DB_WBXNG_H */