diff --git a/Adafruit_STHS34PF80.cpp b/Adafruit_STHS34PF80.cpp index f9d8337..b721cd6 100644 --- a/Adafruit_STHS34PF80.cpp +++ b/Adafruit_STHS34PF80.cpp @@ -48,7 +48,7 @@ Adafruit_STHS34PF80::~Adafruit_STHS34PF80() { * @param wire The Wire object to be used for I2C connections * @return True if initialization was successful, otherwise false */ -bool Adafruit_STHS34PF80::begin(uint8_t i2c_addr, TwoWire *wire) { +bool Adafruit_STHS34PF80::begin(uint8_t i2c_addr, TwoWire* wire) { if (i2c_dev) { delete i2c_dev; } @@ -71,15 +71,15 @@ bool Adafruit_STHS34PF80::begin(uint8_t i2c_addr, TwoWire *wire) { if (!setObjAveraging(STHS34PF80_AVG_TMOS_32)) { return false; } - + if (!setAmbTempAveraging(STHS34PF80_AVG_T_8)) { return false; } - + if (!setBlockDataUpdate(true)) { return false; } - + if (!setOutputDataRate(STHS34PF80_ODR_1_HZ)) { return false; } @@ -96,8 +96,8 @@ bool Adafruit_STHS34PF80::isConnected() { return false; } - Adafruit_BusIO_Register chip_id = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_WHO_AM_I, 1); + Adafruit_BusIO_Register chip_id = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_WHO_AM_I, 1); return chip_id.read() == 0xD3; } @@ -128,13 +128,14 @@ bool Adafruit_STHS34PF80::reset() { * @param config The LPF configuration value * @return True if successful, false otherwise */ -bool Adafruit_STHS34PF80::setMotionLowPassFilter(sths34pf80_lpf_config_t config) { - Adafruit_BusIO_Register lpf1_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_LPF1, 1); - - Adafruit_BusIO_RegisterBits lpf_m_bits = Adafruit_BusIO_RegisterBits( - &lpf1_reg, 3, 0); - +bool Adafruit_STHS34PF80::setMotionLowPassFilter( + sths34pf80_lpf_config_t config) { + Adafruit_BusIO_Register lpf1_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_LPF1, 1); + + Adafruit_BusIO_RegisterBits lpf_m_bits = + Adafruit_BusIO_RegisterBits(&lpf1_reg, 3, 0); + return lpf_m_bits.write(config); } @@ -143,12 +144,12 @@ bool Adafruit_STHS34PF80::setMotionLowPassFilter(sths34pf80_lpf_config_t config) * @return The current LPF configuration value */ sths34pf80_lpf_config_t Adafruit_STHS34PF80::getMotionLowPassFilter() { - Adafruit_BusIO_Register lpf1_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_LPF1, 1); - - Adafruit_BusIO_RegisterBits lpf_m_bits = Adafruit_BusIO_RegisterBits( - &lpf1_reg, 3, 0); - + Adafruit_BusIO_Register lpf1_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_LPF1, 1); + + Adafruit_BusIO_RegisterBits lpf_m_bits = + Adafruit_BusIO_RegisterBits(&lpf1_reg, 3, 0); + return (sths34pf80_lpf_config_t)lpf_m_bits.read(); } @@ -157,13 +158,14 @@ sths34pf80_lpf_config_t Adafruit_STHS34PF80::getMotionLowPassFilter() { * @param config The LPF configuration value * @return True if successful, false otherwise */ -bool Adafruit_STHS34PF80::setMotionPresenceLowPassFilter(sths34pf80_lpf_config_t config) { - Adafruit_BusIO_Register lpf1_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_LPF1, 1); - - Adafruit_BusIO_RegisterBits lpf_p_m_bits = Adafruit_BusIO_RegisterBits( - &lpf1_reg, 3, 3); - +bool Adafruit_STHS34PF80::setMotionPresenceLowPassFilter( + sths34pf80_lpf_config_t config) { + Adafruit_BusIO_Register lpf1_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_LPF1, 1); + + Adafruit_BusIO_RegisterBits lpf_p_m_bits = + Adafruit_BusIO_RegisterBits(&lpf1_reg, 3, 3); + return lpf_p_m_bits.write(config); } @@ -172,12 +174,12 @@ bool Adafruit_STHS34PF80::setMotionPresenceLowPassFilter(sths34pf80_lpf_config_t * @return The current LPF configuration value */ sths34pf80_lpf_config_t Adafruit_STHS34PF80::getMotionPresenceLowPassFilter() { - Adafruit_BusIO_Register lpf1_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_LPF1, 1); - - Adafruit_BusIO_RegisterBits lpf_p_m_bits = Adafruit_BusIO_RegisterBits( - &lpf1_reg, 3, 3); - + Adafruit_BusIO_Register lpf1_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_LPF1, 1); + + Adafruit_BusIO_RegisterBits lpf_p_m_bits = + Adafruit_BusIO_RegisterBits(&lpf1_reg, 3, 3); + return (sths34pf80_lpf_config_t)lpf_p_m_bits.read(); } @@ -186,13 +188,14 @@ sths34pf80_lpf_config_t Adafruit_STHS34PF80::getMotionPresenceLowPassFilter() { * @param config The LPF configuration value * @return True if successful, false otherwise */ -bool Adafruit_STHS34PF80::setPresenceLowPassFilter(sths34pf80_lpf_config_t config) { - Adafruit_BusIO_Register lpf2_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_LPF2, 1); - - Adafruit_BusIO_RegisterBits lpf_p_bits = Adafruit_BusIO_RegisterBits( - &lpf2_reg, 3, 3); - +bool Adafruit_STHS34PF80::setPresenceLowPassFilter( + sths34pf80_lpf_config_t config) { + Adafruit_BusIO_Register lpf2_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_LPF2, 1); + + Adafruit_BusIO_RegisterBits lpf_p_bits = + Adafruit_BusIO_RegisterBits(&lpf2_reg, 3, 3); + return lpf_p_bits.write(config); } @@ -201,41 +204,44 @@ bool Adafruit_STHS34PF80::setPresenceLowPassFilter(sths34pf80_lpf_config_t confi * @return The current LPF configuration value */ sths34pf80_lpf_config_t Adafruit_STHS34PF80::getPresenceLowPassFilter() { - Adafruit_BusIO_Register lpf2_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_LPF2, 1); - - Adafruit_BusIO_RegisterBits lpf_p_bits = Adafruit_BusIO_RegisterBits( - &lpf2_reg, 3, 3); - + Adafruit_BusIO_Register lpf2_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_LPF2, 1); + + Adafruit_BusIO_RegisterBits lpf_p_bits = + Adafruit_BusIO_RegisterBits(&lpf2_reg, 3, 3); + return (sths34pf80_lpf_config_t)lpf_p_bits.read(); } /*! - * @brief Set the ambient temperature shock detection low-pass filter configuration + * @brief Set the ambient temperature shock detection low-pass filter + * configuration * @param config The LPF configuration value * @return True if successful, false otherwise */ -bool Adafruit_STHS34PF80::setTemperatureLowPassFilter(sths34pf80_lpf_config_t config) { - Adafruit_BusIO_Register lpf2_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_LPF2, 1); - - Adafruit_BusIO_RegisterBits lpf_a_t_bits = Adafruit_BusIO_RegisterBits( - &lpf2_reg, 3, 0); - +bool Adafruit_STHS34PF80::setTemperatureLowPassFilter( + sths34pf80_lpf_config_t config) { + Adafruit_BusIO_Register lpf2_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_LPF2, 1); + + Adafruit_BusIO_RegisterBits lpf_a_t_bits = + Adafruit_BusIO_RegisterBits(&lpf2_reg, 3, 0); + return lpf_a_t_bits.write(config); } /*! - * @brief Get the ambient temperature shock detection low-pass filter configuration + * @brief Get the ambient temperature shock detection low-pass filter + * configuration * @return The current LPF configuration value */ sths34pf80_lpf_config_t Adafruit_STHS34PF80::getTemperatureLowPassFilter() { - Adafruit_BusIO_Register lpf2_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_LPF2, 1); - - Adafruit_BusIO_RegisterBits lpf_a_t_bits = Adafruit_BusIO_RegisterBits( - &lpf2_reg, 3, 0); - + Adafruit_BusIO_Register lpf2_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_LPF2, 1); + + Adafruit_BusIO_RegisterBits lpf_a_t_bits = + Adafruit_BusIO_RegisterBits(&lpf2_reg, 3, 0); + return (sths34pf80_lpf_config_t)lpf_a_t_bits.read(); } @@ -245,12 +251,12 @@ sths34pf80_lpf_config_t Adafruit_STHS34PF80::getTemperatureLowPassFilter() { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setAmbTempAveraging(sths34pf80_avg_t_t config) { - Adafruit_BusIO_Register avg_trim_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_AVG_TRIM, 1); - - Adafruit_BusIO_RegisterBits avg_t_bits = Adafruit_BusIO_RegisterBits( - &avg_trim_reg, 2, 4); - + Adafruit_BusIO_Register avg_trim_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_AVG_TRIM, 1); + + Adafruit_BusIO_RegisterBits avg_t_bits = + Adafruit_BusIO_RegisterBits(&avg_trim_reg, 2, 4); + return avg_t_bits.write(config); } @@ -259,12 +265,12 @@ bool Adafruit_STHS34PF80::setAmbTempAveraging(sths34pf80_avg_t_t config) { * @return The current averaging configuration value */ sths34pf80_avg_t_t Adafruit_STHS34PF80::getAmbTempAveraging() { - Adafruit_BusIO_Register avg_trim_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_AVG_TRIM, 1); - - Adafruit_BusIO_RegisterBits avg_t_bits = Adafruit_BusIO_RegisterBits( - &avg_trim_reg, 2, 4); - + Adafruit_BusIO_Register avg_trim_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_AVG_TRIM, 1); + + Adafruit_BusIO_RegisterBits avg_t_bits = + Adafruit_BusIO_RegisterBits(&avg_trim_reg, 2, 4); + return (sths34pf80_avg_t_t)avg_t_bits.read(); } @@ -274,12 +280,12 @@ sths34pf80_avg_t_t Adafruit_STHS34PF80::getAmbTempAveraging() { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setObjAveraging(sths34pf80_avg_tmos_t config) { - Adafruit_BusIO_Register avg_trim_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_AVG_TRIM, 1); - - Adafruit_BusIO_RegisterBits avg_tmos_bits = Adafruit_BusIO_RegisterBits( - &avg_trim_reg, 3, 0); - + Adafruit_BusIO_Register avg_trim_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_AVG_TRIM, 1); + + Adafruit_BusIO_RegisterBits avg_tmos_bits = + Adafruit_BusIO_RegisterBits(&avg_trim_reg, 3, 0); + return avg_tmos_bits.write(config); } @@ -288,12 +294,12 @@ bool Adafruit_STHS34PF80::setObjAveraging(sths34pf80_avg_tmos_t config) { * @return The current averaging configuration value */ sths34pf80_avg_tmos_t Adafruit_STHS34PF80::getObjAveraging() { - Adafruit_BusIO_Register avg_trim_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_AVG_TRIM, 1); - - Adafruit_BusIO_RegisterBits avg_tmos_bits = Adafruit_BusIO_RegisterBits( - &avg_trim_reg, 3, 0); - + Adafruit_BusIO_Register avg_trim_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_AVG_TRIM, 1); + + Adafruit_BusIO_RegisterBits avg_tmos_bits = + Adafruit_BusIO_RegisterBits(&avg_trim_reg, 3, 0); + return (sths34pf80_avg_tmos_t)avg_tmos_bits.read(); } @@ -303,12 +309,12 @@ sths34pf80_avg_tmos_t Adafruit_STHS34PF80::getObjAveraging() { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setWideGainMode(bool wide_mode) { - Adafruit_BusIO_Register ctrl0_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL0, 1); - - Adafruit_BusIO_RegisterBits gain_bits = Adafruit_BusIO_RegisterBits( - &ctrl0_reg, 3, 4); - + Adafruit_BusIO_Register ctrl0_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL0, 1); + + Adafruit_BusIO_RegisterBits gain_bits = + Adafruit_BusIO_RegisterBits(&ctrl0_reg, 3, 4); + return gain_bits.write(wide_mode ? 0x00 : 0x07); } @@ -317,12 +323,12 @@ bool Adafruit_STHS34PF80::setWideGainMode(bool wide_mode) { * @return True if in wide mode, false if in default gain mode */ bool Adafruit_STHS34PF80::getWideGainMode() { - Adafruit_BusIO_Register ctrl0_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL0, 1); - - Adafruit_BusIO_RegisterBits gain_bits = Adafruit_BusIO_RegisterBits( - &ctrl0_reg, 3, 4); - + Adafruit_BusIO_Register ctrl0_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL0, 1); + + Adafruit_BusIO_RegisterBits gain_bits = + Adafruit_BusIO_RegisterBits(&ctrl0_reg, 3, 4); + return gain_bits.read() == 0x00; } @@ -332,9 +338,9 @@ bool Adafruit_STHS34PF80::getWideGainMode() { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setSensitivity(int8_t sensitivity) { - Adafruit_BusIO_Register sens_data_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_SENS_DATA, 1); - + Adafruit_BusIO_Register sens_data_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_SENS_DATA, 1); + return sens_data_reg.write((uint8_t)sensitivity); } @@ -343,9 +349,9 @@ bool Adafruit_STHS34PF80::setSensitivity(int8_t sensitivity) { * @return Signed 8-bit sensitivity value (two's complement) */ int8_t Adafruit_STHS34PF80::getSensitivity() { - Adafruit_BusIO_Register sens_data_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_SENS_DATA, 1); - + Adafruit_BusIO_Register sens_data_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_SENS_DATA, 1); + return (int8_t)sens_data_reg.read(); } @@ -355,12 +361,12 @@ int8_t Adafruit_STHS34PF80::getSensitivity() { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setBlockDataUpdate(bool enable) { - Adafruit_BusIO_Register ctrl1_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL1, 1); - - Adafruit_BusIO_RegisterBits bdu_bit = Adafruit_BusIO_RegisterBits( - &ctrl1_reg, 1, 4); - + Adafruit_BusIO_Register ctrl1_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL1, 1); + + Adafruit_BusIO_RegisterBits bdu_bit = + Adafruit_BusIO_RegisterBits(&ctrl1_reg, 1, 4); + return bdu_bit.write(enable ? 1 : 0); } @@ -369,12 +375,12 @@ bool Adafruit_STHS34PF80::setBlockDataUpdate(bool enable) { * @return True if block data update is enabled, false if disabled */ bool Adafruit_STHS34PF80::getBlockDataUpdate() { - Adafruit_BusIO_Register ctrl1_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL1, 1); - - Adafruit_BusIO_RegisterBits bdu_bit = Adafruit_BusIO_RegisterBits( - &ctrl1_reg, 1, 4); - + Adafruit_BusIO_Register ctrl1_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL1, 1); + + Adafruit_BusIO_RegisterBits bdu_bit = + Adafruit_BusIO_RegisterBits(&ctrl1_reg, 1, 4); + return bdu_bit.read() == 1; } @@ -399,12 +405,13 @@ bool Adafruit_STHS34PF80::setOutputDataRate(sths34pf80_odr_t odr) { // ret = sths34pf80_read_reg(ctx, STHS34PF80_CTRL1, (uint8_t *)&ctrl1, 1); // if (ret == 0) // { - // ret = sths34pf80_read_reg(ctx, STHS34PF80_AVG_TRIM, (uint8_t *)&avg_trim, 1); + // ret = sths34pf80_read_reg(ctx, STHS34PF80_AVG_TRIM, (uint8_t *)&avg_trim, + // 1); sths34pf80_avg_tmos_t avg_tmos = getObjAveraging(); // switch(avg_trim.avg_tmos) // { - switch(avg_tmos) { + switch (avg_tmos) { // default: // case STHS34PF80_AVG_TMOS_2: // case STHS34PF80_AVG_TMOS_8: @@ -469,12 +476,12 @@ bool Adafruit_STHS34PF80::setOutputDataRate(sths34pf80_odr_t odr) { * @return The current output data rate value */ sths34pf80_odr_t Adafruit_STHS34PF80::getOutputDataRate() { - Adafruit_BusIO_Register ctrl1_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL1, 1); - - Adafruit_BusIO_RegisterBits odr_bits = Adafruit_BusIO_RegisterBits( - &ctrl1_reg, 4, 0); - + Adafruit_BusIO_Register ctrl1_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL1, 1); + + Adafruit_BusIO_RegisterBits odr_bits = + Adafruit_BusIO_RegisterBits(&ctrl1_reg, 4, 0); + return (sths34pf80_odr_t)odr_bits.read(); } @@ -483,12 +490,12 @@ sths34pf80_odr_t Adafruit_STHS34PF80::getOutputDataRate() { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::rebootOTPmemory() { - Adafruit_BusIO_Register ctrl2_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL2, 1); - - Adafruit_BusIO_RegisterBits boot_bit = Adafruit_BusIO_RegisterBits( - &ctrl2_reg, 1, 7); - + Adafruit_BusIO_Register ctrl2_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL2, 1); + + Adafruit_BusIO_RegisterBits boot_bit = + Adafruit_BusIO_RegisterBits(&ctrl2_reg, 1, 7); + return boot_bit.write(1); } @@ -498,12 +505,12 @@ bool Adafruit_STHS34PF80::rebootOTPmemory() { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::enableEmbeddedFuncPage(bool enable) { - Adafruit_BusIO_Register ctrl2_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL2, 1); - - Adafruit_BusIO_RegisterBits func_cfg_access_bit = Adafruit_BusIO_RegisterBits( - &ctrl2_reg, 1, 4); - + Adafruit_BusIO_Register ctrl2_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL2, 1); + + Adafruit_BusIO_RegisterBits func_cfg_access_bit = + Adafruit_BusIO_RegisterBits(&ctrl2_reg, 1, 4); + return func_cfg_access_bit.write(enable ? 1 : 0); } @@ -512,12 +519,12 @@ bool Adafruit_STHS34PF80::enableEmbeddedFuncPage(bool enable) { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::triggerOneshot() { - Adafruit_BusIO_Register ctrl2_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL2, 1); - - Adafruit_BusIO_RegisterBits oneshot_bit = Adafruit_BusIO_RegisterBits( - &ctrl2_reg, 1, 0); - + Adafruit_BusIO_Register ctrl2_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL2, 1); + + Adafruit_BusIO_RegisterBits oneshot_bit = + Adafruit_BusIO_RegisterBits(&ctrl2_reg, 1, 0); + return oneshot_bit.write(1); } @@ -527,12 +534,12 @@ bool Adafruit_STHS34PF80::triggerOneshot() { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setIntPolarity(bool active_low) { - Adafruit_BusIO_Register ctrl3_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL3, 1); - - Adafruit_BusIO_RegisterBits int_h_l_bit = Adafruit_BusIO_RegisterBits( - &ctrl3_reg, 1, 7); - + Adafruit_BusIO_Register ctrl3_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL3, 1); + + Adafruit_BusIO_RegisterBits int_h_l_bit = + Adafruit_BusIO_RegisterBits(&ctrl3_reg, 1, 7); + return int_h_l_bit.write(active_low ? 1 : 0); } @@ -542,12 +549,12 @@ bool Adafruit_STHS34PF80::setIntPolarity(bool active_low) { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setIntOpenDrain(bool open_drain) { - Adafruit_BusIO_Register ctrl3_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL3, 1); - - Adafruit_BusIO_RegisterBits pp_od_bit = Adafruit_BusIO_RegisterBits( - &ctrl3_reg, 1, 6); - + Adafruit_BusIO_Register ctrl3_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL3, 1); + + Adafruit_BusIO_RegisterBits pp_od_bit = + Adafruit_BusIO_RegisterBits(&ctrl3_reg, 1, 6); + return pp_od_bit.write(open_drain ? 1 : 0); } @@ -557,41 +564,43 @@ bool Adafruit_STHS34PF80::setIntOpenDrain(bool open_drain) { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setIntLatched(bool latched) { - Adafruit_BusIO_Register ctrl3_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL3, 1); - - Adafruit_BusIO_RegisterBits int_latched_bit = Adafruit_BusIO_RegisterBits( - &ctrl3_reg, 1, 2); - + Adafruit_BusIO_Register ctrl3_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL3, 1); + + Adafruit_BusIO_RegisterBits int_latched_bit = + Adafruit_BusIO_RegisterBits(&ctrl3_reg, 1, 2); + return int_latched_bit.write(latched ? 1 : 0); } /*! * @brief Set interrupt mask for function status flags - * @param mask Interrupt mask (bits 2:0 for PRES_FLAG, MOT_FLAG, TAMB_SHOCK_FLAG) + * @param mask Interrupt mask (bits 2:0 for PRES_FLAG, MOT_FLAG, + * TAMB_SHOCK_FLAG) * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setIntMask(uint8_t mask) { - Adafruit_BusIO_Register ctrl3_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL3, 1); - - Adafruit_BusIO_RegisterBits int_mask_bits = Adafruit_BusIO_RegisterBits( - &ctrl3_reg, 3, 3); - + Adafruit_BusIO_Register ctrl3_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL3, 1); + + Adafruit_BusIO_RegisterBits int_mask_bits = + Adafruit_BusIO_RegisterBits(&ctrl3_reg, 3, 3); + return int_mask_bits.write(mask & 0x07); } /*! * @brief Get interrupt mask for function status flags - * @return Current interrupt mask value (bits 2:0 for PRES_FLAG, MOT_FLAG, TAMB_SHOCK_FLAG) + * @return Current interrupt mask value (bits 2:0 for PRES_FLAG, MOT_FLAG, + * TAMB_SHOCK_FLAG) */ uint8_t Adafruit_STHS34PF80::getIntMask() { - Adafruit_BusIO_Register ctrl3_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL3, 1); - - Adafruit_BusIO_RegisterBits int_mask_bits = Adafruit_BusIO_RegisterBits( - &ctrl3_reg, 3, 3); - + Adafruit_BusIO_Register ctrl3_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL3, 1); + + Adafruit_BusIO_RegisterBits int_mask_bits = + Adafruit_BusIO_RegisterBits(&ctrl3_reg, 3, 3); + return int_mask_bits.read(); } @@ -601,12 +610,12 @@ uint8_t Adafruit_STHS34PF80::getIntMask() { * @return True if successful, false otherwise */ bool Adafruit_STHS34PF80::setIntSignal(sths34pf80_int_signal_t signal) { - Adafruit_BusIO_Register ctrl3_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL3, 1); - - Adafruit_BusIO_RegisterBits ien_bits = Adafruit_BusIO_RegisterBits( - &ctrl3_reg, 2, 0); - + Adafruit_BusIO_Register ctrl3_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL3, 1); + + Adafruit_BusIO_RegisterBits ien_bits = + Adafruit_BusIO_RegisterBits(&ctrl3_reg, 2, 0); + return ien_bits.write(signal); } @@ -615,12 +624,12 @@ bool Adafruit_STHS34PF80::setIntSignal(sths34pf80_int_signal_t signal) { * @return Current interrupt signal type */ sths34pf80_int_signal_t Adafruit_STHS34PF80::getIntSignal() { - Adafruit_BusIO_Register ctrl3_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL3, 1); - - Adafruit_BusIO_RegisterBits ien_bits = Adafruit_BusIO_RegisterBits( - &ctrl3_reg, 2, 0); - + Adafruit_BusIO_Register ctrl3_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL3, 1); + + Adafruit_BusIO_RegisterBits ien_bits = + Adafruit_BusIO_RegisterBits(&ctrl3_reg, 2, 0); + return (sths34pf80_int_signal_t)ien_bits.read(); } @@ -629,12 +638,12 @@ sths34pf80_int_signal_t Adafruit_STHS34PF80::getIntSignal() { * @return True if new data is available, false otherwise */ bool Adafruit_STHS34PF80::isDataReady() { - Adafruit_BusIO_Register status_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_STATUS, 1); - - Adafruit_BusIO_RegisterBits drdy_bit = Adafruit_BusIO_RegisterBits( - &status_reg, 1, 2); - + Adafruit_BusIO_Register status_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_STATUS, 1); + + Adafruit_BusIO_RegisterBits drdy_bit = + Adafruit_BusIO_RegisterBits(&status_reg, 1, 2); + return drdy_bit.read() == 1; } @@ -643,12 +652,12 @@ bool Adafruit_STHS34PF80::isDataReady() { * @return True if presence is detected, false otherwise */ bool Adafruit_STHS34PF80::isPresence() { - Adafruit_BusIO_Register func_status_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_FUNC_STATUS, 1); - - Adafruit_BusIO_RegisterBits pres_flag_bit = Adafruit_BusIO_RegisterBits( - &func_status_reg, 1, 2); - + Adafruit_BusIO_Register func_status_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_FUNC_STATUS, 1); + + Adafruit_BusIO_RegisterBits pres_flag_bit = + Adafruit_BusIO_RegisterBits(&func_status_reg, 1, 2); + return pres_flag_bit.read() == 1; } @@ -657,12 +666,12 @@ bool Adafruit_STHS34PF80::isPresence() { * @return True if motion is detected, false otherwise */ bool Adafruit_STHS34PF80::isMotion() { - Adafruit_BusIO_Register func_status_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_FUNC_STATUS, 1); - - Adafruit_BusIO_RegisterBits mot_flag_bit = Adafruit_BusIO_RegisterBits( - &func_status_reg, 1, 1); - + Adafruit_BusIO_Register func_status_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_FUNC_STATUS, 1); + + Adafruit_BusIO_RegisterBits mot_flag_bit = + Adafruit_BusIO_RegisterBits(&func_status_reg, 1, 1); + return mot_flag_bit.read() == 1; } @@ -671,12 +680,12 @@ bool Adafruit_STHS34PF80::isMotion() { * @return True if temperature shock is detected, false otherwise */ bool Adafruit_STHS34PF80::isTempShock() { - Adafruit_BusIO_Register func_status_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_FUNC_STATUS, 1); - - Adafruit_BusIO_RegisterBits tamb_shock_flag_bit = Adafruit_BusIO_RegisterBits( - &func_status_reg, 1, 0); - + Adafruit_BusIO_Register func_status_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_FUNC_STATUS, 1); + + Adafruit_BusIO_RegisterBits tamb_shock_flag_bit = + Adafruit_BusIO_RegisterBits(&func_status_reg, 1, 0); + return tamb_shock_flag_bit.read() == 1; } @@ -685,9 +694,9 @@ bool Adafruit_STHS34PF80::isTempShock() { * @return 16-bit signed object temperature value */ int16_t Adafruit_STHS34PF80::readObjectTemperature() { - Adafruit_BusIO_Register tobj_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_TOBJECT_L, 2, LSBFIRST); - + Adafruit_BusIO_Register tobj_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_TOBJECT_L, 2, LSBFIRST); + return (int16_t)tobj_reg.read(); } @@ -696,9 +705,9 @@ int16_t Adafruit_STHS34PF80::readObjectTemperature() { * @return Ambient temperature in degrees Celsius */ float Adafruit_STHS34PF80::readAmbientTemperature() { - Adafruit_BusIO_Register tamb_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_TAMBIENT_L, 2, LSBFIRST); - + Adafruit_BusIO_Register tamb_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_TAMBIENT_L, 2, LSBFIRST); + int16_t raw_temp = (int16_t)tamb_reg.read(); return raw_temp / 100.0f; } @@ -708,9 +717,9 @@ float Adafruit_STHS34PF80::readAmbientTemperature() { * @return 16-bit signed compensated object temperature value */ int16_t Adafruit_STHS34PF80::readCompensatedObjectTemperature() { - Adafruit_BusIO_Register tobj_comp_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_TOBJ_COMP_L, 2, LSBFIRST); - + Adafruit_BusIO_Register tobj_comp_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_TOBJ_COMP_L, 2, LSBFIRST); + return (int16_t)tobj_comp_reg.read(); } @@ -719,9 +728,9 @@ int16_t Adafruit_STHS34PF80::readCompensatedObjectTemperature() { * @return 16-bit signed presence detection value */ int16_t Adafruit_STHS34PF80::readPresence() { - Adafruit_BusIO_Register tpres_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_TPRESENCE_L, 2, LSBFIRST); - + Adafruit_BusIO_Register tpres_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_TPRESENCE_L, 2, LSBFIRST); + return (int16_t)tpres_reg.read(); } @@ -730,9 +739,9 @@ int16_t Adafruit_STHS34PF80::readPresence() { * @return 16-bit signed motion detection value */ int16_t Adafruit_STHS34PF80::readMotion() { - Adafruit_BusIO_Register tmot_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_TMOTION_L, 2, LSBFIRST); - + Adafruit_BusIO_Register tmot_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_TMOTION_L, 2, LSBFIRST); + return (int16_t)tmot_reg.read(); } @@ -743,7 +752,7 @@ int16_t Adafruit_STHS34PF80::readMotion() { int16_t Adafruit_STHS34PF80::readTempShock() { Adafruit_BusIO_Register tamb_shock_reg = Adafruit_BusIO_Register( i2c_dev, STHS34PF80_REG_TAMB_SHOCK_L, 2, LSBFIRST); - + return (int16_t)tamb_shock_reg.read(); } @@ -755,7 +764,8 @@ int16_t Adafruit_STHS34PF80::readTempShock() { * @param len Number of bytes to write * @return True if successful, false otherwise */ -bool Adafruit_STHS34PF80::writeEmbeddedFunction(uint8_t addr, uint8_t *data, uint8_t len) { +bool Adafruit_STHS34PF80::writeEmbeddedFunction(uint8_t addr, uint8_t* data, + uint8_t len) { // sths34pf80_ctrl1_t ctrl1; // uint8_t odr; // sths34pf80_page_rw_t page_rw = {0}; @@ -782,11 +792,12 @@ bool Adafruit_STHS34PF80::writeEmbeddedFunction(uint8_t addr, uint8_t *data, uin // /* Enable write mode */ // page_rw.func_cfg_write = 1; - // ret += sths34pf80_write_reg(ctx, STHS34PF80_PAGE_RW, (uint8_t *)&page_rw, 1); - Adafruit_BusIO_Register page_rw_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_PAGE_RW, 1); - Adafruit_BusIO_RegisterBits func_cfg_write_bit = Adafruit_BusIO_RegisterBits( - &page_rw_reg, 1, 6); + // ret += sths34pf80_write_reg(ctx, STHS34PF80_PAGE_RW, (uint8_t *)&page_rw, + // 1); + Adafruit_BusIO_Register page_rw_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_PAGE_RW, 1); + Adafruit_BusIO_RegisterBits func_cfg_write_bit = + Adafruit_BusIO_RegisterBits(&page_rw_reg, 1, 6); if (!func_cfg_write_bit.write(1)) { enableEmbeddedFuncPage(false); safeSetOutputDataRate(STHS34PF80_ODR_POWER_DOWN, current_odr); @@ -795,8 +806,8 @@ bool Adafruit_STHS34PF80::writeEmbeddedFunction(uint8_t addr, uint8_t *data, uin // /* Select register address (it will autoincrement after each write) */ // ret += sths34pf80_write_reg(ctx, STHS34PF80_FUNC_CFG_ADDR, &addr, 1); - Adafruit_BusIO_Register func_cfg_addr_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_FUNC_CFG_ADDR, 1); + Adafruit_BusIO_Register func_cfg_addr_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_FUNC_CFG_ADDR, 1); if (!func_cfg_addr_reg.write(addr)) { func_cfg_write_bit.write(0); enableEmbeddedFuncPage(false); @@ -808,8 +819,8 @@ bool Adafruit_STHS34PF80::writeEmbeddedFunction(uint8_t addr, uint8_t *data, uin // for (i = 0; i < len; i++) { // ret += sths34pf80_write_reg(ctx, STHS34PF80_FUNC_CFG_DATA, &data[i], 1); // } - Adafruit_BusIO_Register func_cfg_data_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_FUNC_CFG_DATA, 1); + Adafruit_BusIO_Register func_cfg_data_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_FUNC_CFG_DATA, 1); for (uint8_t i = 0; i < len; i++) { if (!func_cfg_data_reg.write(data[i])) { func_cfg_write_bit.write(0); @@ -821,7 +832,8 @@ bool Adafruit_STHS34PF80::writeEmbeddedFunction(uint8_t addr, uint8_t *data, uin // /* Disable write mode */ // page_rw.func_cfg_write = 0; - // ret += sths34pf80_write_reg(ctx, STHS34PF80_PAGE_RW, (uint8_t *)&page_rw, 1); + // ret += sths34pf80_write_reg(ctx, STHS34PF80_PAGE_RW, (uint8_t *)&page_rw, + // 1); if (!func_cfg_write_bit.write(0)) { enableEmbeddedFuncPage(false); safeSetOutputDataRate(STHS34PF80_ODR_POWER_DOWN, current_odr); @@ -864,20 +876,21 @@ bool Adafruit_STHS34PF80::algorithmReset() { * @param new_odr The new output data rate to set * @return True if successful, false otherwise */ -bool Adafruit_STHS34PF80::safeSetOutputDataRate(sths34pf80_odr_t current_odr, sths34pf80_odr_t new_odr) { +bool Adafruit_STHS34PF80::safeSetOutputDataRate(sths34pf80_odr_t current_odr, + sths34pf80_odr_t new_odr) { // sths34pf80_func_status_t func_status; // sths34pf80_tmos_drdy_status_t status; // int32_t ret = 0; if (!i2c_dev) { return false; } - - Adafruit_BusIO_Register ctrl1_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_CTRL1, 1); - - Adafruit_BusIO_RegisterBits odr_bits = Adafruit_BusIO_RegisterBits( - &ctrl1_reg, 4, 0); - + + Adafruit_BusIO_Register ctrl1_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_CTRL1, 1); + + Adafruit_BusIO_RegisterBits odr_bits = + Adafruit_BusIO_RegisterBits(&ctrl1_reg, 4, 0); + // if (odr_new > 0U) { if (new_odr > STHS34PF80_ODR_POWER_DOWN) { /* @@ -894,7 +907,7 @@ bool Adafruit_STHS34PF80::safeSetOutputDataRate(sths34pf80_odr_t current_odr, st if (!algorithmReset()) { return false; } - + } else { /* if we need to go to power-down from an operative state * perform the safe power-down. @@ -902,21 +915,22 @@ bool Adafruit_STHS34PF80::safeSetOutputDataRate(sths34pf80_odr_t current_odr, st // if ((uint8_t)ctrl1.odr > 0U) { if (current_odr > STHS34PF80_ODR_POWER_DOWN) { /* reset the DRDY bit */ - // ret = sths34pf80_read_reg(ctx, STHS34PF80_FUNC_STATUS, (uint8_t *)&func_status, 1); - Adafruit_BusIO_Register func_status_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_FUNC_STATUS, 1); + // ret = sths34pf80_read_reg(ctx, STHS34PF80_FUNC_STATUS, (uint8_t + // *)&func_status, 1); + Adafruit_BusIO_Register func_status_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_FUNC_STATUS, 1); func_status_reg.read(); // Reading clears the DRDY bit - + /* wait DRDY bit go to '1' */ // do { // ret += sths34pf80_tmos_drdy_status_get(ctx, &status); // } while (status.drdy != 0U); - Adafruit_BusIO_Register status_reg = Adafruit_BusIO_Register( - i2c_dev, STHS34PF80_REG_STATUS, 1); - - Adafruit_BusIO_RegisterBits drdy_bit = Adafruit_BusIO_RegisterBits( - &status_reg, 1, 2); - + Adafruit_BusIO_Register status_reg = + Adafruit_BusIO_Register(i2c_dev, STHS34PF80_REG_STATUS, 1); + + Adafruit_BusIO_RegisterBits drdy_bit = + Adafruit_BusIO_RegisterBits(&status_reg, 1, 2); + uint32_t timeout = 1000; // 1 second timeout while (timeout-- > 0) { if (drdy_bit.read() == 1) { @@ -924,24 +938,26 @@ bool Adafruit_STHS34PF80::safeSetOutputDataRate(sths34pf80_odr_t current_odr, st } delay(1); } - + if (timeout == 0) { return false; // Timeout waiting for DRDY } - + /* set ODR to 0 */ // ctrl1.odr = 0; - // ret += sths34pf80_write_reg(ctx, STHS34PF80_CTRL1, (uint8_t *)&ctrl1, 1); + // ret += sths34pf80_write_reg(ctx, STHS34PF80_CTRL1, (uint8_t *)&ctrl1, + // 1); if (!odr_bits.write(STHS34PF80_ODR_POWER_DOWN)) { return false; } /* reset the DRDY bit */ - // ret += sths34pf80_read_reg(ctx, STHS34PF80_FUNC_STATUS, (uint8_t *)&func_status, 1); + // ret += sths34pf80_read_reg(ctx, STHS34PF80_FUNC_STATUS, (uint8_t + // *)&func_status, 1); func_status_reg.read(); // Reading clears the DRDY bit again } } - + // Final ODR set (implied from original function usage context) return odr_bits.write(new_odr); } \ No newline at end of file diff --git a/Adafruit_STHS34PF80.h b/Adafruit_STHS34PF80.h index 1fcce4d..8607bda 100644 --- a/Adafruit_STHS34PF80.h +++ b/Adafruit_STHS34PF80.h @@ -21,45 +21,55 @@ #ifndef __ADAFRUIT_STHS34PF80_H__ #define __ADAFRUIT_STHS34PF80_H__ -#include "Arduino.h" #include #include #include +#include "Arduino.h" + #define STHS34PF80_DEFAULT_ADDR 0x5A ///< Default I2C address for the STHS34PF80 #define STHS34PF80_REG_LPF1 0x0C ///< Low-pass filter configuration 1 register #define STHS34PF80_REG_LPF2 0x0D ///< Low-pass filter configuration 2 register -#define STHS34PF80_REG_WHO_AM_I 0x0F ///< Device identification register -#define STHS34PF80_REG_AVG_TRIM 0x10 ///< Averaging configuration register -#define STHS34PF80_REG_CTRL0 0x17 ///< Control register 0 (gain mode) +#define STHS34PF80_REG_WHO_AM_I 0x0F ///< Device identification register +#define STHS34PF80_REG_AVG_TRIM 0x10 ///< Averaging configuration register +#define STHS34PF80_REG_CTRL0 0x17 ///< Control register 0 (gain mode) #define STHS34PF80_REG_SENS_DATA 0x1D ///< Sensitivity data register #define STHS34PF80_REG_CTRL1 0x20 ///< Control register 1 (ODR configuration) -#define STHS34PF80_REG_CTRL2 0x21 ///< Control register 2 (boot, function access, one-shot) -#define STHS34PF80_REG_CTRL3 0x22 ///< Control register 3 (interrupt configuration) -#define STHS34PF80_REG_STATUS 0x23 ///< Status register +#define STHS34PF80_REG_CTRL2 \ + 0x21 ///< Control register 2 (boot, function access, one-shot) +#define STHS34PF80_REG_CTRL3 \ + 0x22 ///< Control register 3 (interrupt configuration) +#define STHS34PF80_REG_STATUS 0x23 ///< Status register #define STHS34PF80_REG_FUNC_STATUS 0x25 ///< Function status register -#define STHS34PF80_REG_TOBJECT_L 0x26 ///< Object temperature LSB register -#define STHS34PF80_REG_TOBJECT_H 0x27 ///< Object temperature MSB register -#define STHS34PF80_REG_TAMBIENT_L 0x28 ///< Ambient temperature LSB register -#define STHS34PF80_REG_TAMBIENT_H 0x29 ///< Ambient temperature MSB register -#define STHS34PF80_REG_TOBJ_COMP_L 0x38 ///< Compensated object temperature LSB register -#define STHS34PF80_REG_TOBJ_COMP_H 0x39 ///< Compensated object temperature MSB register +#define STHS34PF80_REG_TOBJECT_L 0x26 ///< Object temperature LSB register +#define STHS34PF80_REG_TOBJECT_H 0x27 ///< Object temperature MSB register +#define STHS34PF80_REG_TAMBIENT_L 0x28 ///< Ambient temperature LSB register +#define STHS34PF80_REG_TAMBIENT_H 0x29 ///< Ambient temperature MSB register +#define STHS34PF80_REG_TOBJ_COMP_L \ + 0x38 ///< Compensated object temperature LSB register +#define STHS34PF80_REG_TOBJ_COMP_H \ + 0x39 ///< Compensated object temperature MSB register #define STHS34PF80_REG_TPRESENCE_L 0x3A ///< Presence detection LSB register #define STHS34PF80_REG_TPRESENCE_H 0x3B ///< Presence detection MSB register -#define STHS34PF80_REG_TMOTION_L 0x3C ///< Motion detection LSB register -#define STHS34PF80_REG_TMOTION_H 0x3D ///< Motion detection MSB register -#define STHS34PF80_REG_TAMB_SHOCK_L 0x3E ///< Ambient shock detection LSB register -#define STHS34PF80_REG_TAMB_SHOCK_H 0x3F ///< Ambient shock detection MSB register +#define STHS34PF80_REG_TMOTION_L 0x3C ///< Motion detection LSB register +#define STHS34PF80_REG_TMOTION_H 0x3D ///< Motion detection MSB register +#define STHS34PF80_REG_TAMB_SHOCK_L \ + 0x3E ///< Ambient shock detection LSB register +#define STHS34PF80_REG_TAMB_SHOCK_H \ + 0x3F ///< Ambient shock detection MSB register -#define STHS34PF80_REG_FUNC_CFG_ADDR 0x08 ///< Embedded function configuration address register -#define STHS34PF80_REG_FUNC_CFG_DATA 0x09 ///< Embedded function configuration data register -#define STHS34PF80_REG_PAGE_RW 0x11 ///< Page read/write control register +#define STHS34PF80_REG_FUNC_CFG_ADDR \ + 0x08 ///< Embedded function configuration address register +#define STHS34PF80_REG_FUNC_CFG_DATA \ + 0x09 ///< Embedded function configuration data register +#define STHS34PF80_REG_PAGE_RW 0x11 ///< Page read/write control register -#define STHS34PF80_EMBEDDED_RESET_ALGO 0x2A ///< Embedded function RESET_ALGO register address +#define STHS34PF80_EMBEDDED_RESET_ALGO \ + 0x2A ///< Embedded function RESET_ALGO register address -#define STHS34PF80_PRES_FLAG 0x04 ///< Presence detection flag -#define STHS34PF80_MOT_FLAG 0x02 ///< Motion detection flag +#define STHS34PF80_PRES_FLAG 0x04 ///< Presence detection flag +#define STHS34PF80_MOT_FLAG 0x02 ///< Motion detection flag #define STHS34PF80_TAMB_SHOCK_FLAG 0x01 ///< Ambient temperature shock flag /*! @@ -79,10 +89,10 @@ typedef enum { * @brief Ambient temperature averaging options */ typedef enum { - STHS34PF80_AVG_T_8 = 0x00, ///< 8 samples (default) - STHS34PF80_AVG_T_4 = 0x01, ///< 4 samples - STHS34PF80_AVG_T_2 = 0x02, ///< 2 samples - STHS34PF80_AVG_T_1 = 0x03, ///< 1 sample + STHS34PF80_AVG_T_8 = 0x00, ///< 8 samples (default) + STHS34PF80_AVG_T_4 = 0x01, ///< 4 samples + STHS34PF80_AVG_T_2 = 0x02, ///< 2 samples + STHS34PF80_AVG_T_1 = 0x03, ///< 1 sample } sths34pf80_avg_t_t; /*! @@ -118,20 +128,21 @@ typedef enum { * @brief Interrupt enable signal options */ typedef enum { - STHS34PF80_INT_HIGH_Z = 0x00, ///< High-Z (disabled) - STHS34PF80_INT_DRDY = 0x01, ///< Data ready - STHS34PF80_INT_OR = 0x02, ///< INT_OR (function flags) + STHS34PF80_INT_HIGH_Z = 0x00, ///< High-Z (disabled) + STHS34PF80_INT_DRDY = 0x01, ///< Data ready + STHS34PF80_INT_OR = 0x02, ///< INT_OR (function flags) } sths34pf80_int_signal_t; /*! - * @brief Class that stores state and functions for interacting with the STHS34PF80 + * @brief Class that stores state and functions for interacting with the + * STHS34PF80 */ class Adafruit_STHS34PF80 { -public: + public: Adafruit_STHS34PF80(); ~Adafruit_STHS34PF80(); - bool begin(uint8_t i2c_addr = STHS34PF80_DEFAULT_ADDR, TwoWire *wire = &Wire); + bool begin(uint8_t i2c_addr = STHS34PF80_DEFAULT_ADDR, TwoWire* wire = &Wire); bool isConnected(); bool reset(); @@ -163,8 +174,8 @@ public: bool rebootOTPmemory(); bool enableEmbeddedFuncPage(bool enable); bool triggerOneshot(); - - bool writeEmbeddedFunction(uint8_t addr, uint8_t *data, uint8_t len); + + bool writeEmbeddedFunction(uint8_t addr, uint8_t* data, uint8_t len); bool setIntPolarity(bool active_low); bool setIntOpenDrain(bool open_drain); @@ -186,9 +197,10 @@ public: int16_t readMotion(); int16_t readTempShock(); -private: - Adafruit_I2CDevice *i2c_dev; - bool safeSetOutputDataRate(sths34pf80_odr_t current_odr, sths34pf80_odr_t new_odr); + private: + Adafruit_I2CDevice* i2c_dev; + bool safeSetOutputDataRate(sths34pf80_odr_t current_odr, + sths34pf80_odr_t new_odr); bool algorithmReset(); // TODO: Implement algorithm reset procedure };