tx cmplt by interrupt

This commit is contained in:
Wolfgang Hottgenroth 2020-11-02 15:02:39 +01:00
parent e5df9b7d81
commit 628ee68d3d
Signed by: wn
GPG Key ID: 6C1E5E531E0D5D7F
2 changed files with 23 additions and 2 deletions

View File

@ -64,5 +64,10 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
if (hadc == &frontendAdc) {
frontendAdcCallback(hadc);
}
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {
if (huart == &mbusUart) {
mbusCommTxCpltCallback(huart);
}
}

View File

@ -13,6 +13,7 @@ typedef enum {
SEND,
SEND_CONT,
SENDING,
SENDING_DONE,
ENABLE_FRONTEND,
DISABLE_FRONTEND
} e_mbusCommState;
@ -59,18 +60,26 @@ static void handleRequestEngine(void *handle) {
localMbusCommHandle->retryCnt = 0;
HAL_UART_Transmit_IT(&mbusUart, localMbusCommHandle->sendBuf, 5);
localMbusCommHandle->state = SENDING;
schAdd(handleRequestEngine, handle, 15, 0); // ask me again in 15ms in the next state ...
// schAdd(handleRequestEngine, handle, 15, 0); // ask me again in 15ms in the next state ...
}
break;
case SENDING:
logMsg("hre state SENDING");
break;
case SENDING_DONE:
logMsg("hre state SENDING_DONE");
/*
if (HAL_UART_GetState(&mbusUart) == HAL_UART_STATE_READY) { // ... whether I'm done
localMbusCommHandle->state = ENABLE_FRONTEND;
schAdd(handleRequestEngine, handle, 3, 0);
} else {
schAdd(handleRequestEngine, handle, 1, 0); // not yet done, ask me again in 1ms
}
*/
localMbusCommHandle->state = ENABLE_FRONTEND;
schAdd(handleRequestEngine, handle, 3, 0);
break;
case ENABLE_FRONTEND:
@ -93,6 +102,13 @@ static void handleRequestEngine(void *handle) {
}
}
void mbusCommTxCpltCallback(UART_HandleTypeDef *huart) {
logMsg("mctx: mbus tx done");
if (mbusCommHandle.state == SENDING) {
mbusCommHandle.state = SENDING_DONE;
schAdd(handleRequestEngine, (void*) &mbusCommHandle, 0, 0);
}
}
void mbusCommRequest(uint8_t cmd, uint8_t addr) {
if (mbusCommHandle.state == IDLE) {