Commit Graph

1105 Commits

Author SHA1 Message Date
Andrew Tridgell 02fd1f3561 AP_Scripting: use cached in AHRS_switch example
and use EKF2/EKF3, more likely to be useful
2024-10-15 10:48:11 +11:00
Randy Mackay 73dfeac547 AP_Scripting: copter-slung-payload suppresses oscillation
Co-authored-by: Leonard Hall <leonardthall@gmail.com>
2024-10-04 09:25:56 +09:00
Randy Mackay bff288d498 AP_Scripting: mavlink_msgs global-position-int and heartbeat 2024-10-04 09:25:56 +09:00
Randy Mackay 51ec6dfd73 AP_Scripting: add copter-posoffset example script
Co-authored-by: Leonard Hall <leonardthall@gmail.com>
2024-10-04 09:25:56 +09:00
Randy Mackay 0c81f111fb AP_Scripting: add set_posvelaccel_offset binding
Co-authored-by: Leonard Hall <leonardthall@gmail.com>
2024-10-04 09:25:56 +09:00
Andrew Tridgell b6f20e3786 AP_Scripting: docs update 2024-10-01 10:45:10 +10:00
Andrew Tridgell 3bbde7c302 AP_Scripting: test update 2024-10-01 10:45:10 +10:00
Andrew Tridgell 6a16bce001 AP_Scripting: added bindings for IPv4 address/string
and make socket recv return the source address and port
2024-10-01 10:45:10 +10:00
Iampete1 902f1e6476 AP_Scripting: modules: MAVLink: update to latest version of generated code 2024-10-01 10:25:22 +10:00
Nick Exton 2989d623bd AP_Scripting: Add binding for AP_Camera::set_stream_information() 2024-10-01 08:18:54 +09:00
Nick Exton e6ac9c3108 AP_Scripting: Add binding for AP_Camera::set_camera_information() 2024-10-01 08:18:54 +09:00
Andrew Tridgell 88957235d2 Scripting: added Lat,Lon to aerobatics POSM/POST
this makes "map POSM POST" work on aerobatic scripts
2024-09-26 16:44:13 +10:00
Iampete1 4894675977 AP_Scripting: add binding for vehicle `set_target_rate_and_throttle` 2024-09-25 08:47:30 +10:00
timtuxworth bbd9148b4b AP_Scripting: example for use Location::AltFrame for guided_state.target_alt_frame 2024-09-24 22:51:02 +10:00
Peter Barker bb9a0a5b2f AP_Scripting: re-order initialiser lines so -Werror=reorder will work 2024-09-24 22:50:28 +10:00
Thomas Watson 8b63488431 AP_Scripting: remove dependency on tmpnam
tmpnam is never linked and not necessary, and naming it/redefining it
introduces problems on platforms that do have a definition.
2024-09-24 22:49:18 +10:00
Clyde McQueen 8b37100772 autotest: large outliers in sub terrain test have low sq 2024-09-23 19:14:34 +10:00
Peter Barker 83c9b32093 AP_Scripting: add bindings for the AP_TemperatureSensor 2024-09-22 20:34:33 +10:00
bugobliterator 7513281f65 AP_Scripting: add bindings get/set full mode for GPIO
allows setting alternate pin modes pin drive strengths etc.
2024-09-21 10:07:30 +10:00
Henry Wurzburg df90b640ca AP_Scripting:Add parameter controller applet 2024-09-18 13:10:26 +10:00
Peter Barker 12d8a4d543 AP_Scripting: adjust description of aux function 90 (EK3 Source Set 2024-09-16 22:34:34 +10:00
Andrew Tridgell cbba88fccd AP_Scripting: added 2nd supply voltage to SkyPower EFI driver
and accept both extended and 11-bit CAN
2024-09-14 09:24:03 +10:00
yuri-rage cd4501e62d AP_Scripting: add advance-wp.lua 2024-09-12 14:23:43 +10:00
Andrew Tridgell 53a4b5a843 AP_Scripting: add handle_external_position_estimate binding
can be used for offboard navigation systems
2024-09-12 06:58:57 +10:00
Peter Barker 222a26ee20 AP_Scripting: tweak conditions for scripting-requires-filesystem
AP_FILESYSTEM_READING_ENABLED isn't quite right as we can't read scripts from @SYS.
2024-09-10 11:47:37 +10:00
Peter Barker 777aab6e0c AP_Scripting: no warning if no ./scripts and no real filesystem
it is possible to build for boards without storage (so no Posix, no Fatafs), but still have scripts in ROMFS.

In this case we will use the backend AP_Filesystem_backend base class when doing file operations.  This will alway fail to open directories, so when we try to load scripts from SCRIPTS_DIRECTORY it will always fail.

This leads to a warning being emitted:

Lua: State memory usage: 2796 + 5227
AP: Lua: open directory (./scripts) failed
AP: hello, world
Time has wrapped

Which isn't great.

Detect we are working on this filesystem and don't warn.
2024-09-10 09:10:49 +10:00
Tatsuya Yamaguchi 29b9157a20 AP_Scripting: use SourceSetSelection enum class 2024-09-08 10:02:29 +10:00
Randy Mackay b46d22f08b AP_Scripting: minor docs fix 2024-09-04 08:37:08 +09:00
Randy Mackay 1df029a679 AP_Scripting: minor spelling fix 2024-09-04 08:37:08 +09:00
Randy Mackay ba9bb22c3c AP_Scripting: add camera-change-settings applet 2024-09-03 09:04:39 +09:00
Randy Mackay 79983944c6 AP_Scripting: change_camera_setting binding 2024-09-03 09:04:39 +09:00
Willian Galvani 616d74f1b0 AP_Scripting: add note about generating code for extension fields 2024-08-24 14:18:53 +01:00
Randy Mackay 0d568b500a AP_Scripting: message_interval example handles 0hz 2024-08-21 11:41:50 +09:00
Andrew Tridgell d3a1d515cb AP_Scripting: added TECS tuning to revert param script 2024-08-21 06:46:56 +10:00
timtuxworth 8a93c6a264 AP_Scripting: Bindings for crosstrack in Lua 2024-08-20 09:10:42 +10:00
Loki077 0c29d4280c AP_Scripting: AP_ESC_Telem method update
-Updated AP_ESC_Telem methods to use ESC_TELEM_MAX_ESCS instead of NUM_SERVO_CHANNELS.
- the place where the function returns bool adding skip check.
2024-08-19 21:16:41 +10:00
Loki077 46c98d6c95 AP_Scripting: added lua binding get_last_update for efi and esc 2024-08-19 21:16:41 +10:00
Peter Barker 3194fa1385 AP_Scripting: correct compilation when AP_SCRIPTING_SERIALDEVICE_ENABLED false 2024-08-13 10:43:29 +10:00
George Zogopoulos 9df4796b70 AP_Scripting: Typo fixes 2024-08-06 14:03:27 +10:00
Thomas Watson a164abaafb AP_Scripting: add REPL applet
Implements a reasonably comfortable REPL accessible over serial entirely
as a loadable script.

Also accessible over MAVLink using QGroundControl's MAVLink Console and
the new mavport module.
2024-08-06 09:08:04 +10:00
Thomas Watson 87d2b017aa AP_Scripting: add mavport module
Abstracts the MAVLink SERIAL_CONTROL message to be usable as a Lua port,
in particular the DEV_SHELL device supported by QGroundControl's MAVLink
Console.
2024-08-06 09:08:04 +10:00
Andrew Tridgell d48f9ef12c AP_Scripting: added example copter_deploy.lua 2024-08-03 14:29:51 +10:00
Andrew Tridgell ebad1631d7 AP_Scripting: added arm_force() and baro get_altitude_difference() 2024-08-03 14:29:51 +10:00
Hayden Donald 52ba8e8513 AP_Scripting: Change serial depends HAL_GCS to AP_SERIALMANAGER
Serial bindings were dependant on HAL_GCS_ENABLED but this is not ideal, it should be dependant on AP_SERIALMANAGER_ENABLED so that serial can function without GCS
2024-07-31 08:27:34 +10:00
Thomas Watson dc4d1bacdd AP_Scripting: adjust string metatable setup to fix sandbox integrity
In Lua, strings are the only type that come with a default metatable.
The metatable must be shared by all string objects, and it is set to be
the `string` library table each time that library is opened. In
Ardupilot's scripting engine, the last script to load then has access to
the string metatable as the library is opened fresh for each script, as
its `string` library will have been set to the metatable.

Therefore, if two scripts are loaded, A first and B second, and script B
executes e.g. `string.byte = "haha"`, then `string.byte()` and
`s:byte()` for script B are broken. Because the metatable is shared,
this also breaks `s:byte()` for script A, which violates the integrity
of the sandbox.

Fix the issue by disabling the metatable setup functionality when the
string libary is opened, then manually opening an additional copy of the
library (which won't be given to any script) and setting it as the
string metatable during intialization.

This will break any script that modifies the string metatable for
constructive purposes, but such a script could have been broken if it
weren't the only script running anyway.
2024-07-30 10:54:00 +10:00
Thomas Watson 3a834e83c7 AP_Scripting: reference script environment directly
Referencing the original function to run is of questionable value and
the only user uses it to grab the script environent from the upvalues.

Instead, use a reference to the script environment table directly.
2024-07-30 10:33:56 +10:00
Thomas Watson 15255a36e4 AP_Scripting: reference function to run separately
Some bits of the code in the require machinery use the `lua_ref` to
access the script environment. However, this can change after the script
is rescheduled and it returns an arbitrary function to run next.

Resolve this by introducing `run_ref` which is specifically a reference
to the function to run next. `lua_ref` is preserved for the script
lifetime.
2024-07-30 10:33:56 +10:00
Thomas Watson da006d427d AP_Scripting: add test for require() after rescheduling
It can end up broken due to incorrect assumptions about the executed
function's upvalues, which might change after rescheduling.
2024-07-30 10:33:56 +10:00
Thomas Watson 6acfc98cf4 AP_Scripting: factor out ap_object checker
Reduces flash usage.

Saves ~160B.
2024-07-30 09:55:25 +10:00
Thomas Watson 212256731f AP_Scripting: improve object allocation efficiency
Make new_X return the new object instead of having to grab it to
configure it.

Saves ~1.3K.
2024-07-30 09:55:25 +10:00