From eab39ff9d3af4d265a65f3a1f9b2a7841c748644 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Mon, 2 Nov 2020 17:14:11 +0100 Subject: [PATCH] more receiving --- cube/User/Src/mbusComm.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/cube/User/Src/mbusComm.c b/cube/User/Src/mbusComm.c index 9446a40..e312760 100644 --- a/cube/User/Src/mbusComm.c +++ b/cube/User/Src/mbusComm.c @@ -41,6 +41,11 @@ static void timeoutHandler(void *handle) { handleRequestEngine(handle); } +static void receiveNext(t_mbusCommHandle *localMbusCommHandle) { + localMbusCommHandle->receiving = true; + HAL_UART_Receive_IT(&mbusUart, &(localMbusCommHandle->receivedOctet), 1); +} + static void handleRequestEngine(void *handle) { t_mbusCommHandle *localMbusCommHandle = (t_mbusCommHandle*) handle; @@ -87,21 +92,15 @@ static void handleRequestEngine(void *handle) { frontendEnable(); schAdd(timeoutHandler, handle, 2500, 0); localMbusCommHandle->state = RECEIVING; - localMbusCommHandle->receiving = false; localMbusCommHandle->receiveCnt = 0; - // no break + receiveNext(localMbusCommHandle); + break; case RECEIVING: // logMsg("hre state RECEIVING"); - if (! localMbusCommHandle->receiving) { - localMbusCommHandle->receiving = true; - HAL_UART_Receive_IT(&mbusUart, &(localMbusCommHandle->receivedOctet), 1); - } else { - localMbusCommHandle->receiving = false; - logMsg("hre received octet: 0x%02x: 0x%02x", localMbusCommHandle->receiveCnt, localMbusCommHandle->receivedOctet); - localMbusCommHandle->receiveCnt += 1; - schAdd(handleRequestEngine, handle, 0, 0); - } + logMsg("hre received octet: 0x%02x: 0x%02x", localMbusCommHandle->receiveCnt, localMbusCommHandle->receivedOctet); + localMbusCommHandle->receiveCnt += 1; + receiveNext(localMbusCommHandle); break; case DISABLE_FRONTEND: @@ -124,6 +123,7 @@ void mbusCommTxCpltCallback(UART_HandleTypeDef *huart) { void mbusCommRxCpltCallback(UART_HandleTypeDef *huart) { if (mbusCommHandle.receiving) { schAdd(handleRequestEngine, (void*) &mbusCommHandle, 0, 0); + mbusCommHandle.receiving = false; } else { logMsg("mcrx: received 0x%02x but not expected", mbusCommHandle.receivedOctet); }