From b63381ad203cbf818beaea06853a64b926580a8a Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Mon, 4 Dec 2023 12:35:16 +0000 Subject: [PATCH 1/6] Change the M17 network logging slightly. --- M17Network.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/M17Network.cpp b/M17Network.cpp index cef7b73..241cd93 100644 --- a/M17Network.cpp +++ b/M17Network.cpp @@ -104,7 +104,7 @@ bool CM17Network::write(const unsigned char* data) buffer[53U] = 0x00U; if (m_debug) - CUtils::dump(1U, "M17 data transmitted", buffer, 54U); + CUtils::dump(1U, "M17 Network Transmitted", buffer, 54U); return m_socket.write(buffer, 54U, m_addr, m_addrLen); } @@ -131,7 +131,7 @@ void CM17Network::clock(unsigned int ms) } if (m_debug) - CUtils::dump(1U, "M17 Network Data Received", buffer, length); + CUtils::dump(1U, "M17 Network Received", buffer, length); if (!m_enabled) return; @@ -209,7 +209,7 @@ void CM17Network::sendPing() buffer[3U] = 'G'; if (m_debug) - CUtils::dump(1U, "M17 data transmitted", buffer, 4U); + CUtils::dump(1U, "M17 Network Transmitted", buffer, 4U); m_socket.write(buffer, 4U, m_addr, m_addrLen); } From 1b277741de00f64f1ba84b1957db23198e8ec74f Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Mon, 4 Dec 2023 13:04:12 +0000 Subject: [PATCH 2/6] Add more logging for mode changing. --- MMDVMHost.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index 4cc1c18..efdd6a4 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -2033,6 +2033,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.start(); m_cwIdTimer.stop(); createLockFile("D-Star"); + LogMessage("Mode set to D-Star"); break; case MODE_DMR: @@ -2081,6 +2082,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.start(); m_cwIdTimer.stop(); createLockFile("DMR"); + LogMessage("Mode set to DMR"); break; case MODE_YSF: @@ -2125,6 +2127,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.start(); m_cwIdTimer.stop(); createLockFile("System Fusion"); + LogMessage("Mode set to System Fusion"); break; case MODE_P25: @@ -2169,6 +2172,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.start(); m_cwIdTimer.stop(); createLockFile("P25"); + LogMessage("Mode set to P25"); break; case MODE_NXDN: @@ -2213,6 +2217,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.start(); m_cwIdTimer.stop(); createLockFile("NXDN"); + LogMessage("Mode set to NXDN"); break; case MODE_M17: @@ -2257,6 +2262,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.start(); m_cwIdTimer.stop(); createLockFile("M17"); + LogMessage("Mode set to M17"); break; case MODE_POCSAG: @@ -2301,6 +2307,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.start(); m_cwIdTimer.stop(); createLockFile("POCSAG"); + LogMessage("Mode set to POCSAG"); break; case MODE_FM: @@ -2350,6 +2357,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.start(); m_cwIdTimer.stop(); createLockFile("FM"); + LogMessage("Mode set to FM"); break; case MODE_LOCKOUT: @@ -2399,6 +2407,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.stop(); m_cwIdTimer.stop(); removeLockFile(); + LogMessage("Mode set to Lockout"); break; case MODE_ERROR: @@ -2448,6 +2457,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_modeTimer.stop(); m_cwIdTimer.stop(); removeLockFile(); + LogMessage("Mode set to Error"); break; default: @@ -2506,6 +2516,7 @@ void CMMDVMHost::setMode(unsigned char mode) m_mode = MODE_IDLE; m_modeTimer.stop(); removeLockFile(); + LogMessage("Mode set to Idle"); break; } } From 08ccf148ada6c3d98e77413b89e7a8159c76375f Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Tue, 5 Dec 2023 18:25:08 +0000 Subject: [PATCH 3/6] Add more debugging logging. --- MMDVMHost.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index efdd6a4..c01cbf5 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -2612,7 +2612,7 @@ void CMMDVMHost::remoteControl() m_nxdnNetwork->enable(true); break; case RCD_ENABLE_M17: - if (m_m17 != NULL && m_m17Enabled == false) + if (m_m17 != NULL && !m_m17Enabled) processEnableCommand(m_m17Enabled, true); if (m_m17Network != NULL) m_m17Network->enable(true); @@ -2656,7 +2656,7 @@ void CMMDVMHost::remoteControl() m_nxdnNetwork->enable(false); break; case RCD_DISABLE_M17: - if (m_m17 != NULL && m_m17Enabled == true) + if (m_m17 != NULL && m_m17Enabled) processEnableCommand(m_m17Enabled, false); if (m_m17Network != NULL) m_m17Network->enable(false); From 333757829fe58160ad5f792c989aa4fc325fa8b7 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Wed, 6 Dec 2023 14:06:48 +0000 Subject: [PATCH 4/6] Add even more debugging. --- M17Control.cpp | 10 +++++++++- M17Network.cpp | 14 ++++++++++---- Version.h | 2 +- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/M17Control.cpp b/M17Control.cpp index 192b5fa..f461e01 100644 --- a/M17Control.cpp +++ b/M17Control.cpp @@ -539,10 +539,13 @@ void CM17Control::writeNetwork() if (!exists) return; - if (!m_enabled) + if (!m_enabled) { + LogMessage("M17 not enabled"); return; + } if (m_rfState != RS_RF_LISTENING && m_rfState != RS_RF_LATE_ENTRY && m_netState == RS_NET_IDLE) { + LogMessage("M17 status is incorrect %d,%d", m_rfState, m_netState); m_network->reset(); return; } @@ -552,6 +555,7 @@ void CM17Control::writeNetwork() if (!m_allowEncryption) { unsigned char type = m_netLSF.getEncryptionType(); if (type != M17_ENCRYPTION_TYPE_NONE) { + LogMessage("M17 encryption rejection"); m_network->reset(); return; } @@ -616,6 +620,8 @@ void CM17Control::writeNetwork() decorrelator(temp, start + 2U); writeQueueNet(start); + } else { + LogMessage("M17 in an odd state 1 %d", m_netState); } if (m_netState == RS_NET_AUDIO || m_netState == RS_NET_DATA_AUDIO) { @@ -728,6 +734,8 @@ void CM17Control::writeNetwork() writeEndNet(); } + } else { + LogMessage("M17 in an odd state 2 %d", m_netState); } } diff --git a/M17Network.cpp b/M17Network.cpp index 241cd93..ed36ec7 100644 --- a/M17Network.cpp +++ b/M17Network.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020,2021 by Jonathan Naylor G4KLX + * Copyright (C) 2020,2021,2023 by Jonathan Naylor G4KLX * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -133,8 +133,10 @@ void CM17Network::clock(unsigned int ms) if (m_debug) CUtils::dump(1U, "M17 Network Received", buffer, length); - if (!m_enabled) + if (!m_enabled) { + LogMessage("M17 Network not enabled"); return; + } if (::memcmp(buffer + 0U, "PING", 4U) == 0) return; @@ -148,8 +150,10 @@ void CM17Network::clock(unsigned int ms) if (m_inId == 0U) { m_inId = id; } else { - if (id != m_inId) + if (id != m_inId) { + LogMessage("M17 Network id rejection"); return; + } } unsigned char c = length - 6U; @@ -188,7 +192,9 @@ void CM17Network::reset() void CM17Network::enable(bool enabled) { - if (!enabled && m_enabled) + if (enabled && !m_enabled) + reset(); + else if (!enabled && m_enabled) m_buffer.clear(); m_enabled = enabled; diff --git a/Version.h b/Version.h index 439756d..2d9289c 100644 --- a/Version.h +++ b/Version.h @@ -19,6 +19,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20231025"; +const char* VERSION = "20231206"; #endif From b18aeb5f9d58d74d49fab325ac6836f59bdb7285 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Wed, 6 Dec 2023 15:36:50 +0000 Subject: [PATCH 5/6] Initialise the M17 LSF correctly when not initialised. Use a private LSF for testing the encryption. --- M17Control.cpp | 7 +++++-- M17LSF.cpp | 4 +++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/M17Control.cpp b/M17Control.cpp index f461e01..5bca746 100644 --- a/M17Control.cpp +++ b/M17Control.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020,2021 Jonathan Naylor, G4KLX + * Copyright (C) 2020,2021,2023 Jonathan Naylor, G4KLX * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -553,7 +553,10 @@ void CM17Control::writeNetwork() m_networkWatchdog.start(); if (!m_allowEncryption) { - unsigned char type = m_netLSF.getEncryptionType(); + CM17LSF lsf; + lsf.setNetwork(netData); + + unsigned char type = lsf.getEncryptionType(); if (type != M17_ENCRYPTION_TYPE_NONE) { LogMessage("M17 encryption rejection"); m_network->reset(); diff --git a/M17LSF.cpp b/M17LSF.cpp index 3034e26..843bae2 100644 --- a/M17LSF.cpp +++ b/M17LSF.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020,2021 by Jonathan Naylor G4KLX + * Copyright (C) 2020,2021,2023 by Jonathan Naylor G4KLX * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -38,6 +38,8 @@ m_lsf(NULL), m_valid(false) { m_lsf = new unsigned char[M17_LSF_LENGTH_BYTES]; + + ::memset(m_lsf, 0x00U, M17_LSF_LENGTH_BYTES); } CM17LSF::~CM17LSF() From 5e4100e3b32758772e2891b123d6f95bc1bf5b76 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Wed, 6 Dec 2023 17:30:03 +0000 Subject: [PATCH 6/6] Remove the debugging statements. --- M17Control.cpp | 10 +--------- M17Network.cpp | 8 ++------ 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/M17Control.cpp b/M17Control.cpp index 5bca746..070f5ba 100644 --- a/M17Control.cpp +++ b/M17Control.cpp @@ -539,13 +539,10 @@ void CM17Control::writeNetwork() if (!exists) return; - if (!m_enabled) { - LogMessage("M17 not enabled"); + if (!m_enabled) return; - } if (m_rfState != RS_RF_LISTENING && m_rfState != RS_RF_LATE_ENTRY && m_netState == RS_NET_IDLE) { - LogMessage("M17 status is incorrect %d,%d", m_rfState, m_netState); m_network->reset(); return; } @@ -558,7 +555,6 @@ void CM17Control::writeNetwork() unsigned char type = lsf.getEncryptionType(); if (type != M17_ENCRYPTION_TYPE_NONE) { - LogMessage("M17 encryption rejection"); m_network->reset(); return; } @@ -623,8 +619,6 @@ void CM17Control::writeNetwork() decorrelator(temp, start + 2U); writeQueueNet(start); - } else { - LogMessage("M17 in an odd state 1 %d", m_netState); } if (m_netState == RS_NET_AUDIO || m_netState == RS_NET_DATA_AUDIO) { @@ -737,8 +731,6 @@ void CM17Control::writeNetwork() writeEndNet(); } - } else { - LogMessage("M17 in an odd state 2 %d", m_netState); } } diff --git a/M17Network.cpp b/M17Network.cpp index ed36ec7..268f069 100644 --- a/M17Network.cpp +++ b/M17Network.cpp @@ -133,10 +133,8 @@ void CM17Network::clock(unsigned int ms) if (m_debug) CUtils::dump(1U, "M17 Network Received", buffer, length); - if (!m_enabled) { - LogMessage("M17 Network not enabled"); + if (!m_enabled) return; - } if (::memcmp(buffer + 0U, "PING", 4U) == 0) return; @@ -150,10 +148,8 @@ void CM17Network::clock(unsigned int ms) if (m_inId == 0U) { m_inId = id; } else { - if (id != m_inId) { - LogMessage("M17 Network id rejection"); + if (id != m_inId) return; - } } unsigned char c = length - 6U;