Make the slow data header retrieval more powerful.

This commit is contained in:
Jonathan Naylor 2016-02-02 18:26:58 +00:00
parent aa1a45394a
commit 3beaabd3dd

View file

@ -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)
return NULL;
if (m_ptr >= 45U)
return NULL;
::memcpy(m_header + m_ptr, m_buffer + 1U, 5U);
m_ptr += 5U;
if (m_ptr < DSTAR_HEADER_LENGTH_BYTES)
return NULL;
// Clean up the data
m_header[0U] &= (DSTAR_INTERRUPTED_MASK | DSTAR_URGENT_MASK | DSTAR_REPEATER_MASK);
m_header[1U] = 0x00U;
@ -88,11 +88,12 @@ CDStarHeader* CDStarSlowData::add(const unsigned char* data)
// Add the new CRC
CCRC::addCCITT16(m_header, DSTAR_HEADER_LENGTH_BYTES);
m_ptr = 0U;
// 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 new CDStarHeader(m_header);
}