diff --git a/FM.cpp b/FM.cpp index 3fedf2e..f3a8fa5 100644 --- a/FM.cpp +++ b/FM.cpp @@ -58,28 +58,27 @@ m_hangTimer() m_filter.pCoeffs = FILTER_COEFFS; } -void CFM::samples(bool cos, q15_t* samples, uint8_t length) +void CFM::samples(q15_t* samples, uint8_t length) { bool validCTCSS = m_ctcssRX.process(samples, length); - stateMachine(validCTCSS /*&& cos*/, length); + stateMachine(validCTCSS, length); if (m_modemState != STATE_FM) return; q15_t currentSample; - for(uint8_t i = 0U; i < length; i++) { + for (uint8_t i = 0U; i < length; i++) { currentSample = samples[i];//save to a local variable to avoid indirection on every access // Only let audio through when relaying audio - if (m_state != FS_RELAYING && m_state != FS_KERCHUNK) { + if (m_state != FS_RELAYING && m_state != FS_KERCHUNK) currentSample = 0U; - } - if(!m_callsign.isRunning()) + if (!m_callsign.isRunning()) currentSample += m_rfAck.getAudio(); - if(!m_rfAck.isRunning()) + if (!m_rfAck.isRunning()) currentSample += m_callsign.getAudio(); if (!m_callsign.isRunning() && !m_rfAck.isRunning()) @@ -197,7 +196,7 @@ void CFM::stateMachine(bool validSignal, uint8_t length) void CFM::listeningState(bool validSignal) { - if(validSignal) { + if (validSignal) { if (m_kerchunkTimer.getTimeout() > 0U) { DEBUG1("State to KERCHUNK"); m_state = FS_KERCHUNK; diff --git a/FM.h b/FM.h index 96ba7de..8fd4bde 100644 --- a/FM.h +++ b/FM.h @@ -26,7 +26,6 @@ #include "FMTimeout.h" #include "FMKeyer.h" #include "FMTimer.h" -#include "FMRB.h" enum FM_STATE { FS_LISTENING, @@ -42,7 +41,7 @@ class CFM { public: CFM(); - void samples(bool cos, q15_t* samples, uint8_t length); + void samples(q15_t* samples, uint8_t length); void process(); diff --git a/FMKeyer.h b/FMKeyer.h index 88308e6..2d85499 100644 --- a/FMKeyer.h +++ b/FMKeyer.h @@ -28,7 +28,6 @@ public: uint8_t setParams(const char* text, uint8_t speed, uint16_t frequency, uint8_t level); void getAudio(q15_t* samples, uint8_t length); - q15_t getAudio(); void start(); diff --git a/FMRB.cpp b/FMRB.cpp deleted file mode 100644 index 7f46195..0000000 --- a/FMRB.cpp +++ /dev/null @@ -1,102 +0,0 @@ -/* -TX fifo control - Copyright (C) KI6ZUM 2015 -Copyright (C) 2015,2016,2020 by Jonathan Naylor G4KLX - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this library; if not, write to the -Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, -Boston, MA 02110-1301, USA. -*/ - -#include "FMRB.h" - -CFMRB::CFMRB(uint16_t length) : -m_length(length), -m_head(0U), -m_tail(0U), -m_full(false), -m_overflow(false) -{ - m_samples = new q15_t[length]; -} - -uint16_t CFMRB::getSpace() const -{ - uint16_t n = 0U; - - if (m_tail == m_head) - n = m_full ? 0U : m_length; - else if (m_tail < m_head) - n = m_length - m_head + m_tail; - else - n = m_tail - m_head; - - if (n > m_length) - n = 0U; - - return n; -} - -uint16_t CFMRB::getData() const -{ - if (m_tail == m_head) - return m_full ? m_length : 0U; - else if (m_tail < m_head) - return m_head - m_tail; - else - return m_length - m_tail + m_head; -} - -bool CFMRB::put(q15_t sample) -{ - if (m_full) { - m_overflow = true; - return false; - } - - m_samples[m_head] = sample; - - m_head++; - if (m_head >= m_length) - m_head = 0U; - - if (m_head == m_tail) - m_full = true; - - return true; -} - -bool CFMRB::get(q15_t& sample) -{ - if (m_head == m_tail && !m_full) - return false; - - sample = m_samples[m_tail]; - - m_full = false; - - m_tail++; - if (m_tail >= m_length) - m_tail = 0U; - - return true; -} - -bool CFMRB::hasOverflowed() -{ - bool overflow = m_overflow; - - m_overflow = false; - - return overflow; -} diff --git a/FMRB.h b/FMRB.h deleted file mode 100644 index 3d641cf..0000000 --- a/FMRB.h +++ /dev/null @@ -1,70 +0,0 @@ -/* -Serial fifo control - Copyright (C) KI6ZUM 2015 -Copyright (C) 2015,2016,2020 by Jonathan Naylor G4KLX - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public -License as published by the Free Software Foundation; either -version 2 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -You should have received a copy of the GNU Library General Public -License along with this library; if not, write to the -Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, -Boston, MA 02110-1301, USA. -*/ - -#if !defined(FMRB_H) -#define FMRB_H - -#if defined(STM32F4XX) -#include "stm32f4xx.h" -#elif defined(STM32F7XX) -#include "stm32f7xx.h" -#elif defined(STM32F105xC) -#include "stm32f1xx.h" -#include -#else -#include -#endif - -#if defined(__SAM3X8E__) || defined(STM32F105xC) -#define ARM_MATH_CM3 -#elif defined(STM32F7XX) -#define ARM_MATH_CM7 -#elif defined(STM32F4XX) || defined(__MK20DX256__) || defined(__MK64FX512__) || defined(__MK66FX1M0__) -#define ARM_MATH_CM4 -#else -#error "Unknown processor type" -#endif - -#include - -class CFMRB { -public: - CFMRB(uint16_t length); - - uint16_t getSpace() const; - - uint16_t getData() const; - - bool put(q15_t sample); - - bool get(q15_t& sample); - - bool hasOverflowed(); - -private: - uint16_t m_length; - volatile q15_t* m_samples; - volatile uint16_t m_head; - volatile uint16_t m_tail; - volatile bool m_full; - bool m_overflow; -}; - -#endif diff --git a/IO.cpp b/IO.cpp index ceae6ab..a26b6d1 100644 --- a/IO.cpp +++ b/IO.cpp @@ -370,8 +370,7 @@ void CIO::process() FMVals[i] = q15_t(__SSAT((res1 >> 15), 16)); } #endif - bool cos = getCOSInt(); - fm.samples(cos, FMVals, RX_BLOCK_SIZE); + fm.samples(FMVals, RX_BLOCK_SIZE); } } else if (m_modemState == STATE_DSTAR) { if (m_dstarEnable) { @@ -444,8 +443,7 @@ void CIO::process() FMVals[i] = q15_t(__SSAT((res1 >> 15), 16)); } #endif - bool cos = getCOSInt(); - fm.samples(cos, FMVals, RX_BLOCK_SIZE); + fm.samples(FMVals, RX_BLOCK_SIZE); } else if (m_modemState == STATE_DSTARCAL) { q15_t GMSKVals[RX_BLOCK_SIZE]; ::arm_fir_fast_q15(&m_gaussianFilter, samples, GMSKVals, RX_BLOCK_SIZE); diff --git a/SerialPort.cpp b/SerialPort.cpp index 1490c8c..0d9be11 100644 --- a/SerialPort.cpp +++ b/SerialPort.cpp @@ -101,7 +101,7 @@ const uint8_t MMDVM_DEBUG5 = 0xF5U; #define HW_TYPE "MMDVM" #endif -#define DESCRIPTION "20200420 (D-Star/DMR/System Fusion/P25/NXDN/POCSAG/FM)" +#define DESCRIPTION "20200421 (D-Star/DMR/System Fusion/P25/NXDN/POCSAG/FM)" #if defined(GITVERSION) #define concat(h, a, b, c) h " " a " " b " GitID #" c ""