|
|
|
@ -36,6 +36,11 @@ const uint8_t CONTROL_NONE = 0x00U;
|
|
|
|
const uint8_t CONTROL_VOICE = 0x20U;
|
|
|
|
const uint8_t CONTROL_VOICE = 0x20U;
|
|
|
|
const uint8_t CONTROL_DATA = 0x40U;
|
|
|
|
const uint8_t CONTROL_DATA = 0x40U;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const uint8_t BIT_MASK_TABLE[] = {0x80U, 0x40U, 0x20U, 0x10U, 0x08U, 0x04U, 0x02U, 0x01U};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define WRITE_BIT1(p,i,b) p[(i)>>3] = (b) ? (p[(i)>>3] | BIT_MASK_TABLE[(i)&7]) : (p[(i)>>3] & ~BIT_MASK_TABLE[(i)&7])
|
|
|
|
|
|
|
|
#define READ_BIT1(p,i) ((p[(i)>>3] & BIT_MASK_TABLE[(i)&7]) >> (7 - ((i)&7)))
|
|
|
|
|
|
|
|
|
|
|
|
CDMRSlotRX::CDMRSlotRX() :
|
|
|
|
CDMRSlotRX::CDMRSlotRX() :
|
|
|
|
m_slot(false),
|
|
|
|
m_slot(false),
|
|
|
|
m_patternBuffer(0x00U),
|
|
|
|
m_patternBuffer(0x00U),
|
|
|
|
@ -104,8 +109,8 @@ bool CDMRSlotRX::databit(bool bit)
|
|
|
|
if (m_delayPtr < m_delay)
|
|
|
|
if (m_delayPtr < m_delay)
|
|
|
|
return (m_state1 != DMRRXS_NONE) || (m_state2 != DMRRXS_NONE);
|
|
|
|
return (m_state1 != DMRRXS_NONE) || (m_state2 != DMRRXS_NONE);
|
|
|
|
|
|
|
|
|
|
|
|
m_buffer[m_dataPtr] = bit;
|
|
|
|
WRITE_BIT1(m_buffer, m_dataPtr, bit);
|
|
|
|
|
|
|
|
|
|
|
|
m_patternBuffer <<= 1;
|
|
|
|
m_patternBuffer <<= 1;
|
|
|
|
if (bit)
|
|
|
|
if (bit)
|
|
|
|
m_patternBuffer |= 0x01U;
|
|
|
|
m_patternBuffer |= 0x01U;
|
|
|
|
@ -421,28 +426,36 @@ void CDMRSlotRX::bitsToBytes(uint16_t start, uint8_t count, uint8_t* buffer)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
for (uint8_t i = 0U; i < count; i++) {
|
|
|
|
for (uint8_t i = 0U; i < count; i++) {
|
|
|
|
buffer[i] = 0U;
|
|
|
|
buffer[i] = 0U;
|
|
|
|
buffer[i] |= ((m_buffer[start++] & 0x01) << 7);
|
|
|
|
buffer[i] |= READ_BIT1(m_buffer, start) << 7;
|
|
|
|
|
|
|
|
start++;
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
buffer[i] |= ((m_buffer[start++] & 0x01) << 6);
|
|
|
|
buffer[i] |= READ_BIT1(m_buffer, start) << 6;
|
|
|
|
|
|
|
|
start++;
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
buffer[i] |= ((m_buffer[start++] & 0x01) << 5);
|
|
|
|
buffer[i] |= READ_BIT1(m_buffer, start) << 5;
|
|
|
|
|
|
|
|
start++;
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
buffer[i] |= ((m_buffer[start++] & 0x01) << 4);
|
|
|
|
buffer[i] |= READ_BIT1(m_buffer, start) << 4;
|
|
|
|
|
|
|
|
start++;
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
buffer[i] |= ((m_buffer[start++] & 0x01) << 3);
|
|
|
|
buffer[i] |= READ_BIT1(m_buffer, start) << 3;
|
|
|
|
|
|
|
|
start++;
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
buffer[i] |= ((m_buffer[start++] & 0x01) << 2);
|
|
|
|
buffer[i] |= READ_BIT1(m_buffer, start) << 2;
|
|
|
|
|
|
|
|
start++;
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
buffer[i] |= ((m_buffer[start++] & 0x01) << 1);
|
|
|
|
buffer[i] |= READ_BIT1(m_buffer, start) << 1;
|
|
|
|
|
|
|
|
start++;
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
buffer[i] |= ((m_buffer[start++] & 0x01) << 0);
|
|
|
|
buffer[i] |= READ_BIT1(m_buffer, start) << 0;
|
|
|
|
|
|
|
|
start++;
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
if (start >= DMR_BUFFER_LENGTH_BITS)
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
start -= DMR_BUFFER_LENGTH_BITS;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|