aboutsummaryrefslogtreecommitdiffstats
path: root/os/ex
diff options
context:
space:
mode:
authorRocco Marco Guglielmi <roccomarco.guglielmi@gmail.com>2018-02-05 10:31:28 +0000
committerRocco Marco Guglielmi <roccomarco.guglielmi@gmail.com>2018-02-05 10:31:28 +0000
commit4ddc3c188bbd834f05bd8d635e6e26fb3ecc6ae2 (patch)
treee1cb04c3d49125839f0e33cb09ead6e3739e2f49 /os/ex
parent414f8db1c1f291a891a6423164d1b8fe9180f56a (diff)
downloadChibiOS-4ddc3c188bbd834f05bd8d635e6e26fb3ecc6ae2.tar.gz
ChibiOS-4ddc3c188bbd834f05bd8d635e6e26fb3ecc6ae2.tar.bz2
ChibiOS-4ddc3c188bbd834f05bd8d635e6e26fb3ecc6ae2.zip
Updated HTS221 driver to v 1.0.1 (Fixing Bug #915).
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11441 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/ex')
-rw-r--r--os/ex/ST/hts221.c12
-rw-r--r--os/ex/ST/hts221.h607
2 files changed, 332 insertions, 287 deletions
diff --git a/os/ex/ST/hts221.c b/os/ex/ST/hts221.c
index 461541824..570726248 100644
--- a/os/ex/ST/hts221.c
+++ b/os/ex/ST/hts221.c
@@ -409,17 +409,17 @@ static msg_t thermo_reset_sensitivity(void *ip) {
return MSG_OK;
}
-static const struct BaseSensorVMT vmt_basesensor = {
+static const struct BaseSensorVMT vmt_sensor = {
sens_get_axes_number, sens_read_raw, sens_read_cooked
};
-static const struct BaseHygrometerVMT vmt_basehygrometer = {
+static const struct HTS221HygrometerVMT vmt_hygrometer = {
hygro_get_axes_number, hygro_read_raw, hygro_read_cooked,
hygro_set_bias, hygro_reset_bias,
hygro_set_sensitivity, hygro_reset_sensitivity
};
-static const struct BaseThermometerVMT vmt_basethermometer = {
+static const struct HTS221ThermometerVMT vmt_thermometer = {
thermo_get_axes_number, thermo_read_raw, thermo_read_cooked,
thermo_set_bias, thermo_reset_bias,
thermo_set_sensitivity, thermo_reset_sensitivity
@@ -438,9 +438,9 @@ static const struct BaseThermometerVMT vmt_basethermometer = {
*/
void hts221ObjectInit(HTS221Driver *devp) {
- devp->vmt_basesensor = &vmt_basesensor;
- devp->vmt_basehygrometer = &vmt_basehygrometer;
- devp->vmt_basethermometer = &vmt_basethermometer;
+ devp->vmt_sensor = &vmt_sensor;
+ devp->vmt_hygrometer = &vmt_hygrometer;
+ devp->vmt_thermometer = &vmt_thermometer;
devp->config = NULL;
devp->state = HTS221_STOP;
devp->bias[0] = 0.0;
diff --git a/os/ex/ST/hts221.h b/os/ex/ST/hts221.h
index e72162612..8915ebea6 100644
--- a/os/ex/ST/hts221.h
+++ b/os/ex/ST/hts221.h
@@ -15,14 +15,14 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-
+
*/
/**
* @file hts221.h
* @brief HTS221 MEMS interface module header.
*
- *
+ *
* @addtogroup HTS221
* @ingroup EX_ST
* @{
@@ -44,206 +44,206 @@
/**
* @brief HTS221 driver version string.
*/
-#define EX_HTS221_VERSION "1.0.0"
+#define EX_HTS221_VERSION "1.0.1"
/**
* @brief HTS221 driver version major number.
*/
-#define EX_HTS221_MAJOR 1
+#define EX_HTS221_MAJOR 1
/**
* @brief HTS221 driver version minor number.
*/
-#define EX_HTS221_MINOR 0
+#define EX_HTS221_MINOR 0
/**
* @brief HTS221 driver version patch number.
*/
-#define EX_HTS221_PATCH 0
+#define EX_HTS221_PATCH 1
/** @} */
/**
- * @brief HTS221 characteristics.
+ * @brief HTS221 characteristics.
*
* @{
- */
-#define HTS221_HYGRO_NUMBER_OF_AXES 1U
+ */
+#define HTS221_HYGRO_NUMBER_OF_AXES 1U
#define HTS221_THERMO_NUMBER_OF_AXES 1U
#define HTS221_HYGRO_SENS 256.0f /**< LSB/%rH */
-#define HTS221_THERMO_SENS 64.0f /**< LSB/°C */
-/** @} */
-
-/**
- * @name HTS221 communication interfaces related bit masks
- * @{
- */
-#define HTS221_DI_MASK 0xFF /**< Data In mask */
-#define HTS221_DI(n) (1 << n) /**< Data In bit n */
-#define HTS221_AD_MASK 0x3F /**< Address Data mask */
-#define HTS221_AD(n) (1 << n) /**< Address Data bit n */
-#define HTS221_MS (1 << 6) /**< Multiple read write */
-#define HTS221_RW (1 << 7) /**< Read Write selector */
-
-#define HTS221_SUB_MS (1 << 7) /**< Multiple RW in I2C mode*/
-
-#define HTS221_SAD 0x5F /**< Slave Address */
-/** @} */
-
-/**
- * @name HTS221 register addresses
- * @{
- */
-#define HTS221_AD_WHO_AM_I 0x0F
-#define HTS221_AD_AV_CONF 0x10
-#define HTS221_AD_CTRL_REG1 0x20
-#define HTS221_AD_CTRL_REG2 0x21
-#define HTS221_AD_CTRL_REG3 0x22
-#define HTS221_AD_STATUS_REG 0x27
-#define HTS221_AD_HUMIDITY_OUT_L 0x28
-#define HTS221_AD_HUMIDITY_OUT_H 0x29
-#define HTS221_AD_TEMP_OUT_L 0x2A
-#define HTS221_AD_TEMP_OUT_H 0x2B
-#define HTS221_AD_CALIB_0 0x30
-#define HTS221_AD_CALIB_1 0x31
-#define HTS221_AD_CALIB_2 0x32
-#define HTS221_AD_CALIB_3 0x33
-#define HTS221_AD_CALIB_4 0x34
-#define HTS221_AD_CALIB_5 0x35
-#define HTS221_AD_CALIB_6 0x36
-#define HTS221_AD_CALIB_7 0x37
-#define HTS221_AD_CALIB_8 0x38
-#define HTS221_AD_CALIB_9 0x39
-#define HTS221_AD_CALIB_A 0x3A
-#define HTS221_AD_CALIB_B 0x3B
-#define HTS221_AD_CALIB_C 0x3C
-#define HTS221_AD_CALIB_D 0x3D
-#define HTS221_AD_CALIB_E 0x3E
-#define HTS221_AD_CALIB_F 0x3F
-/** @} */
-
-/**
- * @name HTS221_CTRL_REG1 register bits definitions
- * @{
- */
-#define HTS221_CTRL_REG1_MASK 0x87
-#define HTS221_CTRL_REG1_ODR0 (1 << 0)
-#define HTS221_CTRL_REG1_ODR1 (1 << 1)
-#define HTS221_CTRL_REG1_BDU (1 << 2)
-#define HTS221_CTRL_REG1_PD (1 << 7)
-/** @} */
-
+#define HTS221_THERMO_SENS 64.0f /**< LSB/°C */
+/** @} */
+
+/**
+ * @name HTS221 communication interfaces related bit masks
+ * @{
+ */
+#define HTS221_DI_MASK 0xFF
+#define HTS221_DI(n) (1 << n)
+#define HTS221_AD_MASK 0x3F
+#define HTS221_AD(n) (1 << n)
+#define HTS221_MS (1 << 6)
+#define HTS221_RW (1 << 7)
+
+#define HTS221_SUB_MS (1 << 7)
+
+#define HTS221_SAD 0x5F
+/** @} */
+
+/**
+ * @name HTS221 register addresses
+ * @{
+ */
+#define HTS221_AD_WHO_AM_I 0x0F
+#define HTS221_AD_AV_CONF 0x10
+#define HTS221_AD_CTRL_REG1 0x20
+#define HTS221_AD_CTRL_REG2 0x21
+#define HTS221_AD_CTRL_REG3 0x22
+#define HTS221_AD_STATUS_REG 0x27
+#define HTS221_AD_HUMIDITY_OUT_L 0x28
+#define HTS221_AD_HUMIDITY_OUT_H 0x29
+#define HTS221_AD_TEMP_OUT_L 0x2A
+#define HTS221_AD_TEMP_OUT_H 0x2B
+#define HTS221_AD_CALIB_0 0x30
+#define HTS221_AD_CALIB_1 0x31
+#define HTS221_AD_CALIB_2 0x32
+#define HTS221_AD_CALIB_3 0x33
+#define HTS221_AD_CALIB_4 0x34
+#define HTS221_AD_CALIB_5 0x35
+#define HTS221_AD_CALIB_6 0x36
+#define HTS221_AD_CALIB_7 0x37
+#define HTS221_AD_CALIB_8 0x38
+#define HTS221_AD_CALIB_9 0x39
+#define HTS221_AD_CALIB_A 0x3A
+#define HTS221_AD_CALIB_B 0x3B
+#define HTS221_AD_CALIB_C 0x3C
+#define HTS221_AD_CALIB_D 0x3D
+#define HTS221_AD_CALIB_E 0x3E
+#define HTS221_AD_CALIB_F 0x3F
+/** @} */
+
+/**
+ * @name HTS221_CTRL_REG1 register bits definitions
+ * @{
+ */
+#define HTS221_CTRL_REG1_MASK 0x87
+#define HTS221_CTRL_REG1_ODR0 (1 << 0)
+#define HTS221_CTRL_REG1_ODR1 (1 << 1)
+#define HTS221_CTRL_REG1_BDU (1 << 2)
+#define HTS221_CTRL_REG1_PD (1 << 7)
+/** @} */
+
/**
* @name HTS221_CTRL_REG2 register bits definitions
* @{
*/
-#define HTS221_CTRL_REG2_MASK 0x83
+#define HTS221_CTRL_REG2_MASK 0x83
#define HTS221_CTRL_REG2_ONE_SHOT (1 << 0)
-#define HTS221_CTRL_REG2_HEATER (1 << 1)
+#define HTS221_CTRL_REG2_HEATER (1 << 1)
#define HTS221_CTRL_REG2_BOOT (1 << 7)
-/** @} */
-
+/** @} */
+
/**
* @name HTS221_CTRL_REG3 register bits definitions
* @{
*/
-#define HTS221_CTRL_REG3_MASK 0xC4
-#define HTS221_CTRL_REG3_DRDY (1 << 2)
+#define HTS221_CTRL_REG3_MASK 0xC4
+#define HTS221_CTRL_REG3_DRDY (1 << 2)
#define HTS221_CTRL_REG3_PP_OD (1 << 6)
#define HTS221_CTRL_REG3_INT_H_L (1 << 7)
/** @} */
-/*===========================================================================*/
-/* Driver pre-compile time settings. */
-/*===========================================================================*/
-
-/**
- * @name Configuration options
- * @{
- */
-/**
- * @brief HTS221 SPI interface switch.
- * @details If set to @p TRUE the support for SPI is included.
- * @note The default is @p FALSE.
- */
-#if !defined(HTS221_USE_SPI) || defined(__DOXYGEN__)
-#define HTS221_USE_SPI FALSE
-#endif
-
-/**
- * @brief HTS221 I2C interface switch.
- * @details If set to @p TRUE the support for I2C is included.
- * @note The default is @p TRUE.
- */
-#if !defined(HTS221_USE_I2C) || defined(__DOXYGEN__)
-#define HTS221_USE_I2C TRUE
-#endif
-
-/**
- * @brief HTS221 advanced configurations switch.
- * @details If set to @p TRUE more configurations are available.
- * @note The default is @p FALSE.
- */
-#if !defined(HTS221_USE_ADVANCED) || defined(__DOXYGEN__)
-#define HTS221_USE_ADVANCED FALSE
-#endif
-
-/**
- * @brief HTS221 shared I2C switch.
- * @details If set to @p TRUE the device acquires I2C bus ownership
- * on each transaction.
- * @note The default is @p FALSE. Requires I2C_USE_MUTUAL_EXCLUSION
- */
-#if !defined(HTS221_SHARED_SPI) || defined(__DOXYGEN__)
-#define HTS221_SHARED_I2C FALSE
-#endif
-/** @} */
-
-/*===========================================================================*/
-/* Derived constants and error checks. */
-/*===========================================================================*/
-
-#if !(HTS221_USE_SPI ^ HTS221_USE_I2C)
-#error "HTS221_USE_SPI and HTS221_USE_I2C cannot be both true or both false"
-#endif
-
-#if HTS221_USE_SPI && !HAL_USE_SPI
-#error "HTS221_USE_SPI requires HAL_USE_SPI"
-#endif
+/*===========================================================================*/
+/* Driver pre-compile time settings. */
+/*===========================================================================*/
+
+/**
+ * @name Configuration options
+ * @{
+ */
+/**
+ * @brief HTS221 SPI interface switch.
+ * @details If set to @p TRUE the support for SPI is included.
+ * @note The default is @p FALSE.
+ */
+#if !defined(HTS221_USE_SPI) || defined(__DOXYGEN__)
+#define HTS221_USE_SPI FALSE
+#endif
+
+/**
+ * @brief HTS221 I2C interface switch.
+ * @details If set to @p TRUE the support for I2C is included.
+ * @note The default is @p TRUE.
+ */
+#if !defined(HTS221_USE_I2C) || defined(__DOXYGEN__)
+#define HTS221_USE_I2C TRUE
+#endif
+
+/**
+ * @brief HTS221 advanced configurations switch.
+ * @details If set to @p TRUE more configurations are available.
+ * @note The default is @p FALSE.
+ */
+#if !defined(HTS221_USE_ADVANCED) || defined(__DOXYGEN__)
+#define HTS221_USE_ADVANCED FALSE
+#endif
+
+/**
+ * @brief HTS221 shared I2C switch.
+ * @details If set to @p TRUE the device acquires I2C bus ownership
+ * on each transaction.
+ * @note The default is @p FALSE. Requires I2C_USE_MUTUAL_EXCLUSION
+ */
+#if !defined(HTS221_SHARED_SPI) || defined(__DOXYGEN__)
+#define HTS221_SHARED_I2C FALSE
+#endif
+/** @} */
+
+/*===========================================================================*/
+/* Derived constants and error checks. */
+/*===========================================================================*/
+
+#if !(HTS221_USE_SPI ^ HTS221_USE_I2C)
+#error "HTS221_USE_SPI and HTS221_USE_I2C cannot be both true or both false"
+#endif
+
+#if HTS221_USE_SPI && !HAL_USE_SPI
+#error "HTS221_USE_SPI requires HAL_USE_SPI"
+#endif
#if HTS221_USE_SPI
#error "HTS221 over SPI still not supported"
#endif
-
-#if HTS221_USE_I2C && !HAL_USE_I2C
-#error "HTS221_USE_I2C requires HAL_USE_I2C"
-#endif
-
-#if HTS221_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION
-#error "HTS221_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION"
+
+#if HTS221_USE_I2C && !HAL_USE_I2C
+#error "HTS221_USE_I2C requires HAL_USE_I2C"
+#endif
+
+#if HTS221_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION
+#error "HTS221_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION"
#endif
/*
* TODO: Add SPI support.
- */
-
-/*===========================================================================*/
-/* Driver data structures and types. */
-/*===========================================================================*/
-
-/**
- * @name HTS221 data structures and types.
- * @{
- */
-/**
- * @brief HTS221 output data rate and bandwidth.
- */
+ */
+
+/*===========================================================================*/
+/* Driver data structures and types. */
+/*===========================================================================*/
+
+/**
+ * @name HTS221 data structures and types.
+ * @{
+ */
+/**
+ * @brief HTS221 output data rate and bandwidth.
+ */
typedef enum {
- HTS221_ODR_ONE_SHOT = 0x00, /**< One shot. */
- HTS221_ODR_1HZ = 0x01, /**< Output data rate 1 Hz. */
- HTS221_ODR_7HZ = 0x02, /**< Output data rate 7 Hz. */
- HTS221_ODR_12P5HZ = 0x03, /**< Output data rate 12.5 Hz. */
-}hts221_odr_t;
+ HTS221_ODR_ONE_SHOT = 0x00, /**< One shot. */
+ HTS221_ODR_1HZ = 0x01, /**< Output data rate 1 Hz. */
+ HTS221_ODR_7HZ = 0x02, /**< Output data rate 7 Hz. */
+ HTS221_ODR_12P5HZ = 0x03, /**< Output data rate 12.5 Hz. */
+}hts221_odr_t;
/**
* @brief HTS221 humidity resolution.
@@ -272,69 +272,69 @@ typedef enum {
HTS221_AVGT_128 = 0x30, /**< Number of internal average is 128. */
HTS221_AVGT_256 = 0x38, /**< Number of internal average is 256. */
}hts221_avgt_t;
-
-/**
- * @brief HTS221 block data update.
- */
-typedef enum {
- HTS221_BDU_CONTINUOUS = 0x00, /**< Block data continuously updated. */
- HTS221_BDU_BLOCKED = 0x40 /**< Block data updated after reading. */
-}hts221_bdu_t;
-
-/**
- * @brief Driver state machine possible states.
- */
-typedef enum {
- HTS221_UNINIT = 0, /**< Not initialized. */
- HTS221_STOP = 1, /**< Stopped. */
- HTS221_READY = 2, /**< Ready. */
-} hts221_state_t;
-
-/**
- * @brief HTS221 configuration structure.
- */
-typedef struct {
-
-#if HTS221_USE_SPI || defined(__DOXYGEN__)
- /**
- * @brief SPI driver associated to this HTS221.
- */
- SPIDriver *spip;
- /**
- * @brief SPI configuration associated to this HTS221.
- */
- const SPIConfig *spicfg;
-#endif /* HTS221_USE_SPI */
-#if HTS221_USE_I2C || defined(__DOXYGEN__)
- /**
- * @brief I2C driver associated to this HTS221.
- */
- I2CDriver *i2cp;
- /**
- * @brief I2C configuration associated to this HTS221.
- */
- const I2CConfig *i2ccfg;
-#endif /* HTS221_USE_I2C */
- /**
+
+/**
+ * @brief HTS221 block data update.
+ */
+typedef enum {
+ HTS221_BDU_CONTINUOUS = 0x00, /**< Block data continuously updated. */
+ HTS221_BDU_BLOCKED = 0x40 /**< Block data updated after reading. */
+}hts221_bdu_t;
+
+/**
+ * @brief Driver state machine possible states.
+ */
+typedef enum {
+ HTS221_UNINIT = 0, /**< Not initialized. */
+ HTS221_STOP = 1, /**< Stopped. */
+ HTS221_READY = 2, /**< Ready. */
+} hts221_state_t;
+
+/**
+ * @brief HTS221 configuration structure.
+ */
+typedef struct {
+
+#if HTS221_USE_SPI || defined(__DOXYGEN__)
+ /**
+ * @brief SPI driver associated to this HTS221.
+ */
+ SPIDriver *spip;
+ /**
+ * @brief SPI configuration associated to this HTS221.
+ */
+ const SPIConfig *spicfg;
+#endif /* HTS221_USE_SPI */
+#if HTS221_USE_I2C || defined(__DOXYGEN__)
+ /**
+ * @brief I2C driver associated to this HTS221.
+ */
+ I2CDriver *i2cp;
+ /**
+ * @brief I2C configuration associated to this HTS221.
+ */
+ const I2CConfig *i2ccfg;
+#endif /* HTS221_USE_I2C */
+ /**
* @brief HTS221 initial sensitivity.
* @note Value are respectively related to hygrometer
- * and thermometer.
- */
- float* sensitivity;
- /**
+ * and thermometer.
+ */
+ float* sensitivity;
+ /**
* @brief HTS221 initial bias.
* @note Value are respectively related to hygrometer
- * and thermometer.
- */
- float* bias;
- /**
- * @brief HTS221 output data rate selection.
- */
- hts221_odr_t outputdatarate;
-#if HTS221_USE_ADVANCED || defined(__DOXYGEN__)
- /**
- * @brief HTS221 block data update.
- */
+ * and thermometer.
+ */
+ float* bias;
+ /**
+ * @brief HTS221 output data rate selection.
+ */
+ hts221_odr_t outputdatarate;
+#if HTS221_USE_ADVANCED || defined(__DOXYGEN__)
+ /**
+ * @brief HTS221 block data update.
+ */
hts221_bdu_t blockdataupdate;
/**
* @brief HTS221 humidity resolution.
@@ -343,68 +343,113 @@ typedef struct {
/**
* @brief HTS221 temperature resolution.
*/
- hts221_avgt_t restemperature;
-#endif
-} HTS221Config;
-
-/**
- * @brief Structure representing a HTS221 driver.
- */
-typedef struct HTS221Driver HTS221Driver;
-
-/**
- * @brief @p HTS221Driver specific data.
- */
-#define _hts221_data \
- _base_hygrometer_data \
- _base_thermometer_data \
- /* Driver state.*/ \
- hts221_state_t state; \
- /* Current configuration data.*/ \
- const HTS221Config *config; \
- /* Current sensitivity data.*/ \
+ hts221_avgt_t restemperature;
+#endif
+} HTS221Config;
+
+/**
+ * @brief @p HTS221 hygrometer subsystem specific methods.
+ * @note No methods so far, just a common ancestor interface.
+ */
+#define _hts221_hygrometer_methods_alone
+
+/**
+ * @brief @p HTS221 hygrometer subsystem specific methods.
+ */
+#define _hts221_hygrometer_methods \
+ _base_hygrometer_methods \
+ _hts221_hygrometer_methods_alone
+
+/**
+ * @brief @p HTS221 thermometer subsystem specific methods.
+ * @note No methods so far, just a common ancestor interface.
+ */
+#define _hts221_thermometer_methods_alone
+
+/**
+ * @brief @p HTS221 compass subsystem specific methods.
+ */
+#define _hts221_thermometer_methods \
+ _base_thermometer_methods \
+ _hts221_thermometer_methods_alone
+
+/**
+ * @extends BaseHygrometerVMT
+ *
+ * @brief @p HTS221 hygrometer virtual methods table.
+ */
+struct HTS221HygrometerVMT {
+ _hts221_hygrometer_methods
+};
+
+/**
+ * @extends BaseThermometerVMT
+ *
+ * @brief @p HTS221 thermometer virtual methods table.
+ */
+struct HTS221ThermometerVMT {
+ _hts221_thermometer_methods
+};
+
+/**
+ * @brief @p HTS221Driver specific data.
+ */
+#define _hts221_data \
+ /* Driver state.*/ \
+ hts221_state_t state; \
+ /* Current configuration data.*/ \
+ const HTS221Config *config; \
+ /* Current sensitivity data.*/ \
float sensitivity[HTS221_HYGRO_NUMBER_OF_AXES + \
- HTS221_THERMO_NUMBER_OF_AXES]; \
- /* Current Bias data.*/ \
+ HTS221_THERMO_NUMBER_OF_AXES]; \
+ /* Current Bias data.*/ \
float bias[HTS221_HYGRO_NUMBER_OF_AXES + \
- HTS221_THERMO_NUMBER_OF_AXES];
-
-/**
- * @extends BaseGyroscope
- *
- * @brief HTS221 3-axis barometer class.
- * @details This class extends @p BaseGyroscope by adding physical
- * driver implementation.
- */
-struct HTS221Driver {
- /** @brief BaseSensor Virtual Methods Table. */
- const struct BaseSensorVMT *vmt_basesensor;
- /** @brief BaseHygrometer Virtual Methods Table. */
- const struct BaseHygrometerVMT *vmt_basehygrometer;
- /** @brief BaseThermometer Virtual Methods Table. */
- const struct BaseThermometerVMT *vmt_basethermometer;
- _hts221_data
-};
-/** @} */
-
-/*===========================================================================*/
-/* Driver macros. */
-/*===========================================================================*/
-
-/*===========================================================================*/
-/* External declarations. */
-/*===========================================================================*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
- void hts221ObjectInit(HTS221Driver *devp);
- void hts221Start(HTS221Driver *devp, const HTS221Config *config);
- void hts221Stop(HTS221Driver *devp);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _HTS221_H_ */
-
-/** @} */ \ No newline at end of file
+ HTS221_THERMO_NUMBER_OF_AXES];
+
+/**
+ * @extends BaseGyroscope
+ *
+ * @brief HTS221 3-axis barometer class.
+ * @details This class extends @p BaseGyroscope by adding physical
+ * driver implementation.
+ */
+struct HTS221Driver {
+ /** @brief BaseSensor Virtual Methods Table. */
+ const struct BaseSensorVMT *vmt_sensor;
+ _base_sensor_data
+ /** @brief HTS221 Hygrometer Virtual Methods Table. */
+ const struct HTS221HygrometerVMT *vmt_hygrometer;
+ _base_hygrometer_data
+ /** @brief HTS221 Thermometer Virtual Methods Table. */
+ const struct HTS221ThermometerVMT *vmt_thermometer;
+ _base_thermometer_data
+ _hts221_data
+};
+
+/**
+ * @brief Structure representing a HTS221 driver.
+ */
+typedef struct HTS221Driver HTS221Driver;
+/** @} */
+
+/*===========================================================================*/
+/* Driver macros. */
+/*===========================================================================*/
+
+/*===========================================================================*/
+/* External declarations. */
+/*===========================================================================*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+ void hts221ObjectInit(HTS221Driver *devp);
+ void hts221Start(HTS221Driver *devp, const HTS221Config *config);
+ void hts221Stop(HTS221Driver *devp);
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HTS221_H_ */
+
+/** @} */