mirror of https://github.com/g4klx/MMDVM.git
Only pass on relevent frame types.
This commit is contained in:
parent
c565a505a0
commit
fa1a1daa45
|
@ -137,19 +137,35 @@ bool CDMRSlotRX::processSample(q15_t sample)
|
||||||
|
|
||||||
switch (dataType) {
|
switch (dataType) {
|
||||||
case DT_DATA_HEADER:
|
case DT_DATA_HEADER:
|
||||||
case DT_RATE_12_DATA:
|
|
||||||
case DT_RATE_34_DATA:
|
|
||||||
case DT_RATE_1_DATA:
|
|
||||||
serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||||
m_state = DMRRXS_DATA;
|
m_state = DMRRXS_DATA;
|
||||||
m_type = dataType;
|
m_type = dataType;
|
||||||
break;
|
break;
|
||||||
|
case DT_RATE_12_DATA:
|
||||||
|
case DT_RATE_34_DATA:
|
||||||
|
case DT_RATE_1_DATA:
|
||||||
|
if (m_state == DMRRXS_DATA) {
|
||||||
|
serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||||
|
m_type = dataType;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case DT_VOICE_LC_HEADER:
|
case DT_VOICE_LC_HEADER:
|
||||||
case DT_VOICE_PI_HEADER:
|
|
||||||
serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||||
m_state = DMRRXS_VOICE;
|
m_state = DMRRXS_VOICE;
|
||||||
break;
|
break;
|
||||||
default:
|
case DT_VOICE_PI_HEADER:
|
||||||
|
if (m_state == DMRRXS_VOICE)
|
||||||
|
serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||||
|
m_state = DMRRXS_VOICE;
|
||||||
|
break;
|
||||||
|
case DT_TERMINATOR_WITH_LC:
|
||||||
|
if (m_state == DMRRXS_VOICE) {
|
||||||
|
serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||||
|
m_state = DMRRXS_NONE;
|
||||||
|
m_endPtr = NOENDPTR;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default: // DT_CSBK
|
||||||
serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
serial.writeDMRData(m_slot, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||||
m_state = DMRRXS_NONE;
|
m_state = DMRRXS_NONE;
|
||||||
m_endPtr = NOENDPTR;
|
m_endPtr = NOENDPTR;
|
||||||
|
@ -164,6 +180,7 @@ bool CDMRSlotRX::processSample(q15_t sample)
|
||||||
m_syncCount = 0U;
|
m_syncCount = 0U;
|
||||||
m_n = 0U;
|
m_n = 0U;
|
||||||
} else {
|
} else {
|
||||||
|
if (m_state != DMRRXS_NONE) {
|
||||||
m_syncCount++;
|
m_syncCount++;
|
||||||
if (m_syncCount >= MAX_SYNC_LOST_FRAMES) {
|
if (m_syncCount >= MAX_SYNC_LOST_FRAMES) {
|
||||||
serial.writeDMRLost(m_slot);
|
serial.writeDMRLost(m_slot);
|
||||||
|
@ -172,10 +189,9 @@ bool CDMRSlotRX::processSample(q15_t sample)
|
||||||
m_centre = 0;
|
m_centre = 0;
|
||||||
m_state = DMRRXS_NONE;
|
m_state = DMRRXS_NONE;
|
||||||
m_endPtr = NOENDPTR;
|
m_endPtr = NOENDPTR;
|
||||||
return false;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Voice data
|
|
||||||
if (m_state == DMRRXS_VOICE) {
|
if (m_state == DMRRXS_VOICE) {
|
||||||
if (m_n >= 5U) {
|
if (m_n >= 5U) {
|
||||||
frame[0U] = CONTROL_VOICE;
|
frame[0U] = CONTROL_VOICE;
|
||||||
|
|
Loading…
Reference in New Issue