<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.simtx.net/index.php?action=history&amp;feed=atom&amp;title=Lua_action_API</id>
	<title>Lua action API - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.simtx.net/index.php?action=history&amp;feed=atom&amp;title=Lua_action_API"/>
	<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=Lua_action_API&amp;action=history"/>
	<updated>2026-08-06T11:38:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://wiki.simtx.net/index.php?title=Lua_action_API&amp;diff=570&amp;oldid=prev</id>
		<title>Clanker: Add and update user documentation for Lua extensions and the catalog</title>
		<link rel="alternate" type="text/html" href="https://wiki.simtx.net/index.php?title=Lua_action_API&amp;diff=570&amp;oldid=prev"/>
		<updated>2026-08-06T09:12:26Z</updated>

		<summary type="html">&lt;p&gt;Add and update user documentation for Lua extensions and the catalog&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;An &amp;#039;&amp;#039;&amp;#039;action&amp;#039;&amp;#039;&amp;#039; is a tool run explicitly from &amp;#039;&amp;#039;&amp;#039;Extensions&amp;#039;&amp;#039;&amp;#039; &amp;gt; &amp;#039;&amp;#039;&amp;#039;Tools&amp;#039;&amp;#039;&amp;#039;. It can read or change documented transmitter settings, show a status or message, and start or stop transmissions.&lt;br /&gt;
