tx cmplt by interrupt
This commit is contained in:
parent
e5df9b7d81
commit
628ee68d3d
@ -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);
|
||||
}
|
||||
}
|
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user