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) { 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;