mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-21 23:45:49 +08:00
Hopefully fix crashes due to divide by zero.
This commit is contained in:
@@ -73,6 +73,7 @@ CDMRSlot::~CDMRSlot()
|
|||||||
void CDMRSlot::writeModem(unsigned char *data)
|
void CDMRSlot::writeModem(unsigned char *data)
|
||||||
{
|
{
|
||||||
if (data[0U] == TAG_LOST && m_state == RS_RELAYING_RF_AUDIO) {
|
if (data[0U] == TAG_LOST && m_state == RS_RELAYING_RF_AUDIO) {
|
||||||
|
if (m_bits == 0U) m_bits = 1U;
|
||||||
LogMessage("DMR Slot %u, transmission lost, BER: %u%%", m_slotNo, (m_errs * 100U) / m_bits);
|
LogMessage("DMR Slot %u, transmission lost, BER: %u%%", m_slotNo, (m_errs * 100U) / m_bits);
|
||||||
writeEndOfTransmission();
|
writeEndOfTransmission();
|
||||||
return;
|
return;
|
||||||
@@ -182,6 +183,7 @@ void CDMRSlot::writeModem(unsigned char *data)
|
|||||||
for (unsigned int i = 0U; i < 8U; i++)
|
for (unsigned int i = 0U; i < 8U; i++)
|
||||||
writeQueue(data);
|
writeQueue(data);
|
||||||
|
|
||||||
|
if (m_bits == 0U) m_bits = 1U;
|
||||||
LogMessage("DMR Slot %u, received RF end of voice transmission, BER: %u%%", m_slotNo, (m_errs * 100U) / m_bits);
|
LogMessage("DMR Slot %u, received RF end of voice transmission, BER: %u%%", m_slotNo, (m_errs * 100U) / m_bits);
|
||||||
|
|
||||||
writeEndOfTransmission();
|
writeEndOfTransmission();
|
||||||
@@ -557,6 +559,7 @@ void CDMRSlot::writeNetwork(const CDMRData& dmrData)
|
|||||||
#endif
|
#endif
|
||||||
// We've received the voice header and terminator haven't we?
|
// We've received the voice header and terminator haven't we?
|
||||||
m_frames += 2U;
|
m_frames += 2U;
|
||||||
|
if (m_bits == 0U) m_bits = 1U;
|
||||||
LogMessage("DMR Slot %u, received network end of voice transmission, %u%% packet loss, BER: %u%%", m_slotNo, (m_lost * 100U) / m_frames, (m_errs * 100U) / m_bits);
|
LogMessage("DMR Slot %u, received network end of voice transmission, %u%% packet loss, BER: %u%%", m_slotNo, (m_lost * 100U) / m_frames, (m_errs * 100U) / m_bits);
|
||||||
} else if (dataType == DT_DATA_HEADER) {
|
} else if (dataType == DT_DATA_HEADER) {
|
||||||
if (m_state == RS_RELAYING_NETWORK_DATA)
|
if (m_state == RS_RELAYING_NETWORK_DATA)
|
||||||
@@ -796,6 +799,7 @@ void CDMRSlot::clock(unsigned int ms)
|
|||||||
if (m_state == RS_RELAYING_NETWORK_AUDIO) {
|
if (m_state == RS_RELAYING_NETWORK_AUDIO) {
|
||||||
// We've received the voice header haven't we?
|
// We've received the voice header haven't we?
|
||||||
m_frames += 1U;
|
m_frames += 1U;
|
||||||
|
if (m_bits == 0U) m_bits = 1U;
|
||||||
LogMessage("DMR Slot %u, network watchdog has expired, %u%% packet loss, BER: %u%%", m_slotNo, (m_lost * 100U) / m_frames, (m_errs * 100U) / m_bits);
|
LogMessage("DMR Slot %u, network watchdog has expired, %u%% packet loss, BER: %u%%", m_slotNo, (m_lost * 100U) / m_frames, (m_errs * 100U) / m_bits);
|
||||||
writeEndOfTransmission();
|
writeEndOfTransmission();
|
||||||
#if defined(DUMP_DMR)
|
#if defined(DUMP_DMR)
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ void CDStarControl::writeModem(unsigned char *data)
|
|||||||
unsigned char type = data[0U];
|
unsigned char type = data[0U];
|
||||||
|
|
||||||
if (type == TAG_LOST && m_state == RS_RELAYING_RF_AUDIO) {
|
if (type == TAG_LOST && m_state == RS_RELAYING_RF_AUDIO) {
|
||||||
|
if (m_bits == 0U) m_bits = 1U;
|
||||||
LogMessage("D-Star, transmission lost, BER: %u%%", (m_errs * 100U) / m_bits);
|
LogMessage("D-Star, transmission lost, BER: %u%%", (m_errs * 100U) / m_bits);
|
||||||
writeEndOfTransmission();
|
writeEndOfTransmission();
|
||||||
return;
|
return;
|
||||||
@@ -185,6 +186,7 @@ void CDStarControl::writeModem(unsigned char *data)
|
|||||||
writeQueueData(data);
|
writeQueueData(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_bits == 0U) m_bits = 1U;
|
||||||
LogMessage("D-Star, received RF end of transmission, BER: %u%%", (m_errs * 100U) / m_bits);
|
LogMessage("D-Star, received RF end of transmission, BER: %u%%", (m_errs * 100U) / m_bits);
|
||||||
|
|
||||||
writeEndOfTransmission();
|
writeEndOfTransmission();
|
||||||
@@ -446,6 +448,7 @@ void CDStarControl::writeNetwork()
|
|||||||
#endif
|
#endif
|
||||||
// We've received the header and EOT haven't we?
|
// We've received the header and EOT haven't we?
|
||||||
m_frames += 2U;
|
m_frames += 2U;
|
||||||
|
if (m_bits == 0U) m_bits = 1U;
|
||||||
LogMessage("D-Star, received network end of voice transmission, %u%% packet loss, BER: %u%%", (m_lost * 100U) / m_frames, (m_errs * 100U) / m_bits);
|
LogMessage("D-Star, received network end of voice transmission, %u%% packet loss, BER: %u%%", (m_lost * 100U) / m_frames, (m_errs * 100U) / m_bits);
|
||||||
|
|
||||||
writeEndOfTransmission();
|
writeEndOfTransmission();
|
||||||
@@ -493,6 +496,9 @@ void CDStarControl::clock(unsigned int ms)
|
|||||||
m_networkWatchdog.clock(ms);
|
m_networkWatchdog.clock(ms);
|
||||||
|
|
||||||
if (m_networkWatchdog.hasExpired()) {
|
if (m_networkWatchdog.hasExpired()) {
|
||||||
|
// We're received the header haven't we?
|
||||||
|
m_frames += 1U;
|
||||||
|
if (m_bits == 0U) m_bits = 1U;
|
||||||
LogMessage("D-Star, network watchdog has expired, %u%% packet loss, BER: %u%%", (m_lost * 100U) / m_frames, (m_errs * 100U) / m_bits);
|
LogMessage("D-Star, network watchdog has expired, %u%% packet loss, BER: %u%%", (m_lost * 100U) / m_frames, (m_errs * 100U) / m_bits);
|
||||||
writeEndOfTransmission();
|
writeEndOfTransmission();
|
||||||
#if defined(DUMP_DSTAR)
|
#if defined(DUMP_DSTAR)
|
||||||
|
|||||||
Reference in New Issue
Block a user