Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Lua is a small but powerful language. This section will explain a few of the most important concepts.
Lua was chosen for EdgeTX, because it is a small language designed to be highly extensible by libraries written in C and C++, so it can be integrated into other systems like EdgeTX. It is also relatively efficient, both in terms of memory and CPU usage, and hence well suited for the radios.
In addition to the provided libraries, Lua has a very elegant mechanism for loading new Lua code modules during run-time. A lot of the elegance comes from the way that the loading mechanism meshes with another concept supported by Lua: first class functions with closures.
Computer science pioneer Christopher Strachey introduced the concept of functions as first-class objects in his paper Fundamental Concepts in Programming Languages from 1967. What it means is that functions can be treated as other variables: as arguments passed in function calls, as results returned from function calls, and a function identifier can be re-assigned to another chunk of function code, just like a variable ca be assigned to a new value.
In Lua, a function declaration is really "syntactic sugar" for assigning a variable to the chunk of code that is called when the function is invoked, i.e.
local function f(x) return x + 1 end
is the same as
local f = function(x) return x + 1 end
You can even add functions to Lua tables, i.e.
t = { f = f }
will add the above function to the table t
, as a field that is also called f
. Does that look familiar to the return statement required at the end of a Lua script?
Yes indeed, because a script is really an anonymous function that returns a list of functions to the system. The function declarations assign variables to chunks of function code, these variables are added to the list returned at the end of the script, and the system then calls the functions periodically to run the script. So the script itself is run one time initially, and subsequently the functions returned by the last statement are called periodically.
Another important concept that goes with first-class functions, is closures. This is the environment of the function with the variable names that the function can see. Please consider the following function counter
that returns another function:
The function is returned directly without being assigned to a variable name. The closure of the function returned is the body of the function counter
, containing both the arguments start
and step
, and the local variable x
. So if c1 = counter(1, 1)
then c1()
will return 1, 2, 3, ... when called repeatedly, and if c2 = counter(2, 3)
then c2()
will return 2, 5, 8, ...
Likewise, the local variables that you declare outside the functions of your script can be used by all of the functions in your script, and they persist between function calls, but they are not visible to other scripts.
The widget scripts are a little trickier, as you can register multiple instances of the same widget script, and all of these instances run within the same Lua closure. Therefore, local variables declared outside any functions in a widget script are shared among all of the instances of that script. But each call to the create(...)
function returns a new widget
list to the system. And since this list is unique to each instance, you can add private instance variables to it.
Please consider this function:
It takes an argument x
and a vararg list ...
A vararg list is just like a list of arguments separated by commas, and you can call the function with any number of arguments greater than 1. Inside the function, you can also treat ...
like a comma separated list of variables, e.g. in the above function, ...
is converted to a table by {...}
just like you could construct a table by e.g. {a, b, c}
. The table is iterated with the ipairs
function to look for an element matching the first argument x
. So e.g. the following statement
if event == EVT_VIRTUAL_ENTER or event == EVT_VIRTUAL_EXIT then
can be replaced by
if match(event, EVT_VIRTUAL_ENTER, EVT_VIRTUAL_EXIT) then
You can also use ...
directly as a comma separated list of values, e.g. local a, b, c = ...
will assign the three variables to the three first arguments following x
, or nil
if none are given.
Standard LUA io library has been simplified and only a subset of functions and their functionality is available.
io.open()
io.close()
io.read()
io.write()
io.seek()
This section introduces the types of Lua scripts supported by EdgeTX and how they may be used.
The radio's special characters can be used with the following text constants.
CHAR_RIGHT
CHAR_LEFT
CHAR_UP
CHAR_DOWN
CHAR_DELTA
CHAR_STICK
CHAR_POT
CHAR_SLIDER
CHAR_SWITCH
CHAR_TRIM
CHAR_INPUT
CHAR_FUNCTION
CHAR_CYC
CHAR_TRAINER
CHAR_CHANNEL
CHAR_TELEMETRY
CHAR_LUA
Displays a bitmap pattern at (x,y)
@status current Introduced in 2.8.0
Parameters
bitmap
(pointer) point to a bitmap previously opened with Bitmap.open()
x,y
(positive numbers) starting coordinates
flags
(optional) please see Lcd functions overview
Return value
none
Notice
Only available on Horus
This section describes the Lua libraries, functions and constants that are provided by EdgeTX.
Draw a straight line on LCD
@status current Introduced in 2.0.0, flags introduced in 2.3.6
x1,y1
(positive numbers) starting coordinate
x2,y2
(positive numbers) end coordinate
pattern
SOLID or DOTTED
flags
lcdflags
none
If the start or the end of the line is outside the LCD dimensions, then the whole line will not be drawn (starting from OpenTX 2.1.5)
Get servo parameters
@status current Introduced in 2.0.0
index
(unsigned number) output number (use 0 for CH1)
nil
requested output does not exist
table
output parameters:
name
(string) name
min
(number) Minimum % * 10
max
(number) Maximum % * 10
offset
(number) Subtrim * 10
ppmCenter
(number) offset from PPM Center. 0 = 1500
symetrical
(number) linear Subtrim 0 = Off, 1 = On
revert
(number) irection 0 = ---, 1 = INV
curve
(number) Curve number (0 for Curve1)
or nil
if no curve set
Draw a single pixel at (x,y) position
@status current Introduced in 2.0.0
x
(positive number) x position
y
(positive number) y position
flags
(optional) lcdflags
none
Taranis has an LCD display width of 212 pixels and height of 64 pixels. Position (0,0) is at top left. Y axis is negative, top line is 0, bottom line is 63. Drawing on an existing black pixel produces white pixel (TODO check this!)
This guide covers the development of user-written scripts for R/C transmitters running the EdgeTX operating system with Lua support. Readers should be familiar with EdgeTX, the EdgeTX Companion, and know how to transfer files the SD card in the transmitter.
The latest version of this guide will always be available here. At the top of the left sidebar there is a version option if you are running an older version of EdgeTX and need the docs for that specific version.
Quickest way to get support from seasoned EdgeTX LUA developers is to join our Discord server and ask on dedicated #lua channel
Please feel free to make suggestions or corrections to the documentation.
Preferred method of editing is to use GitBook, as it uses WYSWIG editor allowing two-stage publication. If you want to change or add whole page or become collaborator <decribe what to do>.
The EdgeTX team has no intention of making a profit from their work - EdgeTX is free and open source and will remain free and open source. However, the project is more expensive to maintain than most open source projects. This in mainly because there is a never ending flood of hardware to integrate and maintain code for. Hardware that costs. In addition, in order to develop for this hardware, certain specalised test and measurement equipment is also required.
In order to support this, EdgeTX has chosen to use OpenCollective to allow for donations from the community, as well as funding from manufacturers who choose to partner with and sponsor the project. This also allows for transparent accounting of what the funds are spent on.
Please visit our OpenCollective page if you would like to financially help support the project!
EdgeTX 2.10 uses LUA interpreter and compiler version 5.2 For detailed reference read Lua 5.2 Reference Manual
This section covers various topics of LUA implementation in EdgeTX operating system system
Although they are named "Telemetry scripts" in fact they can be used to perform constant task while running in background. Telemetry scripts are mostly used for building customized screens that are avalilable to user directly from main screen using key shortcut. Each model can have up to three active scripts as configured on the model's Telemetry configuration page. The same script can be assigned to multiple models.
Telemetry scripts are only available on radios with B&W LCD screens, such as e.g. FrSky Taranis models (including Xlite), Radiomaster TX12, Zorro, Boxer or Jumper T12. Read more about <radios>.
Telemetry script is loaded and executed when model is selected. Script executes until:
it misbehaves (e.g. run-time error or low memory)
One-time Script is running. When One-time script finishes execution, Wigdet Script resumes execution.
Telemetry scripts are located on the SD card in the folder /SCRIPTS/TELEMETRY/.
Telemetry script file name length (without extension) must be 6 characters or less
Every Telemetry script must include a return
statement at the end, defining its interface to EdgeTX.
This statement returns a table with the following fields:
Parameters
Return values none
Parameters none
Return Values none
Parameters none
Return Values none
Function scripts are invoked via EdgeTX 'Lua Script' of Special Functions configuration page.
Typical uses of Function scripts are:
specialized handling in response to switch position changes
customized announcements
Function script is loded when model is selected. Script executes until
it misbehaves (e.g. run-time error or low memory)
Function scripts DO NOT HAVE ACCESS TO LCD DISPLAY
Function scripts are located on the SD card in the folder /SCRIPTS/FUNCTIONS/
File name length (without extension) must be 6 characters or less
Every Function script must include a return
statement at the end, defining its interface to EdgeTX.
This statement returns a table with the following fields:
Parameters none
Return values none
Parameters none
Return Values none
Parameters none
Return Values none\
Mixes Scripts take one or more values as inputs, do some processing in Lua code, and output one or more values. Each model can have several Mixes Scripts associated with it, and these scripts are run periodically. They behave similarly to standard EdgeTX mixers, but at the same time they provide a much more flexible and powerful tool.
Typical use cases:
replacement for complex mixes that are not critical to model function
complex processing of inputs and reaction to their current state and/or their history
filtering of telemetry values
Mixes script is loded when model is selected. Script executes until
it misbehaves (e.g. run-time error or low memory)
If the script output is used as a mixer source
, and the script is killed for whatever reason, then the whole mixer line is disabled!
Mixes Scripts should be as short as possible, to avoid delays. It is also important to keep in mind that other loaded Telemetry and Function scripts can add to the response time, or worse: hang the system!
To enable Mixes Scripts, firmware must be compiled with the option LUA_MIXER=Y
.
Mixes scripts are located on SD card in folder /SCRIPTS/MIXES/
File name length (without extension) must be 6 characters or less
Every Mixes Script must include a return
statement at the end, defining its interface to EdgeTX. This statement returns a table with the following fields:
This function is called periodicaly when script is running.
Parameters
Variables matching those used in input
table
Return values
Variables matching those used in output
table\
This function is called once when Mixes Script is loaded and executed for the first time
Parameters none Return values none\
The input table defines what values are available as input(s) to custom scripts.
There are two forms of input table entries
SOURCE
SOURCE inputs provide the current value of a selected OpenTX variable. The source must be selected by the user when the script is configured. Source can be any value that EdgeTX knows about (inputs, channels, telemetry values, switches, custom functions etc.). Note: the typical input range is -1024 thru +1024. Simply divide the input value by 10.24 to convert to a percentage from -100% to +100%.
VALUE
VALUE inputs provide a constant value that is set by the user when the script is configured.
name - maximum length of 8 characters
min - minimum value of -128
max - maximum value of 127
default - must be within the valid range specified
Maximum of 6 inputs per script
The output table defines only name(s), as the actual values are returned by the script's run function.
Above names are only visible as source values on the radio screen when the script is running. If the model is edited in Companion, then the values show as LUA1a
and LUA1b
etc.
Example of <decribe what it does>.
Example where Lua mix script is used to drive ailerons in some clever way, but control falls back to the standard aileron mix if script is killed. Second mixer line replaces the first one when the script is alive:
EdgeTX internal Source List contains every source available on particular radio model.
Particular Source List ID is a integer number from 1 to whatever last source entry is used by EdgeTX developers during firmware implementation. Different Radios have different number of physical inputs that affects this list. Therefore for the same source type (ie LS04 - Logical switch number 4) sourceListID can have different value on particular radio model
To avoid confusion wherever there is reference to Source List ID short-name sourceListID is used.
To avoid confusion wherever there is reference to Source List Name short-name sourceListName is used.
One-time scripts are used mainly to perform tasks that are not connected with flying. In example ELRS configuration LUA script. They do their task and are then terminated (by user or function) and unloaded.
Script is executed when user selects "Execute" on a script file from SD card browser screen, or opens a Lua Tool, or creates a new model with a Wizard script.
The script executes until:
it returns value different from 0 (except returning string that contains new script name to be executed)
is forcefully closed by user by long press of EXIT key
is forcefully closed by system if it misbehaves (e.g. run-time error or low
memory)
Running a One-Time script will suspend execution of all other currently loaded Lua scripts (Custom, Telemetry, and Functions). They are automatically restarted once the One-Time script is finished. This is done to provide enough system resources to execute the One-Time script.
One-Time Scripts can be placed anywhere on SD card, however, the folder /SCRIPTS/ is recommended.
If One-Time Script is placed in special folder /SCRIPTS/TOOLS it will be visible in EdgeTX RADIO>TOOLS tab
To give this One-Time Script unique name place at the beginning of lua script line:
-- toolName = "TNS|ScriptName|TNE
Otherwise script's filename will be used to display in RADIO>TOOLS list.
Wizard scripts must be stored in the same subfolder of /TEMPLATES/ with the same "first name" as the template file using it. Some Wizard scripts are just small scripts that load one of the common scripts located in /SCRIPTS/WIZARD/.
Every script must include a return
statement at the end, defining its interface to EdgeTX. This statement returns a table with the following fields:
Parameters
Return values
Parameters none
Return Values none
Simplest one-time LUA script
Because 0 is returned all the time this script will continue running until user long press EXIT (RTN) key.
One-Time LUA script with initialization and exit feature if user short press and release EXIT (RTN) key
Widget scripts are avaiable on radios equiped with color LCD. They are designed to run constantly in the background performinfg various task. Widget scripts are mostly used to extend EdgeTX functionality via Widgets that are places by user on Main Views. They are equivalent of Telemetry Scripts on radios equiped with B&W LCD.
Most of the time, widget scripts show some info in a Widget's zone in one of the user defined Main Views. They cannot receive direct input from the user via key events with exeption of being displayed in so called Full Screen mode. Full screen mode can be entered by selecting the widget, pressing ENTER and selecting Full screen from the widget's contextual menu, or by double tapping the widget on radios with a touch screen. Full screen mode can be exited by long pressing the EXIT (RTN) button, or by calling the Lua function lcd.exitFullScreen()
.
Each model can have up to nine Main Views, with up to 8 widgets per screen, depending on their size and layout. Each instance of a widget has his own options table.
Widget scripts are only available on radios with color LCD screens, such as e.g. FrSky X10 or X12, Radiomaster TX16S, Jumper T16 or T18, Flysky NV14., etc. Read more about radios.
All widget scripts on the SD card are loaded into memory when the model is selected, even widgets that are not used. This has the side effect that any global functions defined in a widget script will always be available to other widget scripts. It also means that any Widget Script placed in proper location on the SD card will consume part of the radio's memory - even if it is not being used.
Script executes until:
it misbehaves (e.g. too long runtime, run-time error, or low memory)
One-Time script is running. When One-time script finishes execution, Wigdet Script resumes execution.
Widget scripts are located on the SD card, each one in their specific folder: /WIDGETS/<folder name>/
Widget script folder name length must be 8 characters or less
Widget script name is constant and has to be named main.lua
Example of proper Widget script placement to be registered by EdgeTX as valid Widget script available to user in Widgets selection menu: /WIDGETS/MYWGT/main.lua
Try to use unique folder name. In case of naming clash, previously installed widget will be overwritten.
Every Widget Script must include a return
statement at the end, defining its interface to EdgeTX. This statement returns a table with the following fields:
The name
length must be 10 characters or less.
options
table is passed to create
function when invoked and then stored in Lua. Changing options table values while Widget script is running has no effect. This table is designed to be changed with EdgeTX system menus.
If options
is changed by the user in the Widget Settings menu, then update
will be called with a new options
table, unaffected by any changes made by Lua code to the old options
table.
Parameters
Return values
The size of the widget's zone area is as follows:
Full screen mode: LCD_W
by LCD_H
Not full screen mode: zone.w
by zone.h
(updated if screen options are changed)
If local variables are declared outside functions in the widget script, then they are shared between all instances of the widget. Therefore, local variables that are private for each instance should be added to the widget
table in the create
function before returning the widget
table to EdgeTX.
Parameters
Return values none
Parameters
Return values none
Parameters
Return values none
if you want background
function to run when the widget is visible, then call it from refresh function.
Draw a text beginning at (x,y)
@status current Introduced in 2.0.0, SHADOWED
introduced in 2.2.1
x,y
(positive numbers) starting coordinate
text
(string) text to display
0 or not specified
normal font
XXLSIZE
jumbo sized font
DBLSIZE
double size font
MIDSIZE
mid sized font
SMLSIZE
small font
INVERS
inverted display
BLINK
blinking text
SHADOWED
Horus only, apply a shadow effect
none
Description
Lcd functions allow scripts to interact with the transmitter display. This access is limited to the 'run' functions of One-Time and Telemetry scripts. Widget scripts on the Horus (X10 and X12S) can make use of the lcd functions as well.
Notes:
The run function is periodically called when the screen is visible. In OpenTX 2.0 each invocation starts with a blank screen (unless lcd.lock() is used). Under OpenTX 2.1 screen state is always persisted across calls to the run function. Many scripts originally written for OpenTX 2.0 require a call to lcd.clear() at the beginning of their run function in order to display properly under 2.1 and 2.2.
Many of the lcd functions accept parameters named flags and patterns. The names and their meanings are described below.
Chapter | Content |
---|---|
Lua Standard Libraries | Comment |
---|---|
Topic | Description |
---|---|
Field | Type | Required | Desctiption |
---|---|---|---|
Field | Type | Required | Desctiption |
---|---|---|---|
Field | Type | Required | Desctiption |
---|---|---|---|
getVersion() name | tx16s |
---|
flags
(optional) please see and constants
Manufacturer | Model | introduced in EdgeTX |
---|
Manufacturer | Model | introduced in EdgeTX |
---|
Manufacturer | Model | introduced in EdgeTX |
---|
is running. When One-time script finishes execution, Wigdet Script resumes execution.
Field | Type | Required | Desctiption |
---|
Field | Type | Required | Desctiption |
---|
Field | Type | Required | Desctiption |
---|
is running. When One-time script finishes execution, Wigdet Script resumes execution.
table item | type | required |
---|
table item | type | required |
---|
table item | type | required |
---|
table item | type | required |
---|
sourceListName | Type | Description |
---|
Source List name can also change due to firmware changes during development or user configuration (ie. assigning custom name to input). In current version of EdgeTX firmware Source List Name also may contain special visual symbols to indicate type source (see ).
Field | Type | Required | Desctiption |
---|
Field | Type | Required | Desctiption |
---|
It is important to either keep Widget Scripts small, or to use Lua's function to load code dynamically
Field | Type | Required | Desctiption |
---|
Field | Type | Required | Desctiption |
---|
Field | Type | Required | Desctiption |
---|
Field | Type | Required | Desctiption |
---|
Field | Type | Required | Desctiption |
---|
Field | Type | Required | Desctiption |
---|
Name | Req | Type | Description |
---|
EdgeTX version | Action |
---|
flags
(optional) please see and constants
flags
(unsigned number) drawing flags. All values can be combined together using the + character. ie BLINK + DBLSIZE. See the for available characters in each font set.
flags
(optional) please see for drawing flags and colors, and for available characters in each font set. RIGHT, CENTER and VCENTER are not implemented.
Name | Req | Type | Description |
---|
This function works only in stand-alone and telemetry & widget scripts. See .
EdgeTX version | Action |
---|
Name | Type | Req | Description |
---|
Avail | Status | Comment |
---|
EdgeTX version | Change |
---|
Name | Description | Version | Notes |
---|
Name | Description |
---|
Name | Description |
---|
Radio | LCD_W | LCD_H | Colours |
---|
Covers various topics of LUA implementation in EdgeTX operating system system
Reference of all constants and functions available in EdgeTX LUA API
EdgeTX LUA programming guide that covers coding techniques with examples.
included
included
included
included only on color LCD Radios
included partialy
package
not included
coroutine
not included
os
not included
debug
not included
LUA Basics
Brief introduction to LUA language
LUA Version and included libraries
Dut to memory limits not all standard LUA libraries are included in EdgeTX embedded version of LUA interpreter & compiler.
Script Types
EdgeTX allows to use various LUA scripts for different purposes. Here you can check which one suits your needs.
run
function
Function is called periodicaly when when telemetry screen is visible.
event number
Used to indicates which radio key has been pressed (see Key Events)
init
function
This function is called once when script is executed
background
function
This function is called periodically, both when the telemetry screen is visible and when it is not
Name | TX16S |
MCU | STM32F7 |
LCD type | color TFT or IPS |
LCD size | 480x320 |
LCD color depth | 16 bit - RGB565 |
Internal module | Multi-module, ELRS |
External Module Bay | Yes (JR micro) |
LCD_W | 480 |
LCD_H | 320 |
memory for LUA | 1MB |
RadioMaster | TX12 | 2.4 |
RadioMaster | T8 Pro | 2.4 |
RadioMaster | Zorro | 2.6 |
RadioMaster | TX12 Mark II | 2.8 |
RadioMaster | Boxer | 2.8.1 |
RadioMaster | MT12 | 2.10 |
RadioMaster | 2.10 |
Jumper | T-Lite / T-Lite v2 | 2.4 |
Jumper | T-12 / T12 Pro / T12 Pro Hall | 2.4 |
Jumper | T-Pro | 2.6 |
Jumper | T-14 | 2.10 |
Jumper | T-20 | 2.10 |
FrSky | QX7 / QX7S / QX7 ACCESS / QX7S ACCESS | 2.4 |
FrSky | X9 Lite / X9 Lite S | 2.4 |
FrSky | X9E / X9E Hall | 2.4 |
FrSky | X-Lite / X-Lite S / X-Lite Pro | 2.4 |
iFlight | Commando8 | 2.8 |
Betaflight | LireRadio3 | 2.8 |
FrSky | X9D / X9D+ / X9D SE | 2.4 |
FrSky | X9D+2019 / X9D+2019 SE | 2.4 |
Flysky | NV14 | 2.5 |
Flysky | EL18 | 2.8 |
RadioMaster | TX16S / TX16S MAX / TX16S Mark II | 2.4 |
Jumper | T16 / T16 Plus / T16 Pro Hall | 2.4 |
Jumper | T18 / T18 Lite / T18 Pro | 2.4 |
Eachine | TX16S | 2.4 |
FrSky | X10 / X10S / X10S Express / X10S Express | 2.4 |
FrSky | X12S / X12S IRSM | 2.4 |
run | function | This function is called periodicaly when switch assiociated the Special Function is ON. |
init | function | This function is called once when Function script is loaded and executed for the first time |
background | function | This function is called periodicaly when switch assiociated the Special Function is OFF |
run | function | yes |
init | function | no |
input | table | yes |
output | table | yes |
I[01-32] | Inputs | Input value |
LUA[1-7][a-f] | Mixes Scripts | Mixes (custom) scripts value |
Rud,Ele,Thr,Ail | Sticks | Stick position value |
S[1-x] | Potentiometers | Potentiometer value |
LS,RS | Sliders | Left or right slider value |
CYC[1-3] | Cyclic | Cyclic (heli) value |
T[1-x] | Trims | Trim switch value |
S[A-J] | Switches | Physical switch value |
L[01-64] | Logical Switches | Logical switch value |
TR[1-16] | Trainer input | Trainer input value |
CH[01-32] | Mixer channel | Mixer channel value |
GV[1-9] | Global variables | Global variable value |
Batt | Radio data | Radio battery level |
Time | Radio data | Radio time |
GPS | Radio data | Radio internal GPS data |
Tmr[1-3] | Timers | Value of timer |
Tele[1-64] | Telemetry | Current value of telemetry sensor |
Tele[1-64]+ | Telemetry | Maximum value of telemetry sensor |
Tele[1-64]- | Telemetry | Minimum value of telemetry sensor |
run | function | Function is called periodicaly when script is running. |
exit multi type |
|
init | function | This function is called once when script is executed |
name | string | This variable holds a name that is displayed to user as Widget scripts name in available Widgets list. |
create | function | function is called once when the widget instance is registered (started). |
zone table | This parameter will hold visible dimensions of Widget (height & width) |
options table | Initial options table as described above |
widget table | Create function will return table that has to be later passed to |
update | function | This function is called when Widget's Settings are changed by the user. It is mostly used to modify Widget Script variables or behaviour basing on options values entered by user. |
widget table | Widget's table returned by |
options table | Initial options table as described above |
background | function | This function is called periodically when the widget instance is NOT VISIBLE. |
widget table | Widget's table returned by |
refresh | function | This function is called periodically when the widget instance IS VISIBLE. |
2.3.0 | Introduced |
2.3.0 | Introduced |
curveID | number | Curve ID number. Normal Lua index. Use 1 for curve 1, 8 for Input 8 etc. |
| string | Curve name |
| number | Curve type ID number 0 - ??? 1 - ??? 2 - ??? |
| boolean |
|
| number | number of curve's points |
| table | table of points y coordinates values
|
| table | table of points x coordinates values
|
BW radios |
Color radios |
2.4.0 | Introduced |
2.9.0 | changed curveID index from zero based to normal LUA (starts from 1) |
0 | normal font, default precision for numeric |
DBLSIZE | double size font |
MIDSIZE | mid sized font |
SMLSIZE | small font |
INVERS | inverted display |
BLINK | blinking text |
XXLSIZE | jumbo font | 2.0.6 |
LEFT | left justify | 2.0.6 | Default for most functions not related to bitmaps |
RIGHT | right justify |
PREC1 | single decimal place |
PREC2 | two decimal places |
GREY_DEFAULT | grey fill |
TIMEHOUR | dislay hours | Only for drawTimer |
FORCE | pixels will be black |
ERASE | pixels will be white |
DOTTED | lines will appear dotted |
LCD_W | width in pixels |
LCD_H | height in pixels |
X7 | 128 | 64 | 1 bit |
X9D | 212 | 64 | 4 bit |
X9D+ | 212 | 64 | 4 bit |
X9E | 212 | 64 | 4 bit |
X10 | 480 | 272 | RGB565 |
X12S | 480 | 272 | RGB565 |
Return input data for given input and line number
@status current Introduced in 2.3.10
index
(unsigned number) flight mode number (use 0 for FM0)
nil
requested input or line does not exist
table
input data:
name
(string) input line name
switch
(number) input switch index
fadeIn
(number) fade in value (in 0.1s)
fadeOut
(number) fade out value (in 0.1s)
trimsValues
(table) table of trim values:
key
is trim number (zero based)
value
is trim value
trimsModes
(table) table of trim mode:
key
is trim number (zero based)
value
is trim mode
Insert an Input at specified line
@status current Introduced in 2.0.0, curveType/curveValue/carryTrim added in 2.3, inputName added 2.3.10
input
(unsigned number) input number (use 0 for Input1)
line
(unsigned number) input line (use 0 for first line)
value
(table) input data, see model.getInput()
none
Display a number at (x,y)
@status current Introduced in 2.0.0, SHADOWED
introduced in 2.2.1
x,y
(positive numbers) starting coordinate
value
(number) value to display
none
Invert a rectangle zone from top left corner (x,y) of specified width and height
@status current Introduced in 2.8.0
Parameters
x,y
(positive numbers) top left corner position
w
(number) width in pixels
h
(number) height in pixels
flags
(optional) please see Lcd functions overview
Return value
none
Raises a pop-up on screen that allows uses input
@status current Introduced in 2.0.0
title
(string) text to display
event
(number) the event variable that is passed in from the Run function (key pressed)
input
(number) value that can be adjusted by the +/- keys
min
(number) min value that input can reach (by pressing the - key)
max
(number) max value that input can reach
number
result of the input adjustment
"OK"
user pushed ENT key
"CANCEL"
user pushed EXIT key
Use only from stand-alone and telemetry scripts.
This section describes various constants that are provided for Lua by EdgeTX.
On radios with color display, a color may be added to the flags described above.
There are two types of color constants: one that is an index into a table holding a palette of theme colors, and one that is just a color.
These are the theme colors plus CUSTOM_COLOR, and they can be changed with the function lcd.setColor(color_index, color). Please note: if an indexed color is changed, then it changes everywhere that it is used. For the theme colors, this is not only in other widgets, but everywhere throughout the radio's user interface!
COLOR_THEME_PRIMARY1
COLOR_THEME_PRIMARY2
COLOR_THEME_PRIMARY3
COLOR_THEME_SECONDARY1
COLOR_THEME_SECONDARY2
COLOR_THEME_SECONDARY3
COLOR_THEME_FOCUS
COLOR_THEME_EDIT
COLOR_THEME_ACTIVE
COLOR_THEME_WARNING
COLOR_THEME_DISABLED
CUSTOM_COLOR
These color constants cannot be changed:
BLACK
WHITE
LIGHTWHITE
YELLOW
BLUE
DARKBLUE
GREY
DARKGREY
LIGHTGREY
RED
DARKRED
GREEN
DARKGREEN
LIGHTBROWN
DARKBROWN
BRIGHTGREEN
ORANGE
These should no longer be used, but they are included for backwards compatibility. The old OpenTX API had a large number of indexed theme colors, and these have been mapped to the new theme colors as follows:
ALARM_COLOR -> COLOR_THEME_WARNING
BARGRAPH_BGCOLOR -> COLOR_THEME_SECONDARY3
BARGRAPH1_COLOR -> COLOR_THEME_SECONDARY1
BARGRAPH2_COLOR -> COLOR_THEME_SECONDARY2
CURVE_AXIS_COLOR -> COLOR_THEME_SECONDARY2
CURVE_COLOR -> COLOR_THEME_SECONDARY1
CURVE_CURSOR_COLOR -> COLOR_THEME_WARNING
HEADER_BGCOLOR -> COLOR_THEME_FOCUS
HEADER_COLOR -> COLOR_THEME_SECONDARY1
HEADER_CURRENT_BGCOLOR -> COLOR_THEME_FOCUS
HEADER_ICON_BGCOLOR -> COLOR_THEME_SECONDARY1
LINE_COLOR -> COLOR_THEME_PRIMARY3
MAINVIEW_GRAPHICS_COLOR -> COLOR_THEME_SECONDARY1
MAINVIEW_PANES_COLOR -> COLOR_THEME_PRIMARY2
MENU_TITLE_BGCOLOR -> COLOR_THEME_SECONDARY1
MENU_TITLE_COLOR -> COLOR_THEME_PRIMARY2
MENU_TITLE_DISABLE_COLOR -> COLOR_THEME_PRIMARY3
OVERLAY_COLOR -> COLOR_THEME_PRIMARY1
SCROLLBOX_COLOR -> COLOR_THEME_SECONDARY3
TEXT_BGCOLOR -> COLOR_THEME_SECONDARY3
TEXT_COLOR -> COLOR_THEME_SECONDARY1
TEXT_DISABLE_COLOR -> COLOR_THEME_DISABLED
TEXT_INVERTED_BGCOLOR -> COLOR_THEME_FOCUS
TEXT_INVERTED_COLOR -> COLOR_THEME_PRIMARY2
TITLE_BGCOLOR -> COLOR_THEME_SECONDARY1
TRIM_BGCOLOR -> COLOR_THEME_FOCUS
TRIM_SHADOW_COLOR -> COLOR_THEME_PRIMARY1
WARNING_COLOR -> COLOR_THEME_WARNING
These constants determine the type of a Special Function
FUNC_OVERRIDE_CHANNEL
FUNC_TRAINER
FUNC_INSTANT_TRIM
FUNC_RESET
FUNC_SET_TIMER
FUNC_ADJUST_GVAR
FUNC_VOLUME
FUNC_SET_FAILSAFE
FUNC_RANGECHECK
FUNC_BIND
FUNC_PLAY_SOUND
FUNC_PLAY_TRACK
FUNC_PLAY_VALUE
FUNC_PLAY_SCRIPT
FUNC_RESERVE5
FUNC_BACKGND_MUSIC
FUNC_BACKGND_MUSIC_PAUSE
FUNC_VARIO
FUNC_HAPTIC
FUNC_LOGS
FUNC_BACKLIGHT
FUNC_SCREENSHOT
FUNC_RACING_MODE
FUNC_DISABLE_TOUCH
event number |
touchState table |
options | table |
widget table | Widget's table returned by |
event number |
|
touchState table | This parameter is only present when radio is equiped with touch interface and
|
x | integer | top coordinate |
y | integer | left coordinate |
source | sourceName (string)sourceListID (integer) | can be a source identifier (number) or a source name (string). See getValue() |
flags | drawingFlag (integer) |
color | integer (colorFlag) |
Returns colorFlag in RGB565 format that can be used with lcd draw functions.
or
color_flag
. See Drawing Flags
These constants are used with logical switch functions.
For detailed function explanation see Logiacal Switches functions in EdgeTX manual.
In addition to the key events described in the previous section, radios with a color touch screen also provide touch events to the widget scripts.
The following touch events are passed in the event
argument to the widget script refresh
function (when in full screen mode), just like the key events. The following touch events are provided:
In addition to the above touch events a touchState
table is passed to refresh
with the following addional data fields:
touchState
is nil
if event
is not a touch event. This can be used to test if we have a touch event or a key event.
Since Lua evaluates a nil
value to false
and everything else to true
:
if touchState then
we have a touch event.
x, y
are present for all touch events.
startX, startY, slideX, slideY
are only present with EVT_TOUCH_SLIDE
.
swipeUp
/ swipeDown
/ swipeLeft
/ swipeRight
may be present only withEVT_TOUCH_SLIDE
.
tapCount
is zero for anything but EVT_TOUCH_TAP
.
Used to indicates which radio key has been pressed (see )
This parameter is only present when radio is equiped with touch interface and event
is a touch event (see ).
Options table is to store Widget's options available to EdgeTX user via Widget's Settings menu. To see valid options read .
When Widget Script is in full screen mode, then event
is either 0, a , or a .
See .
If event
is a , then touchState
is a table. Otherwise, it is nil
.
See .
See
see
Name | Req | Type | Description |
---|---|---|---|
Name | Req | Type | Description |
---|---|---|---|
EdgeTX version | Action |
---|---|
Name | Type | Req | Description |
---|---|---|---|
Avail | Status | Comment | |
---|---|---|---|
EdgeTX version | Change |
---|---|
Name | Description | EdgeTX ver | Notes |
---|---|---|---|
Name | Description | EdgeTX ver | Notes |
---|---|---|---|
Name | Description | EdgeTX ver | Notes |
---|---|---|---|
Name | Description |
---|---|
Constant name | Logical switch function |
---|---|
Index | Unit | Defined as |
---|
Type | Description |
---|
Touch Event Name | Description |
---|
touchState fields | Description |
---|
r
integer
number between 0 (0x00) and 255 (0xFF) that expresses te amount of red in the color
g
interer
number between (0x00) and 255 (0xFF) that expresses te amount of green in the color
b
integer
number between (0x00) and 255 (0xFF)that expresses te amount of blue in the color
rgb
integer
number between 0 (0x00) and 16777215 (0xFFFFFF) that expresses the RGB value (0xFF0000=RED, 0x00FF00=GREEN, 0x0000FF=BLUE)
2.3.0
Introduced
inputID
number
input ID number. Zero based. Use 0 for Input 1, 7 for Input 8 etc.
lineID
number
line ID number. Zero based. Use 0 for line 1, 1 for line 2 etc.
BW radios
Color radios
2.4.0
Introduced
0
normal font, default precision for numeric
2.3
XXLSIZE
jumbo font
2.3
DBLSIZE
double size font
2.3
MIDSIZE
mid sized font
2.3
SMLSIZE
small font
2.3
BOLD
bold font
2.3
Only color displays. This is a font size on its own - cannot be combined with other font size flags.
SHADOWED
shadow font
2.3
Only color displays
INVERS
inverted display
2.3
BLINK
blinking text
2.3
LEFT
left justify
2.3
Default for most functions not related to bitmaps
RIGHT
right justify
2.3
CENTER
center justify
2.3
Only color displays
VCENTER
center vertically
2.5.0
Only color displays
PREC1
single decimal place
2.3
display with one decimal place (number 386 is displayed as 38.6)
PREC2
two decimal places
2.3
display with one decimal place (number 386 is displayed as 3.86)
GREY_DEFAULT
grey fill
2.3
TIMEHOUR
display hours
2.3
Only for lcd/drawTimer
FORCE
pixels will be black
2.3
ERASE
pixels will be white
2.3
SOLID
lines will appear soild
2.3
DOTTED
lines will appear dotted
2.3
LCD_W
width in pixels
LCD_H
height in pixels
LS_FUNC_NONE
-
LS_FUNC_VEQUAL
a = x
LS_FUNC_VALMOSTEQUAL
a ~ x
LS_FUNC_VPOS
a > x
LS_FUNC_VNEG
a < x
LS_FUNC_RANGE
LS_FUNC_APOS
a > |x|
LS_FUNC_ANEG
a < |x|
LS_FUNC_AND
AND
LS_FUNC_OR
OR
LS_FUNC_XOR
XOR
LS_FUNC_EDGE
Edge
LS_FUNC_EQUAL
a = b
LS_FUNC_GREATER
a > b
LS_FUNC_LESS
a < b
LS_FUNC_DIFFEGREATER
∆ ≥ x
LS_FUNC_ADIFFEGREATER
|∆| ≥ x
LS_FUNC_TIMER
Timer
LS_FUNC_STICKY
Sticky
0 | Raw unit (no unit) | UNIT_RAW |
1 | Volts | UNIT_VOLTS |
2 | Amps | UNIT_AMPS |
3 | Milliamps | UNIT_MILLIAMPS |
4 | Knots | UNIT_KTS |
5 | Meters per Second | UNIT_METERS_PER_SECOND |
6 | Feet per Second | UNIT_FEET_PER_SECOND |
7 | Kilometers per Hour | UNIT_KMH |
8 | Miles per Hour | UNIT_MPH |
9 | Meters | UNIT_METERS |
10 | Feet | UNIT_FEET |
11 | Degrees Celsius | UNIT_CELSIUS |
12 | Degrees Fahrenheit | UNIT_FAHRENHEIT |
13 | Percent | UNIT_PERCENT |
14 | Milliamp Hour | UNIT_MAH |
15 | Watts | UNIT_WATTS |
16 | Milliwatts | UNIT_MILLIWATTS |
17 | dB | UNIT_DB |
18 | RPM | UNIT_RPMS |
19 | G | UNIT_G |
20 | Degrees | UNIT_DEGREE |
21 | Radians | UNIT_RADIANS |
22 | Milliliters | UNIT_MILLILITERS |
23 | Fluid Ounces | UNIT_FLOZ |
24 | Ml per minute | UNIT_MILLILITERS_PER_MINUTE |
35 | Hours | UNIT_HOURS |
36 | Minutes | UNIT_MINUTES |
37 | Seconds | UNIT_SECONDS |
38 | Virtual unit | UNIT_CELLS |
39 | Virtual unit | UNIT_DATETIME |
40 | Virtual unit | UNIT_GPS |
41 | Virtual unit | UNIT_BITFIELD |
42 | Virtual unit | UNIT_TEXT |
COLOR | Displays a color picker, returns a color flag value |
BOOL | Displays a toggle/checkbox, value toggles between 0 and 1 |
STRING | Text input option, limited to 8 characters |
TIMER | Choice option, lets you pick from available timers |
SOURCE | Choice option, lets you pick from available sources (i.e. sticks, switches, LS) |
VALUE | Numerical input option, can specify default, min and max value |
TEXT_SIZE | Choice option, lets you pick from the available text sizes (i.e. small, large) |
ALIGNMENT | Choice option, lets you pick from available alignment options (i.e. left, center, right) |
EVT_TOUCH_FIRST | When the finger touches down on the screen |
EVT_TOUCH_TAP | If the finger leaves the screen after a quick tap |
EVT_TOUCH_BREAK | If the finger leaves the screen without tap or slide |
EVT_TOUCH_SLIDE | Repeats while the finger is sliding on the screen |
x, y | Current touch point |
startX, startY | Point where slide started |
slideX, SlideY | Movement since previous SLIDE event (or start of slide) |
swipeUp / swipeDown / swipeLeft / swipeRight | The field is present and equal to |
tapCount | Counts the number of consecutive taps |
Draw a combo box
@status current Introduced in 2.0.0
x,y
(positive numbers) top left corner position
w
(number) width of combo box in pixels
list
(table) combo box elements, each element is a string
idx
(integer) index of entry to highlight
flags
(unsigned number) drawing flags, the flags can not be combined:
BLINK
combo box is expanded
INVERS
combo box collapsed, text inversed
0 or not present
combo box collapsed, text normal
none
Only available on Taranis
Draw a simple gauge that is filled based upon fill value
@status current Introduced in 2.0.0, changed in 2.2.0
x,y
(positive numbers) top left corner position
w
(number) width in pixels
h
(number) height in pixels
fill
(number) amount of fill to apply
maxfill
(number) total value of fill
flags
(unsigned number) drawing flags
none
Draw a rectangle from top left corner (x,y) of specified width and height
@status current Introduced in 2.0.0, changed in 2.2.0
x,y
(positive numbers) top left corner position
w
(number) width in pixels
h
(number) height in pixels
flags
(unsigned number) drawing flags
t
(number) thickness in pixels, defaults to 1 (only on Horus)
none
Displays prevoiusly loaded bitmap at (x,y) and optionally scales it.
none
Omitting scale draws image in 1:1 scale and is faster than specifying 100 for scale parameter.
Name | Req | Type | Description |
---|---|---|---|
EdgeTX version | Action |
---|---|
bitmap
bitmapPointer
stored in variable pointer to a bitmap previously opened with Bitmap.open
x
integer
top coordinate
y
integer
left coordinate
scale
integer (0-100)
scale in percent ie. 50 divides size by two, 100 displays bitmap in original size, 200 doubles size.
2.3.0
Introduced
Draw an arc
@status current Introduced in 2.4.0
x,y
(positive numbers) coordinates of the center
r1,r2
(positive numbers) radii of the inside and outside of the annulus
start,end
(positive numbers) start and end of the annulus
none
Display a value formatted as time at (x,y)
@status current Introduced in 2.0.0, SHADOWED
introduced in 2.2.1
x,y
(positive numbers) starting coordinate
value
(number) time in seconds
flags
(unsigned number) drawing flags:
0 or not specified
normal representation (minutes and seconds)
TIMEHOUR
display hours
other general LCD flag also apply
SHADOWED
Horus only, apply a shadow effect
none
Draw a text representation of switch at (x,y)
@status current Introduced in 2.0.0
x,y
(positive numbers) starting coordinate
switch
(number) number of switch to display, negative number displays negated switch
flags
(unsigned number) drawing flags, only SMLSIZE, BLINK and INVERS.
none
Draw a line only inside a rectangle
@status current Introduced in 2.4.0
x1,y1,x2,y1
(positive numbers) coordinates of the start and end of the unclipped line
xmin,xmax,ymin,ymax
(positive numbers) the limits of the rectangle inside which the line is drawn
pattern
(FORCE, ERASE, DOTTED) please see Lcd functions overview
none
flags
(optional) please see and constants
Displays a bitmap pattern pie at (x,y)
@status current Introduced in 2.8.0
Parameters
bitmap
(pointer) point to a bitmap previously opened with Bitmap.open()
x,y
(positive numbers) starting coordinates
startAngle
Start angle
endAngle
End angle
flags
(optional) please see Lcd functions overview
Return value
none
Notice
Only available on Horus
Set a color for specific area
@status current Introduced in 2.2.0
area
(unsigned number) specific screen area in the list bellow
CUSTOM_COLOR
DEFAULT_COLOR
DEFAULT_BGCOLOR
FOCUS_COLOR
FOCUS_BGCOLOR
LINE_COLOR
CHECKBOX_COLOR
MENU_BGCOLOR
MENU_COLOR
MENU_TITLE_DISABLE_COLOR
HEADER_COLOR
ALARM_COLOR
HIGHLIGHT_COLOR
TEXT_DISABLE_COLOR
HEADER_COLOR
DISABLE_COLOR
CURVE_CURSOR_COLOR
TITLE_BGCOLOR
TRIM_BGCOLOR
TRIM_SHADOW_COLOR
MAINVIEW_PANES_COLOR
MAINVIEW_GRAPHICS_COLOR
MENU_BGCOLOR
HEADER_ICON_BGCOLOR
HEADER_CURRENT_BGCOLOR
MAINVIEW_PANES_COLOR
MAINVIEW_GRAPHICS_COLOR
OVERLAY_COLOR
BARGRAPH1_COLOR
BARGRAPH2_COLOR
BARGRAPH_BGCOLOR
CUSTOM_COLOR
color
(number) color in 5/6/5 rgb format. The following prefined colors are available
WHITE
GREY
LIGHTGREY
DARKGREY
BLACK
YELLOW
BLUE
RED
DARKRED
none
Only available on Colorlcd radios
Raises a pop-up on screen that shows a warning
@status current Introduced in 2.2.0
title
(string) text to display
event
(number) the event variable that is passed in from the Run function (key pressed)
"CANCEL"
user pushed EXIT key
Use only from stand-alone and telemetry scripts.
Raises a pop-up on screen that asks for confirmation
@status current Introduced in 2.2.0, changed from (title, event) to (title, message, event) in 2.3.8
title
(string) title to display
message
(string) text to display
event
(number) the event variable that is passed in from the Run function (key pressed)
"CANCEL"
user pushed EXIT key
Use only from stand-alone and telemetry scripts.
Avail | Status | Comment | |
---|---|---|---|
EdgeTX version | Change |
---|---|
BW radios
Color radios
2.4.0
Introduced
Avail | Status | Comment | |
---|---|---|---|
EdgeTX version | Change |
---|---|
Avail | Status | Comment |
---|
EdgeTX version | Change |
---|
BW radios
Color radios
2.4.0
Introduced
BW radios | active |
Color radios | active |
2.4.0 | Introduced |
Get Custom Function parameters
@status current Introduced in 2.0.0, TODO rename function
function
(unsigned number) custom function number (use 0 for CF1)
nil
requested custom function does not exist
table
custom function data:
switch
(number) switch index
func
(number) function index
name
(string) Name of track to play (only returned only returned if action is play track, sound or script)
value
(number) value (only returned only returned if action is not play track, sound or script)
mode
(number) mode (only returned only returned if action is not play track, sound or script)
param
(number) parameter (only returned only returned if action is not play track, sound or script)
active
(number) 0 = disabled, 1 = enabled
Avail | Status | Comment | |
---|---|---|---|
EdgeTX version | Change |
---|---|
Name | Type | Req | Description |
---|---|---|---|
Avail | Status | Comment | |
---|---|---|---|
EdgeTX version | Change |
---|---|
BW radios
Color radios
2.4.0
Introduced
chID
number
channel ID number. Zero based. Use 0 for Mix channel 1, 7 for Mix channel 8 etc.
lineID
number
line ID number. Zero based. Use 0 for line 1, 1 for line 2 etc.
BW radios
Color radios
2.4.0
Introduced
Get configuration for specified Mix
@status current Introduced in 2.0.0, parameters below multiplex
added in 2.0.13
channel
(unsigned number) channel number (use 0 for CH1)
line
(unsigned number) mix number (use 0 for first line(mix))
nil
requested channel or line does not exist
table
mix data:
name
(string) mix line name
source
(number) source index
weight
(number) weight (1024 == 100%) value or GVAR1..9 = 4096..4011, -GVAR1..9 = 4095..4087
offset
(number) offset value or GVAR1..9 = 4096..4011, -GVAR1..9 = 4095..4087
switch
(number) switch index
multiplex
(number) multiplex (0 = ADD, 1 = MULTIPLY, 2 = REPLACE)
curveType
(number) curve type (function, expo, custom curve)
curveValue
(number) curve index
flightModes
(number) bit-mask of active flight modes
carryTrim
(boolean) carry trim
mixWarn
(number) warning (0 = off, 1 = 1 beep, .. 3 = 3 beeps)
delayUp
(number) delay up (time in 1/10 s)
delayDown
(number) delay down
speedUp
(number) speed up
speedDown
(number) speed down
Get RF module parameters
Type
values:
0 NONE
1 PPM
2 XJT_PXX1
3 ISRM_PXX2
4 DSM2
5 CROSSFIRE
6 MULTIMODULE
7 R9M_PXX1
8 R9M_PXX2
9 R9M_LITE_PXX1
10 R9M_LITE_PXX2
11 R9M_LITE_PRO_PXX1
12 R9M_LITE_PRO_PXX2
13 SBUS
14 XJT_LITE_PXX2
subType
values for XJT_PXX1:
-1 OFF
0 D16
1 D8
2 LR12
@status current Introduced in 2.2.0
index
(number) module index (0 for internal, 1 for external)
nil
requested module does not exist
table
module parameters:
subType
(number) protocol index
modelId
(number) receiver number
firstChannel
(number) start channel (0 is CH1)
channelsCount
(number) number of channels sent to module
Type
(number) module type
if the module type is Multi additional information are available
protocol
(number) protocol number (Multi only)
subProtocol
(number) sub-protocol number (Multi only)
channelsOrder
(number) first 4 channels expected order (Multi only)
Return input data for given input and line number
@status current Introduced in 2.0.0, curveType/curveValue/carryTrim added in 2.3, inputName added 2.3.10, flighmode reworked in 2.3.11
input
(unsigned number) input number (use 0 for Input1)
line
(unsigned number) input line (use 0 for first line)
nil
requested input or line does not exist
table
input data:
name
(string) input line name
inputName
(string) input input name
source
(number) input source index
weight
(number) input weight
offset
(number) input offset
switch
(number) input switch index
curveType
(number) curve type (function, expo, custom curve)
curveValue
(number) curve index
carryTrim
(boolean) input trims applied
'flightModes' (number) bit-mask of active flight modes
Get Telemetry Sensor parameters
@status current Introduced in 2.3.0
sensor
(unsigned number) sensor number (use 0 for sensor 1)
nil
requested sensor does not exist
table
with sensor data:
type
(number) 0 = custom, 1 = calculated
name
(string) Name
unit
(number) See list of units in the appendix of the OpenTX Lua Reference Guide
prec
(number) Number of decimals
id
(number) Only custom sensors
instance
(number) Only custom sensors
formula
(number) Only calculated sensors. 0 = Add etc. see list of formula choices in Companion popup
Get model timer parameters
@status current Introduced in 2.0.0, name added in 2.3.6
timer
(number) timer index (0 for Timer 1)
nil
requested timer does not exist
table
timer parameters:
mode
(number) timer trigger source: off, abs, stk, stk%, sw/!sw, !m_sw/!m_sw
start
(number) start value [seconds], 0 for up timer, 0> down timer
value
(number) current value [seconds]
countdownBeep
(number) countdown beep (0 = silent, 1 = beeps, 2 = voice)
minuteBeep
(boolean) minute beep
persistent
(number) persistent timer
name
(string) timer name
Get Logical Switch parameters
@status current Introduced in 2.0.0
switch
(unsigned number) logical switch number (use 0 for LS1)
nil
requested logical switch does not exist
table
logical switch data:
v1
(number) V1 value (index)
v2
(number) V2 value (index or value)
v3
(number) V3 value (index or value)
and
(number) AND switch index
delay
(number) delay (time in 1/10 s)
duration
(number) duration (time in 1/10 s)
Avail | Status | Comment | |
---|---|---|---|
EdgeTX version | Change |
---|---|
func
(number) function index, see .
name
string
Model's name set.
filename
string
Name of
bitmap
string
Name of model's picture file located on SD Card in /IMAGES/ folder
extendedLimits
boolean
true
if extended limits are enabled otherwise false
jitterFilter
number
BW radios
Color radios
2.4.0
Introduced
2.6.0
added filename
to return value table.
2.8.0
added extendedLimits
, jitterFilter
, labels
to return value table.