mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 16:55:20 +03:00
add LUA access to serial port (serial2 and USB)
This commit is contained in:
parent
5dd365238e
commit
25c02b96f3
16 changed files with 94 additions and 19 deletions
|
@ -260,7 +260,7 @@ enum UartModes {
|
||||||
UART_MODE_TELEMETRY_MIRROR,
|
UART_MODE_TELEMETRY_MIRROR,
|
||||||
UART_MODE_TELEMETRY,
|
UART_MODE_TELEMETRY,
|
||||||
UART_MODE_SBUS_TRAINER,
|
UART_MODE_SBUS_TRAINER,
|
||||||
// UART_MODE_CPPM_TRAINER,
|
UART_MODE_LUA,
|
||||||
UART_MODE_COUNT,
|
UART_MODE_COUNT,
|
||||||
UART_MODE_MAX = UART_MODE_COUNT-1
|
UART_MODE_MAX = UART_MODE_COUNT-1
|
||||||
};
|
};
|
||||||
|
|
|
@ -50,7 +50,7 @@ enum MenuRadioHardwareItems {
|
||||||
ITEM_RADIO_HARDWARE_BLUETOOTH_MODE,
|
ITEM_RADIO_HARDWARE_BLUETOOTH_MODE,
|
||||||
ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE,
|
ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE,
|
||||||
ITEM_RADIO_HARDWARE_BLUETOOTH_NAME,
|
ITEM_RADIO_HARDWARE_BLUETOOTH_NAME,
|
||||||
#if defined(SERIAL2) && defined(DEBUG)
|
#if defined(SERIAL2)
|
||||||
ITEM_RADIO_HARDWARE_UART3_MODE,
|
ITEM_RADIO_HARDWARE_UART3_MODE,
|
||||||
#endif
|
#endif
|
||||||
ITEM_RADIO_HARDWARE_JITTER_FILTER,
|
ITEM_RADIO_HARDWARE_JITTER_FILTER,
|
||||||
|
@ -203,7 +203,7 @@ bool menuRadioHardware(event_t event)
|
||||||
editName(HW_SETTINGS_COLUMN+50, y, g_eeGeneral.bluetoothName, LEN_BLUETOOTH_NAME, event, attr);
|
editName(HW_SETTINGS_COLUMN+50, y, g_eeGeneral.bluetoothName, LEN_BLUETOOTH_NAME, event, attr);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#if defined(SERIAL2) && defined(DEBUG)
|
#if defined(SERIAL2)
|
||||||
case ITEM_RADIO_HARDWARE_UART3_MODE:
|
case ITEM_RADIO_HARDWARE_UART3_MODE:
|
||||||
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_UART3MODE);
|
lcdDrawText(MENUS_MARGIN_LEFT, y, STR_UART3MODE);
|
||||||
g_eeGeneral.serial2Mode = editChoice(HW_SETTINGS_COLUMN+50, y, STR_UART3MODES, g_eeGeneral.serial2Mode, 0, UART_MODE_MAX, attr, event);
|
g_eeGeneral.serial2Mode = editChoice(HW_SETTINGS_COLUMN+50, y, STR_UART3MODES, g_eeGeneral.serial2Mode, 0, UART_MODE_MAX, attr, event);
|
||||||
|
|
|
@ -1280,6 +1280,44 @@ static int luaResetGlobalTimer(lua_State * L)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*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 Introducted in TODO
|
||||||
|
*/
|
||||||
|
static int luaSerialWrite(lua_State * L)
|
||||||
|
{
|
||||||
|
const char * str = luaL_checkstring(L, 1);
|
||||||
|
size_t len = lua_rawlen(L, 1);
|
||||||
|
|
||||||
|
if (!str || len < 1)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
#if !defined(SIMU)
|
||||||
|
#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(SERIAL2)
|
||||||
|
if (serial2Mode == UART_MODE_LUA) {
|
||||||
|
size_t wr_len = len;
|
||||||
|
const char* p = str;
|
||||||
|
while(wr_len--) serial2Putc(*p++);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
debugPrintf("luaSerialWrite: %.*s",len,str);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
const luaL_Reg opentxLib[] = {
|
const luaL_Reg opentxLib[] = {
|
||||||
{ "getTime", luaGetTime },
|
{ "getTime", luaGetTime },
|
||||||
{ "getDateTime", luaGetDateTime },
|
{ "getDateTime", luaGetDateTime },
|
||||||
|
@ -1318,6 +1356,7 @@ const luaL_Reg opentxLib[] = {
|
||||||
{ "crossfireTelemetryPop", luaCrossfireTelemetryPop },
|
{ "crossfireTelemetryPop", luaCrossfireTelemetryPop },
|
||||||
{ "crossfireTelemetryPush", luaCrossfireTelemetryPush },
|
{ "crossfireTelemetryPush", luaCrossfireTelemetryPush },
|
||||||
#endif
|
#endif
|
||||||
|
{ "serialWrite", luaSerialWrite },
|
||||||
{ NULL, NULL } /* sentinel */
|
{ NULL, NULL } /* sentinel */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,8 @@ set(LUA_SCRIPT_LOAD_MODE "" CACHE STRING "Script loading mode and compilation fl
|
||||||
option(LUA_COMPILER "Pre-compile and save Lua scripts" OFF)
|
option(LUA_COMPILER "Pre-compile and save Lua scripts" OFF)
|
||||||
option(LUA_ALLOCATOR_TRACER "Trace Lua memory (de)allocations to debug port (also needs DEBUG=YES NANO=NO)" OFF)
|
option(LUA_ALLOCATOR_TRACER "Trace Lua memory (de)allocations to debug port (also needs DEBUG=YES NANO=NO)" OFF)
|
||||||
|
|
||||||
|
option(USB_SERIAL "Enable USB serial (CDC)" OFF)
|
||||||
|
|
||||||
set(ARCH ARM)
|
set(ARCH ARM)
|
||||||
set(STM32USB_DIR ${THIRDPARTY_DIR}/STM32_USB-Host-Device_Lib_V2.2.0/Libraries)
|
set(STM32USB_DIR ${THIRDPARTY_DIR}/STM32_USB-Host-Device_Lib_V2.2.0/Libraries)
|
||||||
add_definitions(-DSTM32 -DLUA_INPUTS -DVARIO -DCROSSFIRE)
|
add_definitions(-DSTM32 -DLUA_INPUTS -DVARIO -DCROSSFIRE)
|
||||||
|
@ -39,7 +41,7 @@ set(FIRMWARE_TARGET_SRC
|
||||||
../common/arm/stm32/flash_driver.cpp
|
../common/arm/stm32/flash_driver.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
if(DEBUG OR CLI)
|
if(DEBUG OR CLI OR USB_SERIAL)
|
||||||
set(STM32USB_SRC
|
set(STM32USB_SRC
|
||||||
${STM32USB_SRC}
|
${STM32USB_SRC}
|
||||||
STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c
|
STM32_USB_Device_Library/Class/cdc/src/usbd_cdc_core.c
|
||||||
|
|
|
@ -101,6 +101,8 @@ void serial2Init(unsigned int mode, unsigned int protocol)
|
||||||
uart3Setup(FRSKY_D_BAUDRATE, true);
|
uart3Setup(FRSKY_D_BAUDRATE, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case UART_MODE_LUA:
|
||||||
|
uart3Setup(DEBUG_BAUDRATE, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,11 @@
|
||||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||||
|
|
||||||
#define LEN_UART3MODES "\015"
|
#define LEN_UART3MODES "\015"
|
||||||
#define TR_UART3MODES "VYP\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Trenér\0 ""Debug\0"
|
#if defined(CLI) || defined(DEBUG)
|
||||||
|
#define TR_UART3MODES "Debug\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Trenér\0 ""LUA\0 "
|
||||||
|
#else
|
||||||
|
#define TR_UART3MODES "VYP\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Trenér\0 ""LUA\0 "
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\013"
|
#define LEN_SWTYPES "\013"
|
||||||
#define TR_SWTYPES "Žádný\0 ""Bez aretace""2-polohový\0""3-polohový\0"
|
#define TR_SWTYPES "Žádný\0 ""Bez aretace""2-polohový\0""3-polohový\0"
|
||||||
|
|
|
@ -72,9 +72,9 @@
|
||||||
|
|
||||||
#define LEN_UART3MODES "\015"
|
#define LEN_UART3MODES "\015"
|
||||||
#if defined(CLI) || defined(DEBUG)
|
#if defined(CLI) || defined(DEBUG)
|
||||||
#define TR_UART3MODES "Debug\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Eingang\0""Debug\0"
|
#define TR_UART3MODES "Debug\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Eingang\0""LUA\0 "
|
||||||
#else
|
#else
|
||||||
#define TR_UART3MODES "AUS\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Eingang\0""Debug\0"
|
#define TR_UART3MODES "AUS\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Eingang\0""LUA\0 "
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
|
|
|
@ -72,9 +72,9 @@
|
||||||
|
|
||||||
#define LEN_UART3MODES "\015"
|
#define LEN_UART3MODES "\015"
|
||||||
#if defined(CLI) || defined(DEBUG)
|
#if defined(CLI) || defined(DEBUG)
|
||||||
#define TR_UART3MODES "Debug\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""Debug\0"
|
#define TR_UART3MODES "Debug\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""LUA\0 "
|
||||||
#else
|
#else
|
||||||
#define TR_UART3MODES "OFF\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""Debug\0"
|
#define TR_UART3MODES "OFF\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""LUA\0 "
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
|
|
|
@ -71,7 +71,11 @@
|
||||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||||
|
|
||||||
#define LEN_UART3MODES "\015"
|
#define LEN_UART3MODES "\015"
|
||||||
#define TR_UART3MODES "OFF\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""Debug\0"
|
#if defined(CLI) || defined(DEBUG)
|
||||||
|
#define TR_UART3MODES "Debug\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""LUA\0 "
|
||||||
|
#else
|
||||||
|
#define TR_UART3MODES "OFF\0 ""S-Port Mirror""Telemetry\0 ""SBUS Trainer\0""LUA\0 "
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
|
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
|
||||||
|
|
|
@ -71,7 +71,11 @@
|
||||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||||
|
|
||||||
#define LEN_UART3MODES "\015"
|
#define LEN_UART3MODES "\015"
|
||||||
#define TR_UART3MODES "POIS\0 ""S-Port Pelik\0""Telemetry\0 ""SBUS Trainer\0""Debug\0"
|
#if defined(CLI) || defined(DEBUG)
|
||||||
|
#define TR_UART3MODES "Debug\0 ""S-Port Pelik\0""Telemetry\0 ""SBUS Trainer\0""LUA\0 "
|
||||||
|
#else
|
||||||
|
#define TR_UART3MODES "POIS\0 ""S-Port Pelik\0""Telemetry\0 ""SBUS Trainer\0""LUA\0 "
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
|
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
|
||||||
|
|
|
@ -71,7 +71,11 @@
|
||||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||||
|
|
||||||
#define LEN_UART3MODES "\016"
|
#define LEN_UART3MODES "\016"
|
||||||
#define TR_UART3MODES "OFF\0 ""Recopie S-Port""Télémétrie\0 ""Ecolage SBUS\0 ""Debug\0"
|
#if defined(CLI) || defined(DEBUG)
|
||||||
|
#define TR_UART3MODES "Debug\0 ""Recopie S-Port""Télémétrie\0 ""Ecolage SBUS\0 ""LUA\0 "
|
||||||
|
#else
|
||||||
|
#define TR_UART3MODES "OFF\0 ""Recopie S-Port""Télémétrie\0 ""Ecolage SBUS\0 ""LUA\0 "
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
#define TR_SWTYPES "Rien\0 ""Levier""2-POS\0""3-POS\0"
|
#define TR_SWTYPES "Rien\0 ""Levier""2-POS\0""3-POS\0"
|
||||||
|
|
|
@ -71,7 +71,11 @@
|
||||||
#define TR_TRNCHN "ch1ch2ch3ch4"
|
#define TR_TRNCHN "ch1ch2ch3ch4"
|
||||||
|
|
||||||
#define LEN_UART3MODES "\016"
|
#define LEN_UART3MODES "\016"
|
||||||
#define TR_UART3MODES "OFF\0 ""Replica S-Port""Telemetria\0 ""SBUS Trainer\0 ""Debug\0"
|
#if defined(CLI) || defined(DEBUG)
|
||||||
|
#define TR_UART3MODES "Debug\0 ""Replica S-Port""Telemetria\0 ""SBUS Trainer\0 ""LUA\0 "
|
||||||
|
#else
|
||||||
|
#define TR_UART3MODES "OFF\0 ""Replica S-Port""Telemetria\0 ""SBUS Trainer\0 ""LUA\0 "
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
|
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
|
||||||
|
|
|
@ -72,10 +72,11 @@
|
||||||
|
|
||||||
#define LEN_UART3MODES "\015"
|
#define LEN_UART3MODES "\015"
|
||||||
#if defined(CLI) || defined(DEBUG)
|
#if defined(CLI) || defined(DEBUG)
|
||||||
#define TR_UART3MODES "Debug\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Leerling""Debug\0 "
|
#define TR_UART3MODES "Debug\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Leerling""LUA\0 "
|
||||||
#else
|
#else
|
||||||
#define TR_UART3MODES "UIT\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Leerling""Debug\0 "
|
#define TR_UART3MODES "UIT\0 ""S-Port Mirror""Telemetrie\0 ""SBUS Leerling""LUA\0 "
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
#define TR_SWTYPES "Geen\0 ""Wissel""2POS\0 ""3POS\0"
|
#define TR_SWTYPES "Geen\0 ""Wissel""2POS\0 ""3POS\0"
|
||||||
|
|
||||||
|
|
|
@ -70,9 +70,12 @@
|
||||||
#define LEN_TRNCHN "\003"
|
#define LEN_TRNCHN "\003"
|
||||||
#define TR_TRNCHN "KN1KN2KN3KN4"
|
#define TR_TRNCHN "KN1KN2KN3KN4"
|
||||||
|
|
||||||
|
|
||||||
#define LEN_UART3MODES "\015" /*13 decimal*/
|
#define LEN_UART3MODES "\015" /*13 decimal*/
|
||||||
#define TR_UART3MODES "Wyłącz\0 ""S-Port Kopia ""Telemetria\0 ""Trener SBUS\0 ""Debug\0 "
|
#if defined(CLI) || defined(DEBUG)
|
||||||
|
#define TR_UART3MODES "Debug\0 ""S-Port Kopia ""Telemetria\0 ""Trener SBUS\0 ""LUA\0 "
|
||||||
|
#else
|
||||||
|
#define TR_UART3MODES "Wyłącz\0 ""S-Port Kopia ""Telemetria\0 ""Trener SBUS\0 ""LUA\0 "
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
#define TR_SWTYPES "Brak\0 ""Chwil.""2POZ\0 ""3POZ\0"
|
#define TR_SWTYPES "Brak\0 ""Chwil.""2POZ\0 ""3POZ\0"
|
||||||
|
|
|
@ -71,7 +71,11 @@
|
||||||
#define TR_TRNCHN "CH1CH2CH3CH4"
|
#define TR_TRNCHN "CH1CH2CH3CH4"
|
||||||
|
|
||||||
#define LEN_UART3MODES "\017"
|
#define LEN_UART3MODES "\017"
|
||||||
#define TR_UART3MODES "OFF\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""Debug\0"
|
#if defined(CLI) || defined(DEBUG)
|
||||||
|
#define TR_UART3MODES "Debug\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""LUA\0 "
|
||||||
|
#else
|
||||||
|
#define TR_UART3MODES "OFF\0 ""S-Port Mirror\0 ""Telemetry\0 ""SBUS Trainer\0 ""LUA\0 "
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
|
#define TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
|
||||||
|
|
|
@ -71,7 +71,11 @@
|
||||||
#define TR_TRNCHN "KN1KN2KN3KN4"
|
#define TR_TRNCHN "KN1KN2KN3KN4"
|
||||||
|
|
||||||
#define LEN_UART3MODES "\022"
|
#define LEN_UART3MODES "\022"
|
||||||
#define TR_UART3MODES "Av\0 ""Spegling av S-Port""Telemetri\0 ""SBUS Trainer\0 ""Debug\0"
|
#if defined(CLI) || defined(DEBUG)
|
||||||
|
#define TR_UART3MODES "Debug\0 ""Spegling av S-Port""Telemetri\0 ""SBUS Trainer\0 ""LUA\0 "
|
||||||
|
#else
|
||||||
|
#define TR_UART3MODES "Av\0 ""Spegling av S-Port""Telemetri\0 ""SBUS Trainer\0 ""LUA\0 "
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LEN_SWTYPES "\006"
|
#define LEN_SWTYPES "\006"
|
||||||
#define TR_SWTYPES "Ingen\0""Flipp\0""2Pos\0 ""3Pos\0"
|
#define TR_SWTYPES "Ingen\0""Flipp\0""2Pos\0 ""3Pos\0"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue