simplified

This commit is contained in:
john30
2016-01-02 13:07:57 +01:00
parent da40d514af
commit 4d461c9dff
+30 -38
View File
@@ -44,7 +44,7 @@ using namespace std;
const char* getStateCode(BusState state) { const char* getStateCode(BusState state) {
switch (state) switch (state)
{ {
case bs_noSignal: return "no signal"; case bs_noSignal: return "no signal";
case bs_skip: return "skip"; case bs_skip: return "skip";
case bs_ready: return "ready"; case bs_ready: return "ready";
case bs_sendCmd: return "send command"; case bs_sendCmd: return "send command";
@@ -570,37 +570,33 @@ result_t BusHandler::handleSymbol()
return setState(bs_skip, RESULT_ERR_ACK); return setState(bs_skip, RESULT_ERR_ACK);
case bs_sendCmd: case bs_sendCmd:
if (m_currentRequest != NULL && sending) { if (m_currentRequest != NULL && sending && recvSymbol == sendSymbol) {
if (recvSymbol == sendSymbol) { // successfully sent
// successfully sent m_nextSendPos++;
m_nextSendPos++; if (m_nextSendPos >= m_currentRequest->m_master.size()) {
if (m_nextSendPos >= m_currentRequest->m_master.size()) { // master data completely sent
// master data completely sent if (m_currentRequest->m_master[1] == BROADCAST)
if (m_currentRequest->m_master[1] == BROADCAST) return setState(bs_sendSyn, RESULT_OK);
return setState(bs_sendSyn, RESULT_OK);
m_commandCrcValid = true; m_commandCrcValid = true;
return setState(bs_recvCmdAck, RESULT_OK); return setState(bs_recvCmdAck, RESULT_OK);
}
return RESULT_OK;
} }
return RESULT_OK;
} }
return setState(bs_skip, RESULT_ERR_INVALID_ARG); return setState(bs_skip, RESULT_ERR_INVALID_ARG);
case bs_sendResAck: case bs_sendResAck:
if (m_currentRequest != NULL && sending) { if (m_currentRequest != NULL && sending recvSymbol == sendSymbol) {
if (recvSymbol == sendSymbol) { // successfully sent
// successfully sent if (!m_responseCrcValid) {
if (!m_responseCrcValid) { if (!m_repeat) {
if (!m_repeat) { m_repeat = true;
m_repeat = true; m_response.clear();
m_response.clear(); return setState(bs_recvRes, RESULT_ERR_NAK, true);
return setState(bs_recvRes, RESULT_ERR_NAK, true);
}
return setState(bs_sendSyn, RESULT_ERR_ACK);
} }
return setState(bs_sendSyn, RESULT_OK); return setState(bs_sendSyn, RESULT_ERR_ACK);
} }
return setState(bs_sendSyn, RESULT_OK);
} }
return setState(bs_skip, RESULT_ERR_INVALID_ARG); return setState(bs_skip, RESULT_ERR_INVALID_ARG);
@@ -646,25 +642,21 @@ result_t BusHandler::handleSymbol()
return setState(bs_skip, RESULT_ERR_INVALID_ARG); return setState(bs_skip, RESULT_ERR_INVALID_ARG);
case bs_sendRes: case bs_sendRes:
if (sending && m_answer) { if (sending && m_answer && recvSymbol == sendSymbol) {
if (recvSymbol == sendSymbol) { // successfully sent
// successfully sent m_nextSendPos++;
m_nextSendPos++; if (m_nextSendPos >= m_response.size()) {
if (m_nextSendPos >= m_response.size()) { // slave data completely sent
// slave data completely sent return setState(bs_recvResAck, RESULT_OK);
return setState(bs_recvResAck, RESULT_OK);
}
return RESULT_OK;
} }
return RESULT_OK;
} }
return setState(bs_skip, RESULT_ERR_INVALID_ARG); return setState(bs_skip, RESULT_ERR_INVALID_ARG);
case bs_sendSyn: case bs_sendSyn:
if (sending) { if (sending && recvSymbol == sendSymbol) {
if (recvSymbol == sendSymbol) { // successfully sent
// successfully sent return setState(bs_skip, RESULT_OK);
return setState(bs_skip, RESULT_OK);
}
} }
return setState(bs_skip, RESULT_ERR_INVALID_ARG); return setState(bs_skip, RESULT_ERR_INVALID_ARG);