error handling
This commit is contained in:
parent
e563a9b772
commit
737a2ce3ac
@ -270,12 +270,13 @@ static void handleRequestEngine(void *handle) {
|
|||||||
if (localMbusCommHandle->receivedOctet == 0x68) {
|
if (localMbusCommHandle->receivedOctet == 0x68) {
|
||||||
localMbusCommHandle->frame.start1 = localMbusCommHandle->receivedOctet;
|
localMbusCommHandle->frame.start1 = localMbusCommHandle->receivedOctet;
|
||||||
localMbusCommHandle->state = MBCS_LENGTH1;
|
localMbusCommHandle->state = MBCS_LENGTH1;
|
||||||
|
receiveNext(localMbusCommHandle);
|
||||||
} else {
|
} else {
|
||||||
coloredMsg(LOG_RED, true, "mbc hre [%d] err: invalid start1 symbol %02x", localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
|
coloredMsg(LOG_RED, true, "mbc hre [%d] err: invalid start1 symbol %02x", localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
|
||||||
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__START1;
|
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__START1;
|
||||||
localMbusCommHandle->state = MBCS_ERROR;
|
localMbusCommHandle->state = MBCS_ERROR;
|
||||||
|
schAdd(handleRequestEngine, handle, 0, 0);
|
||||||
}
|
}
|
||||||
receiveNext(localMbusCommHandle);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MBCS_LENGTH1:
|
case MBCS_LENGTH1:
|
||||||
@ -283,6 +284,7 @@ static void handleRequestEngine(void *handle) {
|
|||||||
coloredMsg(LOG_RED, true, "mbc hre [%d] err: length to small %02x", localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
|
coloredMsg(LOG_RED, true, "mbc hre [%d] err: length to small %02x", localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
|
||||||
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__LENGTH1;
|
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__LENGTH1;
|
||||||
localMbusCommHandle->state = MBCS_ERROR;
|
localMbusCommHandle->state = MBCS_ERROR;
|
||||||
|
schAdd(handleRequestEngine, handle, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
localMbusCommHandle->frame.length1 = localMbusCommHandle->receivedOctet;
|
localMbusCommHandle->frame.length1 = localMbusCommHandle->receivedOctet;
|
||||||
localMbusCommHandle->frame.userdata = (uint8_t*) malloc(localMbusCommHandle->frame.length1 - 3);
|
localMbusCommHandle->frame.userdata = (uint8_t*) malloc(localMbusCommHandle->frame.length1 - 3);
|
||||||
@ -290,11 +292,12 @@ static void handleRequestEngine(void *handle) {
|
|||||||
coloredMsg(LOG_RED, true, "mbc hre [%d] err: unable to allocate memory for userdata", localMbusCommHandle->requestId);
|
coloredMsg(LOG_RED, true, "mbc hre [%d] err: unable to allocate memory for userdata", localMbusCommHandle->requestId);
|
||||||
localMbusCommHandle->result = MBCR_ERROR_OUT_OF_MEMORY__USERDATA;
|
localMbusCommHandle->result = MBCR_ERROR_OUT_OF_MEMORY__USERDATA;
|
||||||
localMbusCommHandle->state = MBCS_ERROR;
|
localMbusCommHandle->state = MBCS_ERROR;
|
||||||
|
schAdd(handleRequestEngine, handle, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
localMbusCommHandle->state = MBCS_LENGTH2;
|
localMbusCommHandle->state = MBCS_LENGTH2;
|
||||||
|
receiveNext(localMbusCommHandle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
receiveNext(localMbusCommHandle);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MBCS_LENGTH2:
|
case MBCS_LENGTH2:
|
||||||
@ -303,24 +306,26 @@ static void handleRequestEngine(void *handle) {
|
|||||||
localMbusCommHandle->requestId, localMbusCommHandle->frame.length1, localMbusCommHandle->receivedOctet);
|
localMbusCommHandle->requestId, localMbusCommHandle->frame.length1, localMbusCommHandle->receivedOctet);
|
||||||
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__LENGTH2;
|
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__LENGTH2;
|
||||||
localMbusCommHandle->state = MBCS_ERROR;
|
localMbusCommHandle->state = MBCS_ERROR;
|
||||||
|
schAdd(handleRequestEngine, handle, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
localMbusCommHandle->frame.length2 = localMbusCommHandle->receivedOctet;
|
localMbusCommHandle->frame.length2 = localMbusCommHandle->receivedOctet;
|
||||||
localMbusCommHandle->state = MBCS_START2;
|
localMbusCommHandle->state = MBCS_START2;
|
||||||
|
receiveNext(localMbusCommHandle);
|
||||||
}
|
}
|
||||||
receiveNext(localMbusCommHandle);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MBCS_START2:
|
case MBCS_START2:
|
||||||
if (localMbusCommHandle->receivedOctet == 0x68) {
|
if (localMbusCommHandle->receivedOctet == 0x68) {
|
||||||
localMbusCommHandle->frame.start2 = localMbusCommHandle->receivedOctet;
|
localMbusCommHandle->frame.start2 = localMbusCommHandle->receivedOctet;
|
||||||
localMbusCommHandle->state = MBCS_C_FIELD;
|
localMbusCommHandle->state = MBCS_C_FIELD;
|
||||||
|
receiveNext(localMbusCommHandle);
|
||||||
} else {
|
} else {
|
||||||
coloredMsg(LOG_RED, true, "mbc hre [%d] err: invalid start2 symbol %02x",
|
coloredMsg(LOG_RED, true, "mbc hre [%d] err: invalid start2 symbol %02x",
|
||||||
localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
|
localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
|
||||||
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__START2;
|
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__START2;
|
||||||
localMbusCommHandle->state = MBCS_ERROR;
|
localMbusCommHandle->state = MBCS_ERROR;
|
||||||
|
schAdd(handleRequestEngine, handle, 0, 0);
|
||||||
}
|
}
|
||||||
receiveNext(localMbusCommHandle);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MBCS_C_FIELD:
|
case MBCS_C_FIELD:
|
||||||
@ -360,11 +365,12 @@ static void handleRequestEngine(void *handle) {
|
|||||||
localMbusCommHandle->requestId, calculatedChksum, localMbusCommHandle->receivedOctet);
|
localMbusCommHandle->requestId, calculatedChksum, localMbusCommHandle->receivedOctet);
|
||||||
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__INVALID_CHKSUM;
|
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__INVALID_CHKSUM;
|
||||||
localMbusCommHandle->state = MBCS_ERROR;
|
localMbusCommHandle->state = MBCS_ERROR;
|
||||||
|
schAdd(handleRequestEngine, handle, 0, 0);
|
||||||
} else {
|
} else {
|
||||||
localMbusCommHandle->frame.chksum = localMbusCommHandle->receivedOctet;
|
localMbusCommHandle->frame.chksum = localMbusCommHandle->receivedOctet;
|
||||||
localMbusCommHandle->state = MBCS_STOP;
|
localMbusCommHandle->state = MBCS_STOP;
|
||||||
|
receiveNext(localMbusCommHandle);
|
||||||
}
|
}
|
||||||
receiveNext(localMbusCommHandle);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MBCS_STOP:
|
case MBCS_STOP:
|
||||||
@ -377,7 +383,7 @@ static void handleRequestEngine(void *handle) {
|
|||||||
localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
|
localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
|
||||||
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__STOP;
|
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__STOP;
|
||||||
localMbusCommHandle->state = MBCS_ERROR;
|
localMbusCommHandle->state = MBCS_ERROR;
|
||||||
receiveNext(localMbusCommHandle);
|
schAdd(handleRequestEngine, handle, 0, 0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user