Merge pull request #6008 from opentx/raphaelcoeffic/lua_serial

add LUA access to serial port (serial2 and USB)
This commit is contained in:
Bertrand Songis
2018-07-08 16:44:55 +02:00
committed by GitHub
17 changed files with 96 additions and 19 deletions
+1 -1
View File
@@ -260,7 +260,7 @@ enum UartModes {
UART_MODE_TELEMETRY_MIRROR,
UART_MODE_TELEMETRY,
UART_MODE_SBUS_TRAINER,
// UART_MODE_CPPM_TRAINER,
UART_MODE_LUA,
UART_MODE_COUNT,
UART_MODE_MAX = UART_MODE_COUNT-1
};
+2 -2
View File
@@ -50,7 +50,7 @@ enum MenuRadioHardwareItems {
ITEM_RADIO_HARDWARE_BLUETOOTH_MODE,
ITEM_RADIO_HARDWARE_BLUETOOTH_PAIRING_CODE,
ITEM_RADIO_HARDWARE_BLUETOOTH_NAME,
#if defined(SERIAL2) && defined(DEBUG)
#if defined(SERIAL2)
ITEM_RADIO_HARDWARE_UART3_MODE,
#endif
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);
break;
#if defined(SERIAL2) && defined(DEBUG)
#if defined(SERIAL2)
case ITEM_RADIO_HARDWARE_UART3_MODE:
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);
+39
View File
@@ -1280,6 +1280,44 @@ static int luaResetGlobalTimer(lua_State * L)
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[] = {
{ "getTime", luaGetTime },
{ "getDateTime", luaGetDateTime },
@@ -1318,6 +1356,7 @@ const luaL_Reg opentxLib[] = {
{ "crossfireTelemetryPop", luaCrossfireTelemetryPop },
{ "crossfireTelemetryPush", luaCrossfireTelemetryPush },
#endif
{ "serialWrite", luaSerialWrite },
{ 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_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(STM32USB_DIR ${THIRDPARTY_DIR}/STM32_USB-Host-Device_Lib_V2.2.0/Libraries)
add_definitions(-DSTM32 -DLUA_INPUTS -DVARIO -DCROSSFIRE)
@@ -39,7 +41,7 @@ set(FIRMWARE_TARGET_SRC
../common/arm/stm32/flash_driver.cpp
)
if(DEBUG OR CLI)
if(DEBUG OR CLI OR USB_SERIAL)
set(STM32USB_SRC
${STM32USB_SRC}
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);
}
break;
case UART_MODE_LUA:
uart3Setup(DEBUG_BAUDRATE, false);
}
}
+2
View File
@@ -13,6 +13,8 @@ set(LINKER_SCRIPT targets/horus/stm32f4_flash.ld)
set(RAMBACKUP YES)
set(LUA YES)
set(PPM_LIMITS_SYMETRICAL YES)
SET(USB_SERIAL ON CACHE BOOL "Enable USB serial (CDC)")
# for size report script
set(CPU_TYPE_FULL STM32F429xI)
set(SIZE_TARGET_MEM_DEFINE "MEM_SIZE_SDRAM2=8192")
+5 -1
View File
@@ -69,7 +69,11 @@
#define TR_TRNCHN "CH1CH2CH3CH4"
#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 TR_SWTYPES "Žádný\0 ""Bez aretace""2-polohový\0""3-polohový\0"
+2 -2
View File
@@ -72,9 +72,9 @@
#define LEN_UART3MODES "\015"
#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
#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
#define LEN_SWTYPES "\006"
+2 -2
View File
@@ -72,9 +72,9 @@
#define LEN_UART3MODES "\015"
#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
#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
#define LEN_SWTYPES "\006"
+5 -1
View File
@@ -71,7 +71,11 @@
#define TR_TRNCHN "CH1CH2CH3CH4"
#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 TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
+5 -1
View File
@@ -71,7 +71,11 @@
#define TR_TRNCHN "CH1CH2CH3CH4"
#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 TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
+5 -1
View File
@@ -71,7 +71,11 @@
#define TR_TRNCHN "CH1CH2CH3CH4"
#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 TR_SWTYPES "Rien\0 ""Levier""2-POS\0""3-POS\0"
+5 -1
View File
@@ -71,7 +71,11 @@
#define TR_TRNCHN "ch1ch2ch3ch4"
#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 TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
+3 -2
View File
@@ -72,10 +72,11 @@
#define LEN_UART3MODES "\015"
#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
#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
#define LEN_SWTYPES "\006"
#define TR_SWTYPES "Geen\0 ""Wissel""2POS\0 ""3POS\0"
+5 -2
View File
@@ -70,9 +70,12 @@
#define LEN_TRNCHN "\003"
#define TR_TRNCHN "KN1KN2KN3KN4"
#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 TR_SWTYPES "Brak\0 ""Chwil.""2POZ\0 ""3POZ\0"
+5 -1
View File
@@ -71,7 +71,11 @@
#define TR_TRNCHN "CH1CH2CH3CH4"
#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 TR_SWTYPES "None\0 ""Toggle""2POS\0 ""3POS\0"
+5 -1
View File
@@ -71,7 +71,11 @@
#define TR_TRNCHN "KN1KN2KN3KN4"
#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 TR_SWTYPES "Ingen\0""Flipp\0""2Pos\0 ""3Pos\0"