Add the repeater callsign to the FM start message.

This commit is contained in:
Jonathan Naylor
2024-05-24 10:24:09 +01:00
parent 474e9fdbb7
commit e12b2b9994
5 changed files with 25 additions and 15 deletions

View File

@@ -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()

View File

@@ -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;

View File

@@ -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

View File

@@ -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) {

View File

@@ -19,6 +19,6 @@
#if !defined(VERSION_H)
#define VERSION_H
const char* VERSION = "20240429";
const char* VERSION = "20240524";
#endif