aboutsummaryrefslogtreecommitdiffstats
path: root/host/examples/rfnoc-example/lib/gain_block_control.cpp
diff options
context:
space:
mode:
authorSugandha Gupta <sugandha.gupta@ettus.com>2019-10-15 11:52:46 -0700
committerMartin Braun <martin.braun@ettus.com>2019-11-26 12:21:32 -0800
commita801d6b046743140e9a50c7788dd17dd71f5540a (patch)
tree58d164e1b4cb2a8d871ca532287699f3912ae3d8 /host/examples/rfnoc-example/lib/gain_block_control.cpp
parent2a7e69d862f661075b98bab19e58d958c28a9af8 (diff)
downloaduhd-a801d6b046743140e9a50c7788dd17dd71f5540a.tar.gz
uhd-a801d6b046743140e9a50c7788dd17dd71f5540a.tar.bz2
uhd-a801d6b046743140e9a50c7788dd17dd71f5540a.zip
examples: Add example out-of-tree module for RFNoC modules
This subdirectory is its own, self-contained project. It is supposed to work against the UHD version it is shipped with. Co-Authored-By: Martin Braun <martin.braun@ettus.com> Co-Authored-By: Wade Fife <wade.fife@ni.com>
Diffstat (limited to 'host/examples/rfnoc-example/lib/gain_block_control.cpp')
-rw-r--r--host/examples/rfnoc-example/lib/gain_block_control.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/host/examples/rfnoc-example/lib/gain_block_control.cpp b/host/examples/rfnoc-example/lib/gain_block_control.cpp
new file mode 100644
index 000000000..d53bafc8b
--- /dev/null
+++ b/host/examples/rfnoc-example/lib/gain_block_control.cpp
@@ -0,0 +1,41 @@
+//
+// Copyright 2019 Ettus Research, a National Instruments Brand
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+//
+
+// Include our own header:
+#include <rfnoc/example/gain_block_control.hpp>
+
+// These two includes are the minimum required to implement a block:
+#include <uhd/rfnoc/defaults.hpp>
+#include <uhd/rfnoc/registry.hpp>
+
+using namespace rfnoc::example;
+using namespace uhd::rfnoc;
+
+const uint32_t gain_block_control::REG_GAIN_VALUE = 0x00;
+
+class gain_block_control_impl : public gain_block_control
+{
+public:
+ RFNOC_BLOCK_CONSTRUCTOR(gain_block_control)
+ {
+ }
+
+ void set_gain_value(const uint32_t gain)
+ {
+ regs().poke32(REG_GAIN_VALUE, gain);
+ }
+
+ uint32_t get_gain_value()
+ {
+ return regs().peek32(REG_GAIN_VALUE);
+ }
+
+private:
+
+};
+
+UHD_RFNOC_BLOCK_REGISTER_DIRECT(
+ gain_block_control, 0xb16, "Gain", CLOCK_KEY_GRAPH, "bus_clk")