Make the slow data header retrieval more powerful.
This commit is contained in:
parent
aa1a45394a
commit
3beaabd3dd
1 changed files with 7 additions and 6 deletions
|
@ -67,12 +67,12 @@ CDStarHeader* CDStarSlowData::add(const unsigned char* data)
|
||||||
if ((m_buffer[0U] & DSTAR_SLOW_DATA_TYPE_MASK) != DSTAR_SLOW_DATA_TYPE_HEADER)
|
if ((m_buffer[0U] & DSTAR_SLOW_DATA_TYPE_MASK) != DSTAR_SLOW_DATA_TYPE_HEADER)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
if (m_ptr >= 45U)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
::memcpy(m_header + m_ptr, m_buffer + 1U, 5U);
|
::memcpy(m_header + m_ptr, m_buffer + 1U, 5U);
|
||||||
m_ptr += 5U;
|
m_ptr += 5U;
|
||||||
|
|
||||||
if (m_ptr < DSTAR_HEADER_LENGTH_BYTES)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
// Clean up the data
|
// Clean up the data
|
||||||
m_header[0U] &= (DSTAR_INTERRUPTED_MASK | DSTAR_URGENT_MASK | DSTAR_REPEATER_MASK);
|
m_header[0U] &= (DSTAR_INTERRUPTED_MASK | DSTAR_URGENT_MASK | DSTAR_REPEATER_MASK);
|
||||||
m_header[1U] = 0x00U;
|
m_header[1U] = 0x00U;
|
||||||
|
@ -88,11 +88,12 @@ CDStarHeader* CDStarSlowData::add(const unsigned char* data)
|
||||||
// Add the new CRC
|
// Add the new CRC
|
||||||
CCRC::addCCITT16(m_header, DSTAR_HEADER_LENGTH_BYTES);
|
CCRC::addCCITT16(m_header, DSTAR_HEADER_LENGTH_BYTES);
|
||||||
|
|
||||||
m_ptr = 0U;
|
|
||||||
|
|
||||||
// Compare them
|
// Compare them
|
||||||
if (crc[0U] != m_header[39U] || crc[1U] != m_header[40U])
|
if (crc[0U] != m_header[39U] || crc[1U] != m_header[40U]) {
|
||||||
|
m_header[39U] = 0x00U;
|
||||||
|
m_header[40U] = 0x00U;
|
||||||
return NULL;
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return new CDStarHeader(m_header);
|
return new CDStarHeader(m_header);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue