From 75ad0c55164e8e2f08b4bfc9d5361f2445a80f52 Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Thu, 18 Jul 2019 16:23:12 -0700 Subject: convert: Add chdr converters for sc16 -> fc32 and vice versa These differ from the item32 converters in that they don't IQ swap, and also don't have a BE/LE version. --- host/lib/convert/convert_common.hpp | 39 +++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'host/lib/convert/convert_common.hpp') diff --git a/host/lib/convert/convert_common.hpp b/host/lib/convert/convert_common.hpp index 7b627061e..0de344b75 100644 --- a/host/lib/convert/convert_common.hpp +++ b/host/lib/convert/convert_common.hpp @@ -114,6 +114,26 @@ UHD_INLINE void xx_to_item32_sc16( } } +template +UHD_FORCE_INLINE sc16_t xx_to_sc16_x1( + const std::complex& num, const double scale_factor) +{ + uint16_t real = int16_t(num.real() * T(scale_factor)); + uint16_t imag = int16_t(num.imag() * T(scale_factor)); + return sc16_t(real, imag); +} + +template +UHD_FORCE_INLINE void xx_to_chdr_sc16(const std::complex* input, + sc16_t* output, + const size_t nsamps, + const double scale_factor) +{ + for (size_t i = 0; i < nsamps; i++) { + output[i] = xx_to_sc16_x1(input[i], scale_factor); + } +} + /*********************************************************************** * Convert items32 sc16 buffer to xx **********************************************************************/ @@ -147,6 +167,25 @@ UHD_INLINE void item32_sc16_to_xx( } } +template +UHD_FORCE_INLINE std::complex chdr_sc16_x1_to_xx( + const sc16_t item, const double scale_factor) +{ + return std::complex( + T(item.real()) * T(scale_factor), T(item.imag()) * T(scale_factor)); +} + +template +UHD_FORCE_INLINE void chdr_sc16_to_xx(const sc16_t* input, + std::complex* output, + const size_t nsamps, + const double scale_factor) +{ + for (size_t i = 0; i < nsamps; i++) { + output[i] = chdr_sc16_x1_to_xx(input[i], scale_factor); + } +} + /*********************************************************************** * Convert xx to items32 sc8 buffer **********************************************************************/ -- cgit v1.2.3