mirror of https://github.com/g4klx/MMDVM.git
Add the sync and RRC 0.5 data and code.
This commit is contained in:
parent
0334b5a791
commit
f2d2033733
6
IO.cpp
6
IO.cpp
|
@ -33,9 +33,9 @@ static q15_t RRC_0_2_FILTER[] = {401, 104, -340, -731, -847, -553, 112, 909, 147
|
||||||
const uint16_t RRC_0_2_FILTER_LEN = 42U;
|
const uint16_t RRC_0_2_FILTER_LEN = 42U;
|
||||||
|
|
||||||
// Generated using rcosdesign(0.5, 8, 5, 'sqrt') in MATLAB
|
// Generated using rcosdesign(0.5, 8, 5, 'sqrt') in MATLAB
|
||||||
static q15_t RRC_0_5_FILTER[] = {401, 104, -340, -731, -847, -553, 112, 909, 1472, 1450, 683, -675, -2144, -3040, -2706, -770, 2667, 6995,
|
static q15_t RRC_0_5_FILTER[] = {-147, -88, 72, 220, 223, 46, -197, -285, -79, 334, 623, 390, -498, -1691, -2363, -1556, 1284, 5872, 11033,
|
||||||
11237, 14331, 15464, 14331, 11237, 6995, 2667, -770, -2706, -3040, -2144, -675, 683, 1450, 1472, 909, 112,
|
15109, 16656, 15109, 11033, 5872, 1284, -1556, -2363, -1691, -498, 390, 623, 334, -79, -285, -197, 46, 223,
|
||||||
-553, -847, -731, -340, 104, 401, 0};
|
220, 72, -88, -147, 0};
|
||||||
const uint16_t RRC_0_5_FILTER_LEN = 42U;
|
const uint16_t RRC_0_5_FILTER_LEN = 42U;
|
||||||
|
|
||||||
// Generated using rcosdesign(0.2, 8, 10, 'sqrt') in MATLAB
|
// Generated using rcosdesign(0.2, 8, 10, 'sqrt') in MATLAB
|
||||||
|
|
14
M17Defines.h
14
M17Defines.h
|
@ -30,18 +30,18 @@ const unsigned int M17_SYNC_LENGTH_BITS = 16U;
|
||||||
const unsigned int M17_SYNC_LENGTH_SYMBOLS = M17_SYNC_LENGTH_BITS / 2U;
|
const unsigned int M17_SYNC_LENGTH_SYMBOLS = M17_SYNC_LENGTH_BITS / 2U;
|
||||||
const unsigned int M17_SYNC_LENGTH_SAMPLES = M17_SYNC_LENGTH_SYMBOLS * M17_RADIO_SYMBOL_LENGTH;
|
const unsigned int M17_SYNC_LENGTH_SAMPLES = M17_SYNC_LENGTH_SYMBOLS * M17_RADIO_SYMBOL_LENGTH;
|
||||||
|
|
||||||
const uint8_t M17_SYNC_BYTES[] = {0xCDU, 0xF5U}; // XXX
|
const uint8_t M17_SYNC_BYTES[] = {0x32U, 0x43U};
|
||||||
const uint8_t M17_SYNC_BYTES_LENGTH = 2U;
|
const uint8_t M17_SYNC_BYTES_LENGTH = 2U;
|
||||||
|
|
||||||
const uint16_t M17_SYNC_BITS = 0xCDF5U; // XXX
|
const uint16_t M17_SYNC_BITS = 0x3243U;
|
||||||
|
|
||||||
// C D F 5 // XXX
|
// 3 2 4 3
|
||||||
// 11 00 11 01 11 11 01 01 // XXX
|
// 00 11 00 10 01 00 00 11
|
||||||
// -3 +1 -3 +3 -3 -3 +3 +3 // XXX
|
// +1 -3 +1 -1 +3 +1 +1 -3
|
||||||
|
|
||||||
const int8_t M17_SYNC_SYMBOLS_VALUES[] = {-3, +1, -3, +3, -3, -3, +3, +3}; // XXX
|
const int8_t M17_SYNC_SYMBOLS_VALUES[] = {+1, -3, +1, -1, +3, +1, +1, -3};
|
||||||
|
|
||||||
const uint16_t M17_SYNC_SYMBOLS = 0x014DU; // XXX
|
const uint8_t M17_SYNC_SYMBOLS = 0xAEU;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -204,7 +204,7 @@ void CM17RX::processData(q15_t sample)
|
||||||
|
|
||||||
bool CM17RX::correlateSync()
|
bool CM17RX::correlateSync()
|
||||||
{
|
{
|
||||||
if (countBits16(m_bitBuffer[m_bitPtr] ^ M17_SYNC_SYMBOLS) <= MAX_SYNC_SYMBOLS_ERRS) {
|
if (countBits8(m_bitBuffer[m_bitPtr] ^ M17_SYNC_SYMBOLS) <= MAX_SYNC_SYMBOLS_ERRS) {
|
||||||
uint16_t ptr = m_dataPtr + M17_FRAME_LENGTH_SAMPLES - M17_SYNC_LENGTH_SAMPLES + M17_RADIO_SYMBOL_LENGTH;
|
uint16_t ptr = m_dataPtr + M17_FRAME_LENGTH_SAMPLES - M17_SYNC_LENGTH_SAMPLES + M17_RADIO_SYMBOL_LENGTH;
|
||||||
if (ptr >= M17_FRAME_LENGTH_SAMPLES)
|
if (ptr >= M17_FRAME_LENGTH_SAMPLES)
|
||||||
ptr -= M17_FRAME_LENGTH_SAMPLES;
|
ptr -= M17_FRAME_LENGTH_SAMPLES;
|
||||||
|
|
2
M17RX.h
2
M17RX.h
|
@ -37,7 +37,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
M17RX_STATE m_state;
|
M17RX_STATE m_state;
|
||||||
uint16_t m_bitBuffer[M17_RADIO_SYMBOL_LENGTH];
|
uint8_t m_bitBuffer[M17_RADIO_SYMBOL_LENGTH];
|
||||||
q15_t m_buffer[M17_FRAME_LENGTH_SAMPLES];
|
q15_t m_buffer[M17_FRAME_LENGTH_SAMPLES];
|
||||||
uint16_t m_bitPtr;
|
uint16_t m_bitPtr;
|
||||||
uint16_t m_dataPtr;
|
uint16_t m_dataPtr;
|
||||||
|
|
|
@ -24,9 +24,9 @@
|
||||||
#include "M17Defines.h"
|
#include "M17Defines.h"
|
||||||
|
|
||||||
// Generated using rcosdesign(0.5, 8, 5, 'sqrt') in MATLAB
|
// Generated using rcosdesign(0.5, 8, 5, 'sqrt') in MATLAB
|
||||||
static q15_t RRC_0_5_FILTER[] = {0, 0, 0, 0, 850, 219, -720, -1548, -1795, -1172, 237, 1927, 3120, 3073, 1447, -1431, -4544, -6442,
|
static q15_t RRC_0_5_FILTER[] = {0, 0, 0, 0, -147, -88, 72, 220, 223, 46, -197, -285, -79, 334, 623, 390, -498, -1691, -2363, -1556,
|
||||||
-5735, -1633, 5651, 14822, 23810, 30367, 32767, 30367, 23810, 14822, 5651, -1633, -5735, -6442,
|
1284, 5872, 11033, 15109, 16656, 15109, 11033, 5872, 1284, -1556, -2363, -1691, -498, 390, 623, 334,
|
||||||
-4544, -1431, 1447, 3073, 3120, 1927, 237, -1172, -1795, -1548, -720, 219, 850}; // numTaps = 45, L = 5
|
-79, -285, -197, 46, 223, 220, 72, -88, -147}; // numTaps = 45, L = 5
|
||||||
const uint16_t RRC_0_5_FILTER_PHASE_LEN = 9U; // phaseLength = numTaps/L
|
const uint16_t RRC_0_5_FILTER_PHASE_LEN = 9U; // phaseLength = numTaps/L
|
||||||
|
|
||||||
const q15_t M17_LEVELA = 1683;
|
const q15_t M17_LEVELA = 1683;
|
||||||
|
|
Loading…
Reference in New Issue