From ee224039bec1ff9a2419758b01e83214a8f1d4f5 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 5 Sep 2020 22:51:45 +0200 Subject: [PATCH] Update YSFNetwork.cpp --- YSFGateway/YSFNetwork.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/YSFGateway/YSFNetwork.cpp b/YSFGateway/YSFNetwork.cpp index 91076d1..dad803e 100644 --- a/YSFGateway/YSFNetwork.cpp +++ b/YSFGateway/YSFNetwork.cpp @@ -33,6 +33,7 @@ m_debug(debug), m_address(), m_port(0U), m_poll(NULL), +m_options(NULL), m_unlink(NULL), m_buffer(1000U, "YSF Network Buffer"), m_pollTimer(1000U, 5U), @@ -45,12 +46,16 @@ m_linked(false) m_unlink = new unsigned char[14U]; ::memcpy(m_unlink + 0U, "YSFU", 4U); + m_options = new unsigned char[50U]; + ::memcpy(m_options + 0U, "YSFO", 4U); + std::string node = callsign; node.resize(YSF_CALLSIGN_LENGTH, ' '); for (unsigned int i = 0U; i < YSF_CALLSIGN_LENGTH; i++) { m_poll[i + 4U] = node.at(i); m_unlink[i + 4U] = node.at(i); + m_options[i + 4U] = node.at(i); } } @@ -60,6 +65,7 @@ m_debug(debug), m_address(), m_port(0U), m_poll(NULL), +m_options(NULL), m_unlink(NULL), m_buffer(1000U, "YSF Network Buffer"), m_pollTimer(1000U, 5U) @@ -70,12 +76,16 @@ m_pollTimer(1000U, 5U) m_unlink = new unsigned char[14U]; ::memcpy(m_unlink + 0U, "YSFU", 4U); + m_options = new unsigned char[50U]; + ::memcpy(m_options + 0U, "YSFO", 4U); + std::string node = callsign; node.resize(YSF_CALLSIGN_LENGTH, ' '); for (unsigned int i = 0U; i < YSF_CALLSIGN_LENGTH; i++) { m_poll[i + 4U] = node.at(i); m_unlink[i + 4U] = node.at(i); + m_options[i + 4U] = node.at(i); } } @@ -130,6 +140,23 @@ void CYSFNetwork::writePoll(unsigned int count) for (unsigned int i = 0U; i < count; i++) m_socket.write(m_poll, 14U, m_address, m_port); + + if (m_options != NULL) + m_socket.write(m_options, 50U, m_address, m_port); +} + +void CYSFNetwork::setOptions(const std::string& options) +{ + std::string opt = options; + + if (opt.size() < 1) + return; + + opt.resize(50, ' '); + + for (unsigned int i = 0U; i < (50 - 4 - YSF_CALLSIGN_LENGTH); i++) { + m_options[i + 4U + YSF_CALLSIGN_LENGTH] = opt.at(i); + } } void CYSFNetwork::writeUnlink(unsigned int count) @@ -172,6 +199,9 @@ void CYSFNetwork::clock(unsigned int ms) LogMessage("Linked to %s", m_name.c_str()); m_linked = true; + + if (m_options != NULL) + m_socket.write(m_options, 50U, m_address, m_port); } if (m_debug)