Skip to content

Commit

Permalink
Add a new simple FM mode for gatewaying.
Browse files Browse the repository at this point in the history
  • Loading branch information
g4klx committed Sep 5, 2021
1 parent efb3a24 commit ded46eb
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 3 deletions.
8 changes: 8 additions & 0 deletions Conf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 2 additions & 0 deletions Conf.h
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,7 @@ class CConf
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;
Expand Down Expand Up @@ -537,6 +538,7 @@ class CConf
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;
Expand Down
2 changes: 2 additions & 0 deletions MMDVM.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 3 additions & 1 deletion MMDVMHost.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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");
Expand All @@ -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();
Expand Down
6 changes: 5 additions & 1 deletion Modem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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)
Expand Down
3 changes: 2 additions & 1 deletion Modem.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ class CModem {

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();
Expand Down Expand Up @@ -268,6 +268,7 @@ class CModem {
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;
Expand Down

0 comments on commit ded46eb

Please sign in to comment.