From b73bca237dbe545a478920b33baa901563c7500a Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Fri, 8 May 2020 15:06:08 +0200 Subject: [PATCH 1/4] Remove union, use pointer tricks instead --- FMDownsampler.cpp | 8 +++++--- FMDownsampler.h | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/FMDownsampler.cpp b/FMDownsampler.cpp index 51e9580..e44d251 100644 --- a/FMDownsampler.cpp +++ b/FMDownsampler.cpp @@ -23,10 +23,12 @@ CFMDownsampler::CFMDownsampler(uint16_t length) : m_ringBuffer(length),//length might need tweaking +m_samplePack(0), +m_samplePackBytes(0), m_packIndex(0), m_downSampleIndex(0) { - m_samplePack = 0; + m_samplePackBytes = &m_samplePack; } void CFMDownsampler::addSample(q15_t sample) @@ -45,7 +47,7 @@ void CFMDownsampler::addSample(q15_t sample) m_ringBuffer.put(m_samplePackBytes[2]); m_ringBuffer.put(m_samplePackBytes[3]); - m_samplePack = 0; + m_samplePack = 0;//reset the sample pack } break; default: @@ -53,7 +55,7 @@ void CFMDownsampler::addSample(q15_t sample) break; } m_packIndex++; - if(m_packIndex >= 2) + if(m_packIndex >= 2)//did we pack to samples ? m_packIndex = 0; } diff --git a/FMDownsampler.h b/FMDownsampler.h index fd17e0a..46a5239 100644 --- a/FMDownsampler.h +++ b/FMDownsampler.h @@ -32,10 +32,10 @@ public: private: CFMDownsampleRB m_ringBuffer; - union { - int32_t m_samplePack; - int8_t m_samplePackBytes[4]; - }; + + int32_t m_samplePack; + int32_t *m_samplePackBytes; + uint8_t m_packIndex; uint8_t m_downSampleIndex; }; From f1a43ee520f7962f5c688760cd8da61d302e6670 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Fri, 8 May 2020 15:06:08 +0200 Subject: [PATCH 2/4] Remove union, use pointer tricks instead --- FMDownsampler.cpp | 8 +++++--- FMDownsampler.h | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/FMDownsampler.cpp b/FMDownsampler.cpp index 51e9580..e44d251 100644 --- a/FMDownsampler.cpp +++ b/FMDownsampler.cpp @@ -23,10 +23,12 @@ CFMDownsampler::CFMDownsampler(uint16_t length) : m_ringBuffer(length),//length might need tweaking +m_samplePack(0), +m_samplePackBytes(0), m_packIndex(0), m_downSampleIndex(0) { - m_samplePack = 0; + m_samplePackBytes = &m_samplePack; } void CFMDownsampler::addSample(q15_t sample) @@ -45,7 +47,7 @@ void CFMDownsampler::addSample(q15_t sample) m_ringBuffer.put(m_samplePackBytes[2]); m_ringBuffer.put(m_samplePackBytes[3]); - m_samplePack = 0; + m_samplePack = 0;//reset the sample pack } break; default: @@ -53,7 +55,7 @@ void CFMDownsampler::addSample(q15_t sample) break; } m_packIndex++; - if(m_packIndex >= 2) + if(m_packIndex >= 2)//did we pack to samples ? m_packIndex = 0; } diff --git a/FMDownsampler.h b/FMDownsampler.h index fd17e0a..46a5239 100644 --- a/FMDownsampler.h +++ b/FMDownsampler.h @@ -32,10 +32,10 @@ public: private: CFMDownsampleRB m_ringBuffer; - union { - int32_t m_samplePack; - int8_t m_samplePackBytes[4]; - }; + + int32_t m_samplePack; + int32_t *m_samplePackBytes; + uint8_t m_packIndex; uint8_t m_downSampleIndex; }; From c81d13395b69c9b1eb9bf16201385834def03586 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Fri, 8 May 2020 17:12:30 +0200 Subject: [PATCH 3/4] Use correct types --- FMDownsampler.cpp | 30 +++++++++++++++--------------- FMDownsampler.h | 4 ++-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/FMDownsampler.cpp b/FMDownsampler.cpp index e44d251..3e2e02d 100644 --- a/FMDownsampler.cpp +++ b/FMDownsampler.cpp @@ -23,29 +23,29 @@ CFMDownsampler::CFMDownsampler(uint16_t length) : m_ringBuffer(length),//length might need tweaking -m_samplePack(0), -m_samplePackBytes(0), -m_packIndex(0), -m_downSampleIndex(0) +m_samplePack(0U), +m_samplePackPointer(0U), +m_packIndex(0U), +m_downSampleIndex(0U) { - m_samplePackBytes = &m_samplePack; + m_samplePackPointer = &m_samplePack; } void CFMDownsampler::addSample(q15_t sample) { //only take one of three samples - if(m_downSampleIndex == 0) { + if(m_downSampleIndex == 0U) { switch(m_packIndex){ case 0: - m_samplePack = int32_t(sample) << 12; + m_samplePack = uint32_t(sample) << 12; break; case 1:{ - m_samplePack |= int32_t(sample); + m_samplePack |= uint32_t(sample); //we did not use MSB; skip it - m_ringBuffer.put(m_samplePackBytes[1]); - m_ringBuffer.put(m_samplePackBytes[2]); - m_ringBuffer.put(m_samplePackBytes[3]); + m_ringBuffer.put(m_samplePackPointer[1U]); + m_ringBuffer.put(m_samplePackPointer[2U]); + m_ringBuffer.put(m_samplePackPointer[3U]); m_samplePack = 0;//reset the sample pack } @@ -55,11 +55,11 @@ void CFMDownsampler::addSample(q15_t sample) break; } m_packIndex++; - if(m_packIndex >= 2)//did we pack to samples ? - m_packIndex = 0; + if(m_packIndex >= 2U)//did we pack to samples ? + m_packIndex = 0U; } m_downSampleIndex++; - if(m_downSampleIndex >= 3) - m_downSampleIndex = 0; + if(m_downSampleIndex >= 3U) + m_downSampleIndex = 0U; } \ No newline at end of file diff --git a/FMDownsampler.h b/FMDownsampler.h index 46a5239..ad822a8 100644 --- a/FMDownsampler.h +++ b/FMDownsampler.h @@ -33,8 +33,8 @@ public: private: CFMDownsampleRB m_ringBuffer; - int32_t m_samplePack; - int32_t *m_samplePackBytes; + uint32_t m_samplePack; + uint32_t *m_samplePackPointer; uint8_t m_packIndex; uint8_t m_downSampleIndex; From bb731e7890c7f3e45db9a7cf01e53c99f6581dc1 Mon Sep 17 00:00:00 2001 From: Geoffrey Merck Date: Fri, 8 May 2020 17:15:23 +0200 Subject: [PATCH 4/4] Init pointer with null --- FMDownsampler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FMDownsampler.cpp b/FMDownsampler.cpp index 3e2e02d..381d2f4 100644 --- a/FMDownsampler.cpp +++ b/FMDownsampler.cpp @@ -24,7 +24,7 @@ CFMDownsampler::CFMDownsampler(uint16_t length) : m_ringBuffer(length),//length might need tweaking m_samplePack(0U), -m_samplePackPointer(0U), +m_samplePackPointer(NULL), m_packIndex(0U), m_downSampleIndex(0U) {