Add a new simple FM mode for gatewaying.

This commit is contained in:
Jonathan Naylor 2021-09-05 19:07:50 +01:00
parent efb3a24872
commit ded46ebb60
6 changed files with 22 additions and 3 deletions

View file

@ -217,6 +217,7 @@ m_fmCTCSSLevel(2.0F),
m_fmKerchunkTime(0U),
m_fmHangTime(7U),
m_fmAccessMode(1U),
m_fmSimpleMode(false),
m_fmCOSInvert(false),
m_fmNoiseSquelch(false),
m_fmSquelchHighThreshold(30U),
@ -868,6 +869,8 @@ bool CConf::read()
m_fmHangTime = (unsigned int)::atoi(value);
else if (::strcmp(key, "AccessMode") == 0)
m_fmAccessMode = ::atoi(value);
else if (::strcmp(key, "SimpleMode") == 0)
m_fmSimpleMode = ::atoi(value) == 1;
else if (::strcmp(key, "COSInvert") == 0)
m_fmCOSInvert = ::atoi(value) == 1;
else if (::strcmp(key, "NoiseSquelch") == 0)
@ -1896,6 +1899,11 @@ unsigned int CConf::getFMAccessMode() const
return m_fmAccessMode;
}
bool CConf::getFMSimpleMode() const
{
return m_fmSimpleMode;
}
bool CConf::getFMCOSInvert() const
{
return m_fmCOSInvert;

2
Conf.h
View file

@ -220,6 +220,7 @@ public:
unsigned int getFMKerchunkTime() const;
unsigned int getFMHangTime() const;
unsigned int getFMAccessMode() const;
bool getFMSimpleMode() const;
bool getFMCOSInvert() const;
bool getFMNoiseSquelch() const;
unsigned int getFMSquelchHighThreshold() const;
@ -537,6 +538,7 @@ private:
unsigned int m_fmKerchunkTime;
unsigned int m_fmHangTime;
unsigned int m_fmAccessMode;
bool m_fmSimpleMode;
bool m_fmCOSInvert;
bool m_fmNoiseSquelch;
unsigned int m_fmSquelchHighThreshold;

View file

@ -193,6 +193,8 @@ HangTime=7
# 2 - CTCSS only access with COS
# 3 - CTCSS only access with COS to start, then carrier access with COS
AccessMode=1
# SimpleMode=1 to remove almost all of the logic control
SimpleMode=0
COSInvert=0
NoiseSquelch=0
SquelchThreshold=30

View file

@ -1518,6 +1518,7 @@ bool CMMDVMHost::createModem()
unsigned int kerchunkTime = m_conf.getFMKerchunkTime();
unsigned int hangTime = m_conf.getFMHangTime();
unsigned int accessMode = m_conf.getFMAccessMode();
bool simpleMode = m_conf.getFMSimpleMode();
bool cosInvert = m_conf.getFMCOSInvert();
bool noiseSquelch = m_conf.getFMNoiseSquelch();
unsigned int squelchHighThreshold = m_conf.getFMSquelchHighThreshold();
@ -1552,6 +1553,7 @@ bool CMMDVMHost::createModem()
LogInfo(" Kerchunk Time: %us", kerchunkTime);
LogInfo(" Hang Time: %us", hangTime);
LogInfo(" Access Mode: %u", accessMode);
LogInfo(" Simple Mode: %s", simpleMode ? "yes" : "no");
LogInfo(" COS Invert: %s", cosInvert ? "yes" : "no");
LogInfo(" Noise Squelch: %s", noiseSquelch ? "yes" : "no");
@ -1566,7 +1568,7 @@ bool CMMDVMHost::createModem()
m_modem->setFMCallsignParams(callsign, callsignSpeed, callsignFrequency, callsignTime, callsignHoldoff, callsignHighLevel, callsignLowLevel, callsignAtStart, callsignAtEnd, callsignAtLatch);
m_modem->setFMAckParams(rfAck, ackSpeed, ackFrequency, ackMinTime, ackDelay, ackLevel);
m_modem->setFMMiscParams(timeout, timeoutLevel, ctcssFrequency, ctcssHighThreshold, ctcssLowThreshold, ctcssLevel, kerchunkTime, hangTime, accessMode, cosInvert, noiseSquelch, squelchHighThreshold, squelchLowThreshold, rfAudioBoost, maxDevLevel);
m_modem->setFMMiscParams(timeout, timeoutLevel, ctcssFrequency, ctcssHighThreshold, ctcssLowThreshold, ctcssLevel, kerchunkTime, hangTime, accessMode, simpleMode, cosInvert, noiseSquelch, squelchHighThreshold, squelchLowThreshold, rfAudioBoost, maxDevLevel);
if (m_conf.getFMNetworkEnabled()) {
std::string extAck = m_conf.getFMExtAck();

View file

@ -244,6 +244,7 @@ m_fmCtcssLevel(10.0F),
m_fmKerchunkTime(0U),
m_fmHangTime(5U),
m_fmAccessMode(1U),
m_fmSimpleMode(false),
m_fmCOSInvert(false),
m_fmNoiseSquelch(false),
m_fmSquelchHighThreshold(30U),
@ -2667,7 +2668,7 @@ void CModem::setFMAckParams(const std::string& rfAck, unsigned int ackSpeed, uns
m_fmAckLevel = ackLevel;
}
void CModem::setFMMiscParams(unsigned int timeout, float timeoutLevel, float ctcssFrequency, unsigned int ctcssHighThreshold, unsigned int ctcssLowThreshold, float ctcssLevel, unsigned int kerchunkTime, unsigned int hangTime, unsigned int accessMode, bool cosInvert, bool noiseSquelch, unsigned int squelchHighThreshold, unsigned int squelchLowThreshold, unsigned int rfAudioBoost, float maxDevLevel)
void CModem::setFMMiscParams(unsigned int timeout, float timeoutLevel, float ctcssFrequency, unsigned int ctcssHighThreshold, unsigned int ctcssLowThreshold, float ctcssLevel, unsigned int kerchunkTime, unsigned int hangTime, unsigned int accessMode, bool simpleMode, bool cosInvert, bool noiseSquelch, unsigned int squelchHighThreshold, unsigned int squelchLowThreshold, unsigned int rfAudioBoost, float maxDevLevel)
{
m_fmTimeout = timeout;
m_fmTimeoutLevel = timeoutLevel;
@ -2682,6 +2683,7 @@ void CModem::setFMMiscParams(unsigned int timeout, float timeoutLevel, float ctc
m_fmHangTime = hangTime;
m_fmAccessMode = accessMode;
m_fmSimpleMode = simpleMode;
m_fmCOSInvert = cosInvert;
m_fmNoiseSquelch = noiseSquelch;
@ -2834,6 +2836,8 @@ bool CModem::setFMMiscParams()
buffer[10U] = m_fmHangTime;
buffer[11U] = m_fmAccessMode & 0x0FU;
if (m_fmSimpleMode)
buffer[11U] |= 0x20U;
if (m_fmNoiseSquelch)
buffer[11U] |= 0x40U;
if (m_fmCOSInvert)

View file

@ -59,7 +59,7 @@ public:
void setFMCallsignParams(const std::string& callsign, unsigned int callsignSpeed, unsigned int callsignFrequency, unsigned int callsignTime, unsigned int callsignHoldoff, float callsignHighLevel, float callsignLowLevel, bool callsignAtStart, bool callsignAtEnd, bool callsignAtLatch);
void setFMAckParams(const std::string& rfAck, unsigned int ackSpeed, unsigned int ackFrequency, unsigned int ackMinTime, unsigned int ackDelay, float ackLevel);
void setFMMiscParams(unsigned int timeout, float timeoutLevel, float ctcssFrequency, unsigned int ctcssHighThreshold, unsigned int ctcssLowThreshold, float ctcssLevel, unsigned int kerchunkTime, unsigned int hangTime, unsigned int accessMode, bool cosInvert, bool noiseSquelch, unsigned int squelchHighThreshold, unsigned int squelchLowThreshold, unsigned int rfAudioBoost, float maxDevLevel);
void setFMMiscParams(unsigned int timeout, float timeoutLevel, float ctcssFrequency, unsigned int ctcssHighThreshold, unsigned int ctcssLowThreshold, float ctcssLevel, unsigned int kerchunkTime, unsigned int hangTime, unsigned int accessMode, bool simpleMode, bool cosInvert, bool noiseSquelch, unsigned int squelchHighThreshold, unsigned int squelchLowThreshold, unsigned int rfAudioBoost, float maxDevLevel);
void setFMExtParams(const std::string& ack, unsigned int audioBoost);
bool open();
@ -268,6 +268,7 @@ private:
unsigned int m_fmKerchunkTime;
unsigned int m_fmHangTime;
unsigned int m_fmAccessMode;
bool m_fmSimpleMode;
bool m_fmCOSInvert;
bool m_fmNoiseSquelch;
unsigned int m_fmSquelchHighThreshold;