mirror of
https://github.com/portapack-mayhem/mayhem-firmware.git
synced 2025-08-15 00:27:40 +00:00
Formatted code (#1007)
* Updated style * Updated files * fixed new line * Updated spacing * File fix WIP * Updated to clang 13 * updated comment style * Removed old comment code
This commit is contained in:
@@ -46,98 +46,101 @@
|
||||
// Translate+rectangular filter
|
||||
// sample=307.2k, deviation=38400, symbol=19200
|
||||
// Length: 16 taps, 1 symbols, 2 cycles of sinusoid
|
||||
constexpr std::array<std::complex<float>, 16> rect_taps_307k2_38k4_1t_19k2_p { {
|
||||
{ 6.2500000000e-02f, 0.0000000000e+00f }, { 4.4194173824e-02f, 4.4194173824e-02f },
|
||||
{ 0.0000000000e+00f, 6.2500000000e-02f }, { -4.4194173824e-02f, 4.4194173824e-02f },
|
||||
{ -6.2500000000e-02f, 0.0000000000e+00f }, { -4.4194173824e-02f, -4.4194173824e-02f },
|
||||
{ 0.0000000000e+00f, -6.2500000000e-02f }, { 4.4194173824e-02f, -4.4194173824e-02f },
|
||||
{ 6.2500000000e-02f, 0.0000000000e+00f }, { 4.4194173824e-02f, 4.4194173824e-02f },
|
||||
{ 0.0000000000e+00f, 6.2500000000e-02f }, { -4.4194173824e-02f, 4.4194173824e-02f },
|
||||
{ -6.2500000000e-02f, 0.0000000000e+00f }, { -4.4194173824e-02f, -4.4194173824e-02f },
|
||||
{ 0.0000000000e+00f, -6.2500000000e-02f }, { 4.4194173824e-02f, -4.4194173824e-02f },
|
||||
} };
|
||||
constexpr std::array<std::complex<float>, 16> rect_taps_307k2_38k4_1t_19k2_p{{
|
||||
{6.2500000000e-02f, 0.0000000000e+00f},
|
||||
{4.4194173824e-02f, 4.4194173824e-02f},
|
||||
{0.0000000000e+00f, 6.2500000000e-02f},
|
||||
{-4.4194173824e-02f, 4.4194173824e-02f},
|
||||
{-6.2500000000e-02f, 0.0000000000e+00f},
|
||||
{-4.4194173824e-02f, -4.4194173824e-02f},
|
||||
{0.0000000000e+00f, -6.2500000000e-02f},
|
||||
{4.4194173824e-02f, -4.4194173824e-02f},
|
||||
{6.2500000000e-02f, 0.0000000000e+00f},
|
||||
{4.4194173824e-02f, 4.4194173824e-02f},
|
||||
{0.0000000000e+00f, 6.2500000000e-02f},
|
||||
{-4.4194173824e-02f, 4.4194173824e-02f},
|
||||
{-6.2500000000e-02f, 0.0000000000e+00f},
|
||||
{-4.4194173824e-02f, -4.4194173824e-02f},
|
||||
{0.0000000000e+00f, -6.2500000000e-02f},
|
||||
{4.4194173824e-02f, -4.4194173824e-02f},
|
||||
}};
|
||||
|
||||
class TPMSProcessor : public BasebandProcessor {
|
||||
public:
|
||||
TPMSProcessor();
|
||||
public:
|
||||
TPMSProcessor();
|
||||
|
||||
void execute(const buffer_c8_t& buffer) override;
|
||||
void execute(const buffer_c8_t& buffer) override;
|
||||
|
||||
private:
|
||||
static constexpr size_t baseband_fs = 2457600;
|
||||
private:
|
||||
static constexpr size_t baseband_fs = 2457600;
|
||||
|
||||
BasebandThread baseband_thread { baseband_fs, this, NORMALPRIO + 20, baseband::Direction::Receive };
|
||||
RSSIThread rssi_thread { NORMALPRIO + 10 };
|
||||
BasebandThread baseband_thread{baseband_fs, this, NORMALPRIO + 20, baseband::Direction::Receive};
|
||||
RSSIThread rssi_thread{NORMALPRIO + 10};
|
||||
|
||||
std::array<complex16_t, 512> dst { };
|
||||
const buffer_c16_t dst_buffer {
|
||||
dst.data(),
|
||||
dst.size()
|
||||
};
|
||||
std::array<complex16_t, 512> dst{};
|
||||
const buffer_c16_t dst_buffer{
|
||||
dst.data(),
|
||||
dst.size()};
|
||||
|
||||
dsp::decimate::FIRC8xR16x24FS4Decim4 decim_0 { };
|
||||
dsp::decimate::FIRC16xR16x16Decim2 decim_1 { };
|
||||
dsp::decimate::FIRC8xR16x24FS4Decim4 decim_0{};
|
||||
dsp::decimate::FIRC16xR16x16Decim2 decim_1{};
|
||||
|
||||
dsp::matched_filter::MatchedFilter mf_38k4_1t_19k2 { rect_taps_307k2_38k4_1t_19k2_p, 8 };
|
||||
dsp::matched_filter::MatchedFilter mf_38k4_1t_19k2{rect_taps_307k2_38k4_1t_19k2_p, 8};
|
||||
|
||||
clock_recovery::ClockRecovery<clock_recovery::FixedErrorFilter> clock_recovery_fsk_19k2 {
|
||||
38400, 19200, { 0.0555f },
|
||||
[this](const float raw_symbol) {
|
||||
const uint_fast8_t sliced_symbol = (raw_symbol >= 0.0f) ? 1 : 0;
|
||||
this->packet_builder_fsk_19k2_schrader.execute(sliced_symbol);
|
||||
}
|
||||
};
|
||||
PacketBuilder<BitPattern, NeverMatch, FixedLength> packet_builder_fsk_19k2_schrader {
|
||||
{ 0b010101010101010101010101010110, 30, 1 },
|
||||
{ },
|
||||
{ 160 },
|
||||
[this](const baseband::Packet& packet) {
|
||||
const TPMSPacketMessage message { tpms::SignalType::FSK_19k2_Schrader, packet };
|
||||
shared_memory.application_queue.push(message);
|
||||
}
|
||||
};
|
||||
clock_recovery::ClockRecovery<clock_recovery::FixedErrorFilter> clock_recovery_fsk_19k2{
|
||||
38400,
|
||||
19200,
|
||||
{0.0555f},
|
||||
[this](const float raw_symbol) {
|
||||
const uint_fast8_t sliced_symbol = (raw_symbol >= 0.0f) ? 1 : 0;
|
||||
this->packet_builder_fsk_19k2_schrader.execute(sliced_symbol);
|
||||
}};
|
||||
PacketBuilder<BitPattern, NeverMatch, FixedLength> packet_builder_fsk_19k2_schrader{
|
||||
{0b010101010101010101010101010110, 30, 1},
|
||||
{},
|
||||
{160},
|
||||
[this](const baseband::Packet& packet) {
|
||||
const TPMSPacketMessage message{tpms::SignalType::FSK_19k2_Schrader, packet};
|
||||
shared_memory.application_queue.push(message);
|
||||
}};
|
||||
|
||||
static constexpr float channel_rate_in = 307200.0f;
|
||||
static constexpr size_t channel_decimation = 2;
|
||||
static constexpr float channel_sample_rate = channel_rate_in / channel_decimation;
|
||||
OOKSlicerMagSquaredInt ook_slicer_5sps { channel_sample_rate / 8400 + 1};
|
||||
uint32_t slicer_history { 0 };
|
||||
static constexpr float channel_rate_in = 307200.0f;
|
||||
static constexpr size_t channel_decimation = 2;
|
||||
static constexpr float channel_sample_rate = channel_rate_in / channel_decimation;
|
||||
OOKSlicerMagSquaredInt ook_slicer_5sps{channel_sample_rate / 8400 + 1};
|
||||
uint32_t slicer_history{0};
|
||||
|
||||
OOKClockRecovery clock_recovery_ook_8k192 {
|
||||
channel_sample_rate / 8192.0f
|
||||
};
|
||||
OOKClockRecovery clock_recovery_ook_8k192{
|
||||
channel_sample_rate / 8192.0f};
|
||||
|
||||
PacketBuilder<BitPattern, NeverMatch, FixedLength> packet_builder_ook_8k192_schrader {
|
||||
/* Preamble: 11*2, 01*14, 11, 10
|
||||
* Payload: 37 Manchester-encoded bits
|
||||
* Bit rate: 4096 Hz
|
||||
*/
|
||||
{ 0b010101010101010101011110, 24, 0 },
|
||||
{ },
|
||||
{ 37 * 2 },
|
||||
[](const baseband::Packet& packet) {
|
||||
const TPMSPacketMessage message { tpms::SignalType::OOK_8k192_Schrader, packet };
|
||||
shared_memory.application_queue.push(message);
|
||||
}
|
||||
};
|
||||
PacketBuilder<BitPattern, NeverMatch, FixedLength> packet_builder_ook_8k192_schrader{
|
||||
/* Preamble: 11*2, 01*14, 11, 10
|
||||
* Payload: 37 Manchester-encoded bits
|
||||
* Bit rate: 4096 Hz
|
||||
*/
|
||||
{0b010101010101010101011110, 24, 0},
|
||||
{},
|
||||
{37 * 2},
|
||||
[](const baseband::Packet& packet) {
|
||||
const TPMSPacketMessage message{tpms::SignalType::OOK_8k192_Schrader, packet};
|
||||
shared_memory.application_queue.push(message);
|
||||
}};
|
||||
|
||||
OOKClockRecovery clock_recovery_ook_8k4 {
|
||||
channel_sample_rate / 8400.0f
|
||||
};
|
||||
OOKClockRecovery clock_recovery_ook_8k4{
|
||||
channel_sample_rate / 8400.0f};
|
||||
|
||||
PacketBuilder<BitPattern, NeverMatch, FixedLength> packet_builder_ook_8k4_schrader {
|
||||
/* Preamble: 01*40, 01, 10, 01, 01
|
||||
* Payload: 76 Manchester-encoded bits
|
||||
* Bit rate: 4200 Hz
|
||||
*/
|
||||
{ 0b01010101010101010101010101100101, 32, 0 },
|
||||
{ },
|
||||
{ 76 * 2 },
|
||||
[](const baseband::Packet& packet) {
|
||||
const TPMSPacketMessage message { tpms::SignalType::OOK_8k4_Schrader, packet };
|
||||
shared_memory.application_queue.push(message);
|
||||
}
|
||||
};
|
||||
PacketBuilder<BitPattern, NeverMatch, FixedLength> packet_builder_ook_8k4_schrader{
|
||||
/* Preamble: 01*40, 01, 10, 01, 01
|
||||
* Payload: 76 Manchester-encoded bits
|
||||
* Bit rate: 4200 Hz
|
||||
*/
|
||||
{0b01010101010101010101010101100101, 32, 0},
|
||||
{},
|
||||
{76 * 2},
|
||||
[](const baseband::Packet& packet) {
|
||||
const TPMSPacketMessage message{tpms::SignalType::OOK_8k4_Schrader, packet};
|
||||
shared_memory.application_queue.push(message);
|
||||
}};
|
||||
};
|
||||
|
||||
#endif/*__PROC_TPMS_H__*/
|
||||
#endif /*__PROC_TPMS_H__*/
|
||||
|
Reference in New Issue
Block a user