LUA Reference Guide
2.11
2.11
  • EdgeTX LUA Reference Guide
  • Overview
    • Lua Basics
    • LUA version and included libraries
      • io Library
    • Script Types
      • One-Time Scripts
      • Telemetry Scripts
      • Widget Scripts
      • Function Scripts
      • Mixes Scripts
    • Radios
      • BetaFPV
      • FlySky
      • FrSky
      • Jumper
      • Radiomaster
        • TX16S
    • Internal indexes
      • Source List
      • Switch Positions List
  • LUA API Reference
    • Constants
      • Color Constants
      • Flags and Pattern Constants
      • Key Event Constants
      • Logical Switch Function Constants
      • Screen Constants
      • Special Character Constants
      • Special Function Constants
      • Touch Event Constants
      • Widget Options Constants
      • Units
    • Display LCD
      • Lcd Functions Overview
      • lcd.clear
      • lcd.drawBitmap
      • lcd.drawChannel
      • lcd.drawCombobox(x, y, w, list, idx [, flags])
      • lcd.drawFilledRectangle(x, y, w, h [, flags])
      • lcd.drawGauge(x, y, w, h, fill, maxfill [, flags])
      • lcd.drawLine(x1, y1, x2, y2, pattern, flags)
      • lcd.drawNumber(x, y, value [, flags])
      • lcd.drawPixmap(x, y, name)
      • lcd.drawPoint(x, y)
      • lcd.drawRectangle(x, y, w, h [, flags [, t]])
      • lcd.drawScreenTitle(title, page, pages)
      • lcd.drawSource(x, y, source [, flags])
      • lcd.drawSwitch(x, y, switch, flags)
      • lcd.drawText(x, y, text [, flags])
      • lcd.drawTimer(x, y, value [, flags])
      • lcd.drawAnnulus(x, y, r1, r2, start, end [, flags])
      • lcd.drawArc(x, y, r, start, end [, flags])
      • lcd.drawCircle(x, y, r [, flags])
      • lcd.drawFilledCircle(x, y, r [, flags])
      • lcd.drawFilledTriangle(x1, y1, x2, y2, x3, y3 [, flags])
      • lcd.drawHudRectangle(pitch, roll, xmin, xmax, ymin, ymax [, flags])
      • lcd.drawLineWithClipping(x1, y1, x2, y2, xmin, xmax, ymin, ymax, pattern [, flags])
      • lcd.drawPie(x, y, r, start, end [, flags])
      • lcd.drawTriangle(x1, y1, x2, y2, x3, y3 [, flags])
      • lcd.getColor(area)
      • lcd.getLastLeftPos()
      • lcd.getLastPos()
      • lcd.getLastRightPos()
      • lcd.drawBitmapPattern(bitmap, x, y [, flags])
      • lcd.drawBitmapPatternPie(bitmap, x, y, startAngle, endAngle [, flags])
      • lcd.drawTextLines(x, y, w, h, text [, flags])
      • lcd.exitFullScreen()
      • lcd.invertRect(x, y, w, h [, flags])
      • lcd.refresh()
      • lcd.RGB
      • lcd.resetBacklightTimeout()
      • lcd.setColor(area, color)
      • lcd.sizeText(text [, flags])
      • popupConfirmation(title, message, event)
      • popupInput(title, event, input, min, max)
      • popupWarning(title, event)
      • GREY()
    • LVGL for Lua
      • Overview
      • Examples
      • Constants
      • API
      • lvgl.align
      • lvgl.arc
      • lvgl.box
      • lvgl.build
      • lvgl.button
      • lvgl.choice
      • lvgl.file
      • lvgl.circle
      • lvgl.clear
      • lvgl.color
      • lvgl.confirm
      • lvgl.dialog
      • lvgl.isAppMode
      • lvgl.isFullScreen
      • lvgl.exitFullScreen
      • lvgl.font
      • lvgl.getContext
      • lvgl.message
      • lvgl.momentaryButton
      • lvgl.hide
      • lvgl.hline
      • lvgl.image
      • lvgl.label
      • lvgl.line
      • lvgl.menu
      • lvgl.numberEdit
      • lvgl.page
      • lvgl.qrcode
      • lvgl.rectangle
      • lvgl.set
      • lvgl.setting
      • lvgl.show
      • lvgl.slider
      • lvgl.verticalSlider
      • lvgl.source
      • lvgl.switch
      • lvgl.textEdit
      • lvgl.timer
      • lvgl.toggle
      • lvgl.triangle
      • lvgl.vline
    • Model Functions
      • model.defaultInputs
      • model.deleteFlightModes
      • model.deleteInput
      • model.deleteInputs
      • model.deleteMix
      • model.deleteMixes
      • model.getCurve
      • model.getCustomFunction(function)
      • model.getFlightMode(index)
      • model.getGlobalVariable(index, flight_mode)
      • model.getInfo
      • model.getInput(input, line)
      • model.getInputsCount(input)
      • model.getLogicalSwitch(switch)
      • model.getMix(channel, line)
      • model.getMixesCount(channel)
      • model.getModule(index)
      • model.getOutput(index)
      • model.getSensor(sensor)
      • model.getTimer(timer)
      • model.insertInput(input, line, value)
      • model.insertMix(channel, line, value)
      • model.getSwashRing()
      • model.setSwashRing(params)
      • model.resetSensor(sensor)
      • model.resetTimer(timer)
      • model.setCurve(curve, params)
      • model.setCustomFunction(function, value)
      • model.setFlightMode(index, params)
      • model.setGlobalVariable(index, flight_mode, value)
      • model.setInfo(value)
      • model.setLogicalSwitch(switch, value)
      • model.setModule(index, value)
      • model.setOutput(index, value)
      • model.setTimer(timer, value)
    • Bitmap Functions
      • Bitmap.resize(bitmap, width, height)
      • Bitmap.toMask(bitmap)
      • Bitmap.getSize(name)
      • Bitmap.open(name)
    • Filesystem
      • chdir(directory)
      • del(file or directory)
      • dir(directory)
      • fstat(path)
    • Serial Ports
      • serialGetPower(port_nr)
      • serialRead([num])
      • serialSetPower(port_nr, value)
      • serialWrite(str)
      • setSerialBaudrate(baudrate)
    • System
      • defaultChannel(stick)
      • defaultStick(channel)
      • getGeneralSettings()
      • getVersion()
      • screenshot()
    • Key Inputs
      • getRotEncMode()
      • getRotEncSpeed()
      • killEvents(key)
    • LUA Scripts
      • getAvailableMemory()
      • getUsage()
      • loadScript(file [, mode], [,env])
    • Time
      • getDateTime()
      • getGlobalTimer()
      • getRtcTime()
      • getTime()
      • resetGlobalTimer([type])
    • Audio-Sound
      • playDuration(duration [, hourFormat])
      • playFile(name)
      • playHaptic(duration, pause [, flags])
      • playNumber(value, unit [, attributes])
      • playTone(frequency, duration, pause [, flags [, freqIncr]])
      • flushAudio()
    • Telemetry
      • getRSSI()
    • RF module
      • accessTelemetryPush()
      • crossfireTelemetryPop()
      • crossfireTelemetryPush()
      • ghostTelemetryPop()
      • ghostTelemetryPush()
      • sportTelemetryPop()
      • sportTelemetryPush()
      • getRAS()
      • multiBuffer(address[,value])
    • GPS
      • getTxGPS()
    • Variables
      • getFieldInfo(source)
      • getFlightMode(mode)
      • getLogicalSwitchValue(id)
      • getOutputValue(outputIndex)
      • getShmVar(id)
      • getSourceIndex(sourceName)
      • getSourceName(sourceIndex)
      • getSourceValue(source)
      • getSwitchIndex(positionName)
      • getSwitchName(switchIndex)
      • getSwitchValue(switchIndex)
      • getValue(source)
      • setShmVar(id, value)
      • setStickySwitch(id, value)
      • sources([first[, last]])
      • switches([first[, last]])
  • LUA API Programming
    • Data Exchange with the EdgeTX Model Setup
    • Drawing Flags and Colors
    • Init Function Syntax
    • Input Table Syntax
    • Loading Code Modules Dynamically
    • Output Table Syntax
    • Return Statement Syntax
    • Run Function Syntax
    • Saving Memory
    • Using Key and Touch Events
    • Advanced Topics
      • Debugging techniques
      • Lua data sharing across scripts
      • Speed/memory optimizaton tricks
  • Appendixes
    • Fonts
