WiP internal module buffer

This commit is contained in:
Raphael Coeffic
2022-03-25 18:15:56 +01:00
parent 59191f37c3
commit a994fc708a
18 changed files with 20 additions and 70 deletions
@@ -52,7 +52,7 @@ static void* aux_serial_init(const SerialState* st, const etx_serial_init* param
{
stm32_usart_init(st->usart, params);
if (params->rx_enable && st->usart->rxDMA && !params->on_receive) {
if (params->rx_enable && st->usart->rxDMA) {
st->rxFifo->clear();
stm32_usart_init_rx_dma(st->usart, st->rxFifo->buffer(), st->rxFifo->size());
}
@@ -38,19 +38,12 @@ void extmoduleFifoReceive(uint8_t data)
extmoduleFifo.push(data);
}
void extmoduleFifoError()
{
extmoduleFifo.errors++;
}
static const etx_serial_init extmoduleSerialParams = {
.baudrate = 0,
.parity = ETX_Parity_None,
.stop_bits = ETX_StopBits_One,
.word_length = ETX_WordLength_8,
.rx_enable = true,
.on_receive = extmoduleFifoReceive,
.on_error = extmoduleFifoError,
};
static const LL_GPIO_InitTypeDef extmoduleUSART_PinDef = {
@@ -80,8 +73,8 @@ static void* extmoduleSerialStart(const etx_serial_init* params)
{
if (!params) return nullptr;
extmodule_driver.on_receive = params->on_receive;
extmodule_driver.on_error = params->on_error;
extmodule_driver.on_receive = extmoduleFifoReceive;
extmodule_driver.on_error = nullptr;
// UART config
stm32_usart_init(&extmoduleUSART, params);
@@ -23,9 +23,9 @@
#include "intmodule_serial_driver.h"
#include "stm32_usart_driver.h"
#include "board.h"
#include "fifo.h"
#include "io/frsky_pxx2.h"
ModuleFifo intmoduleFifo;
Fifo<uint8_t, INTMODULE_FIFO_SIZE> intmoduleFifo;
#if !defined(INTMODULE_DMA_STREAM)
static uint8_t * intmoduleTxBufferData;
@@ -54,16 +54,11 @@ static etx_serial_callbacks_t intmodule_driver = {
};
// TODO: move this somewhere else
void intmoduleFifoReceive(uint8_t data)
static void intmoduleFifoReceive(uint8_t data)
{
intmoduleFifo.push(data);
}
void intmoduleFifoError()
{
intmoduleFifo.errors++;
}
static const LL_GPIO_InitTypeDef intmoduleUSART_PinDef = {
.Pin = INTMODULE_TX_GPIO_PIN | INTMODULE_RX_GPIO_PIN,
.Mode = LL_GPIO_MODE_ALTERNATE,
@@ -110,8 +105,8 @@ void* intmoduleSerialStart(const etx_serial_init* params)
// - the UART seems to block when initialised with baudrate = 0
// init callbacks
intmodule_driver.on_receive = params->on_receive;
intmodule_driver.on_error = params->on_error;
intmodule_driver.on_receive = intmoduleFifoReceive;
intmodule_driver.on_error = nullptr;
stm32_usart_init(&intmoduleUSART, params);
return nullptr;
@@ -26,8 +26,4 @@
#define INTMODULE_USART_IRQ_PRIORITY 6
// Callbacks using intmoduleFifo
void intmoduleFifoReceive(uint8_t data);
void intmoduleFifoError();
extern const etx_serial_driver_t IntmoduleSerialDriver;
@@ -67,8 +67,7 @@ static void interrupt1ms()
#endif
// 5ms loop
if (pre_scale == 5 || pre_scale == 10)
{
if (pre_scale == 5 || pre_scale == 10) {
#if defined(HAPTIC)
DEBUG_TIMER_START(debugTimerHaptic);
HAPTIC_HEARTBEAT();
@@ -77,8 +76,7 @@ static void interrupt1ms()
}
// 10ms loop
if (pre_scale == 10)
{
if (pre_scale == 10) {
pre_scale = 0;
DEBUG_TIMER_START(debugTimerPer10ms);
DEBUG_TIMER_SAMPLE(debugTimerPer10msPeriod);