mirror of https://github.com/g4klx/MMDVM.git
Improve efficiency slightly.
This commit is contained in:
parent
dbd84d7803
commit
24ac2b902d
60
IO.cpp
60
IO.cpp
|
@ -42,11 +42,9 @@ m_txBuffer(TX_RINGBUFFER_SIZE),
|
||||||
m_rssiBuffer(RX_RINGBUFFER_SIZE),
|
m_rssiBuffer(RX_RINGBUFFER_SIZE),
|
||||||
m_dcFilter(),
|
m_dcFilter(),
|
||||||
m_dcState(),
|
m_dcState(),
|
||||||
m_boxcar5Filter1(),
|
m_boxcar5Filter(),
|
||||||
m_boxcar5Filter2(),
|
|
||||||
m_boxcar10Filter(),
|
m_boxcar10Filter(),
|
||||||
m_boxcar5State1(),
|
m_boxcar5State(),
|
||||||
m_boxcar5State2(),
|
|
||||||
m_boxcar10State(),
|
m_boxcar10State(),
|
||||||
m_pttInvert(false),
|
m_pttInvert(false),
|
||||||
m_rxLevel(128 * 128),
|
m_rxLevel(128 * 128),
|
||||||
|
@ -66,8 +64,7 @@ m_dacOverflow(0U),
|
||||||
m_watchdog(0U),
|
m_watchdog(0U),
|
||||||
m_lockout(false)
|
m_lockout(false)
|
||||||
{
|
{
|
||||||
::memset(m_boxcar5State1, 0x00U, 30U * sizeof(q15_t));
|
::memset(m_boxcar5State, 0x00U, 30U * sizeof(q15_t));
|
||||||
::memset(m_boxcar5State2, 0x00U, 30U * sizeof(q15_t));
|
|
||||||
::memset(m_boxcar10State, 0x00U, 40U * sizeof(q15_t));
|
::memset(m_boxcar10State, 0x00U, 40U * sizeof(q15_t));
|
||||||
::memset(m_dcState, 0x00U, 4U * sizeof(q31_t));
|
::memset(m_dcState, 0x00U, 4U * sizeof(q31_t));
|
||||||
|
|
||||||
|
@ -76,13 +73,9 @@ m_lockout(false)
|
||||||
m_dcFilter.pCoeffs = DC_FILTER;
|
m_dcFilter.pCoeffs = DC_FILTER;
|
||||||
m_dcFilter.postShift = 0;
|
m_dcFilter.postShift = 0;
|
||||||
|
|
||||||
m_boxcar5Filter1.numTaps = BOXCAR5_FILTER_LEN;
|
m_boxcar5Filter.numTaps = BOXCAR5_FILTER_LEN;
|
||||||
m_boxcar5Filter1.pState = m_boxcar5State1;
|
m_boxcar5Filter.pState = m_boxcar5State;
|
||||||
m_boxcar5Filter1.pCoeffs = BOXCAR5_FILTER;
|
m_boxcar5Filter.pCoeffs = BOXCAR5_FILTER;
|
||||||
|
|
||||||
m_boxcar5Filter2.numTaps = BOXCAR5_FILTER_LEN;
|
|
||||||
m_boxcar5Filter2.pState = m_boxcar5State2;
|
|
||||||
m_boxcar5Filter2.pCoeffs = BOXCAR5_FILTER;
|
|
||||||
|
|
||||||
m_boxcar10Filter.numTaps = BOXCAR10_FILTER_LEN;
|
m_boxcar10Filter.numTaps = BOXCAR10_FILTER_LEN;
|
||||||
m_boxcar10Filter.pState = m_boxcar10State;
|
m_boxcar10Filter.pState = m_boxcar10State;
|
||||||
|
@ -288,13 +281,9 @@ void CIO::process()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (m_modemState == STATE_IDLE) {
|
if (m_modemState == STATE_IDLE) {
|
||||||
if (m_dstarEnable || m_ysfEnable || m_p25Enable) {
|
if (m_dstarEnable || m_dmrEnable || m_ysfEnable || m_p25Enable) {
|
||||||
q15_t vals[RX_BLOCK_SIZE];
|
q15_t vals[RX_BLOCK_SIZE];
|
||||||
#if defined(USE_DCBLOCKER)
|
::arm_fir_fast_q15(&m_boxcar5Filter, samples, vals, RX_BLOCK_SIZE);
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, dcSamples, vals, RX_BLOCK_SIZE);
|
|
||||||
#else
|
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, samples, vals, RX_BLOCK_SIZE);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (m_dstarEnable)
|
if (m_dstarEnable)
|
||||||
dstarRX.samples(vals, rssi, RX_BLOCK_SIZE);
|
dstarRX.samples(vals, rssi, RX_BLOCK_SIZE);
|
||||||
|
@ -304,16 +293,13 @@ void CIO::process()
|
||||||
|
|
||||||
if (m_ysfEnable)
|
if (m_ysfEnable)
|
||||||
ysfRX.samples(vals, rssi, RX_BLOCK_SIZE);
|
ysfRX.samples(vals, rssi, RX_BLOCK_SIZE);
|
||||||
}
|
|
||||||
|
|
||||||
if (m_dmrEnable) {
|
if (m_dmrEnable) {
|
||||||
q15_t vals[RX_BLOCK_SIZE];
|
if (m_duplex)
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter2, samples, vals, RX_BLOCK_SIZE);
|
dmrIdleRX.samples(vals, RX_BLOCK_SIZE);
|
||||||
|
else
|
||||||
if (m_duplex)
|
dmrDMORX.samples(vals, rssi, RX_BLOCK_SIZE);
|
||||||
dmrIdleRX.samples(vals, RX_BLOCK_SIZE);
|
}
|
||||||
else
|
|
||||||
dmrDMORX.samples(vals, rssi, RX_BLOCK_SIZE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_nxdnEnable) {
|
if (m_nxdnEnable) {
|
||||||
|
@ -330,9 +316,9 @@ void CIO::process()
|
||||||
if (m_dstarEnable) {
|
if (m_dstarEnable) {
|
||||||
q15_t vals[RX_BLOCK_SIZE];
|
q15_t vals[RX_BLOCK_SIZE];
|
||||||
#if defined(USE_DCBLOCKER)
|
#if defined(USE_DCBLOCKER)
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, dcSamples, vals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcar5Filter, dcSamples, vals, RX_BLOCK_SIZE);
|
||||||
#else
|
#else
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, samples, vals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcar5Filter, samples, vals, RX_BLOCK_SIZE);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dstarRX.samples(vals, rssi, RX_BLOCK_SIZE);
|
dstarRX.samples(vals, rssi, RX_BLOCK_SIZE);
|
||||||
|
@ -340,7 +326,7 @@ void CIO::process()
|
||||||
} else if (m_modemState == STATE_DMR) {
|
} else if (m_modemState == STATE_DMR) {
|
||||||
if (m_dmrEnable) {
|
if (m_dmrEnable) {
|
||||||
q15_t vals[RX_BLOCK_SIZE];
|
q15_t vals[RX_BLOCK_SIZE];
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter2, samples, vals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcar5Filter, samples, vals, RX_BLOCK_SIZE);
|
||||||
|
|
||||||
if (m_duplex) {
|
if (m_duplex) {
|
||||||
// If the transmitter isn't on, use the DMR idle RX to detect the wakeup CSBKs
|
// If the transmitter isn't on, use the DMR idle RX to detect the wakeup CSBKs
|
||||||
|
@ -356,9 +342,9 @@ void CIO::process()
|
||||||
if (m_ysfEnable) {
|
if (m_ysfEnable) {
|
||||||
q15_t vals[RX_BLOCK_SIZE];
|
q15_t vals[RX_BLOCK_SIZE];
|
||||||
#if defined(USE_DCBLOCKER)
|
#if defined(USE_DCBLOCKER)
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, dcSamples, vals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcar5Filter, dcSamples, vals, RX_BLOCK_SIZE);
|
||||||
#else
|
#else
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, samples, vals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcar5Filter, samples, vals, RX_BLOCK_SIZE);
|
||||||
#endif
|
#endif
|
||||||
ysfRX.samples(vals, rssi, RX_BLOCK_SIZE);
|
ysfRX.samples(vals, rssi, RX_BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
|
@ -366,9 +352,9 @@ void CIO::process()
|
||||||
if (m_p25Enable) {
|
if (m_p25Enable) {
|
||||||
q15_t vals[RX_BLOCK_SIZE];
|
q15_t vals[RX_BLOCK_SIZE];
|
||||||
#if defined(USE_DCBLOCKER)
|
#if defined(USE_DCBLOCKER)
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, dcSamples, vals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcar5Filter, dcSamples, vals, RX_BLOCK_SIZE);
|
||||||
#else
|
#else
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, samples, vals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcar5Filter, samples, vals, RX_BLOCK_SIZE);
|
||||||
#endif
|
#endif
|
||||||
p25RX.samples(vals, rssi, RX_BLOCK_SIZE);
|
p25RX.samples(vals, rssi, RX_BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
|
@ -385,9 +371,9 @@ void CIO::process()
|
||||||
} else if (m_modemState == STATE_DSTARCAL) {
|
} else if (m_modemState == STATE_DSTARCAL) {
|
||||||
q15_t vals[RX_BLOCK_SIZE];
|
q15_t vals[RX_BLOCK_SIZE];
|
||||||
#if defined(USE_DCBLOCKER)
|
#if defined(USE_DCBLOCKER)
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, dcSamples, vals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcar5Filter, dcSamples, vals, RX_BLOCK_SIZE);
|
||||||
#else
|
#else
|
||||||
::arm_fir_fast_q15(&m_boxcar5Filter1, samples, vals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcar5Filter, samples, vals, RX_BLOCK_SIZE);
|
||||||
#endif
|
#endif
|
||||||
calDStarRX.samples(vals, RX_BLOCK_SIZE);
|
calDStarRX.samples(vals, RX_BLOCK_SIZE);
|
||||||
} else if (m_modemState == STATE_RSSICAL) {
|
} else if (m_modemState == STATE_RSSICAL) {
|
||||||
|
|
6
IO.h
6
IO.h
|
@ -66,11 +66,9 @@ private:
|
||||||
arm_biquad_casd_df1_inst_q31 m_dcFilter;
|
arm_biquad_casd_df1_inst_q31 m_dcFilter;
|
||||||
q31_t m_dcState[4];
|
q31_t m_dcState[4];
|
||||||
|
|
||||||
arm_fir_instance_q15 m_boxcar5Filter1;
|
arm_fir_instance_q15 m_boxcar5Filter;
|
||||||
arm_fir_instance_q15 m_boxcar5Filter2;
|
|
||||||
arm_fir_instance_q15 m_boxcar10Filter;
|
arm_fir_instance_q15 m_boxcar10Filter;
|
||||||
q15_t m_boxcar5State1[30U]; // NoTaps + BlockSize - 1, 6 + 20 - 1 plus some spare
|
q15_t m_boxcar5State[30U]; // NoTaps + BlockSize - 1, 6 + 20 - 1 plus some spare
|
||||||
q15_t m_boxcar5State2[30U]; // NoTaps + BlockSize - 1, 6 + 20 - 1 plus some spare
|
|
||||||
q15_t m_boxcar10State[40U]; // NoTaps + BlockSize - 1, 10 + 20 - 1 plus some spare
|
q15_t m_boxcar10State[40U]; // NoTaps + BlockSize - 1, 10 + 20 - 1 plus some spare
|
||||||
|
|
||||||
bool m_pttInvert;
|
bool m_pttInvert;
|
||||||
|
|
Loading…
Reference in New Issue