Powered by GitBook
On this page
  • Example
  • Parameters
  • Return value

Was this helpful?

Export as PDF
  1. LUA API Reference
  2. LUA Scripts

loadScript(file [, mode], [,env])

PreviousgetUsage()NextTime

Last updated 1 year ago

Was this helpful?

Load a Lua script file. This is similar to Lua's own API method, but it uses OpenTx's optional pre-compilation feature to save memory and time during load.

Return values are same as from Lua API loadfile() method: If the script was loaded w/out errors then the loaded script (or "chunk") is returned as a function. Otherwise, returns nil plus the error message.

@status current Introduced in 2.2.0

Example

  fun, err = loadScript("/SCRIPTS/FUNCTIONS/print.lua")
  if (fun ~= nil) then
     fun("Hello from loadScript()")
  else
     print(err)
  end

Parameters

  • file (string) Full path and file name of script. The file extension is optional and ignored (see mode param to control which extension will be used). However, if an extension is specified, it should be ".lua" (or ".luac"), otherwise it is treated as part of the file name and the .lua/.luac will be appended to that.

  • mode (string) (optional) Controls whether to force loading the text (.lua) or pre-compiled binary (.luac) version of the script. By default OTx will load the newest version and compile a new binary if necessary (overwriting any existing .luac version of the same script, and stripping some debug info like line numbers). You can use mode to control the loading behavior more specifically. Possible values are:

    • b only binary.

    • t only text.

    • T (default on simulator) prefer text but load binary if that is the only version available.

    • bt (default on radio) either binary or text, whichever is newer (binary preferred when timestamps are equal).

    • Add x to avoid automatic compilation of source file to .luac version.

      Eg: "tx", "bx", or "btx".

    • Add c to force compilation of source file to .luac version (even if existing version is newer than source file).

      Eg: "tc" or "btc" (forces "t", overrides "x").

    • Add d to keep extra debug info in the compiled binary.

      Eg: "td", "btd", or "tcd" (no effect with just "b" or with "x").

  • env (integer) See documentation for Lua function loadfile().

Return value

  • function The loaded script, or nil if there was an error (e.g. file not found or syntax error).

  • string Error message(s), if any. Blank if no error occurred.

Notice

Note that you will get an error if you specify mode as "b" or "t" and that specific version of the file does not exist (eg. no .luac file when "b" is used). Also note that mode is NOT passed on to Lua's loader function, so unlike with loadfile() the actual file content is not checked (as if no mode or "bt" were passed to loadfile()).

loadfile()