From c1b344b73210dac8b06bd5b8b963ae47d33f7298 Mon Sep 17 00:00:00 2001 From: Martin Anderseck Date: Wed, 29 Jul 2026 12:39:37 +0200 Subject: [PATCH] extension: Fix set_*x_antenna() and update C++ This fixes the segfault when calling into set_*x_antenna() within the example extension and updates the C++ version to UHD default (20 at the moment) to be able to build again. The segfault was caused by the extension example never initializing the pointers to _*x_antenna. It still doesn't do that but refers to the radio's setter and getter methods now. --- .../examples/extension_example/CMakeLists.txt | 2 +- .../lib/extension_example.hpp | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/host/examples/extension_example/CMakeLists.txt b/host/examples/extension_example/CMakeLists.txt index ac646d102..47f13cde4 100644 --- a/host/examples/extension_example/CMakeLists.txt +++ b/host/examples/extension_example/CMakeLists.txt @@ -9,7 +9,7 @@ cmake_minimum_required(VERSION 3.12) project(EXTENSION_EXAMPLE CXX) ### Configure Compiler ######################################################## -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 20) if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD" AND ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") set(CMAKE_EXE_LINKER_FLAGS "-lthr ${CMAKE_EXE_LINKER_FLAGS}") diff --git a/host/examples/extension_example/lib/extension_example.hpp b/host/examples/extension_example/lib/extension_example.hpp index bc387e68f..19e2c62ad 100644 --- a/host/examples/extension_example/lib/extension_example.hpp +++ b/host/examples/extension_example/lib/extension_example.hpp @@ -333,6 +333,37 @@ public: return "Example_Extension"; } + void set_rx_antenna(const std::string& ant, const size_t chan) override + { + _radio->set_rx_antenna(ant, chan); + } + + void set_tx_antenna(const std::string& ant, const size_t chan) override + { + _radio->set_tx_antenna(ant, chan); + } + + std::string get_rx_antenna(const size_t chan) const override + { + return _radio->get_rx_antenna(chan); + } + + std::string get_tx_antenna(const size_t chan) const override + { + return _radio->get_tx_antenna(chan); + } + + + std::vector get_rx_antennas(const size_t chan) const override + { + return _radio->get_rx_antennas(chan); + } + + std::vector get_tx_antennas(const size_t chan) const override + { + return _radio->get_tx_antennas(chan); + } + private: uhd::rfnoc::radio_control::sptr _radio;