mirror of
https://github.com/g4klx/ircDDBGateway.git
synced 2026-01-08 17:29:58 +01:00
New way to detect fast data mode.
This commit is contained in:
parent
58e0caed97
commit
852889e0ee
|
|
@ -58,10 +58,6 @@ const bool NULL_SLOW_DATA_BITS[] = {false, true, true, false, true, false, fa
|
|||
true, false, false, true, false, true, false, false,
|
||||
true, false, true, false, true, true, true, true};
|
||||
|
||||
const unsigned char KENWOOD_DATA_MODE_BYTES[] = {0xEEU, 0xC2U, 0xA1U, 0xC8U, 0x42U, 0x6EU, 0x52U, 0x51U, 0xC3U};
|
||||
const unsigned char ICOM_DATA_MODE_BYTES1[] = {0xB2U, 0x4DU, 0x22U, 0x48U, 0xC0U, 0x16U, 0x28U, 0x26U, 0xC8U};
|
||||
const unsigned char ICOM_DATA_MODE_BYTES2[] = {0x70U, 0x4FU, 0x93U, 0x40U, 0x64U, 0x74U, 0x6DU, 0x30U, 0x2BU};
|
||||
|
||||
const unsigned int VOICE_FRAME_LENGTH_BITS = 72U;
|
||||
const unsigned int VOICE_FRAME_LENGTH_BYTES = VOICE_FRAME_LENGTH_BITS / 8U;
|
||||
|
||||
|
|
@ -86,10 +82,14 @@ const unsigned int DATA_BLOCK_SIZE_BYTES = 21U * DV_FRAME_LENGTH_BYTES;
|
|||
const unsigned int LONG_CALLSIGN_LENGTH = 8U;
|
||||
const unsigned int SHORT_CALLSIGN_LENGTH = 4U;
|
||||
|
||||
const unsigned char SLOW_DATA_TYPE_MASK = 0xF0U;
|
||||
const unsigned char SLOW_DATA_TYPE_GPS = 0x30U;
|
||||
const unsigned char SLOW_DATA_TYPE_TEXT = 0x40U;
|
||||
const unsigned char SLOW_DATA_TYPE_HEADER = 0x50U;
|
||||
const unsigned char SLOW_DATA_TYPE_MASK = 0xF0U;
|
||||
const unsigned char SLOW_DATA_TYPE_GPS = 0x30U;
|
||||
const unsigned char SLOW_DATA_TYPE_TEXT = 0x40U;
|
||||
const unsigned char SLOW_DATA_TYPE_HEADER = 0x50U;
|
||||
const unsigned char SLOW_DATA_TYPE_FAST_DATA1 = 0x80U;
|
||||
const unsigned char SLOW_DATA_TYPE_FAST_DATA2 = 0x90U;
|
||||
const unsigned char SLOW_DATA_TYPE_SQUELCH = 0xC0U;
|
||||
const unsigned char SLOW_DATA_LENGTH_MASK = 0x0FU;
|
||||
|
||||
const unsigned char DATA_MASK = 0x80U;
|
||||
const unsigned char REPEATER_MASK = 0x40U;
|
||||
|
|
|
|||
|
|
@ -740,13 +740,10 @@ void CRepeaterHandler::processRepeater(CAMBEData& data)
|
|||
unsigned char buffer[DV_FRAME_MAX_LENGTH_BYTES];
|
||||
data.getData(buffer, DV_FRAME_MAX_LENGTH_BYTES);
|
||||
|
||||
// Data signatures only appear at the beginning of the frame
|
||||
if (!m_fastData && m_frames < 21U) {
|
||||
if (::memcmp(buffer, KENWOOD_DATA_MODE_BYTES, VOICE_FRAME_LENGTH_BYTES) == 0)
|
||||
m_fastData = true;
|
||||
else if (::memcmp(buffer, ICOM_DATA_MODE_BYTES1, VOICE_FRAME_LENGTH_BYTES) == 0)
|
||||
m_fastData = true;
|
||||
else if (::memcmp(buffer, ICOM_DATA_MODE_BYTES2, VOICE_FRAME_LENGTH_BYTES) == 0)
|
||||
// Check for the fast data signature
|
||||
if (!m_fastData) {
|
||||
unsigned char slowDataType = buffer[VOICE_FRAME_LENGTH_BYTES] & SLOW_DATA_TYPE_MASK;
|
||||
if (slowDataType == SLOW_DATA_TYPE_FAST_DATA1 || slowDataType == SLOW_DATA_TYPE_FAST_DATA2)
|
||||
m_fastData = true;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue