From 5d4400f1b7d971604a77fafc84b00ec0eb8388be Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 12 Apr 2017 10:19:21 +1000 Subject: [PATCH] AC_PrecLand: added BUS parameter for precision landing allow selection of i2c bus for irlock --- libraries/AC_PrecLand/AC_PrecLand.cpp | 7 +++++++ libraries/AC_PrecLand/AC_PrecLand.h | 1 + libraries/AC_PrecLand/AC_PrecLand_Backend.h | 3 +++ libraries/AC_PrecLand/AC_PrecLand_IRLock.cpp | 2 +- libraries/AC_PrecLand/AC_PrecLand_SITL_Gazebo.cpp | 2 +- 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/libraries/AC_PrecLand/AC_PrecLand.cpp b/libraries/AC_PrecLand/AC_PrecLand.cpp index 639ea8c123..85e9114e95 100644 --- a/libraries/AC_PrecLand/AC_PrecLand.cpp +++ b/libraries/AC_PrecLand/AC_PrecLand.cpp @@ -83,6 +83,13 @@ const AP_Param::GroupInfo AC_PrecLand::var_info[] = { // @User: Advanced AP_GROUPINFO("CAM_POS", 7, AC_PrecLand, _cam_offset, 0.0f), + // @Param: BUS + // @DisplayName: Sensor Bus + // @Description: Precland sensor bus for I2C sensors. + // @Values: -1:DefaultBus,0:InternalI2C,1:ExternalI2C + // @User: Advanced + AP_GROUPINFO("BUS", 8, AC_PrecLand, _bus, -1), + AP_GROUPEND }; diff --git a/libraries/AC_PrecLand/AC_PrecLand.h b/libraries/AC_PrecLand/AC_PrecLand.h index 2005718bf1..ccf029e619 100644 --- a/libraries/AC_PrecLand/AC_PrecLand.h +++ b/libraries/AC_PrecLand/AC_PrecLand.h @@ -107,6 +107,7 @@ private: // parameters AP_Int8 _enabled; // enabled/disabled and behaviour AP_Int8 _type; // precision landing sensor type + AP_Int8 _bus; // which sensor bus AP_Int8 _estimator_type; // precision landing estimator type AP_Float _yaw_align; // Yaw angle from body x-axis to sensor x-axis. AP_Float _land_ofs_cm_x; // Desired landing position of the camera forward of the target in vehicle body frame diff --git a/libraries/AC_PrecLand/AC_PrecLand_Backend.h b/libraries/AC_PrecLand/AC_PrecLand_Backend.h index 77c1e36729..e38ee89edc 100644 --- a/libraries/AC_PrecLand/AC_PrecLand_Backend.h +++ b/libraries/AC_PrecLand/AC_PrecLand_Backend.h @@ -39,6 +39,9 @@ public: // parses a mavlink message from the companion computer virtual void handle_msg(mavlink_message_t* msg) {}; + // get bus parameter + int8_t get_bus(void) const { return _frontend._bus.get(); } + protected: const AC_PrecLand& _frontend; // reference to precision landing front end AC_PrecLand::precland_state &_state; // reference to this instances state diff --git a/libraries/AC_PrecLand/AC_PrecLand_IRLock.cpp b/libraries/AC_PrecLand/AC_PrecLand_IRLock.cpp index 6e90f9a772..bc014a3e23 100644 --- a/libraries/AC_PrecLand/AC_PrecLand_IRLock.cpp +++ b/libraries/AC_PrecLand/AC_PrecLand_IRLock.cpp @@ -15,7 +15,7 @@ AC_PrecLand_IRLock::AC_PrecLand_IRLock(const AC_PrecLand& frontend, AC_PrecLand: // init - perform initialisation of this backend void AC_PrecLand_IRLock::init() { - irlock.init(); + irlock.init(get_bus()); } // update - give chance to driver to get updates from sensor diff --git a/libraries/AC_PrecLand/AC_PrecLand_SITL_Gazebo.cpp b/libraries/AC_PrecLand/AC_PrecLand_SITL_Gazebo.cpp index cc4e148d0f..2bf94759dc 100644 --- a/libraries/AC_PrecLand/AC_PrecLand_SITL_Gazebo.cpp +++ b/libraries/AC_PrecLand/AC_PrecLand_SITL_Gazebo.cpp @@ -15,7 +15,7 @@ AC_PrecLand_SITL_Gazebo::AC_PrecLand_SITL_Gazebo(const AC_PrecLand& frontend, AC // init - perform initialisation of this backend void AC_PrecLand_SITL_Gazebo::init() { - irlock.init(); + irlock.init(get_bus()); } // update - give chance to driver to get updates from sensor