simplified
This commit is contained in:
+30
-38
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user