Commit Graph

9197 Commits

Author SHA1 Message Date
mirkix
038ad31f81 AP_HAL_FLYMAPLE: Add support for using SPI devices of the same type. 2015-09-18 09:15:09 +10:00
mirkix
07d50b5fbb AP_HAL_Empty: Add support for using SPI devices of the same type. 2015-09-18 09:15:09 +10:00
mirkix
f48bdc281f AP_HAL: Add support for using SPI devices of the same type. 2015-09-18 09:15:09 +10:00
mirkix
93941c3349 AP_HAL_Linux: Add support for using SPI devices of the same type. 2015-09-18 09:15:09 +10:00
Peter Barker
8f1471c137 DataFlash: leave room in buffer for non-startup messages 2015-09-18 09:13:45 +10:00
Peter Barker
63a45000b4 DataFlash: take log messages after putting FMTs out 2015-09-18 09:13:45 +10:00
raspilot
1b5e6849d9 AP_Compass: fix milligauss code in LSM303D driver 2015-09-16 16:52:17 +09:00
Randy Mackay
ce6fe0e746 AP_RSSI: add enabled method 2015-09-16 16:41:41 +09:00
Randy Mackay
f633733b3b AP_RSSI: make parameters private 2015-09-16 16:41:38 +09:00
Randy Mackay
9a648117a7 AP_RSSI: use is_zero and add break for avoid compile warning 2015-09-16 16:41:36 +09:00
Randy Mackay
1369179046 AP_RSSI: formatting fixes 2015-09-16 16:41:33 +09:00
Stewart Loving-Gibbard
4dcf6b8dc3 DataFlash: Adding Logging of RSSI data. 2015-09-16 16:41:31 +09:00
Paul Riseborough
8cfde42e15 AP_NavEKF: Ensure bad mag data cannot cause the heading to reset too often 2015-09-16 15:13:37 +09:00
Paul Riseborough
930f730612 AP_NavEKF: Reset mag and heading states to try and pass pre-flight checks 2015-09-16 15:13:36 +09:00
Randy Mackay
fff5ec09eb AP_Compass: fix consistent check for less than three compasses
Also use vector functions where available
Use get_field_milligause instead of just get_field
2015-09-16 15:11:01 +09:00
Jonathan Challinger
87bbf1a487 AP_Compass: add consistent() function 2015-09-16 15:10:27 +09:00
Randy Mackay
39340e70f8 Math: add Vector2 is_zero method 2015-09-16 15:10:25 +09:00
Andrew Tridgell
094b9cb35e AP_TECS: reformat using astyle 2015-09-16 14:24:45 +10:00
Andrew Tridgell
36432e6515 AP_TECS: use climb rate filter consistently between DCM and EKF
we should use baro height not hgt_afe for the climb rate filter. This
makes the climb rate consistent with the one from the EKF. The lidar
correction comes in with the demanded height, not the observed height
2015-09-16 14:24:44 +10:00
Randy Mackay
bc06d67645 AP_Camera: fix configure command id sent to components
Also removed unnecessary setting of target system, component and
confirmation and minor formatting fix
2015-09-16 13:06:46 +09:00
squilter
8391764c60 AP_Camera: add support for do_digicam_x via command_long 2015-09-16 13:06:44 +09:00
Grant Morphett
b2751d876c AP_AHRS: Fixed spelling error in parameter desc. 2015-09-16 09:33:30 +09:00
Grant Morphett
417188d7eb APM_Control: Fixed spelling error in parameter desc. 2015-09-16 09:33:27 +09:00
Julien BERAUD
5602e4055b AP_Compass_AK8963: Fix Rotation on the Bebop 2015-09-15 14:45:17 +09:00
Andrew Tridgell
fa9ff5b604 AP_Compass: added parameter for compass calibration fitness threshold 2015-09-14 17:01:14 +10:00
Andrew Tridgell
eea54c9e09 DataFlash: fixed flymaple build 2015-09-14 16:44:45 +10:00
Andrew Tridgell
5aa54be718 GCS_MAVLink: send SCALED_PRESSURE3 for 3 baros 2015-09-14 14:27:42 +10:00
Andrew Tridgell
afe1fce94e GCS_MAVLink: regenerate headers 2015-09-14 14:27:42 +10:00
Andrew Tridgell
91623322f9 GCS_MAVLink: added SCALED_PRESSURE3 2015-09-14 14:27:41 +10:00
Andrew Tridgell
a5462fec0b AP_Baro: allow selection of primary barometer and add 3rd baro
this is useful for external I2C barometers on a PH2
2015-09-14 14:27:41 +10:00
Andrew Tridgell
61441ab35d HAL_Linux: fixed apm2 build 2015-09-14 14:22:16 +10:00
Andrew Tridgell
bf001f19ff HAL_Linux: don't panic on runtime failures 2015-09-14 14:22:16 +10:00
Andrew Tridgell
582318448f AP_HAL: make new GPIO functions optional
not available on all boards
2015-09-14 14:22:16 +10:00
Andrew Tridgell
e0db1ad93e AP_Notify: added support for raspilot LED 2015-09-14 14:22:16 +10:00
raspilot
9f91eb020e AP_HAL_Linux: new files for raspilot 2015-09-14 14:22:16 +10:00
raspilot
30a2fe0857 AP_HAL_Linux: added scheduler hooks for raspilot 2015-09-14 14:22:16 +10:00
raspilot
25cddbcbaa AP_HAL_Linux: added SPI support for raspilot 2015-09-14 14:22:16 +10:00
raspilot
7d329205ec AP_HAL_Linux: added tonealarm support for raspilot 2015-09-14 14:22:16 +10:00
raspilot
a6736d8e61 AP_HAL_Linux: fixed ublox debug message 2015-09-14 14:22:16 +10:00
raspilot
444081d38d AP_HAL_Linux: added support for raspilot objects 2015-09-14 14:22:16 +10:00
raspilot
f057fe3d02 AP_HAL_Linux: added support for raspilot GPIO 2015-09-14 14:22:15 +10:00
raspilot
9a73df1bea AP_HAL_Linux: added support for raspilot RCInput 2015-09-14 14:22:15 +10:00
raspilot
1421cf600a AP_InertialSensor: added support for raspilot 2015-09-14 14:22:15 +10:00
Lucas De Marchi
309e75f9ac AP_Compass: LSM303D: use c++11 initializer to avoid Wreorder 2015-09-14 14:22:15 +10:00
Lucas De Marchi
3a017c8702 AP_Compass: LSM303D: rename members to follow convention
Make the members have similar names as HMC5843 driver and prepend
underscore on private fields.
2015-09-14 14:22:15 +10:00
raspilot
19b4f5559a AP_Compass: added LSM303D driver 2015-09-14 14:22:15 +10:00
raspilot
6df83f46c5 AP_HAL: new GPIO APIs 2015-09-14 14:22:15 +10:00
raspilot
dcc7cf2739 AP_HAL: raspilot board type 2015-09-14 14:22:15 +10:00
Andrew Tridgell
76aa1a9704 SITL: ensure zero rotor speed with ignition off in gas heli 2015-09-14 12:46:04 +10:00
Andrew Tridgell
6fbe88ba3a AP_GPS: improved fake ublox to give enough for EKF health 2015-09-14 11:36:15 +10:00
Andrew Tridgell
e87139eb32 AP_GPS: fixed a build warning 2015-09-14 11:36:10 +10:00
Andrew Tridgell
43ac3f86c5 DataFlash: added RNFD logging and 3 baros 2015-09-13 11:29:59 +10:00
Andrew Tridgell
8538aa9840 AP_Rangefinder: allow for up to 4 rangefinders 2015-09-13 11:29:56 +10:00
Daniel Nugent
58b7bf1588 AC_PrecLand: add companion computer implementation 2015-09-11 20:56:08 +09:00
Daniel Nugent
2f92876865 AC_PrecLand: remove const from get_angle_to_target 2015-09-11 20:56:07 +09:00
Daniel Nugent
21ac12f1c3 AC_Precland: bug fix to update ef angles only with new readings 2015-09-11 20:56:05 +09:00
Daniel Nugent
db8f28f2aa GCS_MAVLink: version update after generating LANDING_TARGET 2015-09-11 20:56:04 +09:00
Daniel Nugent
3aa0063f31 GCS_MAVLink: generate after updating LANDING_TARGET msg 2015-09-11 20:56:03 +09:00
Daniel Nugent
eba8dcffde GCS_MAVLink: update LANDING_TARGET from upstream mavlink 2015-09-11 20:56:02 +09:00
Andrew Tridgell
d07d2f3a46 AP_GPS: removed UBX3 message
replaced by GPA and GPA2 messages
2015-09-09 15:01:45 +10:00
Andrew Tridgell
c5cd310818 DataFlash: added GPA and GPA2 messages for GPS accuracy
this reverts the GPS format to the old format, thus fixing log
analysers
2015-09-09 14:53:11 +10:00
Andrew Tridgell
c59bdc12df AP_Compass: fix the milligauss handling
the previous approach assumed a 1:1 mapping between compass backends
and compass instances, which isn't true on PX4.

