use super::*;
impl<T, E> LPS25HB<T>
where
T: Interface<Error = E>,
{
pub fn set_datarate(&mut self, odr: ODR) -> Result<(), T::Error> {
let mut reg_data = [0u8];
self.interface
.read(Registers::CTRL_REG1.addr(), &mut reg_data)?;
let mut payload = reg_data[0];
payload &= !Bitmasks::ODR_MASK;
payload |= odr.value();
self.interface.write(Registers::CTRL_REG1.addr(), payload)?;
Ok(())
}
pub fn temperature_resolution(&mut self, resolution: TEMP_RES) -> Result<(), T::Error> {
let mut reg_data = [0u8];
self.interface
.read(Registers::RES_CONF.addr(), &mut reg_data)?;
let mut payload = reg_data[0];
payload &= !Bitmasks::AVGT_MASK;
payload |= resolution.value();
self.interface.write(Registers::RES_CONF.addr(), payload)?;
Ok(())
}
pub fn pressure_resolution(&mut self, resolution: PRESS_RES) -> Result<(), T::Error> {
let mut reg_data = [0u8];
self.interface
.read(Registers::RES_CONF.addr(), &mut reg_data)?;
let mut payload = reg_data[0];
payload &= !Bitmasks::AVGP_MASK;
payload |= resolution.value();
self.interface.write(Registers::RES_CONF.addr(), payload)?;
Ok(())
}
pub fn bdu_enable(&mut self, flag: bool) -> Result<(), T::Error> {
match flag {
true => self.set_register_bit_flag(Registers::CTRL_REG1, Bitmasks::BDU),
false => self.clear_register_bit_flag(Registers::CTRL_REG1, Bitmasks::BDU),
}
}
pub fn autozero_config(&mut self, flag: bool) -> Result<(), T::Error> {
match flag {
true => self.set_register_bit_flag(Registers::CTRL_REG2, Bitmasks::AUTOZERO),
false => self.clear_register_bit_flag(Registers::CTRL_REG2, Bitmasks::AUTOZERO),
}
}
pub fn autozero_reset(&mut self) -> Result<(), T::Error> {
self.set_register_bit_flag(Registers::CTRL_REG1, Bitmasks::RESET_AZ)
}
pub fn i2c_disable(&mut self, flag: bool) -> Result<(), T::Error> {
match flag {
true => self.set_register_bit_flag(Registers::CTRL_REG2, Bitmasks::I2C_DIS),
false => self.clear_register_bit_flag(Registers::CTRL_REG2, Bitmasks::I2C_DIS),
}
}
pub fn spi_config(&mut self, mode: SPI_Mode) -> Result<(), T::Error> {
match mode {
SPI_Mode::_3wire => self.set_register_bit_flag(Registers::CTRL_REG1, Bitmasks::SIM),
SPI_Mode::_4wire => self.clear_register_bit_flag(Registers::CTRL_REG1, Bitmasks::SIM),
}
}
pub fn sensor_on(&mut self, flag: bool) -> Result<(), T::Error> {
match flag {
true => self.set_register_bit_flag(Registers::CTRL_REG1, Bitmasks::PD),
false => self.clear_register_bit_flag(Registers::CTRL_REG1, Bitmasks::PD),
}
}
pub fn reboot(&mut self) -> Result<(), T::Error> {
self.set_register_bit_flag(Registers::CTRL_REG2, Bitmasks::BOOT)
}
pub fn software_reset(&mut self) -> Result<(), T::Error> {
self.set_register_bit_flag(Registers::CTRL_REG2, Bitmasks::SWRESET)
}
}