mirror of https://github.com/g4klx/MMDVM.git
Small code cleanups.
This commit is contained in:
parent
23ff29c8f1
commit
03f5056236
15
FM.cpp
15
FM.cpp
|
@ -58,28 +58,27 @@ m_hangTimer()
|
||||||
m_filter.pCoeffs = FILTER_COEFFS;
|
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);
|
bool validCTCSS = m_ctcssRX.process(samples, length);
|
||||||
|
|
||||||
stateMachine(validCTCSS /*&& cos*/, length);
|
stateMachine(validCTCSS, length);
|
||||||
|
|
||||||
if (m_modemState != STATE_FM)
|
if (m_modemState != STATE_FM)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
q15_t currentSample;
|
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
|
currentSample = samples[i];//save to a local variable to avoid indirection on every access
|
||||||
|
|
||||||
// Only let audio through when relaying audio
|
// 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;
|
currentSample = 0U;
|
||||||
}
|
|
||||||
|
|
||||||
if(!m_callsign.isRunning())
|
if (!m_callsign.isRunning())
|
||||||
currentSample += m_rfAck.getAudio();
|
currentSample += m_rfAck.getAudio();
|
||||||
|
|
||||||
if(!m_rfAck.isRunning())
|
if (!m_rfAck.isRunning())
|
||||||
currentSample += m_callsign.getAudio();
|
currentSample += m_callsign.getAudio();
|
||||||
|
|
||||||
if (!m_callsign.isRunning() && !m_rfAck.isRunning())
|
if (!m_callsign.isRunning() && !m_rfAck.isRunning())
|
||||||
|
@ -197,7 +196,7 @@ void CFM::stateMachine(bool validSignal, uint8_t length)
|
||||||
|
|
||||||
void CFM::listeningState(bool validSignal)
|
void CFM::listeningState(bool validSignal)
|
||||||
{
|
{
|
||||||
if(validSignal) {
|
if (validSignal) {
|
||||||
if (m_kerchunkTimer.getTimeout() > 0U) {
|
if (m_kerchunkTimer.getTimeout() > 0U) {
|
||||||
DEBUG1("State to KERCHUNK");
|
DEBUG1("State to KERCHUNK");
|
||||||
m_state = FS_KERCHUNK;
|
m_state = FS_KERCHUNK;
|
||||||
|
|
3
FM.h
3
FM.h
|
@ -26,7 +26,6 @@
|
||||||
#include "FMTimeout.h"
|
#include "FMTimeout.h"
|
||||||
#include "FMKeyer.h"
|
#include "FMKeyer.h"
|
||||||
#include "FMTimer.h"
|
#include "FMTimer.h"
|
||||||
#include "FMRB.h"
|
|
||||||
|
|
||||||
enum FM_STATE {
|
enum FM_STATE {
|
||||||
FS_LISTENING,
|
FS_LISTENING,
|
||||||
|
@ -42,7 +41,7 @@ class CFM {
|
||||||
public:
|
public:
|
||||||
CFM();
|
CFM();
|
||||||
|
|
||||||
void samples(bool cos, q15_t* samples, uint8_t length);
|
void samples(q15_t* samples, uint8_t length);
|
||||||
|
|
||||||
void process();
|
void process();
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,6 @@ public:
|
||||||
uint8_t setParams(const char* text, uint8_t speed, uint16_t frequency, uint8_t level);
|
uint8_t setParams(const char* text, uint8_t speed, uint16_t frequency, uint8_t level);
|
||||||
|
|
||||||
void getAudio(q15_t* samples, uint8_t length);
|
void getAudio(q15_t* samples, uint8_t length);
|
||||||
|
|
||||||
q15_t getAudio();
|
q15_t getAudio();
|
||||||
|
|
||||||
void start();
|
void start();
|
||||||
|
|
102
FMRB.cpp
102
FMRB.cpp
|
@ -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;
|
|
||||||
}
|
|
70
FMRB.h
70
FMRB.h
|
@ -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 <cstddef>
|
|
||||||
#else
|
|
||||||
#include <Arduino.h>
|
|
||||||
#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 <arm_math.h>
|
|
||||||
|
|
||||||
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
|
|
6
IO.cpp
6
IO.cpp
|
@ -370,8 +370,7 @@ void CIO::process()
|
||||||
FMVals[i] = q15_t(__SSAT((res1 >> 15), 16));
|
FMVals[i] = q15_t(__SSAT((res1 >> 15), 16));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
bool cos = getCOSInt();
|
fm.samples(FMVals, RX_BLOCK_SIZE);
|
||||||
fm.samples(cos, FMVals, RX_BLOCK_SIZE);
|
|
||||||
}
|
}
|
||||||
} else if (m_modemState == STATE_DSTAR) {
|
} else if (m_modemState == STATE_DSTAR) {
|
||||||
if (m_dstarEnable) {
|
if (m_dstarEnable) {
|
||||||
|
@ -444,8 +443,7 @@ void CIO::process()
|
||||||
FMVals[i] = q15_t(__SSAT((res1 >> 15), 16));
|
FMVals[i] = q15_t(__SSAT((res1 >> 15), 16));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
bool cos = getCOSInt();
|
fm.samples(FMVals, RX_BLOCK_SIZE);
|
||||||
fm.samples(cos, FMVals, RX_BLOCK_SIZE);
|
|
||||||
} else if (m_modemState == STATE_DSTARCAL) {
|
} else if (m_modemState == STATE_DSTARCAL) {
|
||||||
q15_t GMSKVals[RX_BLOCK_SIZE];
|
q15_t GMSKVals[RX_BLOCK_SIZE];
|
||||||
::arm_fir_fast_q15(&m_gaussianFilter, samples, GMSKVals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_gaussianFilter, samples, GMSKVals, RX_BLOCK_SIZE);
|
||||||
|
|
|
@ -101,7 +101,7 @@ const uint8_t MMDVM_DEBUG5 = 0xF5U;
|
||||||
#define HW_TYPE "MMDVM"
|
#define HW_TYPE "MMDVM"
|
||||||
#endif
|
#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)
|
#if defined(GITVERSION)
|
||||||
#define concat(h, a, b, c) h " " a " " b " GitID #" c ""
|
#define concat(h, a, b, c) h " " a " " b " GitID #" c ""
|
||||||
|
|
Loading…
Reference in New Issue