It also only setup milligauss offsets on a set_and_save call, which is
not the only way offsets change

this adds a milligauss_ratio per instance, which is considerably
simpler
2015-09-09 14:53:11 +10:00
Andrew Tridgell
3699932417 AP_Compass: fixed SITL compass 2015-09-09 14:53:11 +10:00
Randy Mackay
f1322252ae GPS: fix GNSS_MODE param descriptions
Thanks to Michael DuBreuil for noticing the problem and providing the correction
2015-09-09 13:40:32 +09:00
Buzz
684dfaf26f DataFlash: fix OSX build 2015-09-09 13:09:01 +09:00
Michael Oborne
88cf710f94 AP_GPS_SBF: add accuracy estimates 2015-09-09 12:28:25 +10:00
Peter Barker
60010e794e DataFlash: ensure 10% free space when initialising logging 2015-09-09 12:22:35 +10:00
Angus Peart
95c66a794e AP_Notify: sync oreoleds before a reboot 2015-09-09 10:39:54 +09:00
Angus Peart
a887c1d1f2 AP_Notify: fix oreoled race causing startup flicker 2015-09-09 10:39:53 +09:00
Angus Peart
d48f1b0ccf AP_Notify: oreoled - remove dangerous send_bytes 2015-09-09 10:39:52 +09:00
Angus Peart
662a3aa4cb AP_Notify: oreoled - always use full brightness 2015-09-09 10:39:51 +09:00
Jonathan Challinger
d205de2d7e AP_Notify: use new macros for white/red pattern 2015-09-09 10:39:51 +09:00
Randy Mackay
872e6769b0 Notify: change firmware_update event to flag 2015-09-09 10:39:50 +09:00
Jace A Mogill
068cdfe6a3 Notify: workaround for OREOLED problems 2015-09-09 10:39:49 +09:00
Michael du Breuil
a88e10d3a0 DataFlash: Log vDOP with GPS messages.
Due to the description string getting to long HDop was renamed as EPH with VDop as EPV (Which is the same terimnology  used to describe the MAVLink side). Status was shortened to stat as well.
2015-09-09 11:38:12 +10:00
Michael du Breuil
9f02834f6d AP_GPS: Broadcast vDOP data over mavlink 2015-09-09 11:38:12 +10:00
Michael du Breuil
0e3a188f6f AP_GPS: Read the vdop information from a ublox GPS 2015-09-09 11:38:12 +10:00
Peter Barker
f9a1102e96 DataFlash: correct compilation for new DataFlash signature 2015-09-09 10:58:27 +10:00
Peter Barker
a2f1bf581a DataFlash: fix test for SITL and linux 2015-09-09 10:58:27 +10:00
unknown
b1ce6136c4 DataFlash_test:make it works with pixhawk2 2015-09-09 10:58:26 +10:00
Staroselskii Georgii
bd7c313bee AP_Compass: fixed Compass::get_raw_field()
It seems as if it were a copy-paste error. A statis analyzer would
definetely be angry.
2015-09-09 10:38:17 +10:00
Staroselskii Georgii
375724b319 Arming: use milligauss as compass units 2015-09-09 10:38:16 +10:00
Staroselskii Georgii
4b948f5bb1 AP_AHRS: make DCM use milligauss 2015-09-09 10:38:16 +10:00
Staroselskii Georgii
b5b6d767bd AP_NavEKF: make EKF use milligauss 2015-09-09 10:38:16 +10:00
Staroselskii Georgii
e93ff44a97 AP_Compass: make a transition to milligauss in Compass library 2015-09-09 10:38:16 +10:00
Staroselskii Georgii
693613aa0f AP_Compass: convert AK8963 measurements to uT
AK8963 is configured in 16-bit ADC mode which implies sensitivity of 0.15 uT/LSb. Knowing this fact we can convert the measurements to the proper units. The change will make users recalibrate their compasses.
2015-09-09 10:38:16 +10:00
Staroselskii Georgii
c207d8c6a8 AP_Compass: add milligauss counterparts to get_field() and get_offsets()
From now on there's a pair get_field_milligauss() and
get_offsets_milligauss() that can make the transition to the common
units across all compasses easier.
2015-09-09 10:38:16 +10:00
Víctor Mayoral Vilches
6d762f62b3 AP_InertialSensor: ERLEBOARD legacy support
This config referred to the legacy Erle-Board
https://erlerobotics.com/blog/product/erle-board/
The configuration is preserved to support the
existing boards.
2015-09-09 10:31:55 +10:00
Víctor Mayoral Vilches
728921f7c5 AP_HAL_Linux: ERLEBOARD legacy support
This config referred to the legacy Erle-Board
https://erlerobotics.com/blog/product/erle-board/
The configuration is preserved to support the
existing boards.
2015-09-09 10:31:55 +10:00
Víctor Mayoral Vilches
b87fd58214 AP_HAL: ERLEBOARD legacy support
This config referred to the legacy Erle-Board
https://erlerobotics.com/blog/product/erle-board/
The configuration is preserved to support the
existing boards.
2015-09-09 10:31:55 +10:00
Grant Morphett
122e88dbed RC_Channel: remove the unused test function get_failsafe 2015-09-09 10:28:02 +10:00
Valmantas Palikša
d4daf19151 AP_Math: Move simple math function implementations to header for better
compile time optimization

