Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 81 additions & 12 deletions MMDVMHost.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -692,6 +692,10 @@ int CMMDVMHost::run()
} else if (m_mode == MODE_DSTAR) {
m_dstar->writeModem(data, len);
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_DSTAR");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("D-Star modem data received when in mode %u", m_mode);
}
Expand Down Expand Up @@ -719,12 +723,20 @@ int CMMDVMHost::run()
if (ret) {
m_modem->writeDMRStart(true);
m_dmrTXTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_DMR duplex");
m_cwIdTimer.start();
}
}
} else {
bool ret = m_dmr->writeModemSlot1(data, len);
if (ret) {
dmrBeaconDurationTimer.stop();
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_DMR T1");
m_cwIdTimer.start();
}
if (m_duplex)
m_dmrTXTimer.start();
}
Expand Down Expand Up @@ -756,12 +768,20 @@ int CMMDVMHost::run()
if (ret) {
m_modem->writeDMRStart(true);
m_dmrTXTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_DMR Duplex T2");
m_cwIdTimer.start();
}
}
} else {
bool ret = m_dmr->writeModemSlot2(data, len);
if (ret) {
dmrBeaconDurationTimer.stop();
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_DMR T2");
m_cwIdTimer.start();
}
if (m_duplex)
m_dmrTXTimer.start();
}
Expand All @@ -782,6 +802,10 @@ int CMMDVMHost::run()
} else if (m_mode == MODE_YSF) {
m_ysf->writeModem(data, len);
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_YSF");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("System Fusion modem data received when in mode %u", m_mode);
}
Expand All @@ -798,6 +822,10 @@ int CMMDVMHost::run()
} else if (m_mode == MODE_P25) {
m_p25->writeModem(data, len);
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_P25");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("P25 modem data received when in mode %u", m_mode);
}
Expand All @@ -814,6 +842,10 @@ int CMMDVMHost::run()
} else if (m_mode == MODE_NXDN) {
m_nxdn->writeModem(data, len);
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_NXDN");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("NXDN modem data received when in mode %u", m_mode);
}
Expand All @@ -840,6 +872,10 @@ int CMMDVMHost::run()
if (m_mode == MODE_DSTAR) {
m_modem->writeDStarData(data, len);
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_DMR T2");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("D-Star data received when in mode %u", m_mode);
}
Expand All @@ -864,6 +900,10 @@ int CMMDVMHost::run()
m_modem->writeDMRData1(data, len);
dmrBeaconDurationTimer.stop();
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_DMR T2");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("DMR data received when in mode %u", m_mode);
}
Expand All @@ -882,6 +922,10 @@ int CMMDVMHost::run()
if (m_duplex) {
m_modem->writeDMRStart(true);
m_dmrTXTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_DMR T2");
m_cwIdTimer.start();
}
}
m_modem->writeDMRData2(data, len);
dmrBeaconDurationTimer.stop();
Expand All @@ -905,6 +949,10 @@ int CMMDVMHost::run()
if (m_mode == MODE_YSF) {
m_modem->writeYSFData(data, len);
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_YSF");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("System Fusion data received when in mode %u", m_mode);
}
Expand All @@ -924,6 +972,10 @@ int CMMDVMHost::run()
if (m_mode == MODE_P25) {
m_modem->writeP25Data(data, len);
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_P25");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("P25 data received when in mode %u", m_mode);
}
Expand All @@ -943,6 +995,10 @@ int CMMDVMHost::run()
if (m_mode == MODE_NXDN) {
m_modem->writeNXDNData(data, len);
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_NXDN");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("NXDN data received when in mode %u", m_mode);
}
Expand All @@ -962,6 +1018,10 @@ int CMMDVMHost::run()
if (m_mode == MODE_POCSAG) {
m_modem->writePOCSAGData(data, len);
m_modeTimer.start();
if (m_conf.getCWIdEnabled() && !m_cwIdTimer.isRunning()) {
LogDebug("starting CW ID timer - MODE_POCSAG");
m_cwIdTimer.start();
}
} else if (m_mode != MODE_LOCKOUT) {
LogWarning("POCSAG data received when in mode %u", m_mode);
}
Expand Down Expand Up @@ -1028,12 +1088,14 @@ int CMMDVMHost::run()
m_cwIdTimer.clock(ms);
if (m_cwIdTimer.isRunning() && m_cwIdTimer.hasExpired()) {
if (!m_modem->hasTX()){
LogDebug("sending CW ID");
LogMessage("Sending CW ID");
setMode(MODE_IDLE);
m_display->writeCW();
m_modem->sendCWId(m_cwCallsign);

m_cwIdTimer.setTimeout(m_cwIdTime);
m_cwIdTimer.start();
//m_cwIdTimer.start();
m_cwIdTimer.stop();
}
}

