mirror of
https://github.com/opentx/opentx.git
synced 2025-07-13 03:19:53 +03:00
Allow setting serial baurate for LUA (#8228)
This commit is contained in:
parent
42a82d5b71
commit
c38e513c7e
6 changed files with 67 additions and 15 deletions
|
@ -674,7 +674,7 @@ enum MixSources {
|
|||
MIXSRC_GYRO2, LUA_EXPORT("gyry", "Gyro Y")
|
||||
#endif
|
||||
|
||||
MIXSRC_MAX,
|
||||
MIXSRC_MAX, LUA_EXPORT("max", "MAX")
|
||||
|
||||
MIXSRC_FIRST_HELI,
|
||||
MIXSRC_CYC1 = MIXSRC_FIRST_HELI, LUA_EXPORT("cyc1", "Cyclic 1")
|
||||
|
|
|
@ -1598,13 +1598,38 @@ static int luaMultiBuffer(lua_State * L)
|
|||
}
|
||||
#endif
|
||||
|
||||
/*luadoc
|
||||
@function setSerialBaudrate(baudrate)
|
||||
@param baudrate Desired baurate
|
||||
|
||||
Set baudrate for serial port(s) affected to LUA
|
||||
|
||||
@status current Introduced in 2.3.12
|
||||
*/
|
||||
static int luaSetSerialBaudrate(lua_State * L)
|
||||
{
|
||||
unsigned int baudrate = luaL_checkunsigned(L, 1);
|
||||
|
||||
#if defined(AUX_SERIAL)
|
||||
if (auxSerialMode == UART_MODE_LUA) {
|
||||
auxSerialSetup(baudrate, true);
|
||||
}
|
||||
#endif
|
||||
#if defined(AUX2_SERIAL)
|
||||
if (aux2SerialMode == UART_MODE_LUA) {
|
||||
aux2SerialSetup(baudrate, true);
|
||||
}
|
||||
#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.10
|
||||
*/
|
||||
static int luaSerialWrite(lua_State * L)
|
||||
{
|
||||
|
@ -1614,21 +1639,22 @@ static int luaSerialWrite(lua_State * L)
|
|||
if (!str || len < 1)
|
||||
return 0;
|
||||
|
||||
#if !defined(SIMU)
|
||||
#if defined(USB_SERIAL)
|
||||
#if defined(USB_SERIAL)
|
||||
if (getSelectedUsbMode() == USB_SERIAL_MODE) {
|
||||
size_t wr_len = len;
|
||||
const char* p = str;
|
||||
while(wr_len--) usbSerialPutc(*p++);
|
||||
}
|
||||
#endif
|
||||
#if defined(AUX_SERIAL)
|
||||
#endif
|
||||
|
||||
#if defined(AUX_SERIAL)
|
||||
if (auxSerialMode == UART_MODE_LUA) {
|
||||
size_t wr_len = len;
|
||||
const char* p = str;
|
||||
while(wr_len--) auxSerialPutc(*p++);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(AUX2_SERIAL)
|
||||
if (aux2SerialMode == UART_MODE_LUA) {
|
||||
size_t wr_len = len;
|
||||
|
@ -1636,9 +1662,6 @@ static int luaSerialWrite(lua_State * L)
|
|||
while(wr_len--) aux2SerialPutc(*p++);
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
debugPrintf("luaSerialWrite: %.*s",len,str);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1742,6 +1765,7 @@ const luaL_Reg opentxLib[] = {
|
|||
#if defined(MULTIMODULE)
|
||||
{ "multiBuffer", luaMultiBuffer },
|
||||
#endif
|
||||
{ "setSerialBaudrate", luaSetSerialBaudrate },
|
||||
{ "serialWrite", luaSerialWrite },
|
||||
{ "serialRead", luaSerialRead },
|
||||
{ nullptr, nullptr } /* sentinel */
|
||||
|
|
|
@ -30,7 +30,7 @@ uint8_t auxSerialMode = UART_MODE_COUNT; // Prevent debug output before port is
|
|||
Fifo<uint8_t, 512> 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 length, uint16_t parity, uint16_t stop)
|
||||
{
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
@ -53,7 +53,7 @@ void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t lenght = USART_Wor
|
|||
#endif
|
||||
|
||||
USART_InitStructure.USART_BaudRate = baudrate;
|
||||
USART_InitStructure.USART_WordLength = lenght;
|
||||
USART_InitStructure.USART_WordLength = length;
|
||||
USART_InitStructure.USART_StopBits = stop;
|
||||
USART_InitStructure.USART_Parity = parity;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
|
@ -133,7 +133,7 @@ void auxSerialInit(unsigned int mode, unsigned int protocol)
|
|||
break;
|
||||
|
||||
case UART_MODE_LUA:
|
||||
auxSerialSetup(DEBUG_BAUDRATE, false);
|
||||
auxSerialSetup(LUA_DEFAULT_BAUDRATE, true);
|
||||
AUX_SERIAL_POWER_ON();
|
||||
}
|
||||
}
|
||||
|
@ -226,7 +226,7 @@ uint8_t aux2SerialMode = UART_MODE_COUNT; // Prevent debug output before port i
|
|||
Fifo<uint8_t, 512> 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 length, uint16_t parity, uint16_t stop)
|
||||
{
|
||||
USART_InitTypeDef USART_InitStructure;
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
@ -249,7 +249,7 @@ void aux2SerialSetup(unsigned int baudrate, bool dma, uint16_t lenght = USART_Wo
|
|||
#endif
|
||||
|
||||
USART_InitStructure.USART_BaudRate = baudrate;
|
||||
USART_InitStructure.USART_WordLength = lenght;
|
||||
USART_InitStructure.USART_WordLength = length;
|
||||
USART_InitStructure.USART_StopBits = stop;
|
||||
USART_InitStructure.USART_Parity = parity;
|
||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||
|
|
|
@ -637,11 +637,16 @@ void sportUpdatePowerInit();
|
|||
// Aux serial port driver
|
||||
#if defined(RADIO_TX16S)
|
||||
#define DEBUG_BAUDRATE 400000
|
||||
#define LUA_DEFAULT_BAUDRATE 115200
|
||||
#else
|
||||
#define DEBUG_BAUDRATE 115200
|
||||
#define LUA_DEFAULT_BAUDRATE 115200
|
||||
#endif
|
||||
#if defined(AUX_SERIAL_GPIO)
|
||||
extern uint8_t auxSerialMode;
|
||||
#if defined __cplusplus
|
||||
void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t length = 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)
|
||||
|
@ -661,6 +666,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 length = 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)
|
||||
|
|
|
@ -811,9 +811,20 @@ void rtcSetTime(const struct gtm * t)
|
|||
{
|
||||
}
|
||||
|
||||
#if defined(USB_SERIAL)
|
||||
void usbSerialPutc(uint8_t c)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(AUX_SERIAL)
|
||||
AuxSerialRxFifo auxSerialRxFifo(nullptr);
|
||||
uint8_t auxSerialMode;
|
||||
|
||||
void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t length, uint16_t parity, uint16_t stop)
|
||||
{
|
||||
}
|
||||
|
||||
void auxSerialInit(unsigned int mode, unsigned int protocol)
|
||||
{
|
||||
}
|
||||
|
@ -834,6 +845,11 @@ void auxSerialStop()
|
|||
#if defined(AUX2_SERIAL)
|
||||
AuxSerialRxFifo aux2SerialRxFifo(nullptr);
|
||||
uint8_t aux2SerialMode;
|
||||
|
||||
void aux2SerialSetup(unsigned int baudrate, bool dma, uint16_t length, uint16_t parity, uint16_t stop)
|
||||
{
|
||||
}
|
||||
|
||||
void aux2SerialInit(unsigned int mode, unsigned int protocol)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -850,8 +850,12 @@ void hapticOff();
|
|||
// Aux serial port driver
|
||||
#if defined(AUX_SERIAL_GPIO)
|
||||
#define DEBUG_BAUDRATE 115200
|
||||
#define LUA_DEFAULT_BAUDRATE 115200
|
||||
#define AUX_SERIAL
|
||||
extern uint8_t auxSerialMode;
|
||||
#if defined __cplusplus
|
||||
void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t length = 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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue