Thomas Watson
b8d50b112a
AP_Compass: fix C++ One Definition Rule violations
...
Two structs with the same name must have exactly the same definition, no
matter where they occur in the program, otherwise the program is undefined.
Move each sample register struct definition into the associated class
definition so they are in a different namespace and no longer
identically named, thus fixing this issue.
2023-11-21 13:21:03 +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
Andrew Tridgell
aaeee2e7dc
AP_Compass: implement SIM_MAG_SAVE_IDS
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
Hayden
b237fd9fa4
AP_Compass: fix AK09916 hangup issue
2023-10-20 07:56:56 +11:00
Mykhailo Kuznietsov
633bb159bf
AP_Compass: Fix some typos
...
Fixed some typos found in the code.
2023-10-12 18:30:42 +11:00
Peter Barker
9a054876ff
AP_Compass: use AP_GPS_ENABLED to exclude more code when GPS not compiled in
2023-09-27 16:38:15 +10:00
Peter Barker
eb05093f34
AP_Compass: compass calibration requires DCM
2023-09-27 08:00:54 +10:00
Peter Barker
acf437b258
AP_Compass: correct compilation with COMPASS_CAL_ENABLED off
2023-09-19 16:54:59 +10:00
Peter Barker
275a667d41
AP_Compass: allow more libraries to compile with no HAL_GCS_ENABLED
2023-09-05 22:23:51 +10:00
Andrew Tridgell
e6d43811ad
AP_Compass: fixes for macos CAN SITL build
2023-08-29 15:09:48 +10:00
Peter Barker
d50c429355
AP_Compass: handle mag cal as both COMMAND_LONG and COMMAND_INT
2023-08-08 10:06:13 +10: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
Peter Barker
3f4995068c
AP_Compass: add and use AP_COMPASS_ENABLED
2023-06-21 22:28:48 +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
ba450fa08b
AP_Compass: text messages and more defines
2023-04-11 10:31:31 +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
Andrew Tridgell
2e8ea6ac47
AP_Compass: rename UAVCAN drivers to DroneCAN
2023-04-11 10:31:31 +10:00
Andrew Tridgell
34f70b98b3
AP_Compass: rename AP_UAVCAN to AP_DroneCAN
2023-04-08 07:11:23 +10:00
bugobliterator
7112d156ed
AP_Compass: replace libuavcan with libcanard based driver
2023-03-29 17:16:39 +11:00
Peter Barker
4755f76126
AP_Compass: specify compass feature enables for periph in chibios_hwdef.py
2023-03-12 09:35:35 +11:00
Andrew Tridgell
9cda7b5ccc
AP_Compass: drop MMC5xx3 sample rate to 100Hz
...
this was consuming too much of the I2C bus sampling at 1kHz
2023-03-06 17:24:29 -08:00
Peter Barker
252498fb29
AP_Compass: move removal of BMM150 down into hwdef
...
There's no reason apart from space to not have this in
2023-03-01 18:28:29 +11:00
Peter Barker
1889d3dea5
AP_Compass: add and use AP_COMPASS_MMC5XX3_ENABLED
2023-02-22 19:40:13 +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
aac6228f58
AP_Compass: add and use AP_COMPASS_MAG3110_ENABLED
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
Peter Barker
ad9521c1c4
AP_Compass: add and use AP_COMPASS_AK09916_ENABLED
2023-02-22 19:40:13 +11:00
Peter Barker
1abce258e4
AP_Compass: mark all_external as used even if it is not
2023-02-22 19:40:13 +11:00
Peter Barker
430f19222a
AP_Compass: don't define driver backend type if it is not compiled in
...
Catches places where code isn't disabled properly
2023-02-22 19:40:13 +11:00
Peter Barker
7d244e3451
AP_Compass: add and use AP_COMPASS_LIS3MDL_ENABLED
2023-02-17 23:05:48 +11:00
Peter Barker
fe9461242e
AP_Compass: add and use AP_COMPASS_LSM9DS1_ENABLED
2023-02-15 20:03:55 +11:00
Peter Barker
b26d771c9f
AP_Compass: add and use AP_COMPASS_IST8310_ENABLED
2023-02-14 12:23:55 +11:00
Peter Barker
9035de80ca
AP_Compass: do not detect extra bmm150 instances on SkyViper-v2450
2023-02-09 17:52:52 +11:00
Peter Barker
feb809fbb7
AP_Compass: add and use AP_COMPASS_BMM150_ENABLED
2023-02-09 17:52:52 +11:00
Peter Barker
22feb3c08a
AP_Compass: add and use AP_COMPASS_AK8963_ENABLED
2023-02-07 10:21:06 +11:00
Peter Barker
8155e0ab3b
AP_Compass: avoid using struct Location
...
clang reports this could be a problem when compiling under some EABIs. Remove it from most places as it is just noise, replace with class where we want to avoid including Location.h
2023-02-04 22:51:54 +11:00
Peter Barker
ff99ff34c7
AP_Compass: add and use AP_COMPASS_HMC5843_ENABLED
2023-02-01 18:47:37 +11:00
Peter Barker
669ce03de3
AP_Compass: make DRIVER_IST8308 an invalid symbol if not compiled in
2023-01-31 11:08:28 +11:00