From 6db1672ff70d31528465c5971cc4b0081d6095b9 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Thu, 15 Mar 2018 18:58:43 +0000 Subject: [PATCH] Fix end of transmission markers in the NXDN protocol. --- NXDNGateway/NXDNNetwork.cpp | 4 ++-- NXDNParrot/NXDNParrot.cpp | 2 +- NXDNReflector/NXDNReflector.cpp | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/NXDNGateway/NXDNNetwork.cpp b/NXDNGateway/NXDNNetwork.cpp index ee9dc54..82cc886 100644 --- a/NXDNGateway/NXDNNetwork.cpp +++ b/NXDNGateway/NXDNNetwork.cpp @@ -67,8 +67,8 @@ bool CNXDNNetwork::writeData(const unsigned char* data, unsigned int length, uns buffer[9U] |= grp ? 0x01U : 0x00U; if (data[0U] == 0x81U || data[0U] == 0x83U) { - buffer[9U] |= buffer[5U] == 0x01U ? 0x04U : 0x00U; - buffer[9U] |= buffer[5U] == 0x08U ? 0x08U : 0x00U; + buffer[9U] |= data[5U] == 0x01U ? 0x04U : 0x00U; + buffer[9U] |= data[5U] == 0x08U ? 0x08U : 0x00U; } ::memcpy(buffer + 10U, data, 33U); diff --git a/NXDNParrot/NXDNParrot.cpp b/NXDNParrot/NXDNParrot.cpp index ee243cd..d52f826 100644 --- a/NXDNParrot/NXDNParrot.cpp +++ b/NXDNParrot/NXDNParrot.cpp @@ -85,7 +85,7 @@ void CNXDNParrot::run() parrot.write(buffer, len); watchdogTimer.start(); - if ((buffer[9U] & 0x04U) == 0x04U) { + if ((buffer[9U] & 0x08U) == 0x08U) { ::fprintf(stdout, "Received end of transmission\n"); turnaroundTimer.start(); watchdogTimer.stop(); diff --git a/NXDNReflector/NXDNReflector.cpp b/NXDNReflector/NXDNReflector.cpp index 66dcc87..ce15dce 100644 --- a/NXDNReflector/NXDNReflector.cpp +++ b/NXDNReflector/NXDNReflector.cpp @@ -244,7 +244,7 @@ void CNXDNReflector::run() unsigned short srcId = (buffer[5U] << 8) | buffer[6U]; unsigned short dstId = (buffer[7U] << 8) | buffer[8U]; - bool grp = (buffer[9U] & 0x01U) == 0x01U; + bool grp = (buffer[9U] & 0x01U) == 0x01U; std::string callsign = lookup->find(srcId); LogMessage("Transmission from %s at %s to %s%u", callsign.c_str(), current->m_callsign.c_str(), grp ? "TG " : "", dstId); @@ -263,7 +263,7 @@ void CNXDNReflector::run() nxCoreNetwork->write(buffer, len); } - if ((buffer[9U] & 0x04U) == 0x04U) { + if ((buffer[9U] & 0x08U) == 0x08U) { LogMessage("Received end of transmission"); watchdogTimer.stop(); current = NULL; @@ -282,7 +282,7 @@ void CNXDNReflector::run() if (current == NULL) { if (!nxCore) { if ((buffer[0U] == 0x81U || buffer[0U] == 0x83U) && buffer[5U] == 0x01U) { - bool grp = (buffer[7U] & 0x20U) == 0x20U; + bool grp = (buffer[7U] & 0x20U) == 0x20U; unsigned short srcId = (buffer[8U] << 8) | buffer[9U]; unsigned short dstId = (buffer[10U] << 8) | buffer[11U];