Only test the slow data type in the correct place.
This commit is contained in:
parent
6c07786f1b
commit
ff0082b18b
1 changed files with 10 additions and 2 deletions
|
@ -342,12 +342,14 @@ bool CDStarControl::writeModem(unsigned char *data, unsigned int len)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for the fast data signature
|
// Check for the fast data signature
|
||||||
if (m_rfState == RS_RF_AUDIO) {
|
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;
|
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) {
|
if (slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA1 || slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA2) {
|
||||||
LogMessage("D-Star, switching to fast data mode");
|
LogMessage("D-Star, switching to fast data mode");
|
||||||
m_rfState = RS_RF_DATA;
|
m_rfState = RS_RF_DATA;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Handle return to voice mode here?
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_rfState == RS_RF_DATA) {
|
if (m_rfState == RS_RF_DATA) {
|
||||||
|
@ -707,12 +709,14 @@ void CDStarControl::writeNetwork()
|
||||||
}
|
}
|
||||||
} else if (type == TAG_DATA) {
|
} else if (type == TAG_DATA) {
|
||||||
// Check for the fast data signature
|
// Check for the fast data signature
|
||||||
if (m_netState == RS_NET_AUDIO) {
|
if (m_netState == RS_NET_AUDIO && (m_netN % 2U) == 1U) {
|
||||||
unsigned char slowDataType = data[DSTAR_VOICE_FRAME_LENGTH_BYTES + 2U] & DSTAR_SLOW_DATA_TYPE_MASK;
|
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) {
|
if (slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA1 || slowDataType == DSTAR_SLOW_DATA_TYPE_FAST_DATA2) {
|
||||||
LogMessage("D-Star, switching to fast data mode");
|
LogMessage("D-Star, switching to fast data mode");
|
||||||
m_netState = RS_NET_DATA;
|
m_netState = RS_NET_DATA;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Handle return to voice mode here?
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_netState == RS_NET_DATA) {
|
if (m_netState == RS_NET_DATA) {
|
||||||
|
@ -736,6 +740,8 @@ void CDStarControl::writeNetwork()
|
||||||
writeFile(data + 1U, length - 1U);
|
writeFile(data + 1U, length - 1U);
|
||||||
#endif
|
#endif
|
||||||
writeQueueDataNet(data + 1U);
|
writeQueueDataNet(data + 1U);
|
||||||
|
|
||||||
|
m_netN = (m_netN + 1U) % 21U;
|
||||||
} else if (m_netState == RS_NET_AUDIO) {
|
} else if (m_netState == RS_NET_AUDIO) {
|
||||||
unsigned char n = data[1U];
|
unsigned char n = data[1U];
|
||||||
|
|
||||||
|
@ -775,6 +781,8 @@ void CDStarControl::writeNetwork()
|
||||||
writeFile(data + 1U, length - 1U);
|
writeFile(data + 1U, length - 1U);
|
||||||
#endif
|
#endif
|
||||||
writeQueueDataNet(data + 1U);
|
writeQueueDataNet(data + 1U);
|
||||||
|
|
||||||
|
m_netN = (m_netN + 1U) % 21U;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
CUtils::dump("D-Star, unknown data from network", data, DSTAR_FRAME_LENGTH_BYTES + 1U);
|
CUtils::dump("D-Star, unknown data from network", data, DSTAR_FRAME_LENGTH_BYTES + 1U);
|
||||||
|
|
Loading…
Reference in a new issue