mirror of
https://github.com/opentx/opentx.git
synced 2025-07-13 19:40:20 +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")
|
MIXSRC_GYRO2, LUA_EXPORT("gyry", "Gyro Y")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MIXSRC_MAX,
|
MIXSRC_MAX, LUA_EXPORT("max", "MAX")
|
||||||
|
|
||||||
MIXSRC_FIRST_HELI,
|
MIXSRC_FIRST_HELI,
|
||||||
MIXSRC_CYC1 = MIXSRC_FIRST_HELI, LUA_EXPORT("cyc1", "Cyclic 1")
|
MIXSRC_CYC1 = MIXSRC_FIRST_HELI, LUA_EXPORT("cyc1", "Cyclic 1")
|
||||||
|
|
|
@ -1598,13 +1598,38 @@ static int luaMultiBuffer(lua_State * L)
|
||||||
}
|
}
|
||||||
#endif
|
#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
|
/*luadoc
|
||||||
@function serialWrite(str)
|
@function serialWrite(str)
|
||||||
@param str (string) String to be written to the serial port.
|
@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.
|
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)
|
static int luaSerialWrite(lua_State * L)
|
||||||
{
|
{
|
||||||
|
@ -1614,21 +1639,22 @@ static int luaSerialWrite(lua_State * L)
|
||||||
if (!str || len < 1)
|
if (!str || len < 1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#if !defined(SIMU)
|
#if defined(USB_SERIAL)
|
||||||
#if defined(USB_SERIAL)
|
|
||||||
if (getSelectedUsbMode() == USB_SERIAL_MODE) {
|
if (getSelectedUsbMode() == USB_SERIAL_MODE) {
|
||||||
size_t wr_len = len;
|
size_t wr_len = len;
|
||||||
const char* p = str;
|
const char* p = str;
|
||||||
while(wr_len--) usbSerialPutc(*p++);
|
while(wr_len--) usbSerialPutc(*p++);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if defined(AUX_SERIAL)
|
|
||||||
|
#if defined(AUX_SERIAL)
|
||||||
if (auxSerialMode == UART_MODE_LUA) {
|
if (auxSerialMode == UART_MODE_LUA) {
|
||||||
size_t wr_len = len;
|
size_t wr_len = len;
|
||||||
const char* p = str;
|
const char* p = str;
|
||||||
while(wr_len--) auxSerialPutc(*p++);
|
while(wr_len--) auxSerialPutc(*p++);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(AUX2_SERIAL)
|
#if defined(AUX2_SERIAL)
|
||||||
if (aux2SerialMode == UART_MODE_LUA) {
|
if (aux2SerialMode == UART_MODE_LUA) {
|
||||||
size_t wr_len = len;
|
size_t wr_len = len;
|
||||||
|
@ -1636,9 +1662,6 @@ static int luaSerialWrite(lua_State * L)
|
||||||
while(wr_len--) aux2SerialPutc(*p++);
|
while(wr_len--) aux2SerialPutc(*p++);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#else
|
|
||||||
debugPrintf("luaSerialWrite: %.*s",len,str);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1742,6 +1765,7 @@ const luaL_Reg opentxLib[] = {
|
||||||
#if defined(MULTIMODULE)
|
#if defined(MULTIMODULE)
|
||||||
{ "multiBuffer", luaMultiBuffer },
|
{ "multiBuffer", luaMultiBuffer },
|
||||||
#endif
|
#endif
|
||||||
|
{ "setSerialBaudrate", luaSetSerialBaudrate },
|
||||||
{ "serialWrite", luaSerialWrite },
|
{ "serialWrite", luaSerialWrite },
|
||||||
{ "serialRead", luaSerialRead },
|
{ "serialRead", luaSerialRead },
|
||||||
{ nullptr, nullptr } /* sentinel */
|
{ nullptr, nullptr } /* sentinel */
|
||||||
|
|
|
@ -30,7 +30,7 @@ uint8_t auxSerialMode = UART_MODE_COUNT; // Prevent debug output before port is
|
||||||
Fifo<uint8_t, 512> auxSerialTxFifo;
|
Fifo<uint8_t, 512> auxSerialTxFifo;
|
||||||
AuxSerialRxFifo auxSerialRxFifo __DMA (AUX_SERIAL_DMA_Stream_RX);
|
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;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
@ -53,7 +53,7 @@ void auxSerialSetup(unsigned int baudrate, bool dma, uint16_t lenght = USART_Wor
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
USART_InitStructure.USART_BaudRate = baudrate;
|
USART_InitStructure.USART_BaudRate = baudrate;
|
||||||
USART_InitStructure.USART_WordLength = lenght;
|
USART_InitStructure.USART_WordLength = length;
|
||||||
USART_InitStructure.USART_StopBits = stop;
|
USART_InitStructure.USART_StopBits = stop;
|
||||||
USART_InitStructure.USART_Parity = parity;
|
USART_InitStructure.USART_Parity = parity;
|
||||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||||
|
@ -133,7 +133,7 @@ void auxSerialInit(unsigned int mode, unsigned int protocol)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UART_MODE_LUA:
|
case UART_MODE_LUA:
|
||||||
auxSerialSetup(DEBUG_BAUDRATE, false);
|
auxSerialSetup(LUA_DEFAULT_BAUDRATE, true);
|
||||||
AUX_SERIAL_POWER_ON();
|
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;
|
Fifo<uint8_t, 512> aux2SerialTxFifo;
|
||||||
AuxSerialRxFifo aux2SerialRxFifo __DMA (AUX2_SERIAL_DMA_Stream_RX);
|
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;
|
USART_InitTypeDef USART_InitStructure;
|
||||||
GPIO_InitTypeDef GPIO_InitStructure;
|
GPIO_InitTypeDef GPIO_InitStructure;
|
||||||
|
@ -249,7 +249,7 @@ void aux2SerialSetup(unsigned int baudrate, bool dma, uint16_t lenght = USART_Wo
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
USART_InitStructure.USART_BaudRate = baudrate;
|
USART_InitStructure.USART_BaudRate = baudrate;
|
||||||
USART_InitStructure.USART_WordLength = lenght;
|
USART_InitStructure.USART_WordLength = length;
|
||||||
USART_InitStructure.USART_StopBits = stop;
|
USART_InitStructure.USART_StopBits = stop;
|
||||||
USART_InitStructure.USART_Parity = parity;
|
USART_InitStructure.USART_Parity = parity;
|
||||||
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
|
||||||
|
|
|
@ -637,11 +637,16 @@ void sportUpdatePowerInit();
|
||||||
// Aux serial port driver
|
// Aux serial port driver
|
||||||
#if defined(RADIO_TX16S)
|
#if defined(RADIO_TX16S)
|
||||||
#define DEBUG_BAUDRATE 400000
|
#define DEBUG_BAUDRATE 400000
|
||||||
|
#define LUA_DEFAULT_BAUDRATE 115200
|
||||||
#else
|
#else
|
||||||
#define DEBUG_BAUDRATE 115200
|
#define DEBUG_BAUDRATE 115200
|
||||||
|
#define LUA_DEFAULT_BAUDRATE 115200
|
||||||
#endif
|
#endif
|
||||||
#if defined(AUX_SERIAL_GPIO)
|
#if defined(AUX_SERIAL_GPIO)
|
||||||
extern uint8_t auxSerialMode;
|
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 auxSerialInit(unsigned int mode, unsigned int protocol);
|
||||||
void auxSerialPutc(char c);
|
void auxSerialPutc(char c);
|
||||||
#define auxSerialTelemetryInit(protocol) auxSerialInit(UART_MODE_TELEMETRY, protocol)
|
#define auxSerialTelemetryInit(protocol) auxSerialInit(UART_MODE_TELEMETRY, protocol)
|
||||||
|
@ -661,6 +666,9 @@ void auxSerialPowerOff();
|
||||||
// Aux2 serial port driver
|
// Aux2 serial port driver
|
||||||
#if defined(AUX2_SERIAL)
|
#if defined(AUX2_SERIAL)
|
||||||
extern uint8_t aux2SerialMode;
|
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 aux2SerialInit(unsigned int mode, unsigned int protocol);
|
||||||
void aux2SerialPutc(char c);
|
void aux2SerialPutc(char c);
|
||||||
#define aux2SerialTelemetryInit(protocol) aux2SerialInit(UART_MODE_TELEMETRY, protocol)
|
#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)
|
#if defined(AUX_SERIAL)
|
||||||
AuxSerialRxFifo auxSerialRxFifo(nullptr);
|
AuxSerialRxFifo auxSerialRxFifo(nullptr);
|
||||||
uint8_t auxSerialMode;
|
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)
|
void auxSerialInit(unsigned int mode, unsigned int protocol)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -834,6 +845,11 @@ void auxSerialStop()
|
||||||
#if defined(AUX2_SERIAL)
|
#if defined(AUX2_SERIAL)
|
||||||
AuxSerialRxFifo aux2SerialRxFifo(nullptr);
|
AuxSerialRxFifo aux2SerialRxFifo(nullptr);
|
||||||
uint8_t aux2SerialMode;
|
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)
|
void aux2SerialInit(unsigned int mode, unsigned int protocol)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -850,8 +850,12 @@ void hapticOff();
|
||||||
// Aux serial port driver
|
// Aux serial port driver
|
||||||
#if defined(AUX_SERIAL_GPIO)
|
#if defined(AUX_SERIAL_GPIO)
|
||||||
#define DEBUG_BAUDRATE 115200
|
#define DEBUG_BAUDRATE 115200
|
||||||
|
#define LUA_DEFAULT_BAUDRATE 115200
|
||||||
#define AUX_SERIAL
|
#define AUX_SERIAL
|
||||||
extern uint8_t auxSerialMode;
|
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 auxSerialInit(unsigned int mode, unsigned int protocol);
|
||||||
void auxSerialPutc(char c);
|
void auxSerialPutc(char c);
|
||||||
#define auxSerialTelemetryInit(protocol) auxSerialInit(UART_MODE_TELEMETRY, protocol)
|
#define auxSerialTelemetryInit(protocol) auxSerialInit(UART_MODE_TELEMETRY, protocol)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue