Commit Graph

367 Commits

Author SHA1 Message Date
Thomas Watson a077e4a3ed AP_Scripting: introduce serial device simulation support
Allows a script to simulate a device attached via any serial protocol.
The script can read and write data and have it handled according to the
protocol as if exchanged over a serial port. The script can then do
protocol translation, data filtering and validation,
hardware-in-the-loop simulation, experimentation, etc., especially in
combination with the scripting protocol which lets the script itself
handle an attached device and so interpose any communication.
2024-06-27 12:00:18 +10:00
Thomas Watson 4df2a1bce7 AP_Scripting/generator: generate depends for manual functions on singletons 2024-06-27 12:00:18 +10:00
Thomas Watson c18f9f733e AP_Scripting: add writestring for serial
Enables more efficient scripting.
2024-06-27 12:00:18 +10:00
Thomas Watson d93aa15f2a AP_Scripting: refactor serial readstring
Using `luaL_Buffer` avoids the need for any heap allocation in the
common case (count <= 512 bytes) and avoids stressing out the system
heap for large reads, instead using the script heap.

Zero net flash usage change.
2024-06-27 12:00:18 +10:00
Thomas Watson e18449b1b8 AP_Scripting: use generic access userdata for serial ports
Adding another layer instead of just exposing UARTDriver bindings allows
substitution of the different functions for device simulation later.

