Commit Graph

36659 Commits

Author SHA1 Message Date
Eric Katzfey
9ef76de0c9 AP_HAL_QURT: Added support for dual mavlink streams 2024-07-31 10:00:35 +10:00
Peter Barker
d7caf1e6b5 AP_Math: remove method operator
remove the metho operator from the class.

This means this will no longer work:

Quaternion q{0,1,2,3};
q(5,6,7,8);

.... that used to set the quaternion componets, but is an odd / atypical syntax to use
2024-07-31 08:54:37 +10:00
Peter Barker
cac2c63e72 AC_PID: remove method operator
remove the metho operator from the class.

This means this will no longer work:

Quaternion q{0,1,2,3};
q(5,6,7,8);

.... that used to set the quaternion componets, but is an odd / atypical syntax to use
2024-07-31 08:54:37 +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
“Jane_ZeroOne”
d43dd5227a AP_HAL_ChibiOS: add ZeroOneX6 2024-07-30 20:07:31 +10:00
Iampete1
26c51a8002 AP_TemperatureSensor: add logging option to only log sensors with no source 2024-07-30 11:07:17 +10:00
Iampete1
600d9eb7a8 AP_BattMonitor: Sum: report average temperature 2024-07-30 11:00:49 +10:00
Iampete1
45647718cb AP_BattMonitor: ESC: integrate consumed mah if not provided by ESC 2024-07-30 10:59:17 +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
Peter Barker
95281e5c17 hwdef: turn monior thread back on on some boards
most of these boards probably don't need it, but to make a PR no-binary-output...
2024-07-30 10:52:36 +10:00
Peter Barker
90b2a2acaa hwdef: change HAL_NO_MONITOR_THREAD out for HAL_MONITOR_THREAD_ENABLED
... and use a default value for peripherals
2024-07-30 10:52:36 +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
Peter Barker
be377da6a4 GCS_MAVLink: add build option to not send RC_CHANNELS_RAW
we keep this around in case we break old OSD setups
2024-07-30 10:29:58 +10:00
Peter Barker
6f5ea5a5e9 RC_Channel: rework duplicate-rc-options check to use a Bitmask
just for the memory saving.

Co-authored-by: muramura <ma2maru@gmail.com>
2024-07-30 10:28:42 +10:00
Peter Barker
93704c573c SITL: add documentation for SIM_ENGINE_FAIL and SIM_ENGINE_MUL 2024-07-30 09:21:26 +09:00
Peter Barker
9397ece55a AC_AutoTune: make axis-type enum-class
Co-authored-by: Andrew Tridgell <andrew@tridgell.net>
2024-07-30 10:20:26 +10:00
Peter Barker
f3766b831a AP_HAL_ChibiOS: make include file mistakes nicer to interpret 2024-07-30 09:57:01 +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
Thomas Watson
3e05cd9729 AP_Scripting: factor out field access argument error
Saves ~830B.
2024-07-30 09:55:25 +10:00
Thomas Watson
575ed6224f AP_Scripting: improve binding index function efficiency
Move the string checks into the load functions to avoid duplicating it
for each binding.

Also sync up the return types to avoid an unnecessary conversion.

Saves ~1.5K.
2024-07-30 09:55:25 +10:00
Thomas Watson
e66d2a1495 AP_Scripting: remove redundant memsets
Matches current generator behavior.
2024-07-30 09:55:25 +10:00
Thomas Watson
837b17e82e AP_Scripting: more intelligently manage Lua stack
The Lua stack is guaranteed to have at least LUA_MINSTACK (default 20)
slots upon entry to C. Check to see if we might need more than that
minimum and only in that case call the function to check and resize the
stack. In virtually all cases the check can then be optimized away.

Additionally remove the redundant "Out of stack" message. Lua already
says "stack overflow" and a null message is valid.

Saves ~330B.
2024-07-30 09:55:25 +10:00
Thomas Watson
7212e35fb0 AP_Scripting: slightly improve codegen
Get singleton pointer closer to where it is used.

Saves ~170B.
2024-07-30 09:55:25 +10:00
Thomas Watson
60a9f1722c AP_DroneCAN: DNA_Server: unify bitmask handling
Put documentation with each bitmask and use the object directly. Node ID
range checks can be removed as the bitmask itself checks and we don't
expect to trip them.

Substantially cleans up the code.
2024-07-30 09:49:43 +10:00
Thomas Watson
56593574a9 AP_DroneCAN: DNA_Server: miscellaneous cleanup 2024-07-30 09:49:43 +10:00
Thomas Watson
5e0bb99dbb AP_DroneCAN: DNA_Server: fix handling of empty entry
Replaces the check for a CRC of 0 with a check that the hwid is 0.
Substantially reduces 1/256 chance that a particular node ID couldn't be
stored.
2024-07-30 09:49:43 +10:00
Thomas Watson
9aeab7b424 AP_DroneCAN: DNA_Server: use 0 as unknown ID
Slightly reduces flash usage and probably is clearer.
2024-07-30 09:49:43 +10:00
Thomas Watson
8d57533f1c AP_DroneCAN: DNA_Server: fix cases involving use of invalid node IDs 2024-07-30 09:49:43 +10:00
Thomas Watson
a9317b1a07 AP_DroneCAN: correct and validate allowed NODE range
Node IDs >= 128 don't exist, and IDs 126 and 127 are "reserved for
network maintenance tools" according to the spec.
2024-07-30 09:49:43 +10:00
Thomas Watson
485a9387b1 AP_DroneCAN: DNA_Server: clean up storage failure handling
The StorageManager read_block/write_block methods only return failure if
an out of bounds access is performed. Assert statically that this does
not happen.

