diff --git a/host/tests/CMakeLists.txt b/host/tests/CMakeLists.txt index cf5a480bf..95238799f 100644 --- a/host/tests/CMakeLists.txt +++ b/host/tests/CMakeLists.txt @@ -431,6 +431,14 @@ UHD_ADD_NONAPI_TEST( ${UHD_BINARY_DIR}/lib/ic_reg_maps ) +UHD_ADD_NONAPI_TEST( + TARGET ltc5594_test.cpp + EXTRA_SOURCES + ${UHD_SOURCE_DIR}/lib/usrp/common/ltc5594.cpp + INCLUDE_DIRS + ${UHD_BINARY_DIR}/lib/ic_reg_maps +) + UHD_ADD_NONAPI_TEST( TARGET adf535x_test.cpp EXTRA_SOURCES diff --git a/host/tests/ltc5594_test.cpp b/host/tests/ltc5594_test.cpp new file mode 100644 index 000000000..4c6983178 --- /dev/null +++ b/host/tests/ltc5594_test.cpp @@ -0,0 +1,32 @@ +// +// Copyright 2026 Ettus Research, a National Instruments Brand +// +// SPDX-License-Identifier: GPL-3.0-or-later +// +#include +#include +#include + +BOOST_AUTO_TEST_CASE(ltc5594_lo_matching_test) +{ + std::array mock_registers{}; + auto mock_poke = [&mock_registers]( + uint8_t addr, uint8_t data) { mock_registers.at(addr) = data; }; + auto mock_peek = [&mock_registers](uint8_t addr) { return mock_registers.at(addr); }; + + auto ltc5594 = + ltc5594_iface::make(std::move(mock_poke), std::move(mock_peek), "ltc5594_test"); + BOOST_REQUIRE(ltc5594); + + ltc5594->set_lo_matching(500e6); + BOOST_CHECK_EQUAL(static_cast(mock_registers[18]), 0x51U); + BOOST_CHECK_EQUAL(static_cast(mock_registers[19]), 0x5fU); + + ltc5594->set_lo_matching(100e6); + BOOST_CHECK_EQUAL(static_cast(mock_registers[18]), 0x48U); + BOOST_CHECK_EQUAL(static_cast(mock_registers[19]), 0xe3U); + + ltc5594->set_lo_matching(9.1e9); + BOOST_CHECK_EQUAL(static_cast(mock_registers[18]), 0x48U); + BOOST_CHECK_EQUAL(static_cast(mock_registers[19]), 0xe3U); +} \ No newline at end of file