mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 06:55:52 +08:00
Handle EOT on rejected frames correctly.
This commit is contained in:
@@ -442,6 +442,22 @@ bool CM17Control::writeModem(unsigned char* data, unsigned int len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_rfState == RS_RF_REJECTED) {
|
||||||
|
CM17Convolution conv;
|
||||||
|
unsigned char frame[M17_FN_LENGTH_BYTES + M17_PAYLOAD_LENGTH_BYTES + M17_CRC_LENGTH_BYTES];
|
||||||
|
conv.decodeData(data + 2U + M17_SYNC_LENGTH_BYTES + M17_LICH_FRAGMENT_FEC_LENGTH_BYTES, frame);
|
||||||
|
|
||||||
|
bool valid = CM17CRC::checkCRC(frame, M17_FN_LENGTH_BYTES + M17_PAYLOAD_LENGTH_BYTES + M17_CRC_LENGTH_BYTES);
|
||||||
|
if (valid) {
|
||||||
|
// Handle the EOT for rejected frames
|
||||||
|
unsigned int fn = (frame[0U] << 8) + (frame[1U] << 0);
|
||||||
|
if ((fn & 0x8000U) == 0x8000U)
|
||||||
|
writeEndRF();
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user