mirror of
https://github.com/g4klx/MMDVM_HS.git
synced 2025-12-06 07:02:00 +01:00
Reducing DMRIdleRX buffer a little, fix some format and copyrights
This commit is contained in:
parent
56d3b16493
commit
1f2ae86612
54
DMRDMORX.cpp
54
DMRDMORX.cpp
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) 2009-2016 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2016,2017 by Andy Uribe CA6JAU
|
||||
* Copyright (C) 2016,2017,2018 by Andy Uribe CA6JAU
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -65,7 +65,7 @@ void CDMRDMORX::reset()
|
|||
}
|
||||
|
||||
void CDMRDMORX::databit(bool bit)
|
||||
{
|
||||
{
|
||||
WRITE_BIT1(m_buffer, m_dataPtr, bit);
|
||||
|
||||
m_patternBuffer <<= 1;
|
||||
|
|
@ -92,7 +92,7 @@ void CDMRDMORX::databit(bool bit)
|
|||
correlateSync();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (m_dataPtr == m_endPtr) {
|
||||
frame[0U] = m_control;
|
||||
|
||||
|
|
@ -189,7 +189,7 @@ void CDMRDMORX::databit(bool bit)
|
|||
// End of this slot, reset some items for the next slot.
|
||||
m_control = CONTROL_NONE;
|
||||
}
|
||||
|
||||
|
||||
m_dataPtr++;
|
||||
|
||||
if (m_dataPtr >= DMO_BUFFER_LENGTH_BITS)
|
||||
|
|
@ -199,41 +199,37 @@ void CDMRDMORX::databit(bool bit)
|
|||
}
|
||||
|
||||
void CDMRDMORX::correlateSync()
|
||||
{
|
||||
{
|
||||
if ( (countBits64((m_patternBuffer & DMR_SYNC_BITS_MASK) ^ DMR_MS_DATA_SYNC_BITS) <= MAX_SYNC_BYTES_ERRS) || \
|
||||
(countBits64((m_patternBuffer & DMR_SYNC_BITS_MASK) ^ DMR_S2_DATA_SYNC_BITS) <= MAX_SYNC_BYTES_ERRS) ) {
|
||||
m_control = CONTROL_DATA;
|
||||
m_syncPtr = m_dataPtr;
|
||||
|
||||
m_control = CONTROL_DATA;
|
||||
m_syncPtr = m_dataPtr;
|
||||
m_startPtr = m_dataPtr + DMO_BUFFER_LENGTH_BITS - DMR_SLOT_TYPE_LENGTH_BITS / 2U - DMR_INFO_LENGTH_BITS / 2U - DMR_SYNC_LENGTH_BITS + 1;
|
||||
if (m_startPtr >= DMO_BUFFER_LENGTH_BITS)
|
||||
m_startPtr -= DMO_BUFFER_LENGTH_BITS;
|
||||
|
||||
m_startPtr = m_dataPtr + DMO_BUFFER_LENGTH_BITS - DMR_SLOT_TYPE_LENGTH_BITS / 2U - DMR_INFO_LENGTH_BITS / 2U - DMR_SYNC_LENGTH_BITS + 1;
|
||||
if (m_startPtr >= DMO_BUFFER_LENGTH_BITS)
|
||||
m_startPtr -= DMO_BUFFER_LENGTH_BITS;
|
||||
m_endPtr = m_dataPtr + DMR_SLOT_TYPE_LENGTH_BITS / 2U + DMR_INFO_LENGTH_BITS / 2U;
|
||||
if (m_endPtr >= DMO_BUFFER_LENGTH_BITS)
|
||||
m_endPtr -= DMO_BUFFER_LENGTH_BITS;
|
||||
|
||||
m_endPtr = m_dataPtr + DMR_SLOT_TYPE_LENGTH_BITS / 2U + DMR_INFO_LENGTH_BITS / 2U;
|
||||
if (m_endPtr >= DMO_BUFFER_LENGTH_BITS)
|
||||
m_endPtr -= DMO_BUFFER_LENGTH_BITS;
|
||||
|
||||
m_modeTimerCnt = 0;
|
||||
|
||||
//DEBUG4("SYNC MS Data found pos/start/end:", m_dataPtr, m_startPtr, m_endPtr);
|
||||
m_modeTimerCnt = 0;
|
||||
//DEBUG4("SYNC MS Data found pos/start/end:", m_dataPtr, m_startPtr, m_endPtr);
|
||||
} else if ( (countBits64((m_patternBuffer & DMR_SYNC_BITS_MASK) ^ DMR_MS_VOICE_SYNC_BITS) <= MAX_SYNC_BYTES_ERRS) || \
|
||||
(countBits64((m_patternBuffer & DMR_SYNC_BITS_MASK) ^ DMR_S2_VOICE_SYNC_BITS) <= MAX_SYNC_BYTES_ERRS) ) {
|
||||
m_control = CONTROL_VOICE;
|
||||
m_syncPtr = m_dataPtr;
|
||||
|
||||
m_control = CONTROL_VOICE;
|
||||
m_syncPtr = m_dataPtr;
|
||||
m_startPtr = m_dataPtr + DMO_BUFFER_LENGTH_BITS - DMR_SLOT_TYPE_LENGTH_BITS / 2U - DMR_INFO_LENGTH_BITS / 2U - DMR_SYNC_LENGTH_BITS + 1;
|
||||
if (m_startPtr >= DMO_BUFFER_LENGTH_BITS)
|
||||
m_startPtr -= DMO_BUFFER_LENGTH_BITS;
|
||||
|
||||
m_startPtr = m_dataPtr + DMO_BUFFER_LENGTH_BITS - DMR_SLOT_TYPE_LENGTH_BITS / 2U - DMR_INFO_LENGTH_BITS / 2U - DMR_SYNC_LENGTH_BITS + 1;
|
||||
if (m_startPtr >= DMO_BUFFER_LENGTH_BITS)
|
||||
m_startPtr -= DMO_BUFFER_LENGTH_BITS;
|
||||
m_endPtr = m_dataPtr + DMR_SLOT_TYPE_LENGTH_BITS / 2U + DMR_INFO_LENGTH_BITS / 2U;
|
||||
if (m_endPtr >= DMO_BUFFER_LENGTH_BITS)
|
||||
m_endPtr -= DMO_BUFFER_LENGTH_BITS;
|
||||
|
||||
m_endPtr = m_dataPtr + DMR_SLOT_TYPE_LENGTH_BITS / 2U + DMR_INFO_LENGTH_BITS / 2U;
|
||||
if (m_endPtr >= DMO_BUFFER_LENGTH_BITS)
|
||||
m_endPtr -= DMO_BUFFER_LENGTH_BITS;
|
||||
|
||||
m_modeTimerCnt = 0;
|
||||
|
||||
//DEBUG4("SYNC MS Voice found pos/start/end: ", m_dataPtr, m_startPtr, m_endPtr);
|
||||
m_modeTimerCnt = 0;
|
||||
//DEBUG4("SYNC MS Voice found pos/start/end: ", m_dataPtr, m_startPtr, m_endPtr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) 2015,2016 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2016,2017 by Andy Uribe CA6JAU
|
||||
* Copyright (C) 2016,2017,2018 by Andy Uribe CA6JAU
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) 2009-2017 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2017 by Andy Uribe CA6JAU
|
||||
* Copyright (C) 2017,2018 by Andy Uribe CA6JAU
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -60,12 +60,11 @@ void CDMRIdleRX::databit(bool bit)
|
|||
m_patternBuffer <<= 1;
|
||||
if (bit)
|
||||
m_patternBuffer |= 0x01U;
|
||||
|
||||
|
||||
if (countBits64((m_patternBuffer & DMR_SYNC_BITS_MASK) ^ DMR_MS_DATA_SYNC_BITS) <= MAX_SYNC_BYTES_ERRS) {
|
||||
m_endPtr = m_dataPtr + DMR_SLOT_TYPE_LENGTH_BITS / 2U + DMR_INFO_LENGTH_BITS / 2U;
|
||||
if (m_endPtr >= DMR_IDLE_LENGTH_BITS)
|
||||
m_endPtr -= DMR_IDLE_LENGTH_BITS;
|
||||
|
||||
// DEBUG3("SYNC MS Data found pos/end:", m_dataPtr, m_endPtr);
|
||||
}
|
||||
|
||||
|
|
@ -81,7 +80,7 @@ void CDMRIdleRX::databit(bool bit)
|
|||
uint8_t dataType;
|
||||
CDMRSlotType slotType;
|
||||
slotType.decode(frame + 1U, colorCode, dataType);
|
||||
|
||||
|
||||
if (colorCode == m_colorCode && dataType == DT_CSBK) {
|
||||
frame[0U] = CONTROL_IDLE | CONTROL_DATA | DT_CSBK;
|
||||
serial.writeDMRData(false, frame, DMR_FRAME_LENGTH_BYTES + 1U);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) 2015 by Jonathan Naylor G4KLX
|
||||
* Copyright (C) 2017 by Andy Uribe CA6JAU
|
||||
* Copyright (C) 2017,2018 by Andy Uribe CA6JAU
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
#include "DMRDefines.h"
|
||||
|
||||
const uint16_t DMR_IDLE_LENGTH_BITS = 400U;
|
||||
const uint16_t DMR_IDLE_LENGTH_BITS = 320U;
|
||||
|
||||
class CDMRIdleRX {
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -102,8 +102,7 @@ void CDMRSlotRX::reset()
|
|||
|
||||
bool CDMRSlotRX::databit(bool bit)
|
||||
{
|
||||
uint16_t min;
|
||||
uint16_t max;
|
||||
uint16_t min, max;
|
||||
|
||||
m_delayPtr++;
|
||||
if (m_delayPtr < m_delay)
|
||||
|
|
@ -367,58 +366,53 @@ void CDMRSlotRX::correlateSync()
|
|||
uint8_t control;
|
||||
|
||||
if (countBits64((m_patternBuffer & DMR_SYNC_BITS_MASK) ^ DMR_MS_DATA_SYNC_BITS) <= MAX_SYNC_BYTES_ERRS) {
|
||||
control = CONTROL_DATA;
|
||||
syncPtr = m_dataPtr;
|
||||
|
||||
control = CONTROL_DATA;
|
||||
syncPtr = m_dataPtr;
|
||||
startPtr = m_dataPtr + DMR_BUFFER_LENGTH_BITS - DMR_SLOT_TYPE_LENGTH_BITS / 2U - DMR_INFO_LENGTH_BITS / 2U - DMR_SYNC_LENGTH_BITS + 1;
|
||||
if (startPtr >= DMR_BUFFER_LENGTH_BITS)
|
||||
startPtr -= DMR_BUFFER_LENGTH_BITS;
|
||||
|
||||
startPtr = m_dataPtr + DMR_BUFFER_LENGTH_BITS - DMR_SLOT_TYPE_LENGTH_BITS / 2U - DMR_INFO_LENGTH_BITS / 2U - DMR_SYNC_LENGTH_BITS + 1;
|
||||
if (startPtr >= DMR_BUFFER_LENGTH_BITS)
|
||||
startPtr -= DMR_BUFFER_LENGTH_BITS;
|
||||
endPtr = m_dataPtr + DMR_SLOT_TYPE_LENGTH_BITS / 2U + DMR_INFO_LENGTH_BITS / 2U;
|
||||
if (endPtr >= DMR_BUFFER_LENGTH_BITS)
|
||||
endPtr -= DMR_BUFFER_LENGTH_BITS;
|
||||
|
||||
endPtr = m_dataPtr + DMR_SLOT_TYPE_LENGTH_BITS / 2U + DMR_INFO_LENGTH_BITS / 2U;
|
||||
if (endPtr >= DMR_BUFFER_LENGTH_BITS)
|
||||
endPtr -= DMR_BUFFER_LENGTH_BITS;
|
||||
|
||||
if(m_slot) {
|
||||
m_syncPtr2 = syncPtr;
|
||||
m_startPtr2 = startPtr;
|
||||
m_endPtr2 = endPtr;
|
||||
m_control2 = control;
|
||||
} else {
|
||||
m_syncPtr1 = syncPtr;
|
||||
m_startPtr1 = startPtr;
|
||||
m_endPtr1 = endPtr;
|
||||
m_control1 = control;
|
||||
}
|
||||
|
||||
//DEBUG5("SYNC corr MS Data found slot/pos/start/end:", m_slot ? 2U : 1U, m_dataPtr, startPtr, endPtr);
|
||||
|
||||
if(m_slot) {
|
||||
m_syncPtr2 = syncPtr;
|
||||
m_startPtr2 = startPtr;
|
||||
m_endPtr2 = endPtr;
|
||||
m_control2 = control;
|
||||
} else {
|
||||
m_syncPtr1 = syncPtr;
|
||||
m_startPtr1 = startPtr;
|
||||
m_endPtr1 = endPtr;
|
||||
m_control1 = control;
|
||||
}
|
||||
//DEBUG5("SYNC corr MS Data found slot/pos/start/end:", m_slot ? 2U : 1U, m_dataPtr, startPtr, endPtr);
|
||||
} else if (countBits64((m_patternBuffer & DMR_SYNC_BITS_MASK) ^ DMR_MS_VOICE_SYNC_BITS) <= MAX_SYNC_BYTES_ERRS) {
|
||||
control = CONTROL_VOICE;
|
||||
syncPtr = m_dataPtr;
|
||||
|
||||
control = CONTROL_VOICE;
|
||||
syncPtr = m_dataPtr;
|
||||
startPtr = m_dataPtr + DMR_BUFFER_LENGTH_BITS - DMR_SLOT_TYPE_LENGTH_BITS / 2U - DMR_INFO_LENGTH_BITS / 2U - DMR_SYNC_LENGTH_BITS + 1;
|
||||
if (startPtr >= DMR_BUFFER_LENGTH_BITS)
|
||||
startPtr -= DMR_BUFFER_LENGTH_BITS;
|
||||
|
||||
startPtr = m_dataPtr + DMR_BUFFER_LENGTH_BITS - DMR_SLOT_TYPE_LENGTH_BITS / 2U - DMR_INFO_LENGTH_BITS / 2U - DMR_SYNC_LENGTH_BITS + 1;
|
||||
if (startPtr >= DMR_BUFFER_LENGTH_BITS)
|
||||
startPtr -= DMR_BUFFER_LENGTH_BITS;
|
||||
|
||||
endPtr = m_dataPtr + DMR_SLOT_TYPE_LENGTH_BITS / 2U + DMR_INFO_LENGTH_BITS / 2U;
|
||||
if (endPtr >= DMR_BUFFER_LENGTH_BITS)
|
||||
endPtr -= DMR_BUFFER_LENGTH_BITS;
|
||||
endPtr = m_dataPtr + DMR_SLOT_TYPE_LENGTH_BITS / 2U + DMR_INFO_LENGTH_BITS / 2U;
|
||||
if (endPtr >= DMR_BUFFER_LENGTH_BITS)
|
||||
endPtr -= DMR_BUFFER_LENGTH_BITS;
|
||||
|
||||
if(m_slot) {
|
||||
m_syncPtr2 = syncPtr;
|
||||
m_startPtr2 = startPtr;
|
||||
m_endPtr2 = endPtr;
|
||||
m_control2 = control;
|
||||
} else {
|
||||
m_syncPtr1 = syncPtr;
|
||||
m_startPtr1 = startPtr;
|
||||
m_endPtr1 = endPtr;
|
||||
m_control1 = control;
|
||||
}
|
||||
|
||||
//DEBUG5("SYNC corr MS Voice found slot/pos/start/end: ", m_slot ? 2U : 1U, m_dataPtr, startPtr, endPtr);
|
||||
if(m_slot) {
|
||||
m_syncPtr2 = syncPtr;
|
||||
m_startPtr2 = startPtr;
|
||||
m_endPtr2 = endPtr;
|
||||
m_control2 = control;
|
||||
} else {
|
||||
m_syncPtr1 = syncPtr;
|
||||
m_startPtr1 = startPtr;
|
||||
m_endPtr1 = endPtr;
|
||||
m_control1 = control;
|
||||
}
|
||||
//DEBUG5("SYNC corr MS Voice found slot/pos/start/end: ", m_slot ? 2U : 1U, m_dataPtr, startPtr, endPtr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue