Peter Barker
febcb3c1a8
AP_Compass: correct compilation for LIS2MDL/ADD_BACKEND PR crossover
2025-11-27 00:10:08 +11:00
Peter Barker
3b575e0559
AP_Compass: merge add_backend and _add_backend
...
folding these together makes us check the driver is enabled a little redundantly, but that's OK.
2025-11-26 20:44:21 +11:00
Peter Barker
fa4e31ff14
AP_Compass: make ADD_BACKEND a method not a macro
...
code generation isn't great, preparation for future cleanups
2025-11-26 20:44:21 +11:00
Peter Barker
461c1b7236
AP_Compass: remove CHECK_UNREG_LIMIT_RETURN from ADD_BACKEND, rename
...
new name is same as in AP_Baro. We probably want to have an elif for when we have filled up our compasses in the no-unregistered case
2025-11-26 20:44:21 +11:00
Andy Piper
a2949578ed
AP_Compass: support for LIS2MDL
2025-11-26 18:25:43 +11:00
bugobliterator
a6d03bb8a1
AP_Compass: fix issue with compass registration for more than 3 compasses
...
This fixes an issue where we would fail to register a dronecan compass
if its not already in the stored DEV_ID position that matches the detection order
This is fixed by ensuring that we try our best to register the compass in the stored DEV_ID position
that matches the priority order.
This in turn allows for over 3 dronecan compasses to appear and not cause incorrect
registration failures at boot.
2025-11-26 18:05:59 +11:00
bugobliterator
afdd95d34e
AP_Compass: use MAX_CONNECTED_MAGS for DroneCAN registration
...
this allows for more than 3 DroneCAN compasses to be on the bus.
2025-11-26 18:05:59 +11:00
Peter Barker
03e1f0180c
AP_Compass: tidy compass probing defines
...
- stop using #ifdef defines
- use current standard naming schemes
- remove the double-negatives
2025-11-05 19:35:27 +11:00
Peter Barker
944ef566ec
AP_Compass: rename HAL_PROBE_EXTERNAL_I2C_COMPASSES to AP_COMPASS_PROBING_ENABLED
...
... and force it to have a value, not just be defined
2025-10-27 18:24:18 -05:00
Peter Barker
a657744a2f
AP_Compass: rework SITL backend to be a single-instance
...
rather than this odd thing which acts as multiple backends
2025-10-08 13:23:49 +11:00
Peter Barker
9ea20dc132
AP_Compass: add a MSP probe method which can fail
...
currently registering an MSP backend can't fail, so if we fail to register (e.g. out of slots) then we can end up overwriting other's data.
Add a probe method which can return nullptr on failure
2025-09-30 15:10:09 +10:00
Peter Barker
39a4032f70
AP_Compass: add a probe method to AP_Compass_ExternalAHRS
...
this allows for the creation of the backend to fail gracefully
without this the backend will still have a value of 0, and will still get updated, overwriting the data for one of the registered compasses
2025-09-23 08:59:56 +09:00
Peter Barker
8189f7693e
AP_Compass: remove remaining vrbrain FMU architectures and PX4_BOARD_TYPEs
2025-06-25 18:17:19 +10:00
Peter Barker
17bd219c7f
AP_Compass: remove support for SP01 board
...
there's no automatic setting for this board, so it would have been selected by parameter only.
This was a development board pre-PCNC01 - it wasn't widely distributed.
If we want this back we can create a full-on board for it...
2025-06-24 10:38:58 +10:00
Peter Barker
162e2e0ff4
AP_Compass: remove PCNC1 board type
...
only used for one board, so inline everything required
2025-06-17 10:59:00 +10:00
Peter Barker
88d0bdb1bf
AP_Compass: move VRBrain-v54 sensors to hwdef
2025-06-11 17:22:55 +10:00
Peter Barker
9fe7f960b1
AP_Compass: remove dead sensor detect code
...
these boards specify their internal devices so don't cross these paths
2025-06-10 16:28:17 +10:00
muramura
012e727dfc
AP_Compass: Specify the names of the supported devices
2025-06-07 10:46:51 +10:00
Peter Barker
3b09612552
AP_Compass: remove unnueccesary HAL_BUILD_AP_PERIPH check
2025-05-13 18:48:05 +01:00
Peter Barker
6298f7dc58
AP_Compass: make compass LearnType enum-class and parameter AP_Enum
2025-01-29 19:21:59 +11:00
Peter Barker
9e4a180878
AP_Compass: remove vestiges of LearnType::LEARN_INTERNAL
...
57a3bc1397 changed the code from "internal" to "in-flight
It seems the old value of "1" was no longer valid
It also changed things to that the learning system saved the offsets.
2025-01-28 12:23:53 +11:00
Jacob Dahl
64bb0ad762
AP_Compass: add IIS2MDC driver
2025-01-15 19:10:16 +11:00
Dr.-Ing. Amilcar do Carmo Lucas
6a59d3adae
AP_Compass: Also mark Z axis as calibrations, just like the XY
2024-11-05 09:25:59 +09:00
muramura
0020cf5fe8
AP_Compass: Add existing devices
2024-09-22 10:11:50 +10:00
cuav-chen2
89a4571c58
AP_Compass: Add in BMM350 Driver
2024-09-21 10:08:36 +10:00
Peter Barker
42b8ee78cf
AP_Compass: remove use of AP_AHRS from most headers
...
don't need to know the details, just that it is a class
2024-09-03 10:35:54 +10:00
Peter Barker and muramura
fa4e90a3bb
AP_Compass: use GCS_SEND_TEXT rather than gcs().send_text
...
Co-authored-by: muramura <ma2maru@gmail.com >
2024-08-07 18:33:16 +10:00
Andrew Tridgell
0f08b47322
AP_Compass: use NEW_NOTHROW for new(std::nothrow)
2024-06-04 09:20:21 +10:00
Peter Barker
093deed610
AP_Compass: add and use AP_CUSTOMROTATIONS_ENABLED
...
also add to build_options.py
2024-03-03 08:22:46 +11:00
Peter Barker
c36b57acba
AP_Compass: exclude cpp files if not AP_COMPASS_ENABLED
2024-02-27 11:02:48 +11:00
Peter Barker
ecc7188d97
AP_Compass: rename COMPASS_TYPEMASK to COMPASS_DISBLMSK
...
this is a very confusingly named parameter. I've seen several instances of people treating this as an enable mask rather than a disable mask
2024-01-23 11:54:49 +11:00
Jonathan Loong
0db1719c8f
AP_Compass: Add in QMC5883P Driver
2023-11-15 10:53:38 +11:00
Andrew Tridgell
598e2b0762
AP_Compass: remove more exposed params for periph
...
these parameters are not useful on peripherals which use raw mag field
2023-11-08 18:34:41 +11:00
Andrew Tridgell
422d7cec6e
AP_Compass: probe DroneCAN compasses before I2C
...
it is highly likely that a user with a DroneCAN compass will want it
to be earlier in the dev list than i2c or spi compasses
2023-10-31 10:14:42 +11:00
Andrew Tridgell
36de6613fb
AP_Compass: split out probing code into i2c+spi and DroneCAN
...
this is a NFC to make the PR clearer
2023-10-31 10:14:42 +11:00
Andrew Tridgell
9fc9238c53
AP_Compass: prevent saving of device IDs when not calibrated
...
this fixes an issue with the following sequence:
- new board (or board with FORMAT_VERSION reset) starts up with only internal compasses
- internal compasses are detected and devids saved
- an external compass is added and the board is rebooted
- the external compass will not be the first compass
- user then calibrates and flies, but has internal as primary
this can lead to a very bad experience for new users. At least one
vehicle has crashed due to this sequence.
The fix is to not save device IDs during the Compass::init() if we
have never been calibrated. This means that when an external compass
is added it will come up as the first compass.
This also removes the saving of the extra device ID. It was never
intended that these be saved (there is a comment to that effect in the
code), but actually they were saved.
2023-10-31 10:14:42 +11:00
Iampete1
83a31ac371
AP_Compass: add big comment explaining calculate_heading maths, add consts and use wrap_PI helper
2023-10-25 15:57:16 +01:00
Andrew Tridgell
e1fad5ee38
AP_Compass: allow override of IST8310 orientation
...
this allows for vendor GPS modules and internal compass which use a
different orientation
2023-08-06 09:23:45 +10:00
Iampete1
262b11f0c1
AP_Compass: stop auto replacing missing CAN by default, add option to re-enable
2023-06-27 09:24:41 +10:00
Hayden
fa800e23e2
AP_Compass: Move health to cpp and add range check
...
Moved the health check to the cpp file and added checking of max instances
2023-05-24 12:39:47 +10:00
Peter Barker
7088286ebf
AP_Compass: use new vector methods to make for more compact code
...
The check for zero-length magnetic field on the primary is redundant given the one on the loop
2023-04-19 14:25:06 +10:00
Andrew Tridgell
e469ed9bd7
AP_Compass: rename more variables, types and defines
2023-04-11 10:31:31 +10:00
Andrew Tridgell
dc40e1e7c3
AP_Compass: change UAVCAN_ENABLED to DRONECAN_ENABLED
2023-04-11 10:31:31 +10:00
Andrew Tridgell
992409328f
AP_Compass: update header references
2023-04-11 10:31:31 +10:00
bugobliterator
7112d156ed
AP_Compass: replace libuavcan with libcanard based driver
2023-03-29 17:16:39 +11:00
Peter Barker
69bc24bc16
AP_Compass: add and use AP_COMPASS_RM3100_ENABLED
2023-02-22 19:40:13 +11:00
Peter Barker
2c93b7809c
AP_Compass: use AP_COMPASS_EXTERNALAHRS_ENABLED more
...
Also rename driver name from serial to externalahrs for consistency
2023-02-22 19:40:13 +11:00
Peter Barker
89a9636c46
AP_Compass: add and use AP_COMPASS_QMC5883L_ENABLED
2023-02-22 19:40:13 +11:00
Peter Barker
b6e2586f50
AP_Compass: add and use AP_COMPASS_MMC3416
2023-02-22 19:40:13 +11:00
Peter Barker
ee6b44113d
AP_Compass: add and use AP_COMPASS_ICM20948_ENABLED
2023-02-22 19:40:13 +11:00