Also take the opportunity to rework the docs a little.
2024-06-27 12:00:18 +10:00
Thomas Watson c37dba60de AP_Scripting/generator: allow disabling userdata creation from Lua
Passing -1 to the argument count for the `creation` tag (name does not
matter) will stop the generator from giving Lua a function to construct
that userdata. The C `new_<name>` function still works.
2024-06-27 12:00:18 +10:00
Andrew Tridgell d87404adfa AP_Scripting: added mcu_temperature binding 2024-06-27 10:11:14 +10:00
Iampete1 a322ba4f77 AP_Scripting: add binding for GPS `time_epoch_usec` 2024-06-18 10:37:13 +10:00
Iampete1 1c26c241f1 AP_Scripting: add uint64 userdata 2024-06-18 10:37:13 +10:00
Iampete1 574b9939a5 AP_Scripting: allow auto generation of uint32 operators 2024-06-18 10:37:13 +10:00
Iampete1 cb22a6389d AP_Scripting: add virtual class in docs to avoid need nil check warning 2024-06-07 06:30:22 +10:00
Iampete1 364419be81 AP_Scripting: docs: allow overload of manual bindings to allow documentation of optional arguments 2024-06-04 09:29:49 +10:00
Andrew Tridgell d305cb47f8 AP_Scripting: added GPS yaw binding
useful for seeing if switching to a GPS yaw source set in EK3 will work
2024-05-29 12:56:57 +10:00
Iampete1 713eda617f AP_Scripting: allow new flow control type in `set_flow_control` binding 2024-05-28 09:48:19 +10:00
Iampete1 003ccc38c6 AP_Scripting: generator allow more types for uint32 prams and dont add class keyword to globals 2024-05-21 09:42:22 +10:00
Iampete1 a4a8923e1e AP_Scripting: generator: add return count to manual bindings 2024-05-07 09:51:53 +10:00
Iampete1 6e75f7c80f AP_Scripting: update docs generator to show ap_objects as possibly nil 2024-05-07 09:51:53 +10:00
Peter Barker d1de760ee4 AP_Scripting: enable AP_Scheduler for CubeOrange-periph-heavy
... we use the scehduler in AP_Motors, which is compiled when making heavy-periph
2024-05-01 17:53:44 +10:00
Andrew Tridgell bac99dc7ac AP_Scripting: added bindings for AC_PrecLand 2024-03-06 09:39:51 +11:00
Randy Mackay f2b66fd179 AP_Scripting: add VisualOdom bindings 2024-02-28 18:52:37 +11:00
Peter Barker 53fd9056d8 AP_Scripting: use AP_ARMING_ENABLED and AP_COMPASS_ENABLED
... in place of periph-specific checks
2024-02-27 11:02:48 +11:00
Clyde McQueen b486c1cb46 AP_Scripting: expose sub rangefinder methods 2024-02-21 18:59:20 -03:00
Iampete1 5907e49cb1 AP_Scripting: ensure that all pass by refence values are initialized 2024-02-20 11:05:36 +11:00
Peter Barker 2263dced74 AP_Scripting use scheduler semaphore only if AP_SCHEDULER_ENABLED 2024-02-15 12:17:07 +11:00
Iampete1 46e4588cf7 AP_Scripting: add file system crc32 binding 2024-02-15 07:36:39 +11:00
Peter Barker 40f0001aea AP_BattMonitor: fix compilation when scripting in but scripted-battery out
Co-authored-by: Peter Hall <33176108+IamPete1@users.noreply.github.com>
2024-02-14 23:43:18 +11:00
Peter Barker 3f34eb12b0 AP_Scripting: include extern-hal line to fix compilation
this external line was coming in from a header file somewhere...
2024-02-13 20:57:12 +11:00
Peter Barker bb8047c026 AP_Scripting: correct compilation with AP_FILESYSTEM_FORMAT_ENABLED is false
Co-authored-by: Peter Hall <33176108+IamPete1@users.noreply.github.com>
2024-02-12 09:38:29 +11:00
Hayden Donald 52409d6765 AP_Scripting: Add gyro/accel consistency checks to lua
Added the accels_consistent and gyros_consistent methods to the lua bindings
2024-02-09 18:54:43 +11:00
Hayden Donald c259d11cd6 AP_Scripting: Add getting of gyro/accel values
Added the ability to get gyro/accel from LUA
2024-02-08 15:24:12 +11:00
Hayden Donald baf8958ee0 AP_Scripting: Add send_text to display binding
Added a notify:send_text and notify:release_text binding to override the text displayed on a display with custom text
2024-02-07 23:52:30 +00:00
Hayden Donald 14aea255e6 AP_Scripting: Add calibrating method
Add the calibrating method to lua so we can see if the device is currently calibrating
2024-02-07 18:36:33 +11:00
Hayden Donald 85a8b6c414 AP_Scripting: Add filesystem format
Added the ability to format the SD card from LUA
2024-02-07 18:35:36 +11:00
Peter Barker bed976a8fc AP_Scripting: add and use AP_BATTERY_ENABLED 2024-02-06 11:01:02 +11:00
Andrew Tridgell c84459f518 AP_Scripting: added reboot() binding to AP_Periph 2024-01-21 12:30:08 +11:00
Andrew Tridgell 9202a33ff4 AP_Scripting: added networking bindings and allow uart calls without GCS
this allows for useful lua scripts on non-heavy peripherals
2024-01-12 19:06:49 -08:00
Michael du Breuil ae256b168e AP_Scripting: Add bindings for jump to landing and abort in the mission 2024-01-09 10:55:06 +11:00
Bob Long 1ffda7ef3c AP_Scripting: add scripting backend
AP_BattMonitor_Scripting: whitespace consistency
2024-01-09 07:53:59 +11:00
Peter Mullen a83ed6b730 AP_Scripting: Add LUA interface to access Range Finder state 2024-01-02 11:31:02 +11:00
Tom Pittenger 47fdf2295c AP_Scripting: add bindings for ahrs.wind_alignment and ahrs.head_wind 2023-12-26 10:20:23 +11:00
Peter Barker 22c1019767 AP_Scripting: correct compilation when AP_RTC is compiled out 2023-12-12 14:35:25 +11:00
Iampete1 782605e7ea AP_Scripting: CANSensor: Add filtering of incoming frames
Co-authored-by: Andras Schaffer <eosbandi@gmail.com>
2023-12-12 11:32:04 +11:00
Andrew Tridgell 75217ec1e6 AP_Scripting: added readstring for uarts
this is much more efficient than reading a byte at a time
2023-12-12 07:42:15 +11:00
Andrew Tridgell ffb7328ede AP_Scripting: review fixes
thanks Pete!
2023-12-11 18:00:38 +11:00
Andrew Tridgell 90c12d4db3 AP_Scripting: added stat() binding for filesystem 2023-12-11 18:00:38 +11:00
Andrew Tridgell 1e1255c8f0 AP_Scripting: added sendfile() API on sockets 2023-12-11 18:00:38 +11:00
Andrew Tridgell f924497194 AP_Scripting: added poll bindings 2023-12-11 18:00:38 +11:00
Andrew Tridgell 3446ff78d7 AP_Scripting: added isdirectory() 2023-12-11 18:00:38 +11:00
Andrew Tridgell 9065baa329 AP_Scripting: added bindings for SocketAPM 2023-12-11 18:00:38 +11:00
Andy Piper b5ef11797b AP_Scripting: add success status to serialLED:send and serialLED:set_RGB 2023-11-20 19:22:20 +11:00