From 82b5b010ebcac52628f05513c6a9d7d64467b84d Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Tue, 20 Apr 2021 22:37:17 +0100 Subject: [PATCH] Add an end of transmission marker to the USRP protocol. --- FMNetwork.cpp | 61 +++++++++++++++++++++++++++++++++++++++++++++++++-- Version.h | 2 +- 2 files changed, 60 insertions(+), 3 deletions(-) diff --git a/FMNetwork.cpp b/FMNetwork.cpp index 0aa1fe8..2deed38 100644 --- a/FMNetwork.cpp +++ b/FMNetwork.cpp @@ -90,7 +90,7 @@ bool CFMNetwork::writeData(float* data, unsigned int nSamples) buffer[length++] = 0x00U; buffer[length++] = 0x00U; - // PTT, this may be wrong + // PTT on buffer[length++] = 0x00U; buffer[length++] = 0x00U; buffer[length++] = 0x00U; @@ -135,7 +135,64 @@ bool CFMNetwork::writeData(float* data, unsigned int nSamples) bool CFMNetwork::writeEOT() { - return true; + unsigned char buffer[1500U]; + ::memset(buffer, 0x00U, 1500U); + + unsigned int length = 0U; + + if (m_protocol == FMNP_USRP) { + buffer[length++] = 'U'; + buffer[length++] = 'S'; + buffer[length++] = 'R'; + buffer[length++] = 'P'; + + // Sequence number + buffer[length++] = (m_seqNo >> 24) & 0xFFU; + buffer[length++] = (m_seqNo >> 16) & 0xFFU; + buffer[length++] = (m_seqNo >> 8) & 0xFFU; + buffer[length++] = (m_seqNo >> 0) & 0xFFU; + + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + + // PTT off + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + + // Type, 0 for audio + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + buffer[length++] = 0x00U; + + length += 160U * sizeof(int16_t); + } + + if (m_debug) + CUtils::dump(1U, "FM Network Data Sent", buffer, length); + + m_seqNo++; + + return m_socket.write(buffer, length, m_addr, m_addrLen); } void CFMNetwork::clock(unsigned int ms) diff --git a/Version.h b/Version.h index 5bef73a..4498807 100644 --- a/Version.h +++ b/Version.h @@ -19,6 +19,6 @@ #if !defined(VERSION_H) #define VERSION_H -const char* VERSION = "20210411"; +const char* VERSION = "20210420"; #endif