mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 23:45:49 +08:00
Check the guard byte on fast data as well as the mini header.
This commit is contained in:
@@ -343,8 +343,9 @@ bool CDStarControl::writeModem(unsigned char *data, unsigned int len)
|
||||
|
||||
// Check for the fast data signature
|
||||
if (m_rfState == RS_RF_AUDIO && (m_rfN % 2U) == 1U) {
|
||||
unsigned char slowDataType = (data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 1U] ^ DSTAR_SCRAMBLER_BYTE1) & DSTAR_SLOW_DATA_TYPE_MASK;
|
||||
if (slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA1 || slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA2) {
|
||||
unsigned char slowDataType = (data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 1U] ^ DSTAR_SCRAMBLER_BYTES[0U]) & DSTAR_SLOW_DATA_TYPE_MASK;
|
||||
unsigned char guard = data[4U + 1U] ^ DSTAR_SCRAMBLER_BYTES[4U];
|
||||
if ((slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA1 || slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA2) && guard == DSTAR_FAST_DATA_GUARD_BYTE) {
|
||||
LogMessage("D-Star, switching to fast data mode");
|
||||
m_rfState = RS_RF_DATA;
|
||||
}
|
||||
@@ -712,8 +713,9 @@ void CDStarControl::writeNetwork()
|
||||
|
||||
// Check for the fast data signature
|
||||
if (m_netState == RS_NET_AUDIO && (n % 2U) == 1U) {
|
||||
unsigned char slowDataType = data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 2U] & DSTAR_SLOW_DATA_TYPE_MASK;
|
||||
if (slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA1 || slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA2) {
|
||||
unsigned char slowDataType = (data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 2U] ^ DSTAR_SCRAMBLER_BYTES[0U]) & DSTAR_SLOW_DATA_TYPE_MASK;
|
||||
unsigned char guard = data[4U + 2U] ^ DSTAR_SCRAMBLER_BYTES[4U];
|
||||
if ((slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA1 || slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA2) && guard == DSTAR_FAST_DATA_GUARD_BYTE) {
|
||||
LogMessage("D-Star, switching to fast data mode");
|
||||
m_netState = RS_NET_DATA;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user