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) {
|
if (hadc == &frontendAdc) {
|
||||||
frontendAdcCallback(hadc);
|
frontendAdcCallback(hadc);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) {
|
||||||
|
if (huart == &mbusUart) {
|
||||||
|
mbusCommTxCpltCallback(huart);
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,7 @@ typedef enum {
|
|||||||
SEND,
|
SEND,
|
||||||
SEND_CONT,
|
SEND_CONT,
|
||||||
SENDING,
|
SENDING,
|
||||||
|
SENDING_DONE,
|
||||||
ENABLE_FRONTEND,
|
ENABLE_FRONTEND,
|
||||||
DISABLE_FRONTEND
|
DISABLE_FRONTEND
|
||||||
} e_mbusCommState;
|
} e_mbusCommState;
|
||||||
@ -59,18 +60,26 @@ static void handleRequestEngine(void *handle) {
|
|||||||
localMbusCommHandle->retryCnt = 0;
|
localMbusCommHandle->retryCnt = 0;
|
||||||
HAL_UART_Transmit_IT(&mbusUart, localMbusCommHandle->sendBuf, 5);
|
HAL_UART_Transmit_IT(&mbusUart, localMbusCommHandle->sendBuf, 5);
|
||||||
localMbusCommHandle->state = SENDING;
|
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;
|
break;
|
||||||
|
|
||||||
case SENDING:
|
case SENDING:
|
||||||
logMsg("hre state 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
|
if (HAL_UART_GetState(&mbusUart) == HAL_UART_STATE_READY) { // ... whether I'm done
|
||||||
localMbusCommHandle->state = ENABLE_FRONTEND;
|
localMbusCommHandle->state = ENABLE_FRONTEND;
|
||||||
schAdd(handleRequestEngine, handle, 3, 0);
|
schAdd(handleRequestEngine, handle, 3, 0);
|
||||||
} else {
|
} else {
|
||||||
schAdd(handleRequestEngine, handle, 1, 0); // not yet done, ask me again in 1ms
|
schAdd(handleRequestEngine, handle, 1, 0); // not yet done, ask me again in 1ms
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
localMbusCommHandle->state = ENABLE_FRONTEND;
|
||||||
|
schAdd(handleRequestEngine, handle, 3, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ENABLE_FRONTEND:
|
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) {
|
void mbusCommRequest(uint8_t cmd, uint8_t addr) {
|
||||||
if (mbusCommHandle.state == IDLE) {
|
if (mbusCommHandle.state == IDLE) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user