From ac4249bbb11c7ed5c2f01a4c1f64d34b53c99c89 Mon Sep 17 00:00:00 2001 From: Jonathan Naylor Date: Thu, 2 Feb 2017 20:13:28 +0000 Subject: [PATCH] Add working sync sample dumping for DMR, P25 and YSF. --- DMRDMORX.cpp | 23 ++++++++++++----------- DMRDMORX.h | 2 +- DMRSlotRX.cpp | 16 ++++++++-------- DMRSlotRX.h | 2 +- P25RX.cpp | 4 +++- YSFRX.cpp | 5 ++++- 6 files changed, 29 insertions(+), 23 deletions(-) diff --git a/DMRDMORX.cpp b/DMRDMORX.cpp index 4e8886a..bf62eee 100644 --- a/DMRDMORX.cpp +++ b/DMRDMORX.cpp @@ -18,7 +18,7 @@ #define WANT_DEBUG -#define DUMP_SAMPLES +// #define DUMP_SAMPLES #include "Config.h" #include "Globals.h" @@ -131,7 +131,7 @@ bool CDMRDMORX::processSample(q15_t sample, uint16_t rssi) samplesToBits(ptr, DMR_FRAME_LENGTH_SYMBOLS, frame, 8U, centre, threshold); #if defined(DUMP_SAMPLES) if (m_control == CONTROL_DATA || m_control == CONTROL_VOICE) - writeSync(ptr); + writeSync(); #endif if (m_control == CONTROL_DATA) { @@ -432,23 +432,24 @@ void CDMRDMORX::writeRSSIData(uint8_t* frame) #endif } -void CDMRDMORX::writeSync(uint16_t start) +#if defined(DUMP_SAMPLES) +void CDMRDMORX::writeSync() { - // XXX Check this - start += DMR_AUDIO_LENGTH_SYMBOLS / 2U; - if (start >= DMO_BUFFER_LENGTH_SAMPLES) - start -= DMO_BUFFER_LENGTH_SAMPLES; + uint16_t ptr = m_syncPtr + DMO_BUFFER_LENGTH_SAMPLES - DMR_SYNC_LENGTH_SAMPLES + DMR_RADIO_SYMBOL_LENGTH; + if (ptr >= DMO_BUFFER_LENGTH_SAMPLES) + ptr -= DMO_BUFFER_LENGTH_SAMPLES; q15_t sync[DMR_SYNC_LENGTH_SYMBOLS]; for (uint16_t i = 0U; i < DMR_SYNC_LENGTH_SYMBOLS; i++) { - sync[i] = m_buffer[start]; + sync[i] = m_buffer[ptr]; - start += DMR_RADIO_SYMBOL_LENGTH; - if (start >= DMO_BUFFER_LENGTH_SAMPLES) - start -= DMO_BUFFER_LENGTH_SAMPLES; + ptr += DMR_RADIO_SYMBOL_LENGTH; + if (ptr >= DMO_BUFFER_LENGTH_SAMPLES) + ptr -= DMO_BUFFER_LENGTH_SAMPLES; } serial.writeSamples(STATE_DMR, sync, DMR_SYNC_LENGTH_SYMBOLS); } +#endif diff --git a/DMRDMORX.h b/DMRDMORX.h index f78de80..8fd209a 100644 --- a/DMRDMORX.h +++ b/DMRDMORX.h @@ -64,7 +64,7 @@ private: void correlateSync(bool first); void samplesToBits(uint16_t start, uint8_t count, uint8_t* buffer, uint16_t offset, q15_t centre, q15_t threshold); void writeRSSIData(uint8_t* frame); - void writeSync(uint16_t start); + void writeSync(); }; #endif diff --git a/DMRSlotRX.cpp b/DMRSlotRX.cpp index 0bcafd2..6947020 100644 --- a/DMRSlotRX.cpp +++ b/DMRSlotRX.cpp @@ -18,7 +18,7 @@ #define WANT_DEBUG -#define DUMP_SAMPLES +// #define DUMP_SAMPLES #include "Config.h" #include "Globals.h" @@ -134,7 +134,7 @@ bool CDMRSlotRX::processSample(q15_t sample, uint16_t rssi) samplesToBits(ptr, DMR_FRAME_LENGTH_SYMBOLS, frame, 8U, centre, threshold); #if defined(DUMP_SAMPLES) if (m_control == CONTROL_DATA || m_control == CONTROL_VOICE) - writeSync(ptr); + writeSync(); #endif if (m_control == CONTROL_DATA) { @@ -394,19 +394,19 @@ void CDMRSlotRX::writeRSSIData(uint8_t* frame) #endif } -void CDMRSlotRX::writeSync(uint16_t start) +#if defined(DUMP_SAMPLES) +void CDMRSlotRX::writeSync() { - // XXX Check this - start += DMR_AUDIO_LENGTH_SYMBOLS / 2U; + uint16_t ptr = m_syncPtr - DMR_SYNC_LENGTH_SAMPLES + DMR_RADIO_SYMBOL_LENGTH; q15_t sync[DMR_SYNC_LENGTH_SYMBOLS]; for (uint16_t i = 0U; i < DMR_SYNC_LENGTH_SYMBOLS; i++) { - sync[i] = m_buffer[start]; - - start += DMR_RADIO_SYMBOL_LENGTH; + sync[i] = m_buffer[ptr]; + ptr += DMR_RADIO_SYMBOL_LENGTH; } serial.writeSamples(STATE_DMR, sync, DMR_SYNC_LENGTH_SYMBOLS); } +#endif diff --git a/DMRSlotRX.h b/DMRSlotRX.h index 0207082..904ed90 100644 --- a/DMRSlotRX.h +++ b/DMRSlotRX.h @@ -67,7 +67,7 @@ private: void correlateSync(bool first); void samplesToBits(uint16_t start, uint8_t count, uint8_t* buffer, uint16_t offset, q15_t centre, q15_t threshold); void writeRSSIData(uint8_t* frame); - void writeSync(uint16_t start); + void writeSync(); }; #endif diff --git a/P25RX.cpp b/P25RX.cpp index 7183dbe..e8c5e4e 100644 --- a/P25RX.cpp +++ b/P25RX.cpp @@ -18,7 +18,7 @@ #define WANT_DEBUG -#define DUMP_SAMPLES +// #define DUMP_SAMPLES #include "Config.h" #include "Globals.h" @@ -438,6 +438,7 @@ void CP25RX::writeRSSILdu(uint8_t* ldu) m_rssiCount = 0U; } +#if defined(DUMP_SAMPLES) void CP25RX::writeSync(uint16_t start) { q15_t sync[P25_SYNC_LENGTH_SYMBOLS]; @@ -452,3 +453,4 @@ void CP25RX::writeSync(uint16_t start) serial.writeSamples(STATE_P25, sync, P25_SYNC_LENGTH_SYMBOLS); } +#endif diff --git a/YSFRX.cpp b/YSFRX.cpp index c91331e..6af22cc 100644 --- a/YSFRX.cpp +++ b/YSFRX.cpp @@ -18,7 +18,7 @@ #define WANT_DEBUG -#define DUMP_SAMPLES +// #define DUMP_SAMPLES #include "Config.h" #include "Globals.h" @@ -354,6 +354,7 @@ void CYSFRX::writeRSSIData(uint8_t* data) m_rssiCount = 0U; } +#if defined(DUMP_SAMPLES) void CYSFRX::writeSync(uint16_t start) { q15_t sync[YSF_SYNC_LENGTH_SYMBOLS]; @@ -368,3 +369,5 @@ void CYSFRX::writeSync(uint16_t start) serial.writeSamples(STATE_YSF, sync, YSF_SYNC_LENGTH_SYMBOLS); } +#endif +