Add some baseband constructors.

Some of them I think I took out earlier...
This commit is contained in:
Jared Boone 2015-11-10 14:04:50 -08:00
parent add6171410
commit 111a5f10c0
4 changed files with 36 additions and 4 deletions

View File

@ -38,6 +38,17 @@ public:
By32,
};
constexpr ChannelDecimator(
) : decimation_factor { DecimationFactor::By32 }
{
}
constexpr ChannelDecimator(
const DecimationFactor decimation_factor
) : decimation_factor { decimation_factor }
{
}
void set_decimation_factor(const DecimationFactor f) {
decimation_factor = f;
}
@ -69,7 +80,7 @@ private:
dsp::decimate::DecimateBy2CIC3 cic_3;
dsp::decimate::DecimateBy2CIC3 cic_4;
DecimationFactor decimation_factor = DecimationFactor::By32;
DecimationFactor decimation_factor;
buffer_c16_t execute_decimation(buffer_c8_t buffer);
};

View File

@ -116,6 +116,16 @@ private:
template<typename ErrorFilter>
class ClockRecovery {
public:
ClockRecovery(
const float sampling_rate,
const float symbol_rate,
ErrorFilter error_filter,
std::function<void(const float)> symbol_handler
) : symbol_handler { symbol_handler }
{
configure(sampling_rate, symbol_rate, error_filter);
}
ClockRecovery(
std::function<void(const float)> symbol_handler
) : symbol_handler { symbol_handler }

View File

@ -49,9 +49,17 @@ public:
using taps_t = tap_t[];
template<class T>
void configure(
MatchedFilter(
const T& taps,
size_t decimation_factor = 1
) {
configure(taps, decimation_factor);
}
template<class T>
void configure(
const T& taps,
size_t decimation_factor
) {
samples_ = std::make_unique<samples_t>(taps.size());
taps_reversed_ = std::make_unique<taps_t>(taps.size());

View File

@ -37,6 +37,8 @@
#include <cstddef>
#include <bitset>
#include "ais_baseband.hpp"
class FSKProcessor : public BasebandProcessor {
public:
using payload_t = std::bitset<1024>;
@ -49,10 +51,11 @@ public:
void execute(buffer_c8_t buffer) override;
private:
ChannelDecimator decimator;
dsp::matched_filter::MatchedFilter mf;
ChannelDecimator decimator { ChannelDecimator::DecimationFactor::By32 };
dsp::matched_filter::MatchedFilter mf { baseband::ais::rrc_taps_76k8_4t_p, 4 };
clock_recovery::ClockRecovery<clock_recovery::FixedErrorFilter> clock_recovery {
19200, 9600, { 0.0555f },
[this](const float symbol) { this->consume_symbol(symbol); }
};
symbol_coding::NRZIDecoder nrzi_decode;