From c1202e4878137f416a07fb5130f5223a3832ec20 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Tue, 8 Dec 2020 21:13:41 +1100 Subject: [PATCH] AP_HAL_SITL: add simulated SF45B --- libraries/AP_HAL_SITL/SITL_State.cpp | 15 +++++++++++++++ libraries/AP_HAL_SITL/SITL_State.h | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/libraries/AP_HAL_SITL/SITL_State.cpp b/libraries/AP_HAL_SITL/SITL_State.cpp index e3e943d84a..65255de58e 100644 --- a/libraries/AP_HAL_SITL/SITL_State.cpp +++ b/libraries/AP_HAL_SITL/SITL_State.cpp @@ -358,6 +358,12 @@ int SITL_State::sim_fd(const char *name, const char *arg) } terarangertower = new SITL::PS_TeraRangerTower(); return terarangertower->fd(); + } else if (streq(name, "sf45b")) { + if (sf45b != nullptr) { + AP_HAL::panic("Only one sf45b at a time"); + } + sf45b = new SITL::PS_LightWare_SF45B(); + return sf45b->fd(); } else if (streq(name, "richenpower")) { sitl_model->set_richenpower(&_sitl->richenpower_sim); return _sitl->richenpower_sim.fd(); @@ -471,6 +477,11 @@ int SITL_State::sim_fd_write(const char *name) AP_HAL::panic("No terarangertower created"); } return terarangertower->write_fd(); + } else if (streq(name, "sf45b")) { + if (sf45b == nullptr) { + AP_HAL::panic("No sf45b created"); + } + return sf45b->write_fd(); } else if (streq(name, "richenpower")) { return _sitl->richenpower_sim.write_fd(); } else if (streq(name, "ie24")) { @@ -686,6 +697,10 @@ void SITL_State::_fdm_input_local(void) terarangertower->update(sitl_model->get_location()); } + if (sf45b != nullptr) { + sf45b->update(sitl_model->get_location()); + } + if (_sitl) { _sitl->efi_ms.update(); } diff --git a/libraries/AP_HAL_SITL/SITL_State.h b/libraries/AP_HAL_SITL/SITL_State.h index a7eaeffb52..af201c0740 100644 --- a/libraries/AP_HAL_SITL/SITL_State.h +++ b/libraries/AP_HAL_SITL/SITL_State.h @@ -50,6 +50,7 @@ // #include #include #include +#include #include #include @@ -289,6 +290,9 @@ private: // simulated RPLidarA2: SITL::PS_RPLidarA2 *rplidara2; + // simulated SF45B proximity sensor: + SITL::PS_LightWare_SF45B *sf45b; + SITL::PS_TeraRangerTower *terarangertower; // simulated CRSF devices