From cc590ee587da96168172ba39d5d8d5fd2e90be34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Jos=C3=A9=20Pereira?= Date: Mon, 7 May 2018 16:24:57 -0300 Subject: [PATCH] AP_Baro: Add BARO_TYPE_WATER model to SITL when running for ArduSub MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Patrick José Pereira --- libraries/AP_Baro/AP_Baro_SITL.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/libraries/AP_Baro/AP_Baro_SITL.cpp b/libraries/AP_Baro/AP_Baro_SITL.cpp index dca2708049..761031cd2a 100644 --- a/libraries/AP_Baro/AP_Baro_SITL.cpp +++ b/libraries/AP_Baro/AP_Baro_SITL.cpp @@ -1,4 +1,5 @@ #include +#include #if CONFIG_HAL_BOARD == HAL_BOARD_SITL @@ -16,6 +17,9 @@ AP_Baro_SITL::AP_Baro_SITL(AP_Baro &baro) : _sitl = (SITL::SITL *)AP_Param::find_object("SIM_"); if (_sitl != nullptr) { _instance = _frontend.register_sensor(); +#if APM_BUILD_TYPE(APM_BUILD_ArduSub) + _frontend.set_type(_instance, AP_Baro::BARO_TYPE_WATER); +#endif hal.scheduler->register_timer_process(FUNCTOR_BIND(this, &AP_Baro_SITL::_timer, void)); } } @@ -94,14 +98,22 @@ void AP_Baro_SITL::_timer() sim_alt = _buffer[best_index].data; } - float sigma, delta, theta; const float p0 = 101325.0f; +#if !APM_BUILD_TYPE(APM_BUILD_ArduSub) + float sigma, delta, theta; + AP_Baro::SimpleAtmosphere(sim_alt * 0.001f, sigma, delta, theta); float p = p0 * delta; float T = 303.16f * theta - 273.16f; // Assume 30 degrees at sea level - converted to degrees Kelvin temperature_adjustment(p, T); +#else + float rho, delta, theta; + AP_Baro::SimpleUnderWaterAtmosphere(-sim_alt * 0.001f, rho, delta, theta); + float p = p0 * delta; + float T = 303.16f * theta - 273.16f; // Assume 30 degrees at sea level - converted to degrees Kelvin +#endif _recent_press = p; _recent_temp = T;