Handle missing ACK responses from the radio.

pull/1/head
Jonathan Naylor 8 years ago
parent 51437e1fc0
commit 10021d07f8

@ -128,6 +128,7 @@ void* CIcomController::Entry()
m_rxData.addData(buffer + 2U, RADIO_HEADER_LENGTH_BYTES); m_rxData.addData(buffer + 2U, RADIO_HEADER_LENGTH_BYTES);
lostTimer.start(); lostTimer.start();
txSpace = true;
} }
break; break;
@ -143,6 +144,7 @@ void* CIcomController::Entry()
m_rxData.addData(buffer + 4U, DV_FRAME_LENGTH_BYTES); m_rxData.addData(buffer + 4U, DV_FRAME_LENGTH_BYTES);
lostTimer.start(); lostTimer.start();
txSpace = true;
} }
break; break;
@ -156,6 +158,7 @@ void* CIcomController::Entry()
m_rxData.addData(data, 2U); m_rxData.addData(data, 2U);
lostTimer.start(); lostTimer.start();
txSpace = true;
} }
break; break;
@ -168,13 +171,13 @@ void* CIcomController::Entry()
break; break;
case RTI_HEADER_ACK: case RTI_HEADER_ACK:
storeLength = 0U;
retryTimer.stop();
if (buffer[2U] == 0x00U) { if (buffer[2U] == 0x00U) {
wxLogMessage(wxT("RTI_HEADER_ACK")); wxLogMessage(wxT("RTI_HEADER_ACK"));
if (state == SI_HEADER) if (state == SI_HEADER) {
storeLength = 0U;
retryTimer.stop();
txSpace = true; txSpace = true;
}
} else { } else {
wxLogMessage(wxT("RTI_HEADER_NAK")); wxLogMessage(wxT("RTI_HEADER_NAK"));
} }
@ -183,13 +186,13 @@ void* CIcomController::Entry()
break; break;
case RTI_DATA_ACK: case RTI_DATA_ACK:
storeLength = 0U;
retryTimer.stop();
if (buffer[3U] == 0x00U) { if (buffer[3U] == 0x00U) {
wxLogMessage(wxT("RTI_DATA_ACK - %02X"), buffer[2U]); wxLogMessage(wxT("RTI_DATA_ACK - %02X"), buffer[2U]);
if (state == SI_DATA && seqNo == buffer[2U]) if (state == SI_DATA && seqNo == buffer[2U]) {
storeLength = 0U;
retryTimer.stop();
txSpace = true; txSpace = true;
}
} else { } else {
wxLogMessage(wxT("RTI_DATA_NAK - %02X"), buffer[2U]); wxLogMessage(wxT("RTI_DATA_NAK - %02X"), buffer[2U]);
} }
@ -259,6 +262,10 @@ void* CIcomController::Entry()
retryTimer.stop(); retryTimer.stop();
storeLength = 0U; storeLength = 0U;
state = SI_NONE;
seqNo = 0U;
txSpace = true;
lostTimer.start(); lostTimer.start();
connected = false; connected = false;
} }

Loading…
Cancel
Save

Powered by TurnKey Linux.