Functions like sq() are better moved to the header file as inline.
Compiler can then optimize these out when used in code, this saves cpu
cycles with stack push, pop during function calls.
2015-09-09 09:57:51 +10:00
Tom Pittenger
cb20325593 AP_Mission: added flight stage FLIGHT_LAND_ABORT
- add get_prev_nav_cmd_with_wp_index(). This is different than get_prev_nav_cmd_index() in that it only stores the index if there is a valid lat/lng (+1 squashed commits)
- added mission item command to NAV_LAND which is the abort takeoff altitude. If 0 then use last takeoff if available, else use 50m
2015-09-09 09:04:24 +10:00
Tom Pittenger
46a83c7ae9 AP_TECS: added flight stage FLIGHT_LAND_ABORT
- do what TAKEOFF does in tecs, push the throttle up
2015-09-09 09:04:24 +10:00
Tom Pittenger
0961e1d907 AP_SpdHgtControl: added flight stage FLIGHT_LAND_ABORT 2015-09-09 09:04:24 +10:00
Fredrik Hedberg
d9a4b6b089 AP_HAL_Linux: Allow PCA9685 to be used on non-default I2C addresses. 2015-09-09 08:43:22 +10:00
Fredrik Hedberg
9d9e6d0b34 AP_HAL_Linux: Only use enable pin for PCA9685 if we need to. 2015-09-09 08:43:22 +10:00
Fredrik Hedberg
21b9f96ce3 AP_HAL_Linux: Enable use of all 16 channels for non-Navio PCA9685. 2015-09-09 08:43:22 +10:00
Tom Pittenger
4771d19073 AP_Math: added locations_are_same(loc1,loc2) helper
returns true if lat and lng are the same, ignores alt and options
2015-09-08 17:05:54 +10:00
Tom Pittenger
1026e7df45 AP_Mission: updated comment
altitude and lat/lng are all used
2015-09-08 17:05:54 +10:00
Andrew Tridgell
6afb3895c0 AP_RangeFinder: added doc strings for new rangefinder types 2015-09-08 16:46:52 +10:00
Andrew Tridgell
cbd43ee6ea HAL_PX4: added hal.i2c support on PX4 boards
this allows I2C based devices to use in-tree drivers
2015-09-08 16:46:52 +10:00
Andrew Tridgell
80c85a2c3f AP_SerialManager: added enum for serial lidar 2015-09-08 16:46:52 +10:00
Andrew Tridgell
7d30ce2e36 AP_RangeFinder: added lightware serial rangefinder 2015-09-08 16:46:52 +10:00
Andrew Tridgell
0ca534bfab AP_NavEKF: only call calcGpsGoodToAlign if we need to
avoid calling it once we have an origin. This avoids some calculations
and string operations
2015-09-08 16:07:33 +10:00
Andrew Tridgell
7e13edd4c7 AP_Arming: use prearm_failure_reason() 2015-09-08 16:07:33 +10:00
Andrew Tridgell
c10ce3ffbd AP_NavEKF: added prearm_failure_reason() 2015-09-08 16:07:33 +10:00
Andrew Tridgell
c18c6d894e AP_AHRS: added prearm_failure_reason() 2015-09-08 15:50:22 +10:00
Andrew Tridgell
d7a7741d15 APM_OBC: added severities to send_statustext_all 2015-09-08 14:29:45 +10:00
Andrew Tridgell
b65739a8cc AP_Arming: added severities to send_statustext_all 2015-09-08 14:29:33 +10:00
Andrew Tridgell
bc4d37c91e GCS_MAVLink: added severity to send_statustext_all() 2015-09-08 14:29:22 +10:00
Andrew Tridgell
c48bef1552 AP_Arming: removed the need for the GCS print function 2015-09-08 13:54:25 +10:00
Andrew Tridgell
f3e8819d1e GCS_MAVLink: make send_statustext_all() take a format string
this allows for formatted messages to all groundstations in libraries
2015-09-08 13:53:58 +10:00
Grant Morphett
bec21a51a4 AP_RangeFinder: Just fixing the parameter name in the description 2015-09-07 17:48:37 +09:00
Leonard Hall
c8872e082d AC_AttControl: rename set_throttle_out parameter
No functional change
2015-09-07 15:10:15 +09:00
Leonard Hall
5ab2a19173 AC_WPNav: loiter limits lean angle for alt loss 2015-09-07 15:10:11 +09:00
Leonard Hall
cf5db31053 AC_PosControl: allow limiting lean angle to avoid alt loss 2015-09-07 15:10:10 +09:00
Leonard Hall
29ff5035b4 AC_AttControl: limit lean angle from throttle 2015-09-07 15:10:09 +09:00
Randy Mackay
1024790633 MotorsMulti: add throttle_max accessor 2015-09-07 15:10:02 +09:00
Leonard Hall
b58cc7ea8d AC_PosControl: move accel constraint to accel_to_lean_angles 2015-09-07 14:51:43 +09:00
Michael Oborne
993904f01c AP_GPS_SBF: add init string and increase union size 2015-09-07 12:11:47 +10:00
Julien BERAUD
a057a8a009 AP_HAL_Linux: Add Support for RCInput_UDP
very simple protocol to receive RC cmds via UDP
Add support for it on the bebop
2015-09-07 12:10:08 +10:00
Grant Morphett
3b1844d5c9 AP_Arming: Moved the plane centric arming code into plane
Needed to move the plane centric arming code out of the AP_Arming
library and into the plane vehicle code.
2015-09-07 11:54:21 +10:00
Gustavo Jose de Sousa
305ec7b08a AP_InertialSensor: MPU6000: publish sample rate
So that vibration and clipping may be calculated.
2015-09-07 11:14:43 +10:00
Gustavo Jose de Sousa
eb480e959c AP_InertialSensor: MPU9250: publish sample rate
That enables the default vibration calculation.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
a76eb9c15f AP_InertialSensor: MPU9250: use macros for sample rate
Instead of hardcoded values.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
a0b1337646 AP_InertialSensor: PX4: publish sample rate
By publishing the sample rate, the vibration and clipping are magically
calculated.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
77a4f10d89 AP_InertialSensor: PX4: don't call calc_vibration_and_clipping()
That calculation will be unified.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
6aa973dd47 AP_InertialSensor: Backend: calculate vibration and clipping on new raw sample
This is a good way of letting each implementation easily calculate vibration
and clipping: all they need to do is publish their sample rate and they don't
need to worry about the call for calculation.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
e06627dfcb AP_InertialSensor: Backend: add hook for new raw accel samples
That hook will eventually do necessary things when a new accelerometer raw
sample arrives (like calculating vibration levels).
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
5329e63742 AP_InertialSensor: allow publishing sample rate to frontend
That information will be used for a "centralized" vibration calculation.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
ac3a677626 AP_InertialSensor: remove param rotate_and_correct from publish functions
Once that parameter is always false.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
a56c8deaee AP_InertialSensor: Oilpan: apply correction on each new sample
These changes are for enabling unified accelerometer vibration and clipping
calculation. For that, we need the values "rotated and corrected" before they
are filtered and the calculation must be called as soon as a new sample arrives
as it takes the sample rate into account.

