From 1f3925a46252a344789a832c6ff29626ae645796 Mon Sep 17 00:00:00 2001 From: Rob Riggs Date: Mon, 25 Oct 2021 20:20:57 -0500 Subject: [PATCH] Fix M17 RX reverse polarity. --- TNC/KissHardware.cpp | 6 +++--- TNC/M17Demodulator.cpp | 10 ++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/TNC/KissHardware.cpp b/TNC/KissHardware.cpp index a0cc572..c224061 100644 --- a/TNC/KissHardware.cpp +++ b/TNC/KissHardware.cpp @@ -43,13 +43,13 @@ int powerOffViaUSB(void) namespace mobilinkd { namespace tnc { namespace kiss { #if defined(NUCLEOTNC) -const char FIRMWARE_VERSION[] = "2.4.0"; +const char FIRMWARE_VERSION[] = "2.4.1"; const char HARDWARE_VERSION[] = "Mobilinkd NucleoTNC"; #elif defined(STM32L433xx) -const char FIRMWARE_VERSION[] = "2.4.0"; +const char FIRMWARE_VERSION[] = "2.4.1"; const char HARDWARE_VERSION[] = "Mobilinkd TNC3 2.1.1"; #elif defined(STM32L4P5xx) -const char FIRMWARE_VERSION[] = "2.4.0"; +const char FIRMWARE_VERSION[] = "2.4.1"; const char HARDWARE_VERSION[] = "Mobilinkd TNC3+ Rev A"; #endif Hardware& settings() diff --git a/TNC/M17Demodulator.cpp b/TNC/M17Demodulator.cpp index c60f86f..02d82a9 100644 --- a/TNC/M17Demodulator.cpp +++ b/TNC/M17Demodulator.cpp @@ -19,6 +19,8 @@ namespace mobilinkd { namespace tnc { //m17::Indicator dcd_indicator{GPIOA, GPIO_PIN_2}; //m17::Indicator str_indicator{GPIOA, GPIO_PIN_7}; +static float scale = 1.f / 2560.f; + void M17Demodulator::start() { SysClock72(); @@ -29,6 +31,7 @@ void M17Demodulator::start() demod_filter.init(m17::rrc_taps_f15); passall(kiss::settings().options & KISS_OPTION_PASSALL); polarity = kiss::settings().rx_rev_polarity() ? -1 : 1; + scale = 1.f / 2560.f * polarity; audio::virtual_ground = (VREF + 1) / 2; hadc1.Init.OversamplingMode = ENABLE; @@ -57,7 +60,7 @@ void M17Demodulator::update_values(uint8_t index) { correlator.apply([this,index](float t){dev.sample(t);}, index); dev.update(); - idev = dev.idev() * polarity; + idev = dev.idev(); sync_sample_index = index; } @@ -87,9 +90,6 @@ void M17Demodulator::dcd_off() void M17Demodulator::initialize(const q15_t* input) { - - static constexpr float scale = 1.f / 2560.f; - for (size_t i = 0; i != ADC_BLOCK_SIZE; i++) { demod_buffer[i] = float(input[i]) * scale; } @@ -451,8 +451,6 @@ hdlc::IoFrame* M17Demodulator::operator()(const q15_t* input) // Do adc_micro_adjustment() here? // adc_micro_adjustment(); - static constexpr float scale = 1.f / 2560.f; - for (size_t i = 0; i != ADC_BLOCK_SIZE; i++) { demod_buffer[i] = float(input[i]) * scale; }