Merge pull request #280 from F4FXL/FM_Ext

Fix Callsign at end and simplify Samples
This commit is contained in:
Jonathan Naylor 2020-05-20 22:19:36 +01:00 committed by GitHub
commit 5039dfbe68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 5 deletions

8
FM.cpp
View File

@ -97,10 +97,8 @@ void CFM::samples(bool cos, q15_t* samples, uint8_t length)
//we had enough samples for CTCSS and we are in some other mode than FM //we had enough samples for CTCSS and we are in some other mode than FM
bool validCTCSS = CTCSS_VALID(ctcssState); bool validCTCSS = CTCSS_VALID(ctcssState);
stateMachine(validCTCSS && cos, inputExt); stateMachine(validCTCSS && cos, inputExt);
} else if ((inputExt || CTCSS_READY(ctcssState)) && m_modemState == STATE_FM) { if (m_modemState != STATE_FM)
//We had enough samples for CTCSS and we are in FM mode, trigger the state machine continue;
bool validCTCSS = CTCSS_VALID(ctcssState);
stateMachine(validCTCSS && cos, inputExt);
} else if ((inputExt || CTCSS_NOT_READY(ctcssState)) && m_modemState == STATE_FM && i == length - 1) { } else if ((inputExt || CTCSS_NOT_READY(ctcssState)) && m_modemState == STATE_FM && i == length - 1) {
//Not enough samples for CTCSS but we already are in FM, trigger the state machine //Not enough samples for CTCSS but we already are in FM, trigger the state machine
//but do not trigger the state machine on every single sample, save CPU! //but do not trigger the state machine on every single sample, save CPU!
@ -318,7 +316,7 @@ void CFM::stateMachine(bool validRFSignal, bool validExtSignal)
break; break;
} }
if (m_state == FS_LISTENING) { if (m_state == FS_LISTENING && !m_rfAck.isWanted() && !m_extAck.isWanted() && !m_callsign.isWanted()) {
m_outputRFRB.reset(); m_outputRFRB.reset();
m_downsampler.reset(); m_downsampler.reset();
} }

View File

@ -205,6 +205,11 @@ void CFMKeyer::stop()
m_audioPos = 0U; m_audioPos = 0U;
} }
bool CFMKeyer::isWanted() const
{
return m_wanted;
}
bool CFMKeyer::isRunning() const bool CFMKeyer::isRunning() const
{ {
return m_poPos > 0U || m_dotPos > 0U || m_audioPos > 0U; return m_poPos > 0U || m_dotPos > 0U || m_audioPos > 0U;

View File

@ -35,6 +35,8 @@ public:
bool isRunning() const; bool isRunning() const;
bool isWanted() const;
private: private:
bool m_wanted; bool m_wanted;
uint8_t m_poBuffer[1000U]; uint8_t m_poBuffer[1000U];