Thus, move code that applies "corrections" to be executed as soon as accel data
arrive and call _publish_accel() passing rotate_and_correct parameter as false.
Also, do the same for gyro so we can keep it consistent.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
fc38691e0b AP_InertialSensor: MPU9250: apply correction on each new sample
These changes are for enabling unified accelerometer vibration and clipping
calculation. For that, we need the values "rotated and corrected" before they
are filtered and the calculation must be called as soon as a new sample arrives
as it takes the sample rate into account.

Thus, move code that applies "corrections" to be executed as soon as accel data
arrive and call _publish_accel() passing rotate_and_correct parameter as false.
Also, do the same for gyro so we can keep it consistent.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
b844b220c3 AP_InertialSensor: MPU9150: apply correction on each new sample
These changes are for enabling unified accelerometer vibration and clipping
calculation. For that, we need the values "rotated and corrected" before they
are filtered and the calculation must be called as soon as a new sample arrives
as it takes the sample rate into account.

Thus, move code that applies "corrections" to be executed as soon as accel data
arrive and call _publish_accel() passing rotate_and_correct parameter as false.
Also, do the same for gyro so we can keep it consistent.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
487135afa2 AP_InertialSensor: MPU6000: apply correction on each new sample
These changes are for enabling unified accelerometer vibration and clipping
calculation. For that, we need the values "rotated and corrected" before they
are filtered and the calculation must be called as soon as a new sample arrives
as it takes the sample rate into account.

Thus, move code that applies "corrections" to be executed as soon as accel data
arrive and call _publish_accel() passing rotate_and_correct parameter as false.
Also, do the same for gyro so we can keep it consistent.
2015-09-07 11:14:42 +10:00
Gustavo Jose de Sousa
f946f48dce AP_InertialSensor: LSM9DS0: apply correction on each new sample
These changes are for enabling unified accelerometer vibration and clipping
calculation. For that, we need the values "rotated and corrected" before they
are filtered and the calculation must be called as soon as a new sample arrives
as it takes the sample rate into account.

Thus, move code that applies "corrections" to be executed as soon as accel data
arrive and call _publish_accel() passing rotate_and_correct parameter as false.
Also, do the same for gyro so we can keep it consistent.
2015-09-07 11:14:41 +10:00
Gustavo Jose de Sousa
0963159bb8 AP_InertialSensor: Flymaple: apply correction on each new sample
These changes are for enabling unified accelerometer vibration and clipping
calculation. For that, we need the values "rotated and corrected" before they
are filtered and the calculation must be called as soon as a new sample arrives
as it takes the sample rate into account.

Thus, move code that applies "corrections" to be executed as soon as accel data
arrive and call _publish_accel() passing rotate_and_correct parameter as false.
Also, do the same for gyro so we can keep it consistent.
2015-09-07 11:14:41 +10:00
Gustavo Jose de Sousa
2ea8f1de3f AP_InertialSensor: L3G4200D: apply correction on each new sample
These changes are for enabling unified accelerometer vibration and clipping
calculation. For that, we need the values "rotated and corrected" before they
are filtered and the calculation must be called as soon as a new sample arrives
as it takes the sample rate into account.

Thus, move code that applies "corrections" to be executed as soon as accel data
arrive and call _publish_accel() passing rotate_and_correct parameter as false.
Also, do the same for gyro so we can keep it consistent.
2015-09-07 11:14:41 +10:00
Andrew Tridgell
6991a1b9e9 AP_Compass: ensure we have payload space to send MAG_CAL messages 2015-09-07 08:58:11 +10:00
Andrew Tridgell
2baa0ac2f2 AP_Compass: disable COMPASS_LEARN when mag calibration used 2015-09-07 08:07:17 +10:00
Andrew Tridgell
745a5998f2 AP_Camera: added CAM_RELAY_ON parameter
allows for camera that trigger low
2015-09-07 08:07:17 +10:00
Randy Mackay
fa0aa6f5c9 Mount: remove support for do-mount-configure as command long
Also fix bug in do-mount-control so that do-mount-control can switch mount into retract mode

Also removes ability to set which axis are stabilized through
ardupilotmega mount_configure message
2015-09-06 16:01:18 +09:00
squilter
cc58ec917c Mount: add support for do_mount_control via command_long 2015-09-06 16:01:12 +09:00
Andrew Tridgell
079161ef3a AP_Compass: fixed raw_field init in AK8963 driver
thanks to Peter for spotting this
2015-09-03 21:27:22 +10:00
Andrew Tridgell
5710697847 DataFlash: fixed some build warnings 2015-09-03 20:25:14 +10:00
Michael Oborne
cce46cf0c5 AP_GPS_SBF: add support for Septentrio gps 2015-09-03 19:43:31 +10:00
Michael Oborne
52577e4105 DataFlash: add sbf event message 2015-09-03 19:43:31 +10:00
Michael Oborne
b861233677 AP_HAL_SITL: add file based gps 2015-09-03 19:43:31 +10:00
Lucas De Marchi
0000ff45cb AP_HAL_Linux: RCOutput_PCA9685: remove trailing whitespace 2015-09-03 18:43:21 +10:00
Lucas De Marchi
18321a77c4 AP_HAL_Linux: rename RCOutput_Navio to RCOutput_PCA9685
The RCOutput_Navio is now generic enough to be used by other boards.
Rename it to use the name of the chip, PCA9685.
2015-09-03 18:43:21 +10:00
Lucas De Marchi
e1f0284df2 AP_HAL_Linux: PCA9685: build on all Linux boards 2015-09-03 18:43:21 +10:00
Fabio Mello
c0caed1b64 AP_HAL_Linux: RCOutput_Navio: allow to use internal clock
It's possible to use the internal clock in PCA96895 if we account for
the drift it contains. This is a bit different from solutions in other
projects like the Adafruit library and the PX4 firmware: instead of
applying a correction to the final frequency we apply the correction to
the clock since this is the source of the error.

