From 96e9234d010b51e5478f3787c4f16cc7bddb3fd4 Mon Sep 17 00:00:00 2001
From: Sergey Musikhin <musihin_sergei@mail.ru>
Date: Sun, 13 Jun 2021 08:20:24 +0000
Subject: [PATCH] lpf mode

---
 grc/gen_bladerf_blocks.py     | 15 +++++++++++++++
 lib/bladerf/bladerf_common.cc | 18 ++++++++++++++++++
 lib/bladerf/bladerf_common.h  |  3 +++
 3 files changed, 36 insertions(+)

diff --git a/grc/gen_bladerf_blocks.py b/grc/gen_bladerf_blocks.py
index e052f4d..94de1d2 100644
--- a/grc/gen_bladerf_blocks.py
+++ b/grc/gen_bladerf_blocks.py
@@ -120,6 +120,7 @@ parameters:
   default: 'none'
   options: ['none','auto', 'auto3db', '50M', '144M', '222M', 'custom']
   option_labels: ['none','auto', 'auto3db', '50M', '144M', '222M', 'custom']
+  hide: part
 
 - id: tamer
   category: x40/x115
@@ -128,6 +129,16 @@ parameters:
   default: 'internal'
   options: ['internal','external_1pps', 'external']
   option_labels: ['Internal','External 1pps', 'External 10 MHz']
+  hide: part
+  
+- id: lpf_mode
+  label: 'LPF mode'
+  category: x40/x115
+  dtype: enum
+  default: 'disabled'
+  options: ['disabled', 'bypassed']
+  option_labels: ['Disabled', 'Bypassed'] 
+  hide: part
   
 
   
@@ -185,6 +196,7 @@ templates:
              + ",dac=" + str(${'$'}{dac})
              + ",xb200=" + '${'$'}{xb200}'
              + ",tamer=" + '${'$'}{tamer}'
+             + ",lpf_mode="+'${'$'}{lpf_mode}'
              + ",trigger0="+'${'$'}{trigger0}'
              + ",trigger_role0="+'${'$'}{trigger_role0}'
              + ",trigger_signal0="+'${'$'}{trigger_signal0}'
@@ -194,6 +206,7 @@ templates:
              + ",bias_tee0="+'${'$'}{bias_tee0}'
              + ",bias_tee1="+'${'$'}{bias_tee1}'
              
+             
     )
     self.${'$'}{id}.set_sample_rate(${'$'}{sample_rate})
     % for n in range(max_nchan):
@@ -412,6 +425,8 @@ PARAMS_TMPL = """
   option_labels: ['J71_4', 'J51_1', 'MINI_EXP_1', 'USER_0', 'USER_1', 'USER_2', 'USER_3', 'USER_4', 'USER_5', 'USER_6', 'USER_7'] 
   hide: ${'$'}{ 'part' if (nchan > ${n})  else 'all'} 
   
+
+  
 """
 
 
diff --git a/lib/bladerf/bladerf_common.cc b/lib/bladerf/bladerf_common.cc
index 48dda68..bf7f027 100644
--- a/lib/bladerf/bladerf_common.cc
+++ b/lib/bladerf/bladerf_common.cc
@@ -418,6 +418,15 @@ void bladerf_common::init_bladerf1(const dict_t &dict, bladerf_direction directi
     if (dict.count("tamer")) {
         set_clock_source(_get(dict, "tamer"));
     }
+    bladerf_channel ch = (direction == BLADERF_RX) ? BLADERF_CHANNEL_RX(0)
+                                                   : BLADERF_CHANNEL_TX(0);
+    if (dict.count("lpf_mode")) {
+        bladerf_lpf_mode mode = _get(dict, "lpf_mode") == "bypassed"
+                ? BLADERF_LPF_BYPASSED : BLADERF_LPF_DISABLED;
+        set_lpf_mode(ch, mode);
+    }
+
+
 }
 
 void bladerf_common::init_bladerf2(const dict_t &dict, bladerf_direction direction)
@@ -1319,6 +1328,15 @@ double bladerf_common::get_smb_frequency()
   return static_cast<double>(actual_frequency);
 }
 
+void bladerf_common::set_lpf_mode(bladerf_channel ch, bladerf_lpf_mode mode)
+{
+    auto status = bladerf_set_lpf_mode(_dev.get(), ch, mode);
+    if(status != 0)
+    {
+        BLADERF_THROW_STATUS(status, "Failed to set LPF mode");
+    }
+}
+
 /******************************************************************************
  * Private methods
  ******************************************************************************/
diff --git a/lib/bladerf/bladerf_common.h b/lib/bladerf/bladerf_common.h
index c5d7322..0ea6a01 100644
--- a/lib/bladerf/bladerf_common.h
+++ b/lib/bladerf/bladerf_common.h
@@ -273,6 +273,9 @@ protected:
   /* Get the current SMB frequency */
   double get_smb_frequency();
 
+  void set_lpf_mode(bladerf_channel ch,  bladerf_lpf_mode mode);
+
+
   /*****************************************************************************
    * Protected members
    ****************************************************************************/
-- 
GitLab