1
0
Fork 0
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:
Raphael Coeffic 2018-06-25 10:10:01 +02:00
parent 5dd365238e
commit 25c02b96f3
16 changed files with 94 additions and 19 deletions

View file

@ -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
}; };

View file

@ -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);

View file

@ -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 */
}; };

View file

@ -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

View file

@ -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);
} }
} }

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"