meterbus state machine
This commit is contained in:
parent
e5e0001a0e
commit
545fe203df
@ -30,6 +30,7 @@ typedef enum {
|
||||
MBCS_CHKSUM,
|
||||
MBCS_STOP,
|
||||
MBCS_DONE,
|
||||
MBCS_TIMEOUT,
|
||||
MBCS_DISABLE_FRONTEND,
|
||||
MBCS_ERROR
|
||||
} e_mbusCommState;
|
||||
@ -63,7 +64,7 @@ static void handleRequestEngine(void *handle);
|
||||
static void timeoutHandler(void *handle) {
|
||||
logMsg("mbc timeout");
|
||||
t_mbusCommHandle *localMbusCommHandle = (t_mbusCommHandle*) handle;
|
||||
localMbusCommHandle->state = MBCS_DISABLE_FRONTEND;
|
||||
localMbusCommHandle->state = MBCS_TIMEOUT;
|
||||
localMbusCommHandle->receiving = false;
|
||||
handleRequestEngine(handle);
|
||||
}
|
||||
@ -253,6 +254,7 @@ static void handleRequestEngine(void *handle) {
|
||||
printFrame(&(localMbusCommHandle->frame));
|
||||
localMbusCommHandle->result = MBCR_SUCCESS;
|
||||
localMbusCommHandle->state = MBCS_DISABLE_FRONTEND;
|
||||
schDel(timeoutHandler, handle);
|
||||
schAdd(handleRequestEngine, handle, 0, 0);
|
||||
break;
|
||||
|
||||
@ -263,15 +265,18 @@ static void handleRequestEngine(void *handle) {
|
||||
receiveNext(localMbusCommHandle);
|
||||
break;
|
||||
|
||||
|
||||
case MBCS_DISABLE_FRONTEND:
|
||||
logMsg("hre state DISABLE_FRONTEND");
|
||||
case MBCS_TIMEOUT:
|
||||
logMsg("hre state TIMEOUT");
|
||||
localMbusCommHandle->receiving = false;
|
||||
HAL_UART_AbortReceive(&mbusUart);
|
||||
uint8_t kitchenSink[16];
|
||||
memset(kitchenSink, 0, 16);
|
||||
HAL_StatusTypeDef r = HAL_UART_Receive(&mbusUart, kitchenSink, 16, 1000);
|
||||
HAL_StatusTypeDef r = HAL_UART_Receive(&mbusUart, kitchenSink, 16, 100);
|
||||
logMsg("hre abort, last receive result: %02x", r);
|
||||
// no break
|
||||
|
||||
case MBCS_DISABLE_FRONTEND:
|
||||
logMsg("hre state DISABLE_FRONTEND");
|
||||
frontendDisable();
|
||||
localMbusCommHandle->state = MBCS_IDLE;
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user