mirror of https://github.com/g4klx/MMDVM.git
Merge remote-tracking branch 'g4klx/nxdn' into nxdn
This commit is contained in:
commit
e78fc5b701
6
IO.cpp
6
IO.cpp
|
@ -334,10 +334,10 @@ void CIO::process()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_p25Enable) {
|
if (m_p25Enable) {
|
||||||
q15_t C4FSKVals[RX_BLOCK_SIZE];
|
q15_t P25Vals[RX_BLOCK_SIZE];
|
||||||
::arm_fir_fast_q15(&m_boxcarFilter, dcSamples, C4FSKVals, RX_BLOCK_SIZE);
|
::arm_fir_fast_q15(&m_boxcarFilter, dcSamples, P25Vals, RX_BLOCK_SIZE);
|
||||||
|
|
||||||
p25RX.samples(C4FSKVals, rssi, RX_BLOCK_SIZE);
|
p25RX.samples(P25Vals, rssi, RX_BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_nxdnEnable) {
|
if (m_nxdnEnable) {
|
||||||
|
|
13
NXDNRX.cpp
13
NXDNRX.cpp
|
@ -23,9 +23,10 @@
|
||||||
|
|
||||||
const q15_t SCALING_FACTOR = 18750; // Q15(0.55)
|
const q15_t SCALING_FACTOR = 18750; // Q15(0.55)
|
||||||
|
|
||||||
const uint8_t MAX_FSW_BIT_ERRS = 1U;
|
const uint8_t MAX_FSW_BIT_START_ERRS = 1U;
|
||||||
|
const uint8_t MAX_FSW_BIT_RUN_ERRS = 3U;
|
||||||
|
|
||||||
const uint8_t MAX_FSW_SYMBOLS_ERRS = 1U;
|
const uint8_t MAX_FSW_SYMBOLS_ERRS = 2U;
|
||||||
|
|
||||||
const uint8_t BIT_MASK_TABLE[] = {0x80U, 0x40U, 0x20U, 0x10U, 0x08U, 0x04U, 0x02U, 0x01U};
|
const uint8_t BIT_MASK_TABLE[] = {0x80U, 0x40U, 0x20U, 0x10U, 0x08U, 0x04U, 0x02U, 0x01U};
|
||||||
|
|
||||||
|
@ -255,11 +256,17 @@ bool CNXDNRX::correlateFSW()
|
||||||
uint8_t sync[NXDN_FSW_BYTES_LENGTH];
|
uint8_t sync[NXDN_FSW_BYTES_LENGTH];
|
||||||
samplesToBits(startPtr, NXDN_FSW_LENGTH_SYMBOLS, sync, 0U, m_centreVal, m_thresholdVal);
|
samplesToBits(startPtr, NXDN_FSW_LENGTH_SYMBOLS, sync, 0U, m_centreVal, m_thresholdVal);
|
||||||
|
|
||||||
|
uint8_t maxErrs;
|
||||||
|
if (m_state == NXDNRXS_NONE)
|
||||||
|
maxErrs = MAX_FSW_BIT_START_ERRS;
|
||||||
|
else
|
||||||
|
maxErrs = MAX_FSW_BIT_RUN_ERRS;
|
||||||
|
|
||||||
uint8_t errs = 0U;
|
uint8_t errs = 0U;
|
||||||
for (uint8_t i = 0U; i < NXDN_FSW_BYTES_LENGTH; i++)
|
for (uint8_t i = 0U; i < NXDN_FSW_BYTES_LENGTH; i++)
|
||||||
errs += countBits8((sync[i] & NXDN_FSW_BYTES_MASK[i]) ^ NXDN_FSW_BYTES[i]);
|
errs += countBits8((sync[i] & NXDN_FSW_BYTES_MASK[i]) ^ NXDN_FSW_BYTES[i]);
|
||||||
|
|
||||||
if (errs <= MAX_FSW_BIT_ERRS) {
|
if (errs <= maxErrs) {
|
||||||
m_maxCorr = corr;
|
m_maxCorr = corr;
|
||||||
m_lostCount = MAX_FSW_FRAMES;
|
m_lostCount = MAX_FSW_FRAMES;
|
||||||
m_fswPtr = m_dataPtr;
|
m_fswPtr = m_dataPtr;
|
||||||
|
|
Loading…
Reference in New Issue