From fb8c29a5ffc667d7647cf4d8342231976a8ab23c Mon Sep 17 00:00:00 2001 From: 3djc Date: Tue, 29 Sep 2020 12:47:06 +0200 Subject: [PATCH] POC --- radio/src/lua/api_general.cpp | 30 ++++++++++++++++++- .../common/arm/stm32/aux_serial_driver.cpp | 4 +-- radio/src/targets/horus/board.h | 6 ++++ 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/radio/src/lua/api_general.cpp b/radio/src/lua/api_general.cpp index 03d42190b..f9c34675d 100644 --- a/radio/src/lua/api_general.cpp +++ b/radio/src/lua/api_general.cpp @@ -1594,13 +1594,41 @@ static int luaMultiBuffer(lua_State * L) } #endif +/*luadoc +@function serialSetup(port, baudrate) + +@param port (number) ID of the port you want to setup. (AUX1: 0, AUX2:1) + +@param baudrate (number) baudrate for the port + +@status current Introduced in 2.3.10 +*/ +static int luaSerialSetup(lua_State * L) +{ + uint8_t port = luaL_checkunsigned(L, 1); + uint16_t baudrate = luaL_checkunsigned(L, 2); + +#if !defined(SIMU) +#if defined(AUX_SERIAL) + if (port == 0) + auxSerialSetup(baudrate, false); +#endif +#if defined(AUX2_SERIAL) + if (port == 1) + aux2SerialSetup(baudrate, false); +#endif +#endif + + return 1; +} + /*luadoc @function serialWrite(str) @param str (string) String to be written to the serial port. Writes a string to the serial port. The string is allowed to contain any character, including 0. -@status current Introduced in TODO +@status current Introduced in 2.3.8 */ static int luaSerialWrite(lua_State * L) { 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 e646c30d9..f761fadd6 100644 --- a/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp +++ b/radio/src/targets/common/arm/stm32/aux_serial_driver.cpp @@ -30,7 +30,7 @@ uint8_t auxSerialMode = 0; Fifo auxSerialTxFifo; AuxSerialRxFifo auxSerialRxFifo __DMA (AUX_SERIAL_DMA_Stream_RX); -void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t lenght = USART_WordLength_8b, uint16_t parity = USART_Parity_No, uint16_t stop = USART_StopBits_1) +void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t lenght, uint16_t parity, uint16_t stop) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; @@ -230,7 +230,7 @@ uint8_t aux2SerialMode = 0; Fifo aux2SerialTxFifo; AuxSerialRxFifo aux2SerialRxFifo __DMA (AUX2_SERIAL_DMA_Stream_RX); -void aux2SerialSetup(unsigned int baudrate, bool dma, uint16_t lenght = USART_WordLength_8b, uint16_t parity = USART_Parity_No, uint16_t stop = USART_StopBits_1) +void aux2SerialSetup(unsigned int baudrate, bool dma, uint16_t lenght, uint16_t parity, uint16_t stop) { USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; diff --git a/radio/src/targets/horus/board.h b/radio/src/targets/horus/board.h index 5da953e61..10320476c 100644 --- a/radio/src/targets/horus/board.h +++ b/radio/src/targets/horus/board.h @@ -637,6 +637,9 @@ void sportUpdatePowerInit(); #if defined(AUX_SERIAL_GPIO) #define DEBUG_BAUDRATE 115200 extern uint8_t auxSerialMode; +#if defined __cplusplus +void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t lenght = USART_WordLength_8b, uint16_t parity = USART_Parity_No, uint16_t stop = USART_StopBits_1); +#endif void auxSerialInit(unsigned int mode, unsigned int protocol); void auxSerialPutc(char c); #define auxSerialTelemetryInit(protocol) auxSerialInit(UART_MODE_TELEMETRY, protocol) @@ -656,6 +659,9 @@ void auxSerialPowerOff(); // Aux2 serial port driver #if defined(AUX2_SERIAL) extern uint8_t aux2SerialMode; +#if defined __cplusplus +void aux2SerialSetup(unsigned int baudrate, bool dma, uint16_t lenght = USART_WordLength_8b, uint16_t parity = USART_Parity_No, uint16_t stop = USART_StopBits_1); +#endif void aux2SerialInit(unsigned int mode, unsigned int protocol); void aux2SerialPutc(char c); #define aux2SerialTelemetryInit(protocol) aux2SerialInit(UART_MODE_TELEMETRY, protocol)