throw std::runtime_error("_reflck_divisor() called from base class\n");;
}
+bool
+db_base::set_bw(float bw)
+{
+ // Set baseband bandwidth (board specific)
+ // Should be overriden by boards that implement variable IF filtering (e.g., DBSRX)
+ return false;
+}
std::ostream &operator<<(std::ostream &os, db_base &x)
{
virtual bool set_auto_tr(bool on);
virtual bool select_rx_antenna(int which_antenna);
virtual bool select_rx_antenna(const std::string &which_antenna);
+ virtual bool set_bw(float bw);
};
virtual bool set_auto_tr(bool on);
virtual bool select_rx_antenna(int which_antenna);
virtual bool select_rx_antenna(const std::string &antenna);
+ virtual bool set_bw(float bw);
};
// Create templates for db's, vectors of db's, and vector of vectors of db's
_send_reg(3);
}
-struct bw_t
+bool
db_dbs_rx::set_bw (float bw)
{
- assert(bw>=1e6 && bw<=33e6);
+ if (bw < 1e6 || bw > 33e6) {
+ fprintf(stderr, "db_dbs_rx::set_bw: bw (=%f) must be between 1e6 and 33e6 inclusive\n", bw);
+ return false;
+ }
- struct bw_t ret = {0, 0, 0};
+ // struct bw_t ret = {0, 0, 0};
int m_max, m_min, m_test, fdac_test;
if(bw >= 4e6)
m_max = int(std::min(31, (int)floor(_refclk_freq()/1e6)));
_set_m(m_test);
_set_fdac(fdac_test);
- ret.m = d_m;
- ret.fdac = d_fdac;
- ret.div = _refclk_freq()/d_m*(4+0.145*d_fdac);
+ //ret.m = d_m;
+ //ret.fdac = d_fdac;
+ //ret.div = _refclk_freq()/d_m*(4+0.145*d_fdac);
}
else {
- fprintf(stderr, "Failed to set bw\n");
+ fprintf(stderr, "db_dbs_rx::set_bw: failed\n");
+ return false;
}
- return ret;
+
+ return true;
}
// Gain setting
#include <db_base.h>
#include <vector>
+#if 0
struct bw_t {
int m;
int fdac;
float div;
};
+#endif
class db_dbs_rx : public db_base
{
void _send_reg(int regno);
void _set_m(int m);
void _set_fdac(int fdac);
- bw_t set_bw(float bw);
void _set_dl(int dl);
void _set_gc2(int gc2);
void _set_gc1(int gc1);
struct freq_result_t set_freq(double freq);
bool set_gain(float gain);
bool is_quadrature();
+ bool set_bw(float bw);
};
#endif
return d_inverted;
}
-void
+bool
db_dtt754::set_bw(float bw)
{
/*
d_bw = bw;
set_freq(d_freq);
+
+ return true; // FIXME: propagate set_freq result
}
void
bool is_quadrature();
bool spectrum_inverted();
- void set_bw(float bw);
+ bool set_bw(float bw);
private:
void _set_rfagc(float gain);
return d_inverted;
}
-void
+bool
db_dtt768::set_bw(float bw)
{
/*
d_bw = bw;
set_freq(d_freq);
+
+ return true; // FIXME: propagate set_freq result
}
void
bool is_quadrature();
bool spectrum_inverted();
- void set_bw(float bw);
+ bool set_bw(float bw);
private:
void _set_rfagc(float gain);