mirror of
https://github.com/ShaYmez/MMDVM_CM.git
synced 2025-05-30 04:42:26 -04:00
Fix for decoding long Wires-X commands
This commit is contained in:
parent
4b643a2a8b
commit
496e705536
@ -212,11 +212,11 @@ WX_STATUS CWiresX::process(const unsigned char* data, const unsigned char* sourc
|
|||||||
if (!valid)
|
if (!valid)
|
||||||
return WXS_NONE;
|
return WXS_NONE;
|
||||||
} else {
|
} else {
|
||||||
bool valid = payload.readDataFRModeData1(data, m_command + (fn - 1U) * 20U + 0U);
|
bool valid = payload.readDataFRModeData1(data, m_command + (fn - 2U) * 40U + 20U);
|
||||||
if (!valid)
|
if (!valid)
|
||||||
return WXS_NONE;
|
return WXS_NONE;
|
||||||
|
|
||||||
valid = payload.readDataFRModeData2(data, m_command + (fn - 1U) * 20U + 20U);
|
valid = payload.readDataFRModeData2(data, m_command + (fn - 2U) * 40U + 40U);
|
||||||
if (!valid)
|
if (!valid)
|
||||||
return WXS_NONE;
|
return WXS_NONE;
|
||||||
}
|
}
|
||||||
@ -225,7 +225,8 @@ WX_STATUS CWiresX::process(const unsigned char* data, const unsigned char* sourc
|
|||||||
bool valid = false;
|
bool valid = false;
|
||||||
|
|
||||||
// Find the end marker
|
// Find the end marker
|
||||||
for (unsigned int i = fn * 20U; i > 0U; i--) {
|
unsigned int cmd_len = (fn - 1U) * 40U + 20U;
|
||||||
|
for (unsigned int i = cmd_len; i > 0U; i--) {
|
||||||
if (m_command[i] == 0x03U) {
|
if (m_command[i] == 0x03U) {
|
||||||
unsigned char crc = CCRC::addCRC(m_command, i + 1U);
|
unsigned char crc = CCRC::addCRC(m_command, i + 1U);
|
||||||
if (crc == m_command[i + 1U])
|
if (crc == m_command[i + 1U])
|
||||||
@ -249,7 +250,7 @@ WX_STATUS CWiresX::process(const unsigned char* data, const unsigned char* sourc
|
|||||||
processDisconnect(source);
|
processDisconnect(source);
|
||||||
return WXS_DISCONNECT;
|
return WXS_DISCONNECT;
|
||||||
} else {
|
} else {
|
||||||
//CUtils::dump("Unknown Wires-X command", m_command, fn * 20U);
|
//CUtils::dump("Unknown Wires-X command", m_command, cmd_len);
|
||||||
return WXS_FAIL;
|
return WXS_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -210,11 +210,11 @@ WX_STATUS CWiresX::process(const unsigned char* data, const unsigned char* sourc
|
|||||||
if (!valid)
|
if (!valid)
|
||||||
return WXS_NONE;
|
return WXS_NONE;
|
||||||
} else {
|
} else {
|
||||||
bool valid = payload.readDataFRModeData1(data, m_command + (fn - 1U) * 20U + 0U);
|
bool valid = payload.readDataFRModeData1(data, m_command + (fn - 2U) * 40U + 20U);
|
||||||
if (!valid)
|
if (!valid)
|
||||||
return WXS_NONE;
|
return WXS_NONE;
|
||||||
|
|
||||||
valid = payload.readDataFRModeData2(data, m_command + (fn - 1U) * 20U + 20U);
|
valid = payload.readDataFRModeData2(data, m_command + (fn - 2U) * 40U + 40U);
|
||||||
if (!valid)
|
if (!valid)
|
||||||
return WXS_NONE;
|
return WXS_NONE;
|
||||||
}
|
}
|
||||||
@ -223,7 +223,8 @@ WX_STATUS CWiresX::process(const unsigned char* data, const unsigned char* sourc
|
|||||||
bool valid = false;
|
bool valid = false;
|
||||||
|
|
||||||
// Find the end marker
|
// Find the end marker
|
||||||
for (unsigned int i = fn * 20U; i > 0U; i--) {
|
unsigned int cmd_len = (fn - 1U) * 40U + 20U;
|
||||||
|
for (unsigned int i = cmd_len; i > 0U; i--) {
|
||||||
if (m_command[i] == 0x03U) {
|
if (m_command[i] == 0x03U) {
|
||||||
unsigned char crc = CCRC::addCRC(m_command, i + 1U);
|
unsigned char crc = CCRC::addCRC(m_command, i + 1U);
|
||||||
if (crc == m_command[i + 1U])
|
if (crc == m_command[i + 1U])
|
||||||
@ -247,7 +248,7 @@ WX_STATUS CWiresX::process(const unsigned char* data, const unsigned char* sourc
|
|||||||
processDisconnect(source);
|
processDisconnect(source);
|
||||||
return WXS_DISCONNECT;
|
return WXS_DISCONNECT;
|
||||||
} else {
|
} else {
|
||||||
//CUtils::dump("Unknown Wires-X command", m_command, fn * 20U);
|
//CUtils::dump("Unknown Wires-X command", m_command, cmd_len);
|
||||||
return WXS_FAIL;
|
return WXS_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -210,11 +210,11 @@ WX_STATUS CWiresX::process(const unsigned char* data, const unsigned char* sourc
|
|||||||
if (!valid)
|
if (!valid)
|
||||||
return WXS_NONE;
|
return WXS_NONE;
|
||||||
} else {
|
} else {
|
||||||
bool valid = payload.readDataFRModeData1(data, m_command + (fn - 1U) * 20U + 0U);
|
bool valid = payload.readDataFRModeData1(data, m_command + (fn - 2U) * 40U + 20U);
|
||||||
if (!valid)
|
if (!valid)
|
||||||
return WXS_NONE;
|
return WXS_NONE;
|
||||||
|
|
||||||
valid = payload.readDataFRModeData2(data, m_command + (fn - 1U) * 20U + 20U);
|
valid = payload.readDataFRModeData2(data, m_command + (fn - 2U) * 40U + 40U);
|
||||||
if (!valid)
|
if (!valid)
|
||||||
return WXS_NONE;
|
return WXS_NONE;
|
||||||
}
|
}
|
||||||
@ -223,7 +223,8 @@ WX_STATUS CWiresX::process(const unsigned char* data, const unsigned char* sourc
|
|||||||
bool valid = false;
|
bool valid = false;
|
||||||
|
|
||||||
// Find the end marker
|
// Find the end marker
|
||||||
for (unsigned int i = fn * 20U; i > 0U; i--) {
|
unsigned int cmd_len = (fn - 1U) * 40U + 20U;
|
||||||
|
for (unsigned int i = cmd_len; i > 0U; i--) {
|
||||||
if (m_command[i] == 0x03U) {
|
if (m_command[i] == 0x03U) {
|
||||||
unsigned char crc = CCRC::addCRC(m_command, i + 1U);
|
unsigned char crc = CCRC::addCRC(m_command, i + 1U);
|
||||||
if (crc == m_command[i + 1U])
|
if (crc == m_command[i + 1U])
|
||||||
@ -247,7 +248,7 @@ WX_STATUS CWiresX::process(const unsigned char* data, const unsigned char* sourc
|
|||||||
processDisconnect(source);
|
processDisconnect(source);
|
||||||
return WXS_DISCONNECT;
|
return WXS_DISCONNECT;
|
||||||
} else {
|
} else {
|
||||||
//CUtils::dump("Unknown Wires-X command", m_command, fn * 20U);
|
//CUtils::dump("Unknown Wires-X command", m_command, cmd_len);
|
||||||
return WXS_FAIL;
|
return WXS_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user