Expand Down Expand Up @@ -1092,6 +1154,11 @@ int CMMDVMHost::run()
CThread::sleep(5U);
}

// ID one last time in case there's been a transmission since the last ID.
if (m_conf.getCWIdEnabled() && m_cwIdTimer.isRunning()) {
m_modem->sendCWId(m_callsign);
}

setMode(MODE_QUIT);

m_modem->close();
Expand Down Expand Up @@ -1612,7 +1679,7 @@ void CMMDVMHost::setMode(unsigned char mode)
m_ump->setMode(MODE_DSTAR);
m_mode = MODE_DSTAR;
m_modeTimer.start();
m_cwIdTimer.stop();
//m_cwIdTimer.stop();
createLockFile("D-Star");
break;

Expand Down Expand Up @@ -1650,7 +1717,7 @@ void CMMDVMHost::setMode(unsigned char mode)
}
m_mode = MODE_DMR;
m_modeTimer.start();
m_cwIdTimer.stop();
//m_cwIdTimer.stop();
createLockFile("DMR");
break;

Expand Down Expand Up @@ -1684,7 +1751,7 @@ void CMMDVMHost::setMode(unsigned char mode)
m_ump->setMode(MODE_YSF);
m_mode = MODE_YSF;
m_modeTimer.start();
m_cwIdTimer.stop();
//m_cwIdTimer.stop();
createLockFile("System Fusion");
break;

Expand Down Expand Up @@ -1718,7 +1785,7 @@ void CMMDVMHost::setMode(unsigned char mode)
m_ump->setMode(MODE_P25);
m_mode = MODE_P25;
m_modeTimer.start();
m_cwIdTimer.stop();
//m_cwIdTimer.stop();
createLockFile("P25");
break;

Expand Down Expand Up @@ -1752,7 +1819,7 @@ void CMMDVMHost::setMode(unsigned char mode)
m_ump->setMode(MODE_NXDN);
m_mode = MODE_NXDN;
m_modeTimer.start();
m_cwIdTimer.stop();
//m_cwIdTimer.stop();
createLockFile("NXDN");
break;

Expand Down Expand Up @@ -1786,7 +1853,7 @@ void CMMDVMHost::setMode(unsigned char mode)
m_ump->setMode(MODE_POCSAG);
m_mode = MODE_POCSAG;
m_modeTimer.start();
m_cwIdTimer.stop();
//m_cwIdTimer.stop();
createLockFile("POCSAG");
break;

Expand Down Expand Up @@ -1863,7 +1930,7 @@ void CMMDVMHost::setMode(unsigned char mode)
m_display->setLockout();
m_mode = MODE_LOCKOUT;
m_modeTimer.stop();
m_cwIdTimer.stop();
//m_cwIdTimer.stop();
removeLockFile();
break;

Expand Down Expand Up @@ -1902,7 +1969,7 @@ void CMMDVMHost::setMode(unsigned char mode)
m_display->setError("MODEM");
m_mode = MODE_ERROR;
m_modeTimer.stop();
m_cwIdTimer.stop();
//m_cwIdTimer.stop();
removeLockFile();
break;

Expand Down Expand Up @@ -1943,8 +2010,10 @@ void CMMDVMHost::setMode(unsigned char mode)
m_cwIdTimer.setTimeout(m_cwIdTime);
m_cwIdTimer.start();
} else {
m_cwIdTimer.setTimeout(m_cwIdTime / 4U);
m_cwIdTimer.start();
if (m_mode != MODE_IDLE) {
m_cwIdTimer.setTimeout(m_cwIdTime);
//m_cwIdTimer.start();
}
}
m_display->setIdle();
if (mode == MODE_QUIT)
Expand Down
16 changes: 10 additions & 6 deletions OLED.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -646,8 +646,8 @@ void COLED::writeCWInt()
{
m_display.clearDisplay();

m_display.setCursor(0,30);
m_display.setTextSize(3);
m_display.setCursor(10,30);
m_display.setTextSize(1);
m_display.print("CW TX");

m_display.setTextSize(1);
Expand All @@ -660,11 +660,15 @@ void COLED::clearCWInt()
{
m_display.clearDisplay();

m_display.setCursor(0,30);
m_display.setTextSize(3);
m_display.print("Idle");
//m_display.setCursor(0,30);
//m_display.setTextSize(3);
//m_display.print("Idle");

m_display.setTextSize(1);
//m_display.setTextSize(1);
//m_display.display();
//m_display.startscrollleft(0x02,0x0f);

OLED_statusbar();
m_display.display();
if (m_displayScroll)
m_display.startscrollleft(0x02,0x0f);
Expand Down