1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #pragma once
- #include "AP_Baro.h"
- class AP_Baro_Backend
- {
- public:
- AP_Baro_Backend(AP_Baro &baro);
- virtual ~AP_Baro_Backend(void) {};
- // each driver must provide an update method to copy accumulated
- // data to the frontend
- virtual void update() = 0;
- // accumulate function. This is used for backends that don't use a
- // timer, and need to be called regularly by the main code to
- // trigger them to read the sensor
- virtual void accumulate(void) {}
- void backend_update(uint8_t instance);
- // Check that the baro valid by using a mean filter.
- // If the value further that filtrer_range from mean value, it is rejected.
- bool pressure_ok(float press);
- uint32_t get_error_count() const { return _error_count; }
- protected:
- // reference to frontend object
- AP_Baro &_frontend;
- void _copy_to_frontend(uint8_t instance, float pressure, float temperature);
- // semaphore for access to shared frontend data
- HAL_Semaphore_Recursive _sem;
- virtual void update_healthy_flag(uint8_t instance);
- // mean pressure for range filter
- float _mean_pressure;
- // number of dropped samples. Not used for now, but can be usable to choose more reliable sensor
- uint32_t _error_count;
- };
|