Path: blob/master/libraries/AP_Baro/AP_Baro_BMP085.h
9751 views
#pragma once12#include "AP_Baro_Backend.h"34#if AP_BARO_BMP085_ENABLED56#include <AP_HAL/AP_HAL.h>7#include <AP_HAL/I2CDevice.h>8#include <Filter/Filter.h>910#ifndef HAL_BARO_BMP085_I2C_ADDR11#define HAL_BARO_BMP085_I2C_ADDR (0x77)12#endif1314class AP_Baro_BMP085 : public AP_Baro_Backend {15public:16AP_Baro_BMP085(AP_Baro &baro, AP_HAL::Device &dev);1718/* AP_Baro public interface: */19void update() override;2021static AP_Baro_Backend *probe(AP_Baro &baro, AP_HAL::Device &dev);222324private:25bool _init();2627void _cmd_read_pressure();28void _cmd_read_temp();29bool _read_pressure();30void _read_temp();31void _calculate();32bool _data_ready();3334void _timer(void);3536uint16_t _read_prom_word(uint8_t word);37bool _read_prom(uint16_t *prom);383940AP_HAL::Device *_dev;41AP_HAL::DigitalSource *_eoc;4243uint8_t _instance;44bool _has_sample;4546// Boards with no EOC pin: use times instead47uint32_t _last_press_read_command_time;48uint32_t _last_temp_read_command_time;4950// State machine51uint8_t _state;5253// Internal calibration registers54int16_t ac1, ac2, ac3, b1, b2, mb, mc, md;55uint16_t ac4, ac5, ac6;5657int32_t _raw_pressure;58int32_t _raw_temp;59int32_t _temp;60AverageIntegralFilter<int32_t, int32_t, 10> _pressure_filter;6162uint8_t _vers;63uint8_t _type;64};6566#endif // AP_BARO_BMP085_ENABLED676869