From c7961c2e8688d6db2a87b5079c60a04b8fe37e74 Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Wed, 26 Apr 2023 14:37:57 +0200 Subject: Normalise TII to 1/sqrt(48) --- src/TII.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/TII.cpp b/src/TII.cpp index b329cdb..2d7429f 100644 --- a/src/TII.cpp +++ b/src/TII.cpp @@ -189,6 +189,8 @@ int TII::process(Buffer* dataIn, Buffer* dataOut) complexf* in = reinterpret_cast(dataIn->getData()); complexf* out = reinterpret_cast(dataOut->getData()); + constexpr float normalisation = 0.144337f; // 1/sqrt(48); + /* Normalise the TII carrier power according to ETSI TR 101 496-3 * Clause 5.4.2.2 Paragraph 7: * @@ -196,8 +198,7 @@ int TII::process(Buffer* dataIn, Buffer* dataOut) * > is 1:48 for all Modes, so that the signal power in a TII symbol is * > 16 dB below the signal power of the other symbols. * - * This is because we only enable 32 out of 1536 carriers, not because - * every carrier is lower power. + * Divide by sqrt(48) because I and Q are separately normalised. */ for (size_t i = 0; i < m_Acp.size(); i++) { /* See header file for an explanation of the old variant. @@ -218,8 +219,8 @@ int TII::process(Buffer* dataIn, Buffer* dataOut) * and fuse the two conditionals together: */ if (m_Acp[i]) { - out[i] = in[i]; - out[i+1] = (m_conf.old_variant ? in[i+1] : in[i]); + out[i] = in[i] * normalisation; + out[i+1] = (m_conf.old_variant ? in[i+1] : in[i]) * normalisation; } } } -- cgit v1.2.3