X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=usrp%2Fhost%2Flib%2Fdb_wbxng_adf4350_regs.cc;h=c9707c3c68040e2f441bdf2ec41426c63251bfc9;hb=e2073dd525c03be3e602fbd30c76a60558210acd;hp=696b7c1d483a5ce481badbfd8b52eea188d39379;hpb=78a7ce34ca9d9b3c1129bd2dfc6ec6c78f08203d;p=debian%2Fgnuradio diff --git a/usrp/host/lib/db_wbxng_adf4350_regs.cc b/usrp/host/lib/db_wbxng_adf4350_regs.cc index 696b7c1d..c9707c3c 100644 --- a/usrp/host/lib/db_wbxng_adf4350_regs.cc +++ b/usrp/host/lib/db_wbxng_adf4350_regs.cc @@ -1,6 +1,22 @@ -/* - * Copyright 2009 Ettus Research LLC - */ +// +// 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. #include "db_wbxng_adf4350_regs.h" #include "db_wbxng_adf4350.h" @@ -11,7 +27,7 @@ /* reg 1 */ const uint16_t adf4350_regs::s_phase = 0; /* reg 2 */ -const uint8_t adf4350_regs::s_low_noise_and_low_spur_modes = 0; +const uint8_t adf4350_regs::s_low_noise_and_low_spur_modes = 3; const uint8_t adf4350_regs::s_muxout = 6; const uint8_t adf4350_regs::s_reference_doubler = 0; const uint8_t adf4350_regs::s_rdiv2 = 0; @@ -39,8 +55,7 @@ const uint8_t adf4350_regs::s_output_power = 3; /* reg 5 */ const uint8_t adf4350_regs::s_ld_pin_mode = 1; -adf4350_regs::adf4350_regs(adf4350* _adf4350){ - d_adf4350 = _adf4350; +adf4350_regs::adf4350_regs(){ /* reg 0 */ d_int = uint16_t(100); @@ -63,19 +78,21 @@ adf4350_regs::~adf4350_regs(void){ uint32_t adf4350_regs::_reg_shift(uint32_t data, uint32_t shift){ return data << shift; - } +} -void -adf4350_regs::_load_register(uint8_t addr){ - uint32_t data; +uint32_t +adf4350_regs::compute_register(uint8_t addr){ + uint32_t data = 0; switch (addr){ case 0: data = ( _reg_shift(d_int, 15) | - _reg_shift(d_frac, 3)); break; + _reg_shift(d_frac, 3)); + break; case 1: data = ( _reg_shift(d_prescaler, 27) | _reg_shift(s_phase, 15) | - _reg_shift(d_mod, 3)); break; + _reg_shift(d_mod, 3)); + break; case 2: data = ( _reg_shift(s_low_noise_and_low_spur_modes, 29) | _reg_shift(s_muxout, 26) | @@ -89,11 +106,13 @@ adf4350_regs::_load_register(uint8_t addr){ _reg_shift(s_pd_polarity, 6) | _reg_shift(s_power_down, 5) | _reg_shift(s_cp_three_state, 4) | - _reg_shift(s_counter_reset, 3)); break; + _reg_shift(s_counter_reset, 3)); + break; case 3: data = ( _reg_shift(s_csr, 18) | _reg_shift(s_clk_div_mode, 15) | - _reg_shift(s_12_bit_clock_divider_value, 3)); break; + _reg_shift(s_12_bit_clock_divider_value, 3)); + break; case 4: data = ( _reg_shift(s_feedback_select, 23) | _reg_shift(d_divider_select, 20) | @@ -104,11 +123,14 @@ adf4350_regs::_load_register(uint8_t addr){ _reg_shift(s_aux_output_enable, 8) | _reg_shift(s_aux_output_power, 6) | _reg_shift(s_rf_output_enable, 5) | - _reg_shift(s_output_power, 3)); break; + _reg_shift(s_output_power, 3)); + break; case 5: data = ( - _reg_shift(s_ld_pin_mode, 22)); break; - default: return; + _reg_shift(s_ld_pin_mode, 22)); + break; + default: return data; } - /* write the data out to spi */ - d_adf4350->_write(addr, data); + /* return the data to write out to spi */ + return data; } +