From e950c208f0aa208d7eaab5859b31bf57d698513f Mon Sep 17 00:00:00 2001
From: Sergey Musikhin <musihin_sergei@mail.ru>
Date: Sun, 13 Jun 2021 08:41:31 +0000
Subject: [PATCH] x40/x115 sampling

---
 grc/gen_bladerf_blocks.py     | 10 ++++++++++
 lib/bladerf/bladerf_common.cc | 10 ++++++++++
 2 files changed, 20 insertions(+)

diff --git a/grc/gen_bladerf_blocks.py b/grc/gen_bladerf_blocks.py
index 94de1d2..749cb7b 100644
--- a/grc/gen_bladerf_blocks.py
+++ b/grc/gen_bladerf_blocks.py
@@ -131,6 +131,15 @@ parameters:
   option_labels: ['Internal','External 1pps', 'External 10 MHz']
   hide: part
   
+- id: sampling
+  category: x40/x115
+  label: 'sampling'
+  dtype: enum
+  default: 'internal'
+  options: ['internal', 'external']
+  option_labels: ['Internal','External']
+  hide: part
+  
 - id: lpf_mode
   label: 'LPF mode'
   category: x40/x115
@@ -196,6 +205,7 @@ templates:
              + ",dac=" + str(${'$'}{dac})
              + ",xb200=" + '${'$'}{xb200}'
              + ",tamer=" + '${'$'}{tamer}'
+             + ",sampling=" + '${'$'}{sampling}'
              + ",lpf_mode="+'${'$'}{lpf_mode}'
              + ",trigger0="+'${'$'}{trigger0}'
              + ",trigger_role0="+'${'$'}{trigger_role0}'
diff --git a/lib/bladerf/bladerf_common.cc b/lib/bladerf/bladerf_common.cc
index bf7f027..37c4c96 100644
--- a/lib/bladerf/bladerf_common.cc
+++ b/lib/bladerf/bladerf_common.cc
@@ -418,6 +418,16 @@ void bladerf_common::init_bladerf1(const dict_t &dict, bladerf_direction directi
     if (dict.count("tamer")) {
         set_clock_source(_get(dict, "tamer"));
     }
+    if (dict.count("sampling")) {
+        bladerf_sampling mode = _get(dict, "sampling") == "external" ?
+                    BLADERF_SAMPLING_EXTERNAL: BLADERF_SAMPLING_INTERNAL;
+        auto status = bladerf_set_sampling(_dev.get(), mode);
+        if(status != 0)
+        {
+            BLADERF_THROW_STATUS(status, "Failed to set sampling");
+        }
+    }
+
     bladerf_channel ch = (direction == BLADERF_RX) ? BLADERF_CHANNEL_RX(0)
                                                    : BLADERF_CHANNEL_TX(0);
     if (dict.count("lpf_mode")) {
-- 
GitLab