With this fix we arrived to much better results across different lots of
sensors.

The Navio board continues to use the external clock and should have no
difference behavior.
2015-09-03 18:43:21 +10:00
Lucas De Marchi
6c042b6666 AP_HAL_Linux: RCOutput_Navio: allow to have other offset 2015-09-03 18:43:21 +10:00
Lucas De Marchi
3beaf34aa1 AP_HAL_Linux: RCOutput_Navio: allow to have other OE pin
While at it also rename enable_pin to follow the convention of starting
with underscore for private members.
2015-09-03 18:43:21 +10:00
Andrew Tridgell
e4b2fc711d AP_Compass: added message for compass cal when armed 2015-09-03 16:59:22 +10:00
Andrew Tridgell
f4cdf57d8f AP_Compass: added handling of compass calibration mavlink messages 2015-09-03 16:59:14 +10:00
Siddharth Bharat Purohit
1ffbffa0e7 AP_Math: check if failed to allocate memory 2015-09-03 16:59:14 +10:00
Siddharth Bharat Purohit
75829f5533 AP_Compass: remove extra compass field correction 2015-09-03 16:59:14 +10:00
Siddharth Bharat Purohit
3abdf85796 AP_Compass_Calibrator: remove unrequired variables 2015-09-03 16:59:14 +10:00
Siddharth Bharat Purohit
c126017035 AP_Compass: reduce to if healthy check from if-else 2015-09-03 16:59:14 +10:00
Siddharth Bharat Purohit
2fb002798c generate.sh 2015-09-03 16:59:14 +10:00
Siddharth Bharat Purohit
63973bff31 AP_Compass_AK8963: move variable declarations before goto 2015-09-03 16:59:14 +10:00
Siddharth Bharat Purohit
3fc47b33e8 message_definition: add autoreboot option for mag cal 2015-09-03 16:59:14 +10:00
Siddharth Bharat Purohit
6a603eb594 Compass_cal: implement the concept of auto and mandatory user reboot after cal 2015-09-03 16:59:13 +10:00
Gustavo Jose de Sousa
46774136a6 AP_Compass: standardize inclusion of libaries headers
This commit changes the way libraries headers are included in source files:

 - If the header is in the same directory the source belongs to, so the
 notation '#include ""' is used with the path relative to the directory
 containing the source.

 - If the header is outside the directory containing the source, then we use
 the notation '#include <>' with the path relative to libraries folder.

Some of the advantages of such approach:

 - Only one search path for libraries headers.

 - OSs like Windows may have a better lookup time.
