start refactoring transmitting
This commit is contained in:
parent
c14d4fe892
commit
354a1670ee
@ -18,7 +18,6 @@
|
||||
#include <oled.h>
|
||||
#include <ringbuffer.h>
|
||||
|
||||
|
||||
#include <mbus/mbus-protocol.h>
|
||||
|
||||
static const char MBUS_TOPIC[] = "IoT/MBGW3/Measurement";
|
||||
@ -272,7 +271,18 @@ void mbusCommISR() {
|
||||
mbusCommHandle.receiveBuffer.buffer[mbusCommHandle.receiveBuffer.writeIdx] = data;
|
||||
mbusCommHandle.receiveBuffer.writeIdx += 1;
|
||||
}
|
||||
return;
|
||||
} else if ((isrflags & USART_SR_TXE) != RESET) {
|
||||
if (mbusCommHandle.sendBuffer.readIdx < mbusCommHandle.sendBuffer.writeIdx) {
|
||||
mbusUart.Instance->DR = mbusCommHandle.sendBuffer.buffer[mbusCommHandle.sendBuffer.readIdx];
|
||||
mbusCommHandle.sendBuffer.readIdx += 1;
|
||||
if (mbusCommHandle.sendBuffer.readIdx == mbusCommHandle.sendBuffer.writeIdx) {
|
||||
__HAL_UART_DISABLE_IT(&mbusUart, UART_IT_TXE);
|
||||
__HAL_UART_ENABLE_IT(&mbusUart, UART_IT_TC);
|
||||
}
|
||||
}
|
||||
} else if ((isrflags & USART_SR_TC) != RESET) {
|
||||
__HAL_UART_DISABLE_IT(&mbusUart, UART_IT_TC);
|
||||
mbusCommHandle.state = MBCS_SENDING_DONE;
|
||||
} else {
|
||||
if ((isrflags & USART_SR_FE) != RESET) {
|
||||
mbusCommStats.uartFramingErrCnt += 1;
|
||||
@ -330,7 +340,11 @@ void mbusCommExec() {
|
||||
} else {
|
||||
mbusCommHandle.retryCnt = 0;
|
||||
// FIXME sending possibly needs to be done in a different way
|
||||
HAL_UART_Transmit(&mbusUart, mbusCommHandle.sendBuffer.buffer, 5, HAL_MAX_DELAY);
|
||||
// HAL_UART_Transmit(&mbusUart, mbusCommHandle.sendBuffer.buffer, 5, HAL_MAX_DELAY);
|
||||
|
||||
// enable transmitter interrupt
|
||||
__HAL_UART_ENABLE_IT(&mbusUart, UART_IT_TXE);
|
||||
|
||||
// transition from here to SENDING_DONE is initiate by mbusCommTxCpltCallback
|
||||
// interrupt callback
|
||||
mbusCommHandle.state = MBCS_SENDING_DONE;
|
||||
@ -719,6 +733,7 @@ void mbusCommInit() {
|
||||
__HAL_UART_ENABLE_IT(&mbusUart, UART_IT_ERR);
|
||||
__HAL_UART_ENABLE_IT(&mbusUart, UART_IT_RXNE);
|
||||
|
||||
// init buffers
|
||||
mbusCommHandle.receiveBuffer.size = 256;
|
||||
mbusCommHandle.receiveBuffer.buffer = (uint8_t*) malloc(mbusCommHandle.receiveBuffer.size);
|
||||
mbusCommHandle.receiveBuffer.readIdx = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user