use enum for band select
authorJosh Blum <josh@joshknows.com>
Fri, 21 Aug 2009 00:17:56 +0000 (17:17 -0700)
committerJosh Blum <josh@joshknows.com>
Fri, 21 Aug 2009 00:17:56 +0000 (17:17 -0700)
gr-vrt/src/vrt_quadradio_source_32fc.cc
gr-vrt/src/vrt_quadradio_source_32fc.h
vrt/include/vrt/quadradio.h
vrt/lib/quadradio.cc

index 77e61cf047440fb982ccef1f8a1a410e6d2253e6..3769f912482cd4b4824d873ed04dbe47c7ff8160 100644 (file)
@@ -86,15 +86,15 @@ vrt_quadradio_source_32fc::set_center_freq(double target_freq)
 }
 
 bool 
-vrt_quadradio_source_32fc::set_band_select(const std::string &band)
+vrt_quadradio_source_32fc::set_band_select(int band)
 {
-  return d_qr->set_band_select(band);
+  return d_qr->set_band_select(static_cast<vrt_band_sel_t>(band));
 }
 
-std::string 
+int 
 vrt_quadradio_source_32fc::get_band_select(void)
 {
-  return d_qr->get_band_select();
+  return static_cast<int>(d_qr->get_band_select());
 }
 
 //void 
index c7d5b9c503347210fd1d34edb47b8550465a0aec..862afc5eb5e3690ace13dee653ec6cf5581a96c9 100644 (file)
@@ -68,10 +68,9 @@ public:
 
   /*!
    * \brief Set the band select dboard bits.
-   * \param band "A", "B", "C", "D"
    */
-  bool set_band_select(const std::string &band);
-  std::string get_band_select(void);
+  bool set_band_select(int band);
+  int get_band_select(void);
 
   /*!
    * \brief Turn the 10 dB attenuation on/off.
index 86039aa375bb123e9bf88edfe945b6a2c677f51f..9ad8b2a9f344fc76f5b500ab8947a3f4d08fff63 100644 (file)
@@ -38,6 +38,14 @@ typedef enum{
       
     } vrt_test_sig_t;
 
+typedef enum{
+    VRT_BAND_SEL_A='A',
+    VRT_BAND_SEL_B='B',
+    VRT_BAND_SEL_C='C',
+    VRT_BAND_SEL_D='D',  
+      
+    } vrt_band_sel_t;
+
 namespace vrt {
 
   /*
@@ -53,7 +61,7 @@ namespace vrt {
     int                   d_data_port;        // our data port number
     vrt::rx::sptr  d_rx;              // has-a rx
     
-    std::string                   d_band_select;              // band select setting
+    vrt_band_sel_t                d_band_select;              // band select setting
     int                   d_rx_antenna;               // antenna type rf/cal
     int                   d_attenuation0;             // attenuation setting
     int                   d_attenuation1;             // attenuation setting
@@ -92,8 +100,8 @@ namespace vrt {
 
     /* convenience methods that ultimately write the dboard pins */
     bool set_center_freq(double target_freq);
-    bool set_band_select(const std::string &band);
-    std::string get_band_select(void){return d_band_select;}
+    bool set_band_select(vrt_band_sel_t band);
+    vrt_band_sel_t get_band_select(void){return d_band_select;}
     //void set_10dB_atten(bool on);
     bool set_attenuation0(int attenuation);
     bool select_rx_antenna(const std::string &ant);
index d4b466b2136589984383d13c555dc1ce1842cc44..14fc1847318985748a5eff7a5c26766b0af4a584 100644 (file)
@@ -51,7 +51,7 @@ send_and_check(int fd, void *buf, size_t len)
 
 vrt::quadradio::quadradio(const std::string &ip, size_t rx_bufsize)
   : d_ctrl_fd(0), d_data_fd(0), d_data_port(0),
-  d_band_select("A"), d_rx_antenna(0), d_attenuation0(0), d_attenuation1(0)//d_10dB_atten(true)
+  d_band_select(VRT_BAND_SEL_A), d_rx_antenna(0), d_attenuation0(0), d_attenuation1(0)//d_10dB_atten(true)
 {
   if (!open(ip.c_str()))
     throw std::runtime_error("vrt::quadradio: failed to open " + ip + "\n");
@@ -89,15 +89,15 @@ vrt::quadradio::stop_streaming()
 bool
 vrt::quadradio::set_center_freq(double target_freq){
     if (target_freq < 700e6) return false;
-    if (target_freq <= 1.0e9) return set_band_select("A");
-    if (target_freq <= 1.5e9) return set_band_select("B");
-    if (target_freq <= 2.2e9) return set_band_select("C");
-    if (target_freq <= 3.0e9) return set_band_select("D");
+    if (target_freq <= 1.0e9) return set_band_select(VRT_BAND_SEL_A);
+    if (target_freq <= 1.5e9) return set_band_select(VRT_BAND_SEL_B);
+    if (target_freq <= 2.2e9) return set_band_select(VRT_BAND_SEL_C);
+    if (target_freq <= 3.0e9) return set_band_select(VRT_BAND_SEL_D);
     return false;
 }
 
 bool
-vrt::quadradio::set_band_select(const std::string &band){
+vrt::quadradio::set_band_select(vrt_band_sel_t band){
     d_band_select = band;
     update_dboard_pins();
     return true;
@@ -147,10 +147,13 @@ void
 vrt::quadradio::update_dboard_pins(void){
     //convert the band ID to bits
     int band_select;
-    if (d_band_select == "A") band_select = 3;
-    else if (d_band_select == "B") band_select = 2;
-    else if (d_band_select == "C") band_select = 1;
-    else if (d_band_select == "D") band_select = 0;
+    switch (d_band_select){
+        case VRT_BAND_SEL_A: band_select = 3; break;
+        case VRT_BAND_SEL_B: band_select = 2; break;
+        case VRT_BAND_SEL_C: band_select = 1; break;
+        case VRT_BAND_SEL_D: band_select = 0; break;
+        default: band_select = 0;
+    }
     //calculate the control bits
     int db_ctrl = \
         ((reverse_bits(d_attenuation0, 5)  & 0x1f) << 10) | \