mirror of
https://github.com/g4klx/MMDVM.git
synced 2026-10-16 16:54:12 +02:00
Improve the code efficiency slightly.
This commit is contained in:
@@ -75,14 +75,14 @@ void CFM::samples(bool cos, const q15_t* samples, uint8_t length)
|
|||||||
// ARMv7-M has hardware integer division
|
// ARMv7-M has hardware integer division
|
||||||
q15_t currentSample = q15_t((q31_t(samples[i]) << 8) / m_rxLevel);
|
q15_t currentSample = q15_t((q31_t(samples[i]) << 8) / m_rxLevel);
|
||||||
|
|
||||||
uint8_t ctcssState = m_ctcssRX.process(currentSample);
|
|
||||||
|
|
||||||
switch (m_accessMode) {
|
switch (m_accessMode) {
|
||||||
case 0U:
|
case 0U:
|
||||||
stateMachine(cos);
|
stateMachine(cos);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1U:
|
case 1U: {
|
||||||
|
uint8_t ctcssState = m_ctcssRX.process(currentSample);
|
||||||
|
|
||||||
// Delay the audio by 100ms to better match the CTCSS detector output
|
// Delay the audio by 100ms to better match the CTCSS detector output
|
||||||
m_inputRB.put(currentSample);
|
m_inputRB.put(currentSample);
|
||||||
m_inputRB.get(currentSample);
|
m_inputRB.get(currentSample);
|
||||||
@@ -93,18 +93,22 @@ void CFM::samples(bool cos, const q15_t* samples, uint8_t length)
|
|||||||
bool validCTCSS = CTCSS_VALID(ctcssState);
|
bool validCTCSS = CTCSS_VALID(ctcssState);
|
||||||
stateMachine(validCTCSS);
|
stateMachine(validCTCSS);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2U:
|
case 2U: {
|
||||||
|
uint8_t ctcssState = m_ctcssRX.process(currentSample);
|
||||||
if (CTCSS_NOT_READY(ctcssState) && m_modemState != STATE_FM) {
|
if (CTCSS_NOT_READY(ctcssState) && m_modemState != STATE_FM) {
|
||||||
// Not enough samples to determine if you have CTCSS, just carry on
|
// Not enough samples to determine if you have CTCSS, just carry on
|
||||||
} else {
|
} else {
|
||||||
bool validCTCSS = CTCSS_VALID(ctcssState);
|
bool validCTCSS = CTCSS_VALID(ctcssState);
|
||||||
stateMachine(validCTCSS && cos);
|
stateMachine(validCTCSS && cos);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default: {
|
||||||
|
uint8_t ctcssState = m_ctcssRX.process(currentSample);
|
||||||
if (CTCSS_NOT_READY(ctcssState) && m_modemState != STATE_FM) {
|
if (CTCSS_NOT_READY(ctcssState) && m_modemState != STATE_FM) {
|
||||||
// Not enough samples to determine if you have CTCSS, just carry on
|
// Not enough samples to determine if you have CTCSS, just carry on
|
||||||
} else if (CTCSS_READY(ctcssState) && m_modemState != STATE_FM) {
|
} else if (CTCSS_READY(ctcssState) && m_modemState != STATE_FM) {
|
||||||
@@ -114,6 +118,7 @@ void CFM::samples(bool cos, const q15_t* samples, uint8_t length)
|
|||||||
} else {
|
} else {
|
||||||
stateMachine(cos);
|
stateMachine(cos);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user