From d409700a313bcddafed901bf6522d351c573f1e3 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Tue, 9 Jun 2020 14:32:05 +0100 Subject: [PATCH] X25 cleanups. --- AX25Control.cpp | 2 +- MMDVMHost.cpp | 69 ++++++++++++++++++++++++++++++++++++++++--------- Modem.cpp | 5 +--- Version.h | 2 +- 4 files changed, 60 insertions(+), 18 deletions(-) diff --git a/AX25Control.cpp b/AX25Control.cpp index 1f1b590..d9f9a2f 100644 --- a/AX25Control.cpp +++ b/AX25Control.cpp @@ -45,7 +45,7 @@ bool CAX25Control::writeModem(unsigned char *data, unsigned int len) if (!m_enabled) return false; - unsigned char type = data[0U]; + CUtils::dump(1U, "AX.25 raw packet", data, len); return true; } diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index b1f8353..3cf60cb 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -623,8 +623,12 @@ int CMMDVMHost::run() pocsagTimer.start(); } - if (m_ax25Enabled) + if (m_ax25Enabled) { + LogInfo("AX.25 RF Parameters"); + LogInfo(" RXOnly: yes"); + m_ax25 = new CAX25Control(m_ax25Network); + } bool remoteControlEnabled = m_conf.getRemoteControlEnabled(); if (remoteControlEnabled) { @@ -1616,7 +1620,6 @@ void CMMDVMHost::readParams() LogInfo(" AX.25: %s", m_ax25Enabled ? "enabled" : "disabled"); } -// XXX AX.25 enabled/disabled void CMMDVMHost::setMode(unsigned char mode) { assert(m_modem != NULL); @@ -1636,6 +1639,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); + if (m_ax25Network != NULL) + m_ax25Network->enable(false); if (m_dstar != NULL) m_dstar->enable(true); if (m_dmr != NULL) @@ -1648,6 +1653,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_pocsag != NULL) m_pocsag->enable(false); + if (m_ax25 != NULL) + m_ax25->enable(false); m_modem->setMode(MODE_DSTAR); if (m_ump != NULL) m_ump->setMode(MODE_DSTAR); @@ -1670,6 +1677,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); + if (m_ax25Network != NULL) + m_ax25Network->enable(false); if (m_dstar != NULL) m_dstar->enable(false); if (m_dmr != NULL) @@ -1682,6 +1691,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_pocsag != NULL) m_pocsag->enable(false); + if (m_ax25 != NULL) + m_ax25->enable(false); m_modem->setMode(MODE_DMR); if (m_ump != NULL) m_ump->setMode(MODE_DMR); @@ -1708,6 +1719,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); + if (m_ax25Network != NULL) + m_ax25Network->enable(false); if (m_dstar != NULL) m_dstar->enable(false); if (m_dmr != NULL) @@ -1720,6 +1733,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_pocsag != NULL) m_pocsag->enable(false); + if (m_ax25 != NULL) + m_ax25->enable(false); m_modem->setMode(MODE_YSF); if (m_ump != NULL) m_ump->setMode(MODE_YSF); @@ -1742,6 +1757,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); + if (m_ax25Network != NULL) + m_ax25Network->enable(false); if (m_dstar != NULL) m_dstar->enable(false); if (m_dmr != NULL) @@ -1754,6 +1771,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_pocsag != NULL) m_pocsag->enable(false); + if (m_ax25 != NULL) + m_ax25->enable(false); m_modem->setMode(MODE_P25); if (m_ump != NULL) m_ump->setMode(MODE_P25); @@ -1776,6 +1795,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(true); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); + if (m_ax25Network != NULL) + m_ax25Network->enable(false); if (m_dstar != NULL) m_dstar->enable(false); if (m_dmr != NULL) @@ -1788,6 +1809,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(true); if (m_pocsag != NULL) m_pocsag->enable(false); + if (m_ax25 != NULL) + m_ax25->enable(false); m_modem->setMode(MODE_NXDN); if (m_ump != NULL) m_ump->setMode(MODE_NXDN); @@ -1810,6 +1833,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(true); + if (m_ax25Network != NULL) + m_ax25Network->enable(false); if (m_dstar != NULL) m_dstar->enable(false); if (m_dmr != NULL) @@ -1822,6 +1847,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_pocsag != NULL) m_pocsag->enable(true); + if (m_ax25 != NULL) + m_ax25->enable(false); m_modem->setMode(MODE_POCSAG); if (m_ump != NULL) m_ump->setMode(MODE_POCSAG); @@ -1844,6 +1871,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); + if (m_ax25Network != NULL) + m_ax25Network->enable(true); if (m_dstar != NULL) m_dstar->enable(false); if (m_dmr != NULL) @@ -1856,6 +1885,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_pocsag != NULL) m_pocsag->enable(false); + if (m_ax25 != NULL) + m_ax25->enable(true); if (m_mode == MODE_DMR && m_duplex && m_modem->hasTX()) { m_modem->writeDMRStart(false); m_dmrTXTimer.stop(); @@ -1882,6 +1913,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); + if (m_ax25Network != NULL) + m_ax25Network->enable(false); if (m_dstar != NULL) m_dstar->enable(false); if (m_dmr != NULL) @@ -1894,6 +1927,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_pocsag != NULL) m_pocsag->enable(false); + if (m_ax25 != NULL) + m_ax25->enable(false); if (m_mode == MODE_DMR && m_duplex && m_modem->hasTX()) { m_modem->writeDMRStart(false); m_dmrTXTimer.stop(); @@ -1922,6 +1957,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(false); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(false); + if (m_ax25Network != NULL) + m_ax25Network->enable(false); if (m_dstar != NULL) m_dstar->enable(false); if (m_dmr != NULL) @@ -1934,6 +1971,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(false); if (m_pocsag != NULL) m_pocsag->enable(false); + if (m_ax25 != NULL) + m_ax25->enable(false); if (m_mode == MODE_DMR && m_duplex && m_modem->hasTX()) { m_modem->writeDMRStart(false); m_dmrTXTimer.stop(); @@ -1960,6 +1999,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdnNetwork->enable(true); if (m_pocsagNetwork != NULL) m_pocsagNetwork->enable(true); + if (m_ax25Network != NULL) + m_ax25Network->enable(true); if (m_dstar != NULL) m_dstar->enable(true); if (m_dmr != NULL) @@ -1972,6 +2013,8 @@ void CMMDVMHost::setMode(unsigned char mode) m_nxdn->enable(true); if (m_pocsag != NULL) m_pocsag->enable(true); + if (m_ax25 != NULL) + m_ax25->enable(true); if (m_mode == MODE_DMR && m_duplex && m_modem->hasTX()) { m_modem->writeDMRStart(false); m_dmrTXTimer.stop(); @@ -2120,18 +2163,20 @@ void CMMDVMHost::remoteControl() } m_pocsag->sendPage(ric, text); } + break; case RCD_CW: setMode(MODE_IDLE); // Force the modem to go idle so that we can send the CW text. - if (!m_modem->hasTX()){ - std::string cwtext; - for (unsigned int i = 0U; i < m_remoteControl->getArgCount(); i++) { - if (i > 0U) - cwtext += " "; - cwtext += m_remoteControl->getArgString(i); - } - m_display->writeCW(); - m_modem->sendCWId(cwtext); - } + if (!m_modem->hasTX()) { + std::string cwtext; + for (unsigned int i = 0U; i < m_remoteControl->getArgCount(); i++) { + if (i > 0U) + cwtext += " "; + cwtext += m_remoteControl->getArgString(i); + } + m_display->writeCW(); + m_modem->sendCWId(cwtext); + } + break; default: break; } diff --git a/Modem.cpp b/Modem.cpp index 0f0b0c1..3a59fca 100644 --- a/Modem.cpp +++ b/Modem.cpp @@ -594,10 +594,7 @@ void CModem::clock(unsigned int ms) if (m_trace) CUtils::dump(1U, "RX AX.25 Data", m_buffer, m_length); - unsigned char data = m_length - 2U; - m_rxAX25Data.addData(&data, 1U); - - data = TAG_DATA; + unsigned char data = m_length - 3U; m_rxAX25Data.addData(&data, 1U); m_rxAX25Data.addData(m_buffer + 3U, m_length - 3U); diff --git a/Version.h b/Version.h index 101ca94..6b25bcc 100644 --- a/Version.h +++ b/Version.h @@ -19,6 +19,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20200608"; +const char* VERSION = "20200609"; #endif