Attendees (unique) : 10
UTC0802
master ← davidbitton:local/cdc-ecm-spike
opened 08:52PM - 01 Jul 26 UTC
## Summary
Experimental **opt-in** USB **CDC-ACM + CDC-ECM** composite and an *… *AP_Networking** USB-ECM lwIP netif for static IPv4 over USB, exposed as a separate board target **`MatekH743-ECM`**.
- Stock **`MatekH743`** remains **dual CDC-ACM** (OTG2 in `SERIAL_ORDER`); ECM is **not** enabled by default.
- Lab board: `HAL_WITH_USB_CDC_ECM`, USB PID **`0x574E`**, product string `MatekH743-ECM`, shared **ACM-only** bootloader (`USE_BOOTLOADER_FROM_BOARD MatekH743`).
- Backend: `AP_NETWORKING_BACKEND_USB_ECM` (default off unless board defines it).
- Defaults (`defaults.parm`): `NET_ENABLE`, static-friendly DHCP off, **`NET_P1` UDP server / MAVLink2 / port 14550** so the FC does **not** need the GCS IP (GCS uses `udpout:FC_IP:14550` / QGC target host).
### HIL (author)
- Matek H743-Mini, macOS host NIC on ECM, static `192.168.144.14` (FC) / host peer on same `/24`.
- ICMP ping, MAVProxy `udpout:192.168.144.14:14550`, QGroundControl to same (UDP client → FC server).
- ACM MAVLink still works on the composite.
### Non-goals / notes for reviewers
- Not enabled in bootloader.
- F4 / insufficient EP budget out of scope (compile guards).
- macOS may show the USB iMACAddress as the interface MAC; host may need a **distinct** `lladdr` for reliable ARP (lab note).
- Frame reassembly accounts for hosts that pad to MPS without ZLP (ethertype / IP length heuristics).
- Local design notes under `local/cdc-ecm/` are **not** in this PR (gitignored author docs).
## Test plan
- [ ] `./waf configure --board MatekH743 && ./waf copter` (regression, no ECM)
- [ ] `./waf configure --board MatekH743-ECM && ./waf copter`
- [ ] Flash MatekH743-ECM; USB identity PID `0x574E`; single ACM + ECM NIC on host
- [ ] MAVProxy on ACM
- [ ] Host static IP on ECM iface; ping FC `NET_IPADDR` (default `192.168.144.14`)
- [ ] GCS via UDP client to `FC_IP:14550` with `NET_P1_TYPE=2` / protocol MAVLink2 (defaults)
- [ ] Confirm stock MatekH743 image still dual-ACM / no ECM symbols when ECM off
Draft for early review / direction; happy to split USB descriptors vs networking backend if preferred.
Andrew : We need to compare build size against the PPP build.
Also what is the achievable bandwidth.
PPP is the natural thing to compare against. It needs to beat PPP in some way in order to be considered for merging.
It is crucial to know if we need special configuration in the host to connect to the device. If it works plug-and-play, then this will also be a benefit.
UTC0810
master ← RomanKalinchuk:add-FlyFishRCF405-board
opened 01:09PM - 01 Jul 26 UTC
### Summary
Add hardware support for the FlyFishRC F405 flight controller bas… ed on the STM32F405xx MCU.
### Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [ ] Tested manually, description below (e.g. SITL)
- [x] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
Tested ArduRover firmware on hardware. Board boots, USB enumerates, and connects successfully to QGroundControl.
### Description
New board definition for the FlyFishRC F405 flight controller.
Hardware:
- MCU: STM32F405xx, no external oscillator (HSI-based PLL)
- IMU: ICM-42688-P (SPI1, CW90 rotation)
- Barometer: DPS310 (I2C1, 0x76)
- OSD: MAX7456 (SPI2)
- Dataflash: SPI3
- 8 PWM/DShot outputs (TIM1, TIM3, TIM8)
- 1 NeoPixel output (TIM2)
- 6 UARTs (USART1 RC, USART6 GPS)
- USB CDC (OTG_FS)
- Battery voltage and current sensing
- Buzzer, PINIO (VTX/camera switch)
Andy : I’ll review it, it slipped past me.
UTC0812
master ← andyp1per:pr-msp-power
opened 07:15PM - 12 Apr 25 UTC
### Summary
Control an MSP video transmitter (HDZero, ~~Walksnail~~, ELRS bac… kpack) from the flight controller — band/channel/frequency, power and pitmode — and report status to HD goggles.
### Classification & Testing
- [x] Checked by a human programmer
- [x] Automated test(s) verify changes (autotest `MSPVTXConfig`, `MSPDisplayPortVTXConfig`)
- [x] Tested manually, description below (SITL)
- [x] Tested on HDZero hardware (also tested on Walksnail and DJI but these appear not to support control)
Tested on an HDZero air unit + goggles on a TBS_LUCID_H7: band/channel, power and pitmode are all settable from the FC and confirmed by retuning the VRX; goggle-side channel changes coexist (push-on-change).
### Description
Adds MSP as a VTX control transport alongside CRSF/SmartAudio/Tramp, selected per-transport via the new `VTX_TYPES` parameter.
Two MSP VTX models are handled:
- **ELRS-backpack style** — the FC sends `MSP_SET_VTX_CONFIG` to the VTX.
- **HDZero/betaflight style** — the VTX is the MSP master. It polls the FC and, on finding a `"BTFL"` FC reporting `deviceIsReady=0`, uploads its own config and power table, then stops polling and expects the FC to push `MSP_VTX_CONFIG` on change. The FC reports not-ready until that handshake completes, then pushes changes (repeated for delivery, as the air unit doesn't report state back to confirm).
The FC identifier now matches the selected OSD symbol set (`BTFL`/`INAV`/`ARDU`); selecting `DISPLAYPORT_BTFL_SYMBOLS` is what enables HDZero VTX control. `MSP_OSD_CANVAS` is answered so HD goggles size their grid, and an `MSP_OPTIONS` bit holds the VTX at high power when disarmed.
Peter : Do we lie about arming stage?
Andy : By default the chip will look at the arming state to go from low power to high power. So we lie in order to keep a high power output always.
P : It’s good that this feature is opt-in.
Merged!
UTC0816
master ← andyp1per:pr-sitl-blheli
opened 01:44PM - 24 May 26 UTC
### Summary
Make AP_BLHeli build under SITL and register the SERVO_BLH_* parame… ters, so the ESC / motor-direction tooling that depends on them can be exercised in the simulator instead of only on hardware.
### Classification & Testing
- [x] Checked by a human programmer
- [x] Non-functional change (on hardware: no behaviour change)
- [x] Tested manually, description below (e.g. SITL)
Built `arducopter` for SITL: AP_BLHeli now compiles and links, and the `SERVO_BLH_*` parameters are present in the binary.
### Description
Two changes:
- AP_BLHeli previously only built for ChibiOS. The MSP_UID handler dereferenced `UDID_START` unconditionally and the motor-mask debug line used a `%08lx` format on a `uint32_t`, neither of which is portable to x86/SITL. Guard the UID reply (answer with zeros where there is no fixed UID address) and cast the mask. On ChibiOS `UDID_START` is defined, so that path is unchanged.
- Define `HAL_SUPPORT_RCOUT_SERIAL` for SITL so AP_BLHeli compiles and the `SERVO_BLH_*` params register. The serial passthrough and DShot reversing are no-ops under SITL.
P : It doesn’t build, let’s take a look and rebase.
UTC0818
master ← andyp1per:pr-rng-aglkf-terrain
opened 10:22PM - 06 Jun 26 UTC
### Summary
When flying optical flow with the IMU-aided AGL KF enabled, the EKF… 's rangefinder height-source switch keys off the main filter's baro-corrupted altitude and only engages during takeoff and landing, so altitude rides baro through cruise and hover. Indoors, where baro is wrecked by propwash, that lets the height estimate diverge by metres while a clean rangefinder reading sits unused. This routes the switch through the AGL KF, and fuses the AGL KF height as the rangefinder observation.
### Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [x] Tested manually, description below (SITL Replay against real indoor logs)
- [x] Tested on hardware
- [x] Logs available on request
Replayed two real indoor optical-flow flights (`--force-ekf3`, EKF3 replay data captured in-flight) comparing the as-flown core against a replayed core with the switch changes. Altitude error vs the rangefinder ground truth:
| | as flown (baro in hover) | with this PR |
|---|---|---|
| flight A: std / max | 1.14 m / 5.40 m | 0.20 m / 0.66 m |
| flight B: std / max | 1.38 m / 2.96 m | 0.30 m / 0.95 m |
In flight A the as-flown estimate ballooned to +5.7 m on a vehicle physically holding under 1.2 m (rangefinder, which never read out-of-range-high); with the PR it tracks the rangefinder.
### Description
Builds on the AGL KF (`EK3_OPTIONS` AglKfForOptflow), which already provides a reliable, baro-independent height above ground for optical-flow velocity scaling. Three related changes to `selectHeightForFusion`:
- Use the AGL KF height for the switch decision (the up/down threshold) instead of `terrainState - position.z`, which depends on the main filter's vertical state and is corrupted by baro ground effect. This removes a feedback loop where bad baro raised the estimated height, tripped the upper threshold, and locked the rangefinder out, leaving baro uncorrected.
- Allow the rangefinder to engage outside takeoff/landing. The switch needs the vehicle's `terrain_hgt_stable` flag, which Copter only sets while taking off or landing, so a steady hover never engages it. When the AGL KF is enabled and valid, treat terrain as stable for this decision. The existing `EK3_RNG_USE_SPD` speed gate still confines rangefinder height to slow flight, so altitude over varying terrain in cruise is unaffected.
- Fuse the AGL KF height as the rangefinder observation. When the rangefinder is the active height source, fuse the de-glitched `aglKfH` (with the AGL KF covariance as the observation noise, which already folds in terrain-gradient uncertainty) in place of the raw tilt-corrected reading, so a single spurious range sample no longer feeds straight into the main filter's altitude. This is a refinement of the same path added after the replay study above, not separately quantified in the table.
All three are gated on the AglKfForOptflow option, so with the option off (the default) behaviour is unchanged. Reviewer note on the obvious alternative: setting the rangefinder as the primary `POSZ` source also fixes the symptom in replay, but it bypasses this switch entirely, has no baro fallback, and assumes flat terrain. This keeps baro primary and only leans on the rangefinder where the AGL KF vouches for it.
Andy : We are have a new KF for the optical flow distance, but to switch to another hight source we are still using the raw rangefinder measurements.
We should use the KF output.
A : terrainHgtStable is the wrong trigger to start fusion of optical flow.
It broadens when EKF accepts optical flow data, which is likely to cause problems.
Andy : This is mostly for indoor flying.
P : Then let’s have a boolean in the EKF that flags this.
R : I think it would be holding position well over a sloped surface.
A : Sure, but the EKF HAGL estimate deriving from optical flow might still be wrong, when flying above a slope.
I can test it over a slope.
UTC0838
master ← lectronuser:development
opened 11:46AM - 12 Jun 26 UTC
### Summary
New board (Lectron Pi5-H7 Autopilot) has been added to the system… .
- Onboard sensors have been enabled.
- Sensor orientations have been adjusted.
### Classification & Testing (check all that apply and add your own)
- [X] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [X] Tested manually, description below (e.g. SITL)
- [X] Tested on hardware
- [ ] Logs attached
- [X] Logs available on request
### Description
New flight controller board featuring Raspberry Pi CM5 + Hailo AI module.
- Triple IMU: 2x ICM-42670-P + BMI270
- BMM350 magnetometer, BMP390 barometer
- 10/100 Ethernet with MAVLink on UDP 14550
- USB-C device mode
<img width="671" height="592" alt="Screenshot from 2026-06-09 11-13-17" src="https://github.com/user-attachments/assets/7f8f399d-a5af-415c-8de9-e737b80d42da" />
### Context
- Main Page: https://lectrontech.com/
- Technical Documentation Page: https://lectronuser.github.io/Lectron-Doc-Center/md/raspberry/
Approved!
UTC0847
P : Bob Long pointed out that a back-transition into QLOITER has started swirling around the target.
The rate PIDs seem to be happy, yet we have a lot of roll error.
UTC0849
master ← peterbarker:pr-claude/wnull-dereference
opened 03:10AM - 24 Jul 26 UTC
### Summary
Adds a compiler flag which tells the compiler to fail compilation… where it thinks there might be a nullptr deref.
### Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [ ] Tested manually, description below (e.g. SITL)
- [ ] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
~~(I'm currently compiling everything, results will go in here at some stage, but generally this saves bytes - and not just because we're removing a method, but because the compiler's optimisation *improves* with the extra checks!)~~
```
----------------------- --------- -------------- ----- ---------- ------ ----- ---------- ----- ----- ----
Board AP_Periph antennatracker blimp bootloader copter heli iofirmware plane rover sub
CubeOrange-periph-heavy * *
Durandal -152 -152 * -152 -152 -160 -160 -152
Hitec-Airspeed * *
KakuteH7-bdshot -152 -152 * -152 -160 -160 -160 -152
MatekF405 -136 -136 * -144 -144 -136 -144 -136
Pixhawk1-1M-bdshot -128 -136 -136 -136 -144 -136 -136
SITL_x86_64_linux_gnu 0 0 0 -4096 -4096 0 0
YJUAV_A6SE -144 -144 * -144 -144 -152 -160 -144
f103-QiotekPeriph * *
f303-MatekGPS * *
f303-Universal * *
iomcu *
revo-mini -136 -144 * -144 -136 -136 -144 -136
skyviper-v2450 -136
speedybeef4 -136 -136 * -136 -136 -136 -144 -136
----------------------- --------- -------------- ----- ---------- ------ ----- ---------- ----- ----- ----
```
### Description
Adds the compiler flags and enough extra code to make gcc happy where it can't prove to itself that a pointer isn't nullptr.
Most of the extra code in here is just to make the compiler happy. The AP_RCTelemetry patch is real, however - a failed allocation can do bad things in that case.
P : The nulldereference will now trigger an error.
But sometimes the null-dereference warnings are wrong, and we have to make the compiler happy in these cases.
A : The resulting size if smaller, even though we added more checks? This is worrisome.
P : gcc when it thinks there can be a nullptr derefence, adds some code in to handle the potential. When you check it manually, that extra code goes away, saving size.
I’ll bring this back when I make sure this is what happens.
UTC0859
master ← peterbarker:pr-claude/camera-focus-simulation
opened 11:33AM - 23 Jul 26 UTC
### Summary
Augmenting the test suite for all of these functions
### Class… ification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [x] Infrastructure change (e.g. unit tests, helper scripts)
- [x] Automated test(s) verify changes (e.g. unit test, autotest)
- [ ] Tested manually, description below (e.g. SITL)
- [ ] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
### Description
Covers more of the behaviour that was moved around recently - in particular, do-all-instance behaviours.
Breaks out some infrastructure for future use on other facilities.
Subset of another branch which fixes a problem in here.
P : More tests for triggering all camera backends at once.
UTC0901
master ← peterbarker:pr-claude/memprotect-resume
opened 12:59AM - 24 Jul 26 UTC
### Summary
Uses H7 MemProtect to catch accesses to low memory and emit LR so… we instantly know whodunnit
### Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [ ] Automated test(s) verify changes (e.g. unit test, autotest)
- [ ] Tested manually, description below (e.g. SITL)
- [x] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
Tested on a ZeroOneX6 on the bench here using the MAVLink options for reading/writing from nullptr-ish things.
Both reads and writes trigger the message:
```
Low mem access 0x005=0x0000AB00 pc=0x0809F746 lr=0x0809F741 n=1
Internal Errors 0x4000000
```
The hardfault handler still works (also triggered via MAVLink) - crashcatcher still triggers and does its job.
### Description
with AP_BOARDCONFIG_MCU_MEMPROTECT_ENABLED the MPU makes the first 1kB of RAM no-access, so an access through a (nearly-)null pointer arrives as a precise MemManage fault. Previously that produced a crash dump and reboot, making the option unsuitable for flight.
Instead, record the faulting PC, LR and address in the fault handler, disable the protection and return; the faulting instruction re-executes and the access succeeds, so behaviour is otherwise unchanged. The monitor thread then reports the hit as a statustext, raises the mem_guard internal error and re-arms the protection (bounded, in case the fault storms).
The MemManage handler now receives the exception frame from a naked shim selecting MSP/PSP on EXC_RETURN bit 2, rather than assuming PSP, so faults taken in ISR context are attributed correctly.
Faults escalated to HardFault (e.g. accesses inside a PRIMASK section) retain the existing crash-dump behaviour.
Bench-tested on ZeroOneX6 (STM32H743): MAV_CMD_PREFLIGHT_REBOOT_SHUTDOWN param4=102/103 test writes/reads to address 0x5 are reported with PC resolving to GCS_MAVLINK::handle_preflight_reboot and the board continues flying; re-arm verified with repeated triggers.
A : I fixed a threading issue on a branch of my own.
We have to be careful when trapping on reads, to avoid falsely trapping on innocuous reads.
I’ll push mine and we can compare notes.
UTC0906
master ← robertlong13:pr/qloiter-backtransition-fix
opened 08:00AM - 29 Jul 26 UTC
### Summary
Fix a bug that can cause excessive position hunting when switchin… g to QLoiter/QLand from fixed-wing.
### Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [x] Automated test(s) verify changes (e.g. unit test, autotest)
- [ ] Tested manually, description below (e.g. SITL)
- [ ] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
### Description
Currently, the stopping behavior when switching to QLoiter depends on state that accumulated during your transition to fixed-wing flight. This bug is long-standing (tested back to 4.5). Below are two screenshots from a test on master.
<img width="1026" height="795" alt="image" src="https://github.com/user-attachments/assets/b48041a0-e86b-43db-9be2-1006d916d6b2" />
<img width="892" height="855" alt="image" src="https://github.com/user-attachments/assets/c0cbecad-1dad-4bb7-b96b-8b025be68864" />
If you don't do your outbound transition perfectly straight with wings level, you get this weird hard bank when you switch into QLoiter/QLand.
The fix I'm proposing in this PR, when the attitude controller has been inactive, initialize a stationary loiter at the current position instead, re-seeding the velocity PID integrator for a pure brake. The vehicle now rolls wings level and pitches back to a stop from any entry attitude, stopping in ~6s from 25m/s where it previously wallowed for 13s, and holds within 2m of its stopping point.
Screenshot of ground tracks before/after my fix:
<img width="1080" height="810" alt="image" src="https://github.com/user-attachments/assets/a68f9f7d-52cb-411d-a0db-a25325a1d236" />
My only issue is that the code for my fix *looks* a tad hacky with the `vel_pid` stuff I'm doing, but I think the idea is sound, and I believe this is the cleanest way to achieve it. @lthall (or anyone else) if you have any opinions on a better shape of this, I'd be happy to hear them. Or if you just wanna swipe my autotest and fix this a different way in a superseding PR, I'm totally fine with that.
The new autotest reliably fails, on all 4 criteria, before the fix, and reliably passes after. Plenty of headroom.
### Turning transition (transition tail freezes a banked attitude target)
| criterion | bound | master (3 runs) | with fix (3 runs) |
| --------- | ----- | --------------- | ----------------- |
| retreat from closest approach to stopping point | < 5 m | **10.03 / 9.37 / 11.98** | 1.89 / 1.90 / 1.88 |
| settle from 20 m out to within 2 m | < 8 s | **11.60 / 11.30 / 12.60** | 2.10 / 2.10 / 2.10 |
| ground-course winding above 3 m/s | < 60° | **318 / 314 / 338** | 18.0 / 18.0 / 17.9 |
| N/S displacement of stopping point from entry | < 25 m | **43.3 / 44.8 / 42.5** | 16.9 / 17.0 / 17.0 |
Every master run fails all four criteria; every fixed run passes all four.
### Straight transition (control: transition tail freezes a level attitude target)
| criterion | bound | master (3 runs) | with fix (3 runs) |
| --------- | ----- | --------------- | ----------------- |
| retreat from closest approach to stopping point | < 5 m | 1.86 / 1.84 / 1.84 | 1.89 / 1.89 / 1.88 |
| settle from 20 m out to within 2 m | < 8 s | 2.10 / 2.10 / 2.10 | 2.10 / 2.10 / 2.10 |
| ground-course winding above 3 m/s | < 60° | 14.4 / 14.4 / 14.4 | 9.4 / 17.5 / 17.7 |
| N/S displacement of stopping point from entry | < 25 m | 13.2 / 13.2 / 13.2 | 17.5 / 17.4 / 14.9 |
Master already passes when its stale attitude target happens to be level, the same code and thresholds, demonstrating the expectation is realistic and the fix simply makes the happy case the only case.
P : Apparently Bob thinks the back-transition funkiness is related to wound-up state during forward-transition.
UTC0908
master ← andyp1per:pr-hal-notch-cap
opened 10:34AM - 28 Jun 26 UTC
Quintuple harmonic notches (Options bit 6) multiply the per-source filter count … by five, which can exceed HAL_HNF_MAX_FILTERS on multi-IMU setups and trip the "Too many notches" config error at boot. Raise the cap to give headroom: 54 to 78 on H7/SITL/Linux, 27 to 39 on F7, 24 to 30 elsewhere. The existing per-class comments describe a representative minimum configuration the cap covers, so they remain accurate after the increase.
Andy : Allow for more total notches when configuring quintuple notches.
Will allow for more notches in general.
P : Why not add more, since there’s no compile overhead?
Andy : We try to protect the user from accidentally configure too many and overload the CPU.
Merged!
UTC0913
master ← peterbarker:pr-claude2/mission-accessor-reference
opened 09:29AM - 23 Jul 26 UTC
### Summary
Makes the singleton accessor for Mission return a reference rathe… r than a pointer
### Classification & Testing (check all that apply and add your own)
- [x] Checked by a human programmer
- [ ] Non-functional change
- [ ] No-binary change
- [ ] Infrastructure change (e.g. unit tests, helper scripts)
- [x] Automated test(s) verify changes (e.g. unit test, autotest)
- [ ] Tested manually, description below (e.g. SITL)
- [ ] Tested on hardware
- [ ] Logs attached
- [ ] Logs available on request
```
Board AP_Periph antennatracker blimp bootloader copter heli iofirmware plane rover sub
CubeOrange-periph-heavy * *
Durandal -152 -152 * -152 -152 -160 -160 -152
Hitec-Airspeed * *
KakuteH7-bdshot -152 -152 * -152 -160 -160 -160 -152
MatekF405 -136 -136 * -144 -144 -136 -144 -136
Pixhawk1-1M-bdshot -128 -136 -136 -136 -144 -136 -136
SITL_x86_64_linux_gnu 0 0 0 -4096 -4096 0 0
YJUAV_A6SE -144 -144 * -144 -144 -152 -160 -144
f103-QiotekPeriph * *
f303-MatekGPS * *
f303-Universal * *
iomcu *
revo-mini -136 -144 * -144 -136 -136 -144 -136
skyviper-v2450 -136
speedybeef4 -136 -136 * -136 -136 -136 -144 -136
### Description
Returns a reference rather than a pointer, allowing us to remove a bunch of nullptr checks.
If AP_MISSION_ENABLE then we assume that the singleton is instantiated. It's part of the vehicle object except on Copter, where it's in mode_auto - and we couple ensure AP_MISSION_ENABLED if the mode is enabled using compile-time defines in this PR.
... compiling Mission out of skyviper-v2450 saves ~32kB - far less than I expected! We can't compile out for all vehicles - Tracker and Plane aren't really structured for it.
A : As long as we don’t try to allocate the mission at runtime, where we risk a nullptr.
P : It is always non null.
Merged!