Fix modem not goign on transmit, still some cleansing to be done

This commit is contained in:
Geoffrey Merck 2020-05-12 08:36:38 +02:00
parent a5aabd8fac
commit ca1cc7096a
2 changed files with 8 additions and 15 deletions

22
FM.cpp
View File

@ -20,7 +20,7 @@
#include "Globals.h" #include "Globals.h"
#include "FM.h" #include "FM.h"
const uint16_t FM_TX_BLOCK_SIZE = 250U; const uint16_t FM_TX_BLOCK_SIZE = 127U;
const uint16_t FM_SERIAL_BLOCK_SIZE = 127U; const uint16_t FM_SERIAL_BLOCK_SIZE = 127U;
CFM::CFM() : CFM::CFM() :
@ -89,18 +89,18 @@ void CFM::samples(bool cos, q15_t* samples, uint8_t length)
bool inputExt = m_inputExtRB.get(currentExtSample);//always consume the external input data so it does not overflow bool inputExt = m_inputExtRB.get(currentExtSample);//always consume the external input data so it does not overflow
inputExt = inputExt && m_extEnabled; inputExt = inputExt && m_extEnabled;
if (!inputExt && (CTCSS_NOT_READY(ctcssState))) { if (!inputExt && (CTCSS_NOT_READY(ctcssState)) && m_modemState != STATE_FM) {
//Not enough samples to determine if you have CTCSS, just carry on. But only if we haven't any external data in the queue //Not enough samples to determine if you have CTCSS, just carry on. But only if we haven't any external data in the queue
continue; continue;
} else if ((inputExt || CTCSS_READY(ctcssState))) { } else if ((inputExt || CTCSS_READY(ctcssState)) && m_modemState != STATE_FM) {
//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))) { } else if ((inputExt || CTCSS_READY(ctcssState)) && m_modemState == STATE_FM) {
//We had enough samples for CTCSS and we are in FM mode, trigger the state machine //We had enough samples for CTCSS and we are in FM mode, trigger the state machine
bool validCTCSS = CTCSS_VALID(ctcssState); bool validCTCSS = CTCSS_VALID(ctcssState);
stateMachine(validCTCSS && cos, inputExt); stateMachine(validCTCSS && cos, inputExt);
} else if ((inputExt || CTCSS_NOT_READY(ctcssState)) && 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!
bool validCTCSS = CTCSS_VALID(ctcssState); bool validCTCSS = CTCSS_VALID(ctcssState);
@ -147,13 +147,7 @@ void CFM::samples(bool cos, q15_t* samples, uint8_t length)
currentSample += m_ctcssTX.getAudio(); currentSample += m_ctcssTX.getAudio();
m_outputRFRB.put(currentSample); m_outputRFRB.put(currentSample);
//samples[i] = currentSample;
} }
// XXX This relays audio correctly, no tones yet, process need to be commented
// if (m_state == FS_RELAYING_RF || m_state == FS_KERCHUNK_RF || m_state == FS_RELAYING_EXT || m_state == FS_KERCHUNK_EXT)
// io.write(STATE_FM, samples, i);
} }
void CFM::process() void CFM::process()
@ -744,8 +738,8 @@ void CFM::insertDelay(uint16_t ms)
void CFM::insertSilence(uint16_t ms) void CFM::insertSilence(uint16_t ms)
{ {
uint32_t nSamples = ms * 24U; // uint32_t nSamples = ms * 24U;
for (uint32_t i = 0U; i < nSamples; i++) // for (uint32_t i = 0U; i < nSamples; i++)
m_outputRFRB.put(0); // m_outputRFRB.put(0);
} }

1
FM.h
View File

@ -117,7 +117,6 @@ private:
void clock(uint8_t length); void clock(uint8_t length);
void sendCallsign(); void sendCallsign();
void sendBeeps();
void beginRelaying(); void beginRelaying();
void insertDelay(uint16_t ms); void insertDelay(uint16_t ms);