From 220b7b0a6ac4269d8fecbbb895767d4bc7e63f09 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Fri, 29 Jan 2016 22:27:18 -0800 Subject: [PATCH] Add SSB demodulator. --- firmware/baseband/dsp_demodulate.cpp | 17 +++++++++++++++++ firmware/baseband/dsp_demodulate.hpp | 8 ++++++++ 2 files changed, 25 insertions(+) diff --git a/firmware/baseband/dsp_demodulate.cpp b/firmware/baseband/dsp_demodulate.cpp index b6cbc45ef..6645f424b 100644 --- a/firmware/baseband/dsp_demodulate.cpp +++ b/firmware/baseband/dsp_demodulate.cpp @@ -55,6 +55,23 @@ buffer_f32_t AM::execute( return { dst.p, src.count, src.sampling_rate }; } + +buffer_f32_t SSB::execute( + const buffer_c16_t& src, + const buffer_f32_t& dst +) { + const complex16_t* src_p = src.p; + const auto src_end = &src.p[src.count]; + auto dst_p = dst.p; + while(src_p < src_end) { + *(dst_p++) = (src_p++)->real(); + *(dst_p++) = (src_p++)->real(); + *(dst_p++) = (src_p++)->real(); + *(dst_p++) = (src_p++)->real(); + } + + return { dst.p, src.count, src.sampling_rate }; +} /* static inline float angle_approx_4deg0(const complex32_t t) { const auto x = static_cast(t.imag()) / static_cast(t.real()); diff --git a/firmware/baseband/dsp_demodulate.hpp b/firmware/baseband/dsp_demodulate.hpp index c93d3b196..d7117b9d9 100644 --- a/firmware/baseband/dsp_demodulate.hpp +++ b/firmware/baseband/dsp_demodulate.hpp @@ -35,6 +35,14 @@ public: ); }; +class SSB { +public: + buffer_f32_t execute( + const buffer_c16_t& src, + const buffer_f32_t& dst + ); +}; + class FM { public: buffer_f32_t execute(