Also remove the now-impossible failed to add node state.
2024-07-30 09:49:43 +10:00
Thomas Watson
cd8519321b AP_DroneCAN: DNA_Server: search for valid nodes after magic check
Ensures the occupation mask doesn't get populated with junk if the magic
is not valid.
2024-07-30 09:49:43 +10:00
Thomas Watson
c1f59186fa AP_DroneCAN: DNA_Server: make reset method private 2024-07-30 09:49:43 +10:00
Ian Burwell
6b4e11090c AP_Scripting: Add BQ40Z shutdown example
This example intercepts PREFLIGHT_REBOOT_SHUTDOWN COMMAND_LONG's and if
param1==2, it shuts down the BQ40Z smart battery BMS. Otherwise it
passes through the COMMAND_LONG as a COMMAND_INT (this required updating
the gcs:run_command_int to return a MAV_RESULT rather than a bool).
2024-07-30 09:40:10 +10:00
Ian Burwell
9d34fa2a5e AP_Scripting: Add I2C transfer bindings
This adds bindings for an I2CDevice's transfer() function, an example,
and removes the nil return hint from the get_device() docs as it never
actually returns nil.
2024-07-30 09:40:10 +10:00
Iampete1
838fbc2b3b AP_Param: Fix ENABLE_DEBUG enabled error with no embedded param 2024-07-30 08:51:09 +10:00
Bob Long
64fc60ce32 AP_HAL_SITL: initialize rcout safety state
This allows BRD_SAFETY_DEFLT=1 to work correctly for SITL.
2024-07-30 08:44:31 +10:00
BLash
d7ecf5fbc5 AP_ExternalAHRS_VectorNav: Consolidate EAH3 definition to single method
Resolve SITL failures due to multiply defined logger message by pulling the call to a single method
2024-07-29 15:52:29 +10:00
BLash
1d1bb5724e AP_ExternalAHRS_VectorNav: Address review comments
Remove unnecessary header
Switch parameters to default initialization
Change pointer casting to prevent a const_cast, and remove doubled sync byte when echoing ASCII messages
Fix Valgrind report by preventing use of nmea_printf on buffers which may not be null-terminated
2024-07-29 15:52:29 +10:00
BLash
50980ee03e AP_ExternalAHRS_VectorNav: Update SIM to match new message definitions
Redefine messages to 3 INS packets, and send as appropriate
Resolve SITL failures due to too-long logger message headers
2024-07-29 15:52:29 +10:00
BLash
d4ca5fe868 AP_ExternalAHRS_VectorNav: Split IMU and EKF message
In AHRS Mode, split the single message to an IMU packet and an AHRS packet; in EKF Mode, split the two messages into an IMU message, an EKF packet, and a GNSS packet.
Simplify message header definition to consolidate and eliminate the need for static asserts
Update healthy logic and use to represent new packet structure
Replace EAH3 message with messages per-packet
Add Ypr as configured output in the EKF message
2024-07-29 15:52:29 +10:00
George Zogopoulos
e227187e72 AP_TECS: Converted parameter TKOFF_MODE to TKOFF_OPTIONS 2024-07-29 15:50:32 +10:00
George Zogopoulos
b163e13964 AP_TECS: Fixes to reset state
These concern the TAKEOFF flight stage and address #27147.

* Logging metadata fixes
* Disabled continuous TECS reset during takeoff
* Fixed bug in reached_speed_takeoff calculation
* Limited SPDWEIGHT=2 to only first part of takeoff climb
* _post_TO_hgt_offset set to constant
* Takeoff I-gain now defaults to 0 and is used
* Use at least TRIM_THROTTLE during the climb
* Updated description of TECS_TKOFF_IGAIN with new behaviour
* Forced max throttle while below TKOFF_LVL_ALT
* Added throttle constraints in no-airspeed mode

Additionally, set_min_throttle() has been created, that allows one to
set the minimum TECS throttle for the next update_pitch_throttle() loop.
Additionally, the throttle limits system has been reworked. TECS will
receive external throttle limits from Plane and will always take them
into account and respect them.
2024-07-29 15:50:32 +10:00
cuav-chen2
08c8ef379b HAL_ChibiOS: Added support for CUAV-7-Nano flight controller 2024-07-29 12:25:53 +10:00
Peter Barker
317fab2f19 AP_Mission: add and use an option_is_set method 2024-07-29 10:37:52 +10:00
Thomas Watson
bbde876353 hwdef: remove EKF opinion from FlywooF745
No effect as lines have always been commented out, but not useful and
EKF2 is not something to encourage.

Verified no compiler output change.
2024-07-29 09:32:22 +10:00
Peter Barker
16c2e23ee7 AP_Mount: allow AP_MOUNT_BACKEND_DEFAULT_ENABLED to be overridden 2024-07-28 12:00:02 +10:00
Peter Barker
debf3cb28e hwdef: SpeedyBeeF405WING: restrict mount support to the servo gimbal 2024-07-28 12:00:02 +10:00