mirror of https://github.com/g4klx/MMDVM.git
Add full frame dumping.
This commit is contained in:
parent
3b5e1afb54
commit
2f9eb3523d
31
DMRDMORX.cpp
31
DMRDMORX.cpp
|
@ -18,7 +18,8 @@
|
||||||
|
|
||||||
#define WANT_DEBUG
|
#define WANT_DEBUG
|
||||||
|
|
||||||
// #define DUMP_SAMPLES
|
// #define DUMP_SYNC_SAMPLES
|
||||||
|
#define DUMP_SAMPLES
|
||||||
|
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
|
@ -129,9 +130,13 @@ bool CDMRDMORX::processSample(q15_t sample, uint16_t rssi)
|
||||||
ptr -= DMO_BUFFER_LENGTH_SAMPLES;
|
ptr -= DMO_BUFFER_LENGTH_SAMPLES;
|
||||||
|
|
||||||
samplesToBits(ptr, DMR_FRAME_LENGTH_SYMBOLS, frame, 8U, centre, threshold);
|
samplesToBits(ptr, DMR_FRAME_LENGTH_SYMBOLS, frame, 8U, centre, threshold);
|
||||||
|
#if defined(DUMP_SYNC_SAMPLES)
|
||||||
|
if (m_control == CONTROL_DATA || m_control == CONTROL_VOICE)
|
||||||
|
writeSyncSamples();
|
||||||
|
#endif
|
||||||
#if defined(DUMP_SAMPLES)
|
#if defined(DUMP_SAMPLES)
|
||||||
if (m_control == CONTROL_DATA || m_control == CONTROL_VOICE)
|
if (m_control == CONTROL_DATA || m_control == CONTROL_VOICE)
|
||||||
writeSync();
|
writeSamples(ptr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (m_control == CONTROL_DATA) {
|
if (m_control == CONTROL_DATA) {
|
||||||
|
@ -432,8 +437,8 @@ void CDMRDMORX::writeRSSIData(uint8_t* frame)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DUMP_SAMPLES)
|
#if defined(DUMP_SYNC_SAMPLES)
|
||||||
void CDMRDMORX::writeSync()
|
void CDMRDMORX::writeSyncSamples()
|
||||||
{
|
{
|
||||||
uint16_t ptr = m_syncPtr + DMO_BUFFER_LENGTH_SAMPLES - DMR_SYNC_LENGTH_SAMPLES + DMR_RADIO_SYMBOL_LENGTH;
|
uint16_t ptr = m_syncPtr + DMO_BUFFER_LENGTH_SAMPLES - DMR_SYNC_LENGTH_SAMPLES + DMR_RADIO_SYMBOL_LENGTH;
|
||||||
if (ptr >= DMO_BUFFER_LENGTH_SAMPLES)
|
if (ptr >= DMO_BUFFER_LENGTH_SAMPLES)
|
||||||
|
@ -449,7 +454,23 @@ void CDMRDMORX::writeSync()
|
||||||
ptr -= DMO_BUFFER_LENGTH_SAMPLES;
|
ptr -= DMO_BUFFER_LENGTH_SAMPLES;
|
||||||
}
|
}
|
||||||
|
|
||||||
serial.writeSamples(STATE_DMR, sync, DMR_SYNC_LENGTH_SYMBOLS);
|
serial.writeSyncSamples(STATE_DMR, sync, DMR_SYNC_LENGTH_SYMBOLS);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(DUMP_SAMPLES)
|
||||||
|
void CDMRDMORX::writeSamples(uint16_t start)
|
||||||
|
{
|
||||||
|
q15_t samples[DMR_FRAME_LENGTH_SYMBOLS];
|
||||||
|
|
||||||
|
for (uint16_t i = 0U; i < DMR_FRAME_LENGTH_SYMBOLS; i++) {
|
||||||
|
samples[i] = m_buffer[start];
|
||||||
|
|
||||||
|
start += DMR_RADIO_SYMBOL_LENGTH;
|
||||||
|
if (start >= DMO_BUFFER_LENGTH_SAMPLES)
|
||||||
|
start -= DMO_BUFFER_LENGTH_SAMPLES;
|
||||||
|
}
|
||||||
|
|
||||||
|
serial.writeSamples(STATE_DMR, samples, DMR_FRAME_LENGTH_SYMBOLS);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -64,8 +64,8 @@ private:
|
||||||
void correlateSync(bool first);
|
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 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 writeRSSIData(uint8_t* frame);
|
||||||
void writeSync();
|
void writeSyncSamples();
|
||||||
|
void writeSamples(uint16_t start);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,8 @@
|
||||||
|
|
||||||
#define WANT_DEBUG
|
#define WANT_DEBUG
|
||||||
|
|
||||||
// #define DUMP_SAMPLES
|
// #define DUMP_SYNC_SAMPLES
|
||||||
|
#define DUMP_SAMPLES
|
||||||
|
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
|
@ -132,9 +133,13 @@ bool CDMRSlotRX::processSample(q15_t sample, uint16_t rssi)
|
||||||
|
|
||||||
uint16_t ptr = m_endPtr - DMR_FRAME_LENGTH_SAMPLES + DMR_RADIO_SYMBOL_LENGTH + 1U;
|
uint16_t ptr = m_endPtr - DMR_FRAME_LENGTH_SAMPLES + DMR_RADIO_SYMBOL_LENGTH + 1U;
|
||||||
samplesToBits(ptr, DMR_FRAME_LENGTH_SYMBOLS, frame, 8U, centre, threshold);
|
samplesToBits(ptr, DMR_FRAME_LENGTH_SYMBOLS, frame, 8U, centre, threshold);
|
||||||
|
#if defined(DUMP_SYNC_SAMPLES)
|
||||||
|
if (m_control == CONTROL_DATA || m_control == CONTROL_VOICE)
|
||||||
|
writeSyncSamples();
|
||||||
|
#endif
|
||||||
#if defined(DUMP_SAMPLES)
|
#if defined(DUMP_SAMPLES)
|
||||||
if (m_control == CONTROL_DATA || m_control == CONTROL_VOICE)
|
if (m_control == CONTROL_DATA || m_control == CONTROL_VOICE)
|
||||||
writeSync();
|
writeSamples(ptr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (m_control == CONTROL_DATA) {
|
if (m_control == CONTROL_DATA) {
|
||||||
|
@ -409,8 +414,8 @@ void CDMRSlotRX::writeRSSIData(uint8_t* frame)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DUMP_SAMPLES)
|
#if defined(DUMP_SYNC_SAMPLES)
|
||||||
void CDMRSlotRX::writeSync()
|
void CDMRSlotRX::writeSyncSamples()
|
||||||
{
|
{
|
||||||
uint16_t ptr = m_syncPtr - DMR_SYNC_LENGTH_SAMPLES + DMR_RADIO_SYMBOL_LENGTH;
|
uint16_t ptr = m_syncPtr - DMR_SYNC_LENGTH_SAMPLES + DMR_RADIO_SYMBOL_LENGTH;
|
||||||
|
|
||||||
|
@ -421,7 +426,20 @@ void CDMRSlotRX::writeSync()
|
||||||
ptr += DMR_RADIO_SYMBOL_LENGTH;
|
ptr += DMR_RADIO_SYMBOL_LENGTH;
|
||||||
}
|
}
|
||||||
|
|
||||||
serial.writeSamples(STATE_DMR, sync, DMR_SYNC_LENGTH_SYMBOLS);
|
serial.writeSyncSamples(STATE_DMR, sync, DMR_SYNC_LENGTH_SYMBOLS);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(DUMP_SAMPLES)
|
||||||
|
void CDMRSlotRX::writeSamples(uint16_t start)
|
||||||
|
{
|
||||||
|
q15_t samples[DMR_FRAME_LENGTH_SYMBOLS];
|
||||||
|
|
||||||
|
for (uint16_t i = 0U; i < DMR_FRAME_LENGTH_SYMBOLS; i++) {
|
||||||
|
samples[i] = m_buffer[start];
|
||||||
|
start += DMR_RADIO_SYMBOL_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
serial.writeSamples(STATE_DMR, samples, DMR_FRAME_LENGTH_SYMBOLS);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -67,8 +67,8 @@ private:
|
||||||
void correlateSync(bool first);
|
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 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 writeRSSIData(uint8_t* frame);
|
||||||
void writeSync();
|
void writeSyncSamples();
|
||||||
|
void writeSamples(uint16_t start);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
34
P25RX.cpp
34
P25RX.cpp
|
@ -18,7 +18,8 @@
|
||||||
|
|
||||||
#define WANT_DEBUG
|
#define WANT_DEBUG
|
||||||
|
|
||||||
#define DUMP_SAMPLES
|
// #define DUMP_SYNC_SAMPLES
|
||||||
|
#define DUMP_SAMPLES
|
||||||
|
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
|
@ -180,8 +181,8 @@ void CP25RX::processHdr(q15_t sample)
|
||||||
|
|
||||||
uint8_t frame[P25_HDR_FRAME_LENGTH_BYTES + 1U];
|
uint8_t frame[P25_HDR_FRAME_LENGTH_BYTES + 1U];
|
||||||
samplesToBits(m_hdrStartPtr, P25_HDR_FRAME_LENGTH_SYMBOLS, frame, 8U, m_centreVal, m_thresholdVal);
|
samplesToBits(m_hdrStartPtr, P25_HDR_FRAME_LENGTH_SYMBOLS, frame, 8U, m_centreVal, m_thresholdVal);
|
||||||
#if defined(DUMP_SAMPLES)
|
#if defined(DUMP_SYNC_SAMPLES)
|
||||||
writeSync(m_hdrStartPtr);
|
writeSyncSamples(m_hdrStartPtr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
frame[0U] = 0x01U;
|
frame[0U] = 0x01U;
|
||||||
|
@ -229,8 +230,11 @@ void CP25RX::processLdu(q15_t sample)
|
||||||
|
|
||||||
uint8_t frame[P25_LDU_FRAME_LENGTH_BYTES + 3U];
|
uint8_t frame[P25_LDU_FRAME_LENGTH_BYTES + 3U];
|
||||||
samplesToBits(m_lduStartPtr, P25_LDU_FRAME_LENGTH_SYMBOLS, frame, 8U, m_centreVal, m_thresholdVal);
|
samplesToBits(m_lduStartPtr, P25_LDU_FRAME_LENGTH_SYMBOLS, frame, 8U, m_centreVal, m_thresholdVal);
|
||||||
|
#if defined(DUMP_SYNC_SAMPLES)
|
||||||
|
writeSyncSamples(m_lduStartPtr);
|
||||||
|
#endif
|
||||||
#if defined(DUMP_SAMPLES)
|
#if defined(DUMP_SAMPLES)
|
||||||
writeSync(m_lduStartPtr);
|
writeSamples(m_lduStartPtr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// We've not seen a data sync for too long, signal RXLOST and change to RX_NONE
|
// We've not seen a data sync for too long, signal RXLOST and change to RX_NONE
|
||||||
|
@ -477,8 +481,8 @@ void CP25RX::writeRSSILdu(uint8_t* ldu)
|
||||||
m_rssiCount = 0U;
|
m_rssiCount = 0U;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DUMP_SAMPLES)
|
#if defined(DUMP_SYNC_SAMPLES)
|
||||||
void CP25RX::writeSync(uint16_t start)
|
void CP25RX::writeSyncSamples(uint16_t start)
|
||||||
{
|
{
|
||||||
q15_t sync[P25_SYNC_LENGTH_SYMBOLS];
|
q15_t sync[P25_SYNC_LENGTH_SYMBOLS];
|
||||||
|
|
||||||
|
@ -490,7 +494,23 @@ void CP25RX::writeSync(uint16_t start)
|
||||||
start -= P25_LDU_FRAME_LENGTH_SAMPLES;
|
start -= P25_LDU_FRAME_LENGTH_SAMPLES;
|
||||||
}
|
}
|
||||||
|
|
||||||
serial.writeSamples(STATE_P25, sync, P25_SYNC_LENGTH_SYMBOLS);
|
serial.writeSyncSamples(STATE_P25, sync, P25_SYNC_LENGTH_SYMBOLS);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(DUMP_SAMPLES)
|
||||||
|
void CP25RX::writeSamples(uint16_t start)
|
||||||
|
{
|
||||||
|
q15_t samples[P25_LDU_FRAME_LENGTH_SYMBOLS];
|
||||||
|
|
||||||
|
for (uint16_t i = 0U; i < P25_LDU_FRAME_LENGTH_SYMBOLS; i++) {
|
||||||
|
samples[i] = m_buffer[start];
|
||||||
|
|
||||||
|
start += P25_RADIO_SYMBOL_LENGTH;
|
||||||
|
if (start >= P25_LDU_FRAME_LENGTH_SAMPLES)
|
||||||
|
start -= P25_LDU_FRAME_LENGTH_SAMPLES;
|
||||||
|
}
|
||||||
|
|
||||||
|
serial.writeSamples(STATE_P25, samples, P25_LDU_FRAME_LENGTH_SYMBOLS);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
3
P25RX.h
3
P25RX.h
|
@ -67,7 +67,8 @@ private:
|
||||||
void calculateLevels(uint16_t start, uint16_t count);
|
void calculateLevels(uint16_t start, uint16_t count);
|
||||||
void samplesToBits(uint16_t start, uint16_t count, uint8_t* buffer, uint16_t offset, q15_t centre, q15_t threshold);
|
void samplesToBits(uint16_t start, uint16_t count, uint8_t* buffer, uint16_t offset, q15_t centre, q15_t threshold);
|
||||||
void writeRSSILdu(uint8_t* ldu);
|
void writeRSSILdu(uint8_t* ldu);
|
||||||
void writeSync(uint16_t start);
|
void writeSyncSamples(uint16_t start);
|
||||||
|
void writeSamples(uint16_t start);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -62,7 +62,8 @@ const uint8_t MMDVM_NAK = 0x7FU;
|
||||||
|
|
||||||
const uint8_t MMDVM_SERIAL = 0x80U;
|
const uint8_t MMDVM_SERIAL = 0x80U;
|
||||||
|
|
||||||
const uint8_t MMDVM_SAMPLES = 0xF0U;
|
const uint8_t MMDVM_SAMPLES = 0xEFU;
|
||||||
|
const uint8_t MMDVM_SYNC_SAMPLES = 0xF0U;
|
||||||
|
|
||||||
const uint8_t MMDVM_DEBUG1 = 0xF1U;
|
const uint8_t MMDVM_DEBUG1 = 0xF1U;
|
||||||
const uint8_t MMDVM_DEBUG2 = 0xF2U;
|
const uint8_t MMDVM_DEBUG2 = 0xF2U;
|
||||||
|
@ -70,6 +71,7 @@ const uint8_t MMDVM_DEBUG3 = 0xF3U;
|
||||||
const uint8_t MMDVM_DEBUG4 = 0xF4U;
|
const uint8_t MMDVM_DEBUG4 = 0xF4U;
|
||||||
const uint8_t MMDVM_DEBUG5 = 0xF5U;
|
const uint8_t MMDVM_DEBUG5 = 0xF5U;
|
||||||
|
|
||||||
|
|
||||||
#if defined(EXTERNAL_OSC)
|
#if defined(EXTERNAL_OSC)
|
||||||
const uint8_t HARDWARE[] = "MMDVM 20170206 TCXO (D-Star/DMR/System Fusion/P25/RSSI/CW Id)";
|
const uint8_t HARDWARE[] = "MMDVM 20170206 TCXO (D-Star/DMR/System Fusion/P25/RSSI/CW Id)";
|
||||||
#else
|
#else
|
||||||
|
@ -925,13 +927,13 @@ void CSerialPort::writeRSSIData(const uint8_t* data, uint8_t length)
|
||||||
writeInt(1U, reply, count);
|
writeInt(1U, reply, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSerialPort::writeSamples(unsigned char mode, const q15_t* samples, unsigned char nSamples)
|
void CSerialPort::writeSyncSamples(uint8_t mode, const q15_t* samples, uint8_t nSamples)
|
||||||
{
|
{
|
||||||
uint8_t reply[130U];
|
uint8_t reply[130U];
|
||||||
|
|
||||||
reply[0U] = MMDVM_FRAME_START;
|
reply[0U] = MMDVM_FRAME_START;
|
||||||
reply[1U] = 0U;
|
reply[1U] = 0U;
|
||||||
reply[2U] = MMDVM_SAMPLES;
|
reply[2U] = MMDVM_SYNC_SAMPLES;
|
||||||
|
|
||||||
reply[3U] = mode;
|
reply[3U] = mode;
|
||||||
|
|
||||||
|
@ -948,6 +950,30 @@ void CSerialPort::writeSamples(unsigned char mode, const q15_t* samples, unsigne
|
||||||
writeInt(1U, reply, count, true);
|
writeInt(1U, reply, count, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSerialPort::writeSamples(uint8_t mode, const q15_t* samples, uint16_t nSamples)
|
||||||
|
{
|
||||||
|
uint8_t reply[1800U];
|
||||||
|
|
||||||
|
reply[0U] = MMDVM_FRAME_START;
|
||||||
|
reply[1U] = 0U;
|
||||||
|
reply[2U] = MMDVM_SAMPLES;
|
||||||
|
|
||||||
|
reply[5U] = mode;
|
||||||
|
|
||||||
|
uint16_t count = 6U;
|
||||||
|
for (uint16_t i = 0U; i < nSamples; i++) {
|
||||||
|
uint16_t val = uint16_t(samples[i] + 2048);
|
||||||
|
|
||||||
|
reply[count++] = (val >> 8) & 0xFF;
|
||||||
|
reply[count++] = (val >> 0) & 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
reply[3U] = (count >> 8) & 0xFFU;
|
||||||
|
reply[4U] = (count >> 0) & 0xFFU;
|
||||||
|
|
||||||
|
writeInt(1U, reply, count, true);
|
||||||
|
}
|
||||||
|
|
||||||
void CSerialPort::writeDebug(const char* text)
|
void CSerialPort::writeDebug(const char* text)
|
||||||
{
|
{
|
||||||
uint8_t reply[130U];
|
uint8_t reply[130U];
|
||||||
|
|
|
@ -49,7 +49,8 @@ public:
|
||||||
void writeCalData(const uint8_t* data, uint8_t length);
|
void writeCalData(const uint8_t* data, uint8_t length);
|
||||||
void writeRSSIData(const uint8_t* data, uint8_t length);
|
void writeRSSIData(const uint8_t* data, uint8_t length);
|
||||||
|
|
||||||
void writeSamples(unsigned char mode, const q15_t* samples, unsigned char nSamples);
|
void writeSyncSamples(uint8_t mode, const q15_t* samples, uint8_t nSamples);
|
||||||
|
void writeSamples(uint8_t mode, const q15_t* samples, uint16_t nSamples);
|
||||||
|
|
||||||
void writeDebug(const char* text);
|
void writeDebug(const char* text);
|
||||||
void writeDebug(const char* text, int16_t n1);
|
void writeDebug(const char* text, int16_t n1);
|
||||||
|
|
30
YSFRX.cpp
30
YSFRX.cpp
|
@ -18,7 +18,8 @@
|
||||||
|
|
||||||
#define WANT_DEBUG
|
#define WANT_DEBUG
|
||||||
|
|
||||||
#define DUMP_SAMPLES
|
// #define DUMP_SYNC_SAMPLES
|
||||||
|
#define DUMP_SAMPLES
|
||||||
|
|
||||||
#include "Config.h"
|
#include "Config.h"
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
|
@ -182,8 +183,11 @@ void CYSFRX::processData(q15_t sample)
|
||||||
|
|
||||||
uint8_t frame[YSF_FRAME_LENGTH_BYTES + 3U];
|
uint8_t frame[YSF_FRAME_LENGTH_BYTES + 3U];
|
||||||
samplesToBits(m_startPtr, YSF_FRAME_LENGTH_SYMBOLS, frame, 8U, m_centreVal, m_thresholdVal);
|
samplesToBits(m_startPtr, YSF_FRAME_LENGTH_SYMBOLS, frame, 8U, m_centreVal, m_thresholdVal);
|
||||||
|
#if defined(DUMP_SYNC_SAMPLES)
|
||||||
|
writeSyncSamples(m_startPtr);
|
||||||
|
#endif
|
||||||
#if defined(DUMP_SAMPLES)
|
#if defined(DUMP_SAMPLES)
|
||||||
writeSync(m_startPtr);
|
writeSamples(m_startPtr);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// We've not seen a data sync for too long, signal RXLOST and change to RX_NONE
|
// We've not seen a data sync for too long, signal RXLOST and change to RX_NONE
|
||||||
|
@ -412,8 +416,8 @@ void CYSFRX::writeRSSIData(uint8_t* data)
|
||||||
m_rssiCount = 0U;
|
m_rssiCount = 0U;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(DUMP_SAMPLES)
|
#if defined(DUMP_SYNC_SAMPLES)
|
||||||
void CYSFRX::writeSync(uint16_t start)
|
void CYSFRX::writeSyncSamples(uint16_t start)
|
||||||
{
|
{
|
||||||
q15_t sync[YSF_SYNC_LENGTH_SYMBOLS];
|
q15_t sync[YSF_SYNC_LENGTH_SYMBOLS];
|
||||||
|
|
||||||
|
@ -425,7 +429,23 @@ void CYSFRX::writeSync(uint16_t start)
|
||||||
start -= YSF_FRAME_LENGTH_SAMPLES;
|
start -= YSF_FRAME_LENGTH_SAMPLES;
|
||||||
}
|
}
|
||||||
|
|
||||||
serial.writeSamples(STATE_YSF, sync, YSF_SYNC_LENGTH_SYMBOLS);
|
serial.writeSyncSamples(STATE_YSF, sync, YSF_SYNC_LENGTH_SYMBOLS);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(DUMP_SAMPLES)
|
||||||
|
void CYSFRX::writeSamples(uint16_t start)
|
||||||
|
{
|
||||||
|
q15_t samples[YSF_FRAME_LENGTH_SYMBOLS];
|
||||||
|
|
||||||
|
for (uint16_t i = 0U; i < YSF_FRAME_LENGTH_SYMBOLS; i++) {
|
||||||
|
samples[i] = m_buffer[start];
|
||||||
|
|
||||||
|
start += YSF_RADIO_SYMBOL_LENGTH;
|
||||||
|
if (start >= YSF_FRAME_LENGTH_SAMPLES)
|
||||||
|
start -= YSF_FRAME_LENGTH_SAMPLES;
|
||||||
|
}
|
||||||
|
|
||||||
|
serial.writeSamples(STATE_YSF, samples, YSF_FRAME_LENGTH_SYMBOLS);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
3
YSFRX.h
3
YSFRX.h
|
@ -63,7 +63,8 @@ private:
|
||||||
void calculateLevels(uint16_t start, uint16_t count);
|
void calculateLevels(uint16_t start, uint16_t count);
|
||||||
void samplesToBits(uint16_t start, uint16_t count, uint8_t* buffer, uint16_t offset, q15_t centre, q15_t threshold);
|
void samplesToBits(uint16_t start, uint16_t count, uint8_t* buffer, uint16_t offset, q15_t centre, q15_t threshold);
|
||||||
void writeRSSIData(uint8_t* data);
|
void writeRSSIData(uint8_t* data);
|
||||||
void writeSync(uint16_t start);
|
void writeSyncSamples(uint16_t start);
|
||||||
|
void writeSamples(uint16_t start);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue