error handling

This commit is contained in:
Wolfgang Hottgenroth 2020-11-18 13:15:55 +01:00
parent e563a9b772
commit 737a2ce3ac
Signed by: wn
GPG Key ID: 6C1E5E531E0D5D7F

View File

@ -270,12 +270,13 @@ static void handleRequestEngine(void *handle) {
if (localMbusCommHandle->receivedOctet == 0x68) {
localMbusCommHandle->frame.start1 = localMbusCommHandle->receivedOctet;
localMbusCommHandle->state = MBCS_LENGTH1;
receiveNext(localMbusCommHandle);
} else {
coloredMsg(LOG_RED, true, "mbc hre [%d] err: invalid start1 symbol %02x", localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__START1;
localMbusCommHandle->state = MBCS_ERROR;
schAdd(handleRequestEngine, handle, 0, 0);
}
receiveNext(localMbusCommHandle);
break;
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);
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__LENGTH1;
localMbusCommHandle->state = MBCS_ERROR;
schAdd(handleRequestEngine, handle, 0, 0);
} else {
localMbusCommHandle->frame.length1 = localMbusCommHandle->receivedOctet;
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);
localMbusCommHandle->result = MBCR_ERROR_OUT_OF_MEMORY__USERDATA;
localMbusCommHandle->state = MBCS_ERROR;
schAdd(handleRequestEngine, handle, 0, 0);
} else {
localMbusCommHandle->state = MBCS_LENGTH2;
}
}
receiveNext(localMbusCommHandle);
}
}
break;
case MBCS_LENGTH2:
@ -303,24 +306,26 @@ static void handleRequestEngine(void *handle) {
localMbusCommHandle->requestId, localMbusCommHandle->frame.length1, localMbusCommHandle->receivedOctet);
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__LENGTH2;
localMbusCommHandle->state = MBCS_ERROR;
schAdd(handleRequestEngine, handle, 0, 0);
} else {
localMbusCommHandle->frame.length2 = localMbusCommHandle->receivedOctet;
localMbusCommHandle->state = MBCS_START2;
}
receiveNext(localMbusCommHandle);
}
break;
case MBCS_START2:
if (localMbusCommHandle->receivedOctet == 0x68) {
localMbusCommHandle->frame.start2 = localMbusCommHandle->receivedOctet;
localMbusCommHandle->state = MBCS_C_FIELD;
receiveNext(localMbusCommHandle);
} else {
coloredMsg(LOG_RED, true, "mbc hre [%d] err: invalid start2 symbol %02x",
localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__START2;
localMbusCommHandle->state = MBCS_ERROR;
schAdd(handleRequestEngine, handle, 0, 0);
}
receiveNext(localMbusCommHandle);
break;
case MBCS_C_FIELD:
@ -360,11 +365,12 @@ static void handleRequestEngine(void *handle) {
localMbusCommHandle->requestId, calculatedChksum, localMbusCommHandle->receivedOctet);
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__INVALID_CHKSUM;
localMbusCommHandle->state = MBCS_ERROR;
schAdd(handleRequestEngine, handle, 0, 0);
} else {
localMbusCommHandle->frame.chksum = localMbusCommHandle->receivedOctet;
localMbusCommHandle->state = MBCS_STOP;
}
receiveNext(localMbusCommHandle);
}
break;
case MBCS_STOP:
@ -377,7 +383,7 @@ static void handleRequestEngine(void *handle) {
localMbusCommHandle->requestId, localMbusCommHandle->receivedOctet);
localMbusCommHandle->result = MBCR_ERROR_STATE_ENGINE__STOP;
localMbusCommHandle->state = MBCS_ERROR;
receiveNext(localMbusCommHandle);
schAdd(handleRequestEngine, handle, 0, 0);
}
break;