From 74f19371ae62d67962651e86c4ada9c0746e81bb Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Thu, 25 Nov 2021 18:54:38 +0100 Subject: [PATCH] Fixes for TX16S --- radio/src/lua/api_general.cpp | 4 +++ .../common/arm/stm32/aux_serial_driver.cpp | 35 ++++++++++--------- .../common/arm/stm32/aux_serial_driver.h | 4 +-- radio/src/targets/horus/CMakeLists.txt | 4 --- radio/src/targets/horus/hal.h | 2 +- 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index e79b5f31d..e25ceee99 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1963,6 +1963,10 @@ static int luaSerialRead(lua_State * L) int num = luaL_optunsigned(L, 1, 0); if (!luaRxFifo) { + // TODO: + // - check which serial port has been assigned this function + // - set the receive callback on that serial port + // luaRxFifo = new Fifo(); if (!luaRxFifo) { lua_pushlstring(L, "", 0); diff --git a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp index 64cadc7e7..2c5909d5f 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp @@ -65,12 +65,12 @@ const stm32_usart_t auxUSART = { #endif }; -static void auxSerialOnSend(uint8_t& data) +static bool auxSerialOnSend(uint8_t& data) { return auxSerialTxFifo.pop(data); } -static etx_serial_callbacks auxSerialCb = { +static etx_serial_callbacks_t auxSerialCb = { .on_send = auxSerialOnSend, .on_receive = nullptr, .on_error = nullptr, @@ -133,7 +133,7 @@ extern "C" void AUX_SERIAL_USART_IRQHandler(void) stm32_usart_isr(&auxUSART, &auxSerialCb); } -void auxSerialPutc(char c) +void auxSerialPutc(uint8_t c) { if (auxSerialTxFifo.isFull()) return; auxSerialTxFifo.push(c); @@ -147,8 +147,11 @@ void auxSerialStop() static void serialPushLua(uint8_t data) { - if (luaRxFifo) - luaRxFifo->push(data); + // TODO: this should be set by LUA instead of + // including some LUA header here. + // + // if (luaRxFifo) + // luaRxFifo->push(data); } void auxSerialInit(unsigned int mode, unsigned int protocol) @@ -224,7 +227,7 @@ uint8_t aux2SerialMode = UART_MODE_COUNT; // Prevent debug output before port i Fifo aux2SerialTxFifo; AuxSerialRxFifo aux2SerialRxFifo __DMA (AUX2_SERIAL_DMA_Stream_RX); -const LL_GPIO_InitTypeDef auxUSARTPinInit = { +const LL_GPIO_InitTypeDef aux2USARTPinInit = { .Pin = AUX2_SERIAL_GPIO_PIN_TX | AUX2_SERIAL_GPIO_PIN_RX, .Mode = LL_GPIO_MODE_ALTERNATE, .Speed = LL_GPIO_SPEED_FREQ_LOW, @@ -236,7 +239,7 @@ const LL_GPIO_InitTypeDef auxUSARTPinInit = { const stm32_usart_t aux2USART = { .USARTx = AUX2_SERIAL_USART, .GPIOx = AUX2_SERIAL_GPIO, - .pinInit = &auxUSARTPinInit, + .pinInit = &aux2USARTPinInit, .IRQn = AUX2_SERIAL_USART_IRQn, .IRQ_Prio = 7, // TODO: define constant .txDMA = nullptr, @@ -247,12 +250,12 @@ const stm32_usart_t aux2USART = { .rxDMA_Channel = AUX2_SERIAL_DMA_Channel_RX, }; -static void aux2SerialOnSend(uint8_t& data) +static bool aux2SerialOnSend(uint8_t& data) { return aux2SerialTxFifo.pop(data); } -static etx_serial_callbacks aux2SerialCb = { +static etx_serial_callbacks_t aux2SerialCb = { .on_send = aux2SerialOnSend, .on_receive = nullptr, .on_error = nullptr, @@ -281,12 +284,12 @@ void aux2SerialSetup(unsigned int baudrate, bool rx_enable, uint8_t word_length, stm32_usart_init(&aux2USART, &serialInit); -#if defined(AUX2_SERIAL_PWR_GPIO) - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; - GPIO_InitStructure.GPIO_Pin = AUX2_SERIAL_PWR_GPIO_PIN; - GPIO_Init(AUX2_SERIAL_PWR_GPIO, &GPIO_InitStructure); -#endif +// #if defined(AUX2_SERIAL_PWR_GPIO) +// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; +// GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; +// GPIO_InitStructure.GPIO_Pin = AUX2_SERIAL_PWR_GPIO_PIN; +// GPIO_Init(AUX2_SERIAL_PWR_GPIO, &GPIO_InitStructure); +// #endif } extern "C" void AUX2_SERIAL_USART_IRQHandler(void) @@ -295,7 +298,7 @@ extern "C" void AUX2_SERIAL_USART_IRQHandler(void) stm32_usart_isr(&aux2USART, &aux2SerialCb); } -void aux2SerialPutc(char c) +void aux2SerialPutc(uint8_t c) { if (aux2SerialTxFifo.isFull()) return; aux2SerialTxFifo.push(c); diff --git a/radio/src/targets/common/arm/stm32/aux_serial_driver.h b/radio/src/targets/common/arm/stm32/aux_serial_driver.h index 58a764973..3dd733d0d 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.h +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.h @@ -30,7 +30,7 @@ void auxSerialSetup(unsigned int baudrate, bool rx_enable, uint8_t parity = ETX_Parity_None, uint8_t stop_bits = ETX_StopBits_One); void auxSerialInit(unsigned int mode, unsigned int protocol); -void auxSerialPutc(char c); +void auxSerialPutc(uint8_t c); void auxSerialSbusInit(); void auxSerialStop(); uint8_t auxSerialTracesEnabled(); @@ -43,7 +43,7 @@ void aux2SerialSetup(unsigned int baudrate, bool rx_enable, uint8_t parity = ETX_Parity_None, uint8_t stop_bits = ETX_StopBits_One); void aux2SerialInit(unsigned int mode, unsigned int protocol); -void aux2SerialPutc(char c); +void aux2SerialPutc(uint8_t c); void aux2SerialSbusInit(); void aux2SerialStop(); uint8_t aux2SerialTracesEnabled(); diff --git a/radio/src/targets/horus/CMakeLists.txt b/radio/src/targets/horus/CMakeLists.txt index 88d27b322..870b2f89e 100644 --- a/radio/src/targets/horus/CMakeLists.txt +++ b/radio/src/targets/horus/CMakeLists.txt @@ -158,10 +158,6 @@ set(RADIO_DEPENDENCIES truetype_fonts ) -if(HARDWARE_EXTERNAL_MODULE) - set(TARGET_SRC ${TARGET_SRC} extmodule_driver.cpp) -endif() - set(FIRMWARE_DEPENDENCIES datacopy) add_definitions(-DPCBHORUS -DSTM32F429_439xx -DSTM32F429xx -DSDRAM -DCCMRAM -DCOLORLCD -DHARDWARE_KEYS) diff --git a/radio/src/targets/horus/hal.h b/radio/src/targets/horus/hal.h index 0d9db9bce..e70503c81 100644 --- a/radio/src/targets/horus/hal.h +++ b/radio/src/targets/horus/hal.h @@ -458,7 +458,7 @@ #define AUX2_SERIAL_DMA_RX DMA2 #define AUX2_SERIAL_DMA_Stream_RX DMA2_Stream1 // or DMA2_Stream2 #define AUX2_SERIAL_DMA_Channel_RX DMA_Channel_5 - #define AUX_SERIAL_DMA_Stream_RX_LL LL_DMA_STREAM_1 + #define AUX2_SERIAL_DMA_Stream_RX_LL LL_DMA_STREAM_1 #define AUX2_SERIAL_PWR_GPIO GPIOB #define AUX2_SERIAL_PWR_GPIO_PIN GPIO_Pin_0 // PB.00 #if defined(RADIO_TX16S)