From e12b2b999429d1585bfbb1047f79127acbc49fcb Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Fri, 24 May 2024 10:24:09 +0100 Subject: [PATCH] Add the repeater callsign to the FM start message. --- FMNetwork.cpp | 26 ++++++++++++++++++++------ FMNetwork.h | 3 ++- MMDVM.ini | 6 ------ MMDVMHost.cpp | 3 ++- Version.h | 2 +- 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/FMNetwork.cpp b/FMNetwork.cpp index 9d20599..792903d 100644 --- a/FMNetwork.cpp +++ b/FMNetwork.cpp @@ -32,7 +32,8 @@ const unsigned int BUFFER_LENGTH = 1500U; -CFMNetwork::CFMNetwork(const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug) : +CFMNetwork::CFMNetwork(const std::string& callsign, const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug) : +m_callsign(callsign), m_socket(localAddress, localPort), m_addr(), m_addrLen(0U), @@ -42,11 +43,17 @@ m_buffer(2000U, "FM Network"), m_seqNo(0U), m_timer(1000U, 5U) { + assert(!callsign.empty()); assert(gatewayPort > 0U); assert(!gatewayAddress.empty()); if (CUDPSocket::lookup(gatewayAddress, gatewayPort, m_addr, m_addrLen) != 0) m_addrLen = 0U; + + // Remove any trailing spaces/letters from the callsign + size_t pos = callsign.find_first_of(' '); + if (pos != std::string::npos) + m_callsign = callsign.substr(0U, pos); } CFMNetwork::~CFMNetwork() @@ -113,14 +120,21 @@ bool CFMNetwork::writeStart() { uint8_t buffer[5U]; - buffer[0U] = 'F'; - buffer[1U] = 'M'; - buffer[2U] = 'S'; + unsigned int length = 0U; + + buffer[length++] = 'F'; + buffer[length++] = 'M'; + buffer[length++] = 'S'; + + for (unsigned int i = 0U; i < m_callsign.size(); i++) + buffer[length++] = m_callsign.at(i); + + buffer[length++] = '\0'; if (m_debug) - CUtils::dump(1U, "FM Network Data Sent", buffer, 3U); + CUtils::dump(1U, "FM Network Data Sent", buffer, length); - return m_socket.write(buffer, 3U, m_addr, m_addrLen); + return m_socket.write(buffer, length, m_addr, m_addrLen); } bool CFMNetwork::writeEnd() diff --git a/FMNetwork.h b/FMNetwork.h index 645524f..ce9e3c7 100644 --- a/FMNetwork.h +++ b/FMNetwork.h @@ -32,7 +32,7 @@ class CFMNetwork { public: - CFMNetwork(const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug); + CFMNetwork(const std::string& callsign, const std::string& localAddress, unsigned short localPort, const std::string& gatewayAddress, unsigned short gatewayPort, bool debug); ~CFMNetwork(); bool open(); @@ -52,6 +52,7 @@ public: void clock(unsigned int ms); private: + std::string m_callsign; CUDPSocket m_socket; sockaddr_storage m_addr; unsigned int m_addrLen; diff --git a/MMDVM.ini b/MMDVM.ini index 50961eb..1c78ce1 100644 --- a/MMDVM.ini +++ b/MMDVM.ini @@ -284,12 +284,6 @@ Debug=0 [FM Network] Enable=1 -# Protocol may be USRP or RAW -Protocol=USRP -# SampleRate is only used in RAW mode -SampleRate=48000 -# The squelch file is optional and only used in RAW mode -SquelchFile=/tmp/sql LocalAddress=127.0.0.1 LocalPort=3810 GatewayAddress=127.0.0.1 diff --git a/MMDVMHost.cpp b/MMDVMHost.cpp index a01a881..9ba266d 100644 --- a/MMDVMHost.cpp +++ b/MMDVMHost.cpp @@ -2230,6 +2230,7 @@ bool CMMDVMHost::createPOCSAGNetwork() #if defined(USE_FM) bool CMMDVMHost::createFMNetwork() { + std::string callsign = m_conf.getFMCallsign(); std::string gatewayAddress = m_conf.getFMGatewayAddress(); unsigned short gatewayPort = m_conf.getFMGatewayPort(); std::string localAddress = m_conf.getFMLocalAddress(); @@ -2252,7 +2253,7 @@ bool CMMDVMHost::createFMNetwork() LogInfo(" RX Audio Gain: %.2f", rxAudioGain); LogInfo(" Mode Hang: %us", m_fmNetModeHang); - m_fmNetwork = new CFMNetwork(localAddress, localPort, gatewayAddress, gatewayPort, debug); + m_fmNetwork = new CFMNetwork(callsign, localAddress, localPort, gatewayAddress, gatewayPort, debug); bool ret = m_fmNetwork->open(); if (!ret) { diff --git a/Version.h b/Version.h index 5478441..9b561d6 100644 --- a/Version.h +++ b/Version.h @@ -19,6 +19,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20240429"; +const char* VERSION = "20240524"; #endif