2015-09-03 16:59:13 +10:00
Siddharth Bharat Purohit
cdd8bae6ac AP_Compass: publish raw and unfiltered field for HMC5843 compass 2015-09-03 16:59:13 +10:00
Siddharth Bharat Purohit
8cdc9748b3 AP_Compass: publish raw and unfiltered field for AK8963 compass 2015-09-03 16:59:13 +10:00
Siddharth Bharat Purohit
f085e274c7 AP_Compass: add explaination for sample acceptance based on angular distance 2015-09-03 16:59:13 +10:00
Jonathan Challinger
f108383c11 AP_Compass: initialize CompassCalibrator _sample_buffer to NULL 2015-09-03 16:59:13 +10:00
Jonathan Challinger
358736a592 AP_Compass: correct calibrator sample acceptance math 2015-09-03 16:59:13 +10:00
Jonathan Challinger
bff9b9065e AP_Compass: CompassCalibrator comment update 2015-09-03 16:59:13 +10:00
Jonathan Challinger
1c100498d4 AP_Math: use is_zero instead of defining our own epsilon 2015-09-03 16:59:13 +10:00
Siddharth Bharat Purohit
137bd25220 AP_Compass: add info about compass calibrator procedure 2015-09-03 16:59:12 +10:00
Siddharth Bharat Purohit
f5fbc2fac1 AP_Compass: use AP_Math inverse library 2015-09-03 16:59:12 +10:00
Siddharth Bharat Purohit
b654b1c21b AP_Math: add inverse matrix to math library 2015-09-03 16:59:12 +10:00
Jonathan Challinger
0edf1df28e AP_Compass: loosen calibration acceptance tolerance 2015-09-03 16:59:12 +10:00
Jonathan Challinger
987f55387e AP_Compass: style cleanup 2015-09-03 16:59:12 +10:00
Jonathan Challinger
5ef713f3db AP_Compass: set AP_Notify::compass_cal_failed 2015-09-03 16:59:12 +10:00
Jonathan Challinger
5a12991d29 CompassCalibrator: remove dependence on AP_Notify 2015-09-03 16:59:12 +10:00
Jonathan Challinger
de600ca3da AP_Compass: configured() only checks compasses with _USE set 2015-09-03 16:59:12 +10:00
Jonathan Challinger
53fe649016 GCS_MAVLink: add MSG_MAG_CAL_PROGRESS and _REPORT 2015-09-03 16:59:11 +10:00
Jonathan Challinger
72c8d0f530 AP_Compass: add samples to calibrator when published 2015-09-03 16:59:11 +10:00
Jonathan Challinger
cc36401b7c AP_Compass: add calibration interface 2015-09-03 16:59:11 +10:00
Jonathan Challinger
28ee63c855 AP_Notify: add events.compass_cal_canceled 2015-09-03 16:59:11 +10:00
Jonathan Challinger
adef826a42 AP_Notify: play tones for compass cal 2015-09-03 16:59:11 +10:00
Jonathan Challinger
89007c13cb AP_Notify: add compass_cal flags 2015-09-03 16:59:11 +10:00
Jonathan Challinger
05d3616e0d AP_Compass: fix sitl build 2015-09-03 16:59:11 +10:00
Jonathan Challinger
7cb9fa8898 AP_Compass: Correct parameter checks in compass cal 2015-09-03 16:59:11 +10:00
Jonathan Challinger
6d45660568 AP_Compass: refactor run_fit_chunk logic 2015-09-03 16:59:11 +10:00
Jonathan Challinger
f2acf2cb88 AP_Compass: more parameter checks in compass calibrator 2015-09-03 16:59:11 +10:00
Jonathan Challinger
929ddb5685 AP_Compass: fix a math error in the compass calibrator 2015-09-03 16:59:10 +10:00
Jonathan Challinger
328cf82c3d CompassCalibrator: update AP_Notify on failure 2015-09-03 16:59:10 +10:00
Jonathan Challinger
bfdbb55528 AP_Compass: make compasscalibrator running() public 2015-09-03 16:59:10 +10:00
Jonathan Challinger
d31d385490 AP_Compass: changes and fixes to LMA-based compass calibrate 2015-09-03 16:59:10 +10:00
bugobliterator
c66bfc95e1 Compass: Add Levenberg-Marquadt for ellipsoid fit 2015-09-03 16:59:10 +10:00
bugobliterator
7711dde2ad Compass: implement 9 parameter ellipsoid fit 2015-09-03 16:59:10 +10:00
bugobliterator
35555c7b21 Compass: Add math for 9 parameter fitting 2015-09-03 16:59:10 +10:00
bugobliterator
7295537e8a Compass: decrease sphere coverage to 1/3rd
for faster sample collection
2015-09-03 16:59:10 +10:00
bugobliterator
a2bd4e8997 Compass: Add less complex equations to calculate jacobians 2015-09-03 16:59:10 +10:00
bugobliterator
2ca0e80dc5 Compass: Add conditions to check sanity of results 2015-09-03 16:59:10 +10:00
bugobliterator
54bc28c96d Compass: Add Levenberg-Marquadt optimiser for sphere_fit
increase iterations to get good results from LM
better check for convergence, comparison with initial fitness is a better way to determine if convergence occurs, if fitness has not improved compared to initial fitness it means optimiser has failed.
2015-09-03 16:59:10 +10:00
Jonathan Challinger
c0a662c819 AP_Compass: CompassCalibrator initial commit 2015-09-03 16:59:10 +10:00
Jonathan Challinger
f20ef69777 Compass: add soft-iron corrections 2015-09-03 16:59:09 +10:00
Jonathan Challinger
5fe6db0dc9 AP_Compass_PX4: use new compass backend interface 2015-09-03 16:59:09 +10:00
Jonathan Challinger
ade39abc7f AP_Compass_HMC5843: use new compass backend interface 2015-09-03 16:59:09 +10:00
Jonathan Challinger
8800d03fce AP_Compass_HIL: use new compass backend interface 2015-09-03 16:59:09 +10:00
Jonathan Challinger
cd5cf45ba8 AP_Compass_AK8963: use new compass backend interface 2015-09-03 16:59:09 +10:00
Jonathan Challinger
add1b8c257 AP_Compass: modify backend interface to push raw samples to frontend 2015-09-03 16:59:09 +10:00
Jonathan Challinger
b990eaed68 AP_Compass: add interface for raw and unfiltered field 2015-09-03 16:59:09 +10:00
Jonathan Challinger
b2fff2021f GCS_MAVLink: re-generate libraries 2015-09-03 16:59:09 +10:00
Jonathan Challinger
1b485ef6ab GCS_MAVLink: add MAG_CAL messages 2015-09-03 16:59:09 +10:00
Peter Barker
2b02911546 DataFlash: make mode and messages critical 2015-09-03 15:20:20 +10:00
Peter Barker
8f8493225c DataFlash: DFMessageWriter; ability to trickle messages out to DF 2015-09-03 09:54:55 +10:00
Grant Morphett
ab35ac41a5 AP_Param: Add parameter to print out all the keys/indexes
For some debugging I was working on I needed to see all the token
indexs and group elements.
2015-09-02 11:12:31 +10:00
mirkix
f6f2e901b8 AP_Notify: Disable ToneAlarm for BBBMINI 2015-09-02 11:10:59 +10:00
Andrew Tridgell
2ce0f4c171 AC_Precland: fixed build under cygwin
the IRLock driver only builds on PX4 at the moment
2015-09-02 10:10:04 +10:00
Andrew Tridgell
dff235dc36 AP_RangeFinder: support LightWare I2C laser rangefinders
this has been tested with the SF10/C
2015-09-01 21:09:12 +10:00
Gustavo Jose de Sousa
bcd5dff774 AP_Baro: MS56XX: do not change change state on error
If we have an error in the SPI or I2C transaction we should not change
the state. Otherwise we might read a temperature when the sensor is
reporting pressure and vice-versa.
2015-09-01 20:26:06 +10:00
Gustavo Jose de Sousa
1f29e18375 AP_Baro: make AP_SerialBus::write() return success or failure for MS56XX 2015-09-01 20:26:05 +10:00
Gustavo Jose de Sousa
458f587656 AP_HAL_FLYMAPLE: SPI: adapt to the new signature of transaction()
A default behaviour was added here.
2015-09-01 20:26:05 +10:00
Gustavo Jose de Sousa
4e27d19107 AP_HAL_Empty: SPI: adapt to the new signature of transaction()
A default behaviour was added here.
2015-09-01 20:26:05 +10:00
Gustavo Jose de Sousa
93f5abb274 AP_HAL_AVR: SPI: adapt to the new signature of transaction()
A default behaviour was added here.
2015-09-01 20:26:05 +10:00
Gustavo Jose de Sousa
4af2a9a9cc AP_HAL_Linux: SPI: adapt to the new signature of transaction() 2015-09-01 20:26:05 +10:00
Gustavo Jose de Sousa
e05928a7e8 AP_HAL: make SPIDeviceDriver::transaction() return success or failure 2015-09-01 20:26:05 +10:00
Gustavo Jose de Sousa
53b5b70960 AP_Scheduler: use also task name besides the id for logging
This makes it easier to identify for which task a log line is.
2015-09-01 20:22:19 +10:00
Gustavo Jose de Sousa
b59154103f AP_Scheduler: use function name for AP_Scheduler task name
That makes it easier to identify tasks when debug is enabled in AP_Scheduler.
2015-09-01 20:22:19 +10:00
Gustavo Jose de Sousa
8fe466ce27 AP_Scheduler: add initializer for task field "name"
We use define it as an empty macro if on AVR board.
2015-09-01 20:22:18 +10:00
Gustavo Jose de Sousa
8018748fe2 AP_Scheduler: add field "name" to task structure for logging purposes
That field will be useful for logging as it is easier to know what task a log
is related to by using the task's name rather than using the number.
2015-09-01 20:22:18 +10:00
Gustavo Jose de Sousa
2e6074c108 AP_Scheduler: use designated initializers for tasks structs
Makes code less prone to break build and semantics (e.g., when a new field is
added).
2015-09-01 20:22:18 +10:00
Andrew Tridgell
a3d7156f28 SITL: raise default simulation rate to 1200Hz
this greatly improves things for the heli sim
2015-09-01 16:34:20 +10:00
Randy Mackay
6701d53d49 GPS: add GNSS_MODE parameter bitmask 2015-09-01 12:19:59 +09:00
Randy Mackay
2351e84592 IRLock: replace tabs with spaces
No functional change
2015-08-31 18:00:33 +09:00
Randy Mackay
bf08fc317c AC_PrecLand: correct include paths 2015-08-31 18:00:26 +09:00
Randy Mackay
c06593f987 AC_PrecLand: precision landing lib for IR-Lock and companion computer 2015-08-31 18:00:25 +09:00
Randy Mackay
7706102d1e AC_WPNav: add shift_loiter_target method
Shift the loiter target and freeze the feedforward if necessary
2015-08-31 18:00:24 +09:00
Randy Mackay
6f3ff0866f IRLock: adjust to px4 lib calculating bf angles 2015-08-31 18:00:20 +09:00
Randy Mackay
04c682542c IRLock: correct include paths 2015-08-31 18:00:14 +09:00
bstone04
cf8ce867e6 IRLock: many changes to integrate with PrecLand library
irlock_center_x_pos calculates the lateral x position of the marker in cm. relative to the quad
irlock_x_pos_to_latlon rotates the frame based x position to latitude/longtitude based coordinates
same case for the y position
add get_angle_to_target method
get_angle_to_target replaces pixel to position calculations
Also removed ahrs reference (now in AC_PrecLand lib), unused references
to orb and commented out parameter declaration
reduce max objects to 5
remove ahrs reference
add timeout
return true if new sample found
bug fix get_angle_to_target
remove unused get_frame
2015-08-31 17:57:57 +09:00
Michael Landes
59928ed677 IRLock: Initial implementation
Define the IRLock sensor object using PX4 level driver
2015-08-31 17:57:56 +09:00
Grant Morphett
1595c137f8 AC_PID_test: fixed AC_HELI_PID constructor 2015-08-31 13:45:13 +09:00
Randy Mackay
e3ff4ed9c4 MotorsHeli: integrate RotorControlState 2015-08-31 11:43:59 +09:00
Randy Mackay
cb47311416 MotorsHeli_RSC: add RotorControlMode enum 2015-08-31 11:43:58 +09:00
Randy Mackay
72efc85ee8 MotorsHeli_RSC: RotorControlState enum 2015-08-31 11:43:57 +09:00
Robert Lefebvre
bde43412d8 AP_MotorsHeli: Fix RSC Mode 3 2015-08-31 11:43:55 +09:00
Robert Lefebvre
38ccd6e04f AP_MotorsHeli_RSC: Fix tail_type control 2015-08-31 11:43:54 +09:00
Robert Lefebvre
535da1d79a AP_MotorsHeli_Single: DDVPT to use it's own ramp and runup times 2015-08-31 11:43:51 +09:00
Robert Lefebvre
28318c4116 AP_MotorsHeli: Move Output functions into parent class 2015-08-31 11:43:50 +09:00
Robert Lefebvre
84102c3e3f AP_MotorsHeli: Rework how servo setup is done. 2015-08-31 11:43:49 +09:00
Robert Lefebvre
345663f705 AP_MotorsHeli: Simplify servo init/reset 2015-08-31 11:43:48 +09:00
Robert Lefebvre
b11600aebe AP_MotorsHeli: Move set_delta_phase_angle into _Single class 2015-08-31 11:43:47 +09:00
Robert Lefebvre
3756c6b3f3 AP_MotorsHeli: Create RSC Throttle Curve mode for controlling gas engines. 2015-08-31 11:43:45 +09:00
Robert Lefebvre
f853979816 AP_MotorsHeli: run RSC Control function in Output Min function
Move Output_Min() function into Heli_Single class as it will eventually be overloaded by other helicopter class types.
2015-08-31 11:43:44 +09:00
Robert Lefebvre
315f0408ae AP_MotorsHeli: RSC controller to use speed ramp as simple float scalar 2015-08-31 11:27:52 +09:00
Robert Lefebvre
91c7663ca2 AP_MotorsHeli: Set range of new RSC Servo object. 2015-08-31 11:27:51 +09:00
Robert Lefebvre
cefa0c28a6 AP_MotorsHeli: RSC Mode 0 no longer a valid mode 2015-08-31 11:27:48 +09:00
Robert Lefebvre
981c96d8bc AP_MotorsHeli: Add more parameter checks 2015-08-31 11:27:47 +09:00
Robert Lefebvre
ed08e9d531 AP_MotorsHeli_RSC: Split out rotor speed estimate into it's own function 2015-08-31 11:27:46 +09:00
Robert Lefebvre
064cc63512 AP_MotorsHeli: Colyaw function to check if rotor speed control is above idle 2015-08-31 11:27:45 +09:00
Robert Lefebvre
77e4bf39aa AP_MotorsHeli: rework RSC output() function to implement idle speed function
Also, split out speed_ramp function
2015-08-31 11:27:44 +09:00
Robert Lefebvre
c3e7eed299 AP_MotorsHeli_Single: Fix recalc_scalars function 2015-08-31 11:27:42 +09:00
Robert Lefebvre
214d60abb9 AP_MotorsHeli: Create RSC_IDLE param 2015-08-31 11:27:41 +09:00
Robert Lefebvre
27f8d6bcd5 AP_MotorsHeli: Change RSC output() function into a state machine. 2015-08-31 11:27:40 +09:00
Robert Lefebvre
10b0be9e75 AP_MotorsHeli: Fully detail tradheli output functions and move manual servo handling 2015-08-31 11:27:39 +09:00
Robert Lefebvre
7dda0f651a AP_MotorsHeli: Rename tradheli servo objects for clarity 2015-08-31 11:27:38 +09:00
Robert Lefebvre
457d939e77 AP_MotorsHeli: Update includes so that it builds 2015-08-31 11:27:37 +09:00
Fredrik Hedberg
e6119cf51f AP_Motors: Fix param indices in AP_MotorsHeli. 2015-08-31 11:27:36 +09:00
Fredrik Hedberg
411947ea7c AP_Motors: Rename output_yaw to move_yaw in AP_MotorsHeli_Single. 2015-08-31 11:27:35 +09:00
Fredrik Hedberg
1e8be73a27 AP_Motors: Fix formatting in AP_MotorsHeli_RSC. 2015-08-31 11:27:34 +09:00
Fredrik Hedberg
e6957df54a AP_Motors: Fix param range comment in AP_MotorsHeli. 2015-08-31 11:27:33 +09:00
Fredrik Hedberg
97e09fa9b0 AP_Motors: Move traditional helicopter controls into AP_MotorsHeli_Single.
Original commit by fhedberg, had to fix merge conflicts and now it appears I did the commit?
2015-08-31 11:27:31 +09:00
Fredrik Hedberg
af69a20ba5 AP_Motors: Break out yaw output in AP_MotorsHeli. 2015-08-31 11:27:30 +09:00
Fredrik Hedberg
feb32f40ed AP_Motors: Break out servo init and reset in AP_MotorsHeli. 2015-08-31 11:27:29 +09:00
Fredrik Hedberg
ae9a16dc27 AP_Motors: Move rotor speed control into AP_MotorsHeli_RSC. 2015-08-31 11:27:28 +09:00
Fredrik Hedberg
1bb6b65ce0 AP_Motors: Use C++11 initializers in AP_MotorsHeli. 2015-08-31 11:27:27 +09:00
Andrew Tridgell
f6f2973acd AC_WPNav: make changes in WPNAV_ACCEL take effect immediately
this makes it easier to tune the waypoint controller in auto mode
2015-08-31 11:10:35 +10:00
Andrew Tridgell
2c7a113790 AP_GPS: ensure all GPS drivers give headings as 0..360 degrees
this prevents inconsistency between interfaces, and fixes a MAVLink
reporting bug with UAVCAN GPS
2015-08-31 08:24:35 +10:00
Tom Pittenger
15b242832e AP_Mission: lat/lng == 0 bug fix
was using wrong logic to check for lat/lng == 0
2015-08-29 21:17:35 +10:00
Tom Pittenger
41508457e1 AP_Mission: add get_prev_nav_cmd_with_wp_index()
This is different than get_prev_nav_cmd_index() in that it only stores the index if there is a valid lat/lng
2015-08-29 21:17:35 +10:00
Stewart Loving-Gibbard
c5f70d22c5 AP_RSSI: Adding RSSI library for reading various kinds of RSSI, with the possibility of adding more.
* Retains ability to read from Analog Pin
* Adds ability to read RSSI from PWM channel value as is done in OpenLRSng, EazyUHF, and various other LRS.
* Handles any type of RSSI that provides RSSI values inverted - i.e. when the low value is the best signal and the high value is the worst signal.
* Has different key names from all existing RSSI parameters to provide for a clean break and easier distinguishing.
2015-08-29 08:05:53 +10:00
Grant Morphett
1b67e49df4 exampleLowPassFilter2p: fixed simple typo error - now build success 2015-08-28 15:36:50 +09:00
Lucas De Marchi
a66a201bf5 AP_Compass: HMC5843: Add support for MPU6000 auxiliary bus
Allow HMC5843 to be on MPU6000's auxiliary bus.
2015-08-28 12:39:09 +10:00
Lucas De Marchi
a44ab9ed98 AP_HAL: define constant for HMC5843 on MPU6000 2015-08-28 12:39:09 +10:00
Lucas De Marchi
628e446e3e AP_Compass: HMC5843: use a struct for raw value
Like is done in AK8963, declare a raw_value struct.
2015-08-28 12:39:09 +10:00
Lucas De Marchi
9ecd1daf81 AP_Compass: HMC5843: remove useless delay
There's no need to add a delay after suspending timer in the
initialization. Also initialize _bus_sem earlier, like is done in
AK8963.
2015-08-28 12:39:09 +10:00
Lucas De Marchi
c66c9c41f2 AP_Compass: HMC5843: be agnostic to I2C bus
Like was done to inertial AK8963 and inertial sensor move the decision
regarding the I2C bus to the caller. We don't allow changing the address
because apparently HMC5843 doesn't support different addresses.