&lt;br /&gt;
== Declaration ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
simtx.action {&lt;br /&gt;
  name = &amp;quot;Quick Tune&amp;quot;,&lt;br /&gt;
  description = &amp;quot;Applies a frequency, power, and modulation.&amp;quot;,&lt;br /&gt;
  controls = {&lt;br /&gt;
    simtx.controls.text(&amp;quot;frequency&amp;quot;, {default = &amp;quot;7100000&amp;quot;}),&lt;br /&gt;
    simtx.controls.slider(&amp;quot;power&amp;quot;, {min = 1, max = 1000, default = 100}),&lt;br /&gt;
  },&lt;br /&gt;
  run = function(app)&lt;br /&gt;
    local values = app:controls()&lt;br /&gt;
    app:apply {&lt;br /&gt;
      [&amp;quot;rf.frequencyHz&amp;quot;] = values.frequency,&lt;br /&gt;
      [&amp;quot;rf.powerWatts&amp;quot;] = values.power,&lt;br /&gt;
      [&amp;quot;rf.modulation&amp;quot;] = &amp;quot;USB&amp;quot;,&lt;br /&gt;
    }&lt;br /&gt;
    app:status(&amp;quot;Quick Tune applied&amp;quot;)&lt;br /&gt;
  end,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;simtx.tool&amp;lt;/code&amp;gt; is an alias of &amp;lt;code&amp;gt;simtx.action&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; fields are required. &amp;lt;code&amp;gt;action&amp;lt;/code&amp;gt; may be used as an alias of &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;controls&amp;lt;/code&amp;gt; are optional. The application displays the controls before running the callback.&lt;br /&gt;
&lt;br /&gt;
== Action context ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Method !! Effect or result&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:control(id)&amp;lt;/code&amp;gt; || Value of one action control, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:controls()&amp;lt;/code&amp;gt; || Snapshot table of all action controls.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:get(key)&amp;lt;/code&amp;gt; || Current value of one documented transmitter setting, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; for an unknown key.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:settings()&amp;lt;/code&amp;gt; || Snapshot table containing every documented setting.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:set(key, value)&amp;lt;/code&amp;gt; || Changes one documented setting.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:apply(table)&amp;lt;/code&amp;gt; || Changes each setting in a table.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:status(message)&amp;lt;/code&amp;gt; || Places a message in the transmitter status line.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:notify(message)&amp;lt;/code&amp;gt; || Shows an informational dialog.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:start()&amp;lt;/code&amp;gt; || Starts a transmission with the current form values.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;app:stopAll()&amp;lt;/code&amp;gt; || Stops all transmitter sessions.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Setting values may be &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;, Boolean, number, or string. Unknown keys and invalid values produce an error.&lt;br /&gt;
&lt;br /&gt;
== Setting keys ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Group !! Keys !! Value&lt;br /&gt;
|-&lt;br /&gt;
| Station || &amp;lt;code&amp;gt;station.callsign&amp;lt;/code&amp;gt; || String&lt;br /&gt;
|-&lt;br /&gt;
| Station || &amp;lt;code&amp;gt;station.lat&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;station.lon&amp;lt;/code&amp;gt; || Number&lt;br /&gt;
|-&lt;br /&gt;
| RF basics || &amp;lt;code&amp;gt;rf.frequencyHz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.powerWatts&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.bandwidthHz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.lowCutHz&amp;lt;/code&amp;gt; || Number&lt;br /&gt;
|-&lt;br /&gt;
| RF selection || &amp;lt;code&amp;gt;rf.radioPreset&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.modulation&amp;lt;/code&amp;gt; || String&lt;br /&gt;
|-&lt;br /&gt;
| RF bandwidth || &amp;lt;code&amp;gt;rf.autoBandwidth&amp;lt;/code&amp;gt; || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| RF character || &amp;lt;code&amp;gt;rf.finalDriveDb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.paHeadroomDb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.audioCompressionDb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.paSoftness&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.paAmPmDeg&amp;lt;/code&amp;gt; || Number&lt;br /&gt;
|-&lt;br /&gt;
| RF suppression || &amp;lt;code&amp;gt;rf.carrierLeakDb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.sidebandSuppressionDb&amp;lt;/code&amp;gt; || Number&lt;br /&gt;
|-&lt;br /&gt;
| RF oscillator and noise || &amp;lt;code&amp;gt;rf.frequencyOffsetHz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.mainsHumDb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.mainsHumHz&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.txNoiseFloorDb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.oscillatorPhaseNoiseDb&amp;lt;/code&amp;gt; || Number&lt;br /&gt;
|-&lt;br /&gt;
| Mode-specific RF || &amp;lt;code&amp;gt;rf.amModulationIndex&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.paSupplySagDb&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.cwKeyRiseMs&amp;lt;/code&amp;gt; || Number&lt;br /&gt;
|-&lt;br /&gt;
| Source || &amp;lt;code&amp;gt;source.type&amp;lt;/code&amp;gt; || String&lt;br /&gt;
|-&lt;br /&gt;
| Source || &amp;lt;code&amp;gt;source.gain&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;source.tone&amp;lt;/code&amp;gt; || Number&lt;br /&gt;
|-&lt;br /&gt;
| Source || &amp;lt;code&amp;gt;source.repeat&amp;lt;/code&amp;gt; || Boolean&lt;br /&gt;
|-&lt;br /&gt;
| Antenna || &amp;lt;code&amp;gt;antenna.type&amp;lt;/code&amp;gt; || String&lt;br /&gt;
|-&lt;br /&gt;
| Antenna || &amp;lt;code&amp;gt;antenna.length&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;antenna.height&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;antenna.azimuth&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;antenna.feedlineLossDb&amp;lt;/code&amp;gt; || Number&lt;br /&gt;
|-&lt;br /&gt;
| Appearance || &amp;lt;code&amp;gt;ui.theme&amp;lt;/code&amp;gt; || String&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Built-in modulation values are &amp;lt;code&amp;gt;AM_DSB_FC&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AM_DSB_SC&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;USB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LSB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CW&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;NFM&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WFM&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;IQ&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WSPR&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;FT8&amp;lt;/code&amp;gt;. A Lua modulation may be selected with &amp;lt;code&amp;gt;lua:&amp;lt;/code&amp;gt; followed by its display name.&lt;br /&gt;
&lt;br /&gt;
Source type values are &amp;lt;code&amp;gt;AUDIO_STREAM&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MICROPHONE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;WHITE_NOISE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PIPEWIRE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PIPEWIRE_STEREO&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;GNU_RADIO_IQ&amp;lt;/code&amp;gt;. Antenna type values are &amp;lt;code&amp;gt;DIPOLE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VERTICAL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;YAGI_3EL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;YAGI_5EL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LOOP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;BEVERAGE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;LONGWIRE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;INVERTED_V&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;EFHW_32M_49_1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Radio preset values accepted by &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt; are &amp;lt;code&amp;gt;GENERIC_HF&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CLEAN_LAB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ICOM_IC_7300&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ICOM_IC_705&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ICOM_IC_7610&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;YAESU_FTDX10&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ELECRAFT_KX3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;YAESU_FT_817&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;KENWOOD_TS_590&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;XIEGU_G90&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;USDX_QRP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;MIL_MANPACK&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VINTAGE_TUBE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;COLLINS_KWM2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;BOAT_ANCHOR_AM&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;CB_EXPORT_AM&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;VHF_HANDHELD_FM&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;HOME_BREW_CLASS_E_AM&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;DIRTY_DRIVER&amp;lt;/code&amp;gt;. Reading &amp;lt;code&amp;gt;rf.radioPreset&amp;lt;/code&amp;gt; returns the display name shown in [[Radio Presets]].&lt;br /&gt;
&lt;br /&gt;
The system theme is named &amp;lt;code&amp;gt;System&amp;lt;/code&amp;gt;. Other theme values are installed Lua theme names.&lt;br /&gt;
&lt;br /&gt;
The aliases &amp;lt;code&amp;gt;station.latitude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;station.longitude&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.frequency&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.power&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;rf.bandwidth&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;rf.auto_bandwidth&amp;lt;/code&amp;gt; are accepted by &amp;lt;code&amp;gt;get&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Category:Lua extensions]]&lt;/div&gt;</summary>
		<author><name>Clanker</name></author>
	</entry>
</feed>