mirror of https://github.com/g4klx/MMDVM.git
Test the use of a reverse burst at the end of a transmission.
This commit is contained in:
parent
20013e3adc
commit
dc41fd83d2
17
FM.cpp
17
FM.cpp
|
@ -45,6 +45,7 @@ m_kerchunkTimer(),
|
|||
m_ackMinTimer(),
|
||||
m_ackDelayTimer(),
|
||||
m_hangTimer(),
|
||||
m_reverseTimer(),
|
||||
m_filterStage1( 724, 1448, 724, 32768, -37895, 21352),//3rd order Cheby Filter 300 to 2700Hz, 0.2dB passband ripple, sampling rate 24kHz
|
||||
m_filterStage2(32768, 0,-32768, 32768, -50339, 19052),
|
||||
m_filterStage3(32768, -65536, 32768, 32768, -64075, 31460),
|
||||
|
@ -57,6 +58,8 @@ m_rxLevel(1),
|
|||
m_inputRB(4800U), // 200ms of audio
|
||||
m_outputRB(2400U) // 100ms of audio
|
||||
{
|
||||
m_reverseTimer.setTimeout(0U, 150U);
|
||||
|
||||
insertDelay(100U);
|
||||
}
|
||||
|
||||
|
@ -141,10 +144,9 @@ void CFM::samples(bool cos, const q15_t* samples, uint8_t length)
|
|||
if (!m_callsign.isRunning() && !m_rfAck.isRunning())
|
||||
currentSample += m_timeoutTone.getAudio();
|
||||
|
||||
currentSample += m_ctcssTX.getAudio();
|
||||
currentSample += m_ctcssTX.getAudio(m_reverseTimer.isRunning());
|
||||
|
||||
if (m_modemState == STATE_FM)
|
||||
m_outputRB.put(currentSample);
|
||||
m_outputRB.put(currentSample);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -165,6 +167,7 @@ void CFM::reset()
|
|||
m_ackMinTimer.stop();
|
||||
m_ackDelayTimer.stop();
|
||||
m_hangTimer.stop();
|
||||
m_reverseTimer.stop();
|
||||
|
||||
m_ctcssRX.reset();
|
||||
m_rfAck.stop();
|
||||
|
@ -254,7 +257,10 @@ void CFM::stateMachine(bool validSignal)
|
|||
}
|
||||
|
||||
if (m_state == FS_LISTENING && m_modemState == STATE_FM) {
|
||||
if (!m_callsign.isWanted() && !m_rfAck.isWanted()) {
|
||||
if (!m_callsign.isWanted() && !m_rfAck.isWanted() && !m_reverseTimer.isRunning())
|
||||
m_reverseTimer.start();
|
||||
|
||||
if (!m_callsign.isWanted() && !m_rfAck.isWanted() && m_reverseTimer.isRunning() && m_reverseTimer.hasExpired()) {
|
||||
DEBUG1("Change to STATE_IDLE");
|
||||
m_modemState = STATE_IDLE;
|
||||
m_callsignTimer.stop();
|
||||
|
@ -263,6 +269,7 @@ void CFM::stateMachine(bool validSignal)
|
|||
m_ackMinTimer.stop();
|
||||
m_ackDelayTimer.stop();
|
||||
m_hangTimer.stop();
|
||||
m_reverseTimer.stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -276,6 +283,7 @@ void CFM::clock(uint8_t length)
|
|||
m_ackMinTimer.clock(length);
|
||||
m_ackDelayTimer.clock(length);
|
||||
m_hangTimer.clock(length);
|
||||
m_reverseTimer.clock(length);
|
||||
}
|
||||
|
||||
void CFM::listeningState(bool validSignal)
|
||||
|
@ -299,6 +307,7 @@ void CFM::listeningState(bool validSignal)
|
|||
beginRelaying();
|
||||
|
||||
m_callsignTimer.start();
|
||||
m_reverseTimer.stop();
|
||||
|
||||
io.setDecode(true);
|
||||
io.setADCDetection(true);
|
||||
|
|
1
FM.h
1
FM.h
|
@ -75,6 +75,7 @@ private:
|
|||
CFMTimer m_ackMinTimer;
|
||||
CFMTimer m_ackDelayTimer;
|
||||
CFMTimer m_hangTimer;
|
||||
CFMTimer m_reverseTimer;
|
||||
CFMDirectFormI m_filterStage1;
|
||||
CFMDirectFormI m_filterStage2;
|
||||
CFMDirectFormI m_filterStage3;
|
||||
|
|
|
@ -115,11 +115,14 @@ uint8_t CFMCTCSSTX::setParams(uint8_t frequency, uint8_t level)
|
|||
return 0U;
|
||||
}
|
||||
|
||||
q15_t CFMCTCSSTX::getAudio()
|
||||
q15_t CFMCTCSSTX::getAudio(bool reverse)
|
||||
{
|
||||
q15_t sample = m_values[m_n++];
|
||||
if(m_n >= m_length)
|
||||
if (m_n >= m_length)
|
||||
m_n = 0U;
|
||||
|
||||
return sample;
|
||||
if (reverse)
|
||||
return -sample;
|
||||
else
|
||||
return sample;
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ public:
|
|||
|
||||
uint8_t setParams(uint8_t frequency, uint8_t level);
|
||||
|
||||
q15_t getAudio();
|
||||
q15_t getAudio(bool reverse);
|
||||
|
||||
private:
|
||||
q15_t* m_values;
|
||||
|
|
|
@ -103,7 +103,7 @@ const uint8_t MMDVM_DEBUG5 = 0xF5U;
|
|||
#define HW_TYPE "MMDVM"
|
||||
#endif
|
||||
|
||||
#define DESCRIPTION "20200713 (D-Star/DMR/System Fusion/P25/NXDN/POCSAG/FM)"
|
||||
#define DESCRIPTION "20200714 (D-Star/DMR/System Fusion/P25/NXDN/POCSAG/FM)"
|
||||
|
||||
#if defined(GITVERSION)
|
||||
#define concat(h, a, b, c) h " " a " " b " GitID #" c ""
|
||||
|
|
Loading…
Reference in New Issue