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