25 #define LPS22HB_WHOAMI 0xB1 26 #define LPS25HB_WHOAMI 0xBD 30 #define LPS22H_ID 0xB1 31 #define LPS22H_CTRL_REG1 0x10 32 #define LPS22H_CTRL_REG2 0x11 33 #define LPS22H_CTRL_REG3 0x12 35 #define LPS22H_CTRL_REG1_SIM (1 << 0) 36 #define LPS22H_CTRL_REG1_BDU (1 << 1) 37 #define LPS22H_CTRL_REG1_LPFP_CFG (1 << 2) 38 #define LPS22H_CTRL_REG1_EN_LPFP (1 << 3) 39 #define LPS22H_CTRL_REG1_PD (0 << 4) 40 #define LPS22H_CTRL_REG1_ODR_1HZ (1 << 4) 41 #define LPS22H_CTRL_REG1_ODR_10HZ (2 << 4) 42 #define LPS22H_CTRL_REG1_ODR_25HZ (3 << 4) 43 #define LPS22H_CTRL_REG1_ODR_50HZ (4 << 4) 44 #define LPS22H_CTRL_REG1_ODR_75HZ (5 << 4) 47 #define LPS25H_CTRL_REG1_ADDR 0x20 48 #define LPS25H_CTRL_REG2_ADDR 0x21 49 #define LPS25H_CTRL_REG3_ADDR 0x22 50 #define LPS25H_CTRL_REG4_ADDR 0x23 51 #define LPS25H_FIFO_CTRL 0x2E 52 #define TEMP_OUT_ADDR 0x2B 53 #define PRESS_OUT_XL_ADDR 0x28 58 , _dev(
std::move(dev))
69 if (!sensor || !sensor->
_init()) {
90 if (!sensor || !sensor->
_init()) {
115 hal.
console->
printf(
"IMU: whoami 0x%02x old_address=%02x\n", whoami, old_address);
225 int16_t Temp_Reg_s16 = (uint16_t)(pu8[1]<<8) | pu8[0];
242 int32_t Pressure_Reg_s32 = ((uint32_t)pressure[2]<<16)|((uint32_t)pressure[1]<<8)|(uint32_t)pressure[0];
243 int32_t Pressure_mb = Pressure_Reg_s32 * (100.0 / 4096);
#define LPS22H_CTRL_REG1_BDU
#define MPUREG_INT_PIN_CFG
virtual PeriodicHandle register_periodic_callback(uint32_t period_usec, PeriodicCb)=0
AP_Baro_LPS2XH(AP_Baro &baro, AP_HAL::OwnPtr< AP_HAL::Device > dev)
AP_HAL::UARTDriver * console
void _copy_to_frontend(uint8_t instance, float pressure, float temperature)
uint8_t register_sensor(void)
virtual AP_HAL::Semaphore * get_semaphore()=0
virtual void set_retries(uint8_t retries)
#define PRESS_OUT_XL_ADDR
uint8_t get_bus_address(void) const
#define HAL_SEMAPHORE_BLOCK_FOREVER
virtual bool take(uint32_t timeout_ms) WARN_IF_UNUSED=0
static AP_Baro_Backend * probe(AP_Baro &baro, AP_HAL::OwnPtr< AP_HAL::Device > dev)
void _update_pressure(void)
bool _imu_i2c_init(uint8_t imu_address)
virtual void delay(uint16_t ms)=0
virtual void printf(const char *,...) FMT_PRINTF(2
virtual bool take_nonblocking() WARN_IF_UNUSED=0
void _update_temperature(void)
static AP_HAL::OwnPtr< AP_HAL::Device > dev
virtual bool set_speed(Speed speed)=0
#define LPS25H_CTRL_REG1_ADDR
enum LPS2XH_TYPE _lps2xh_type
#define MPUREG_PWR_MGMT_1
virtual void set_address(uint8_t address)
#define LPS22H_CTRL_REG1_EN_LPFP
void set_read_flag(uint8_t flag)
#define BIT_PWR_MGMT_1_CLK_XGYRO
#define LPS22H_CTRL_REG1_ODR_75HZ
bool read_registers(uint8_t first_reg, uint8_t *recv, uint32_t recv_len)
#define FUNCTOR_BIND_MEMBER(func, rettype,...)
static AP_Baro_Backend * probe_InvensenseIMU(AP_Baro &baro, AP_HAL::OwnPtr< AP_HAL::Device > dev, uint8_t imu_address)
bool write_register(uint8_t reg, uint8_t val, bool checked=false)
#define LPS22H_CTRL_REG1_LPFP_CFG
#define LPS25H_CTRL_REG2_ADDR
AP_HAL::OwnPtr< AP_HAL::Device > _dev
AP_HAL::Scheduler * scheduler