New demodulators for C4FM modes.

This commit is contained in:
Jonathan Naylor
2017-01-17 20:05:20 +00:00
parent 8b13a3c8a6
commit 9a7b07027a
7 changed files with 427 additions and 260 deletions
+24 -17
View File
@@ -23,38 +23,45 @@
#include "YSFDefines.h"
enum YSFRX_STATE {
YSFRXS_NONE,
YSFRXS_DATA
YSFRXS_NONE,
YSFRXS_DATA
};
class CYSFRX {
public:
CYSFRX();
void samples(const q15_t* samples, const uint16_t* rssi, uint8_t length);
void samples(const q15_t* samples, uint16_t* rssi, uint8_t length);
void reset();
private:
uint32_t m_pll;
bool m_prev;
YSFRX_STATE m_state;
uint32_t m_symbolBuffer;
uint64_t m_bitBuffer;
q15_t m_symbols[YSF_SYNC_LENGTH_SYMBOLS];
uint8_t m_outBuffer[YSF_FRAME_LENGTH_BYTES + 3U];
uint8_t* m_buffer;
uint16_t m_bufferPtr;
uint16_t m_symbolPtr;
uint32_t m_bitBuffer[YSF_RADIO_SYMBOL_LENGTH];
q15_t m_buffer[YSF_FRAME_LENGTH_SAMPLES];
uint16_t m_bitPtr;
uint16_t m_dataPtr;
uint16_t m_endPtr;
uint16_t m_syncPtr;
uint16_t m_syncStartPtr;
uint16_t m_syncEndPtr;
bool m_syncCheck;
q31_t m_maxCorr;
uint16_t m_lostCount;
q15_t m_centre;
q15_t m_threshold;
q15_t m_centre[4U];
q15_t m_centreVal;
q15_t m_centreBest;
q15_t m_threshold[4U];
q15_t m_thresholdVal;
q15_t m_thresholdBest;
uint8_t m_averagePtr;
uint32_t m_rssiAccum;
uint16_t m_rssiCount;
void processNone(q15_t sample);
void processData(q15_t sample);
void writeRSSIData(unsigned char* data);
void processNone(q15_t sample);
void processData(q15_t sample);
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);
};
#endif