Changing only the bus could be more easily done but this prepares the
ground for using HMC5843 on an AuxiliarBus.

The need for a more generic abstraction is evidenced by this commit: a
"SerialBus" in AP_HAL would be a nice addition rather than letting each
driver to provide its own. However the methods are a little bit
different from what we have in AK8963. It's safer to do the simple
conversion now and later on to add the abstraction changing everybody to
use it.
2015-08-28 12:39:09 +10:00
Staroselskii Georgii
3eb6be64c9 AP_Compass: ignore first two readings in a clearer way
This way we don't mix two different conditionals: settling and data validation.
2015-08-28 12:39:09 +10:00
Staroselskii Georgii
633330db14 AP_Compass: rename calibration array in HMC
I think naming the variable "scaling" makes more sense.
2015-08-28 12:39:09 +10:00
Staroselskii Georgii
d8bddcbf3a AP_Compass: fix indentation in HMC's driver 2015-08-28 12:39:09 +10:00
Staroselskii Georgii
79ffddc6db AP_Compass: add a macro for checking calibration values in HMC 2015-08-28 12:39:08 +10:00
Lucas De Marchi
f61386ae43 AP_Compass: HMC5843: release the lock before read
read() calls accumulate() which takes the lock by itself so we must
release it like we were doing before 669ae26 ("AP_Compass: encapsulated
calibration in HMC").
2015-08-28 12:39:08 +10:00
Staroselskii Georgii
a9e8c1c464 AP_Compass: encapsulated calibration in HMC 2015-08-28 12:39:08 +10:00
Staroselskii Georgii
0fbc295d97 AP_Compass: encapsulated version detection in HMC driver 2015-08-28 12:39:08 +10:00
Lucas De Marchi
868d0bf3c3 AP_Compass: AK8963: refactor constructors
Declare a common constructor that others can call.
2015-08-28 12:39:08 +10:00
Lucas De Marchi
a5df93bf10 AP_Compass: AK8963: be agnostic to I2C bus/address
This decision is better made by the caller rather than polluting the
driver with board-specific details.
2015-08-28 12:39:08 +10:00
Lucas De Marchi
d92c2ac9f5 AP_Compass: pass backend instead of pointer to function
Just like was done for inertial sensor, different detect() functions
might need different arguments and passing a pointer to function here is
cumbersome. For example, it forces to have a method like "detect_i2c2"
rather than allowing hal.i2c2 to be passed as parameter.
2015-08-28 12:39:08 +10:00
Lucas De Marchi
c66800dfec AP_InertialSensor: add singleton interface
In order to allow other libraries to use the InertialSensor we need a
way to let them to get the only instance of InertialSensor. The
conventional way to do a singleton would be to let the constructor
private and force it to be instantiated from the get_instance() method.

Here however we just call panic() on the constructor if there's already
an instance alive. This allows us to let the vehicles as is. Later we
can change it so they call the get_instance() method instead.
2015-08-28 12:39:08 +10:00
Lucas De Marchi
565c18603d AP_InertialSensor: MPU6000: export auxiliary bus 2015-08-28 12:39:08 +10:00
Lucas De Marchi
caae933c28 AP_InertialSensor: Add support for auxiliary buses
Add an AuxiliaryBus class that can be derived for specific
implementations in inertial sensor backends. It's an abstract
implementation so other libraries can use the auxiliary bus exported. In
order for this to succeed the backend implementation must split the
initialization of the sensor from the actual sample collecting, like is
done in MPU6000.

When AP_InertialSensor::get_auxiliary_bus() is called it will execute
following steps:
	a) Force the backends to be detected if it's the first time it's
	   being called
	b) Find the backend identified by the id
	c) call get_auxiliary_bus() on the backend so other libraries can
	   that AuxiliaryBus to initialize a slave device

Slave devices can be used by calling AuxiliaryBus::request_next_slave()
and are owned by the caller until AuxiliaryBus::register_periodic_read()
is called. From that time on the AuxiliaryBus object takes its ownership.
This way it's possible to do the necessary cleanup later without
introducing refcounts, that we don't have support to.

Between these 2 functions the caller can configure the slave device by
doing its specific initializations by calling the passthrough_*
functions. After the initial configuration and register_periodic_read()
is called only read() can be called.
2015-08-28 12:39:08 +10:00
Lucas De Marchi
3cb6f391d4 AP_InertialSensor: MPU6000: split detection and initialization 2015-08-28 12:39:08 +10:00