Browse Source

AP_Baro: added alternative setHIL interface

uses pressure and temperature for better log replay
mission-4.1.18
Andrew Tridgell 11 years ago
parent
commit
b2bd81f262
  1. 27
      libraries/AP_Baro/AP_Baro_HIL.cpp
  2. 2
      libraries/AP_Baro/AP_Baro_HIL.h

27
libraries/AP_Baro/AP_Baro_HIL.cpp

@ -9,7 +9,6 @@ extern const AP_HAL::HAL& hal; @@ -9,7 +9,6 @@ extern const AP_HAL::HAL& hal;
// Public Methods //////////////////////////////////////////////////////////////
bool AP_Baro_HIL::init()
{
BMP085_State=1;
return true;
}
@ -34,6 +33,16 @@ uint8_t AP_Baro_HIL::read() @@ -34,6 +33,16 @@ uint8_t AP_Baro_HIL::read()
return result;
}
void AP_Baro_HIL::setHIL(float pressure, float temperature)
{
_count = 1;
_pressure_sum = pressure;
_temperature_sum = temperature;
_last_update = hal.scheduler->millis();
healthy = true;
}
// ==========================================================================
// based on tables.cpp from http://www.pdas.com/atmosdownload.html
@ -75,21 +84,7 @@ void AP_Baro_HIL::setHIL(float altitude_msl) @@ -75,21 +84,7 @@ void AP_Baro_HIL::setHIL(float altitude_msl)
float p = p0 * delta;
float T = 303.16 * theta - 273.16; // Assume 30 degrees at sea level - converted to degrees Kelvin
_count++;
_pressure_sum += p;
_temperature_sum += T;
if (_count == 128) {
// we have summed 128 values. This only happens
// when we stop reading the barometer for a long time
// (more than 1.2 seconds)
_count = 64;
_pressure_sum /= 2;
_temperature_sum /= 2;
}
healthy = true;
_last_update = hal.scheduler->millis();
setHIL(p, T);
}
float AP_Baro_HIL::get_pressure() {

2
libraries/AP_Baro/AP_Baro_HIL.h

@ -8,7 +8,6 @@ @@ -8,7 +8,6 @@
class AP_Baro_HIL : public AP_Baro
{
private:
uint8_t BMP085_State;
float Temp;
float Press;
float _pressure_sum;
@ -21,6 +20,7 @@ public: @@ -21,6 +20,7 @@ public:
float get_pressure();
float get_temperature();
void setHIL(float altitude_msl);
void setHIL(float pressure, float temperature);
};
#endif // __AP_BARO__HIL_H__

Loading…
Cancel
Save