From 021bd52c4ab8f705097f45e3f3a4bf43a86ee1cb Mon Sep 17 00:00:00 2001 From: Rocco Marco Guglielmi Date: Wed, 2 May 2018 13:18:38 +0000 Subject: Fixed Bug #943 git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11985 110e8d01-0319-4d1e-a829-52ad28d1bb01 --- os/ex/ST/l3gd20.h | 678 +++++++++++++++++++++++++++--------------------------- 1 file changed, 339 insertions(+), 339 deletions(-) (limited to 'os/ex/ST/l3gd20.h') diff --git a/os/ex/ST/l3gd20.h b/os/ex/ST/l3gd20.h index fdeb600f6..bea56432c 100644 --- a/os/ex/ST/l3gd20.h +++ b/os/ex/ST/l3gd20.h @@ -1,72 +1,72 @@ -/* - ChibiOS - Copyright (C) 2016..2018 Rocco Marco Guglielmi - - This file is part of ChibiOS. - - ChibiOS is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -*/ - -/** - * @file l3gd20.h - * @brief L3GD20 MEMS interface module header. - * - * @addtogroup L3GD20 - * @ingroup EX_ST - * @{ - */ -#ifndef _L3GD20_H_ -#define _L3GD20_H_ - -#include "hal_gyroscope.h" - -/*===========================================================================*/ -/* Driver constants. */ -/*===========================================================================*/ - -/** - * @name Version identification - * @{ - */ -/** - * @brief L3GD20 driver version string. - */ -#define EX_L3GD20_VERSION "1.1.0" - -/** - * @brief L3GD20 driver version major number. - */ -#define EX_L3GD20_MAJOR 1 - -/** - * @brief L3GD20 driver version minor number. - */ -#define EX_L3GD20_MINOR 1 - -/** - * @brief L3GD20 driver version patch number. - */ -#define EX_L3GD20_PATCH 0 -/** @} */ - -/** - * @brief L3GD20 gyroscope system characteristics. - * @note Sensitivity is expressed as DPS/LSB whereas DPS stand for Degree - * per second [°/s]. - * @note Bias is expressed as DPS. - * - * @{ +/* + ChibiOS - Copyright (C) 2016..2018 Rocco Marco Guglielmi + + This file is part of ChibiOS. + + ChibiOS is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + ChibiOS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +*/ + +/** + * @file l3gd20.h + * @brief L3GD20 MEMS interface module header. + * + * @addtogroup L3GD20 + * @ingroup EX_ST + * @{ + */ +#ifndef _L3GD20_H_ +#define _L3GD20_H_ + +#include "hal_gyroscope.h" + +/*===========================================================================*/ +/* Driver constants. */ +/*===========================================================================*/ + +/** + * @name Version identification + * @{ + */ +/** + * @brief L3GD20 driver version string. + */ +#define EX_L3GD20_VERSION "1.1.1" + +/** + * @brief L3GD20 driver version major number. + */ +#define EX_L3GD20_MAJOR 1 + +/** + * @brief L3GD20 driver version minor number. + */ +#define EX_L3GD20_MINOR 1 + +/** + * @brief L3GD20 driver version patch number. + */ +#define EX_L3GD20_PATCH 1 +/** @} */ + +/** + * @brief L3GD20 gyroscope system characteristics. + * @note Sensitivity is expressed as DPS/LSB whereas DPS stand for Degree + * per second [°/s]. + * @note Bias is expressed as DPS. + * + * @{ */ #define L3GD20_GYRO_NUMBER_OF_AXES 3U @@ -76,8 +76,8 @@ #define L3GD20_GYRO_SENS_250DPS 0.00875f #define L3GD20_GYRO_SENS_500DPS 0.01750f -#define L3GD20_GYRO_SENS_2000DPS 0.07000f - +#define L3GD20_GYRO_SENS_2000DPS 0.07000f + #define L3GD20_GYRO_BIAS 0.0f /** @} */ @@ -194,36 +194,36 @@ #define L3GD20_CTRL_REG5_FIFO_EN (1 << 6) #define L3GD20_CTRL_REG5_BOOT (1 << 7) /** @} */ - -/** - * @name L3GD20_INT1_CFG register bits definitions - * @{ - */ -#define L3GD20_INT1_CFG_MASK 0xFF -#define L3GD20_INT1_CFG_XLIE (1 << 0) -#define L3GD20_INT1_CFG_XHIE (1 << 1) -#define L3GD20_INT1_CFG_YLIE (1 << 2) -#define L3GD20_INT1_CFG_YHIE (1 << 3) -#define L3GD20_INT1_CFG_ZLIE (1 << 4) -#define L3GD20_INT1_CFG_ZHIE (1 << 5) -#define L3GD20_INT1_CFG_LIR (1 << 6) -#define L3GD20_INT1_CFG_AND_OR (1 << 7) -/** @} */ - -/** - * @name L3GD20_INT1_SRC register bits definitions - * @{ - */ -#define L3GD20_INT1_SRC_MASK 0x7F -#define L3GD20_INT1_SRC_XL (1 << 0) -#define L3GD20_INT1_SRC_XH (1 << 1) -#define L3GD20_INT1_SRC_YL (1 << 2) -#define L3GD20_INT1_SRC_YH (1 << 3) -#define L3GD20_INT1_SRC_ZL (1 << 4) -#define L3GD20_INT1_SRC_ZH (1 << 5) -#define L3GD20_INT1_SRC_IA (1 << 6) -/** @} */ - + +/** + * @name L3GD20_INT1_CFG register bits definitions + * @{ + */ +#define L3GD20_INT1_CFG_MASK 0xFF +#define L3GD20_INT1_CFG_XLIE (1 << 0) +#define L3GD20_INT1_CFG_XHIE (1 << 1) +#define L3GD20_INT1_CFG_YLIE (1 << 2) +#define L3GD20_INT1_CFG_YHIE (1 << 3) +#define L3GD20_INT1_CFG_ZLIE (1 << 4) +#define L3GD20_INT1_CFG_ZHIE (1 << 5) +#define L3GD20_INT1_CFG_LIR (1 << 6) +#define L3GD20_INT1_CFG_AND_OR (1 << 7) +/** @} */ + +/** + * @name L3GD20_INT1_SRC register bits definitions + * @{ + */ +#define L3GD20_INT1_SRC_MASK 0x7F +#define L3GD20_INT1_SRC_XL (1 << 0) +#define L3GD20_INT1_SRC_XH (1 << 1) +#define L3GD20_INT1_SRC_YL (1 << 2) +#define L3GD20_INT1_SRC_YH (1 << 3) +#define L3GD20_INT1_SRC_ZL (1 << 4) +#define L3GD20_INT1_SRC_ZH (1 << 5) +#define L3GD20_INT1_SRC_IA (1 << 6) +/** @} */ + /*===========================================================================*/ /* Driver pre-compile time settings. */ /*===========================================================================*/ @@ -232,52 +232,52 @@ * @name Configuration options * @{ */ -/** - * @brief L3GD20 SPI interface switch. - * @details If set to @p TRUE the support for SPI is included. - * @note The default is @p TRUE. - */ -#if !defined(L3GD20_USE_SPI) || defined(__DOXYGEN__) -#define L3GD20_USE_SPI TRUE -#endif - -/** - * @brief L3GD20 shared SPI switch. - * @details If set to @p TRUE the device acquires SPI bus ownership - * on each transaction. - * @note The default is @p FALSE. Requires SPI_USE_MUTUAL_EXCLUSION. - */ -#if !defined(L3GD20_SHARED_SPI) || defined(__DOXYGEN__) -#define L3GD20_SHARED_SPI FALSE -#endif - -/** - * @brief L3GD20 I2C interface switch. - * @details If set to @p TRUE the support for I2C is included. - * @note The default is @p FALSE. - */ -#if !defined(L3GD20_USE_I2C) || defined(__DOXYGEN__) -#define L3GD20_USE_I2C FALSE -#endif - -/** - * @brief L3GD20 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(L3GD20_SHARED_I2C) || defined(__DOXYGEN__) -#define L3GD20_SHARED_I2C FALSE -#endif - -/** - * @brief L3GD20 accelerometer subsystem advanced configurations - * switch. - * @details If set to @p TRUE more configurations are available. - * @note The default is @p FALSE. - */ -#if !defined(L3GD20_GYRO_USE_ADVANCED) || defined(__DOXYGEN__) -#define L3GD20_GYRO_USE_ADVANCED FALSE +/** + * @brief L3GD20 SPI interface switch. + * @details If set to @p TRUE the support for SPI is included. + * @note The default is @p TRUE. + */ +#if !defined(L3GD20_USE_SPI) || defined(__DOXYGEN__) +#define L3GD20_USE_SPI TRUE +#endif + +/** + * @brief L3GD20 shared SPI switch. + * @details If set to @p TRUE the device acquires SPI bus ownership + * on each transaction. + * @note The default is @p FALSE. Requires SPI_USE_MUTUAL_EXCLUSION. + */ +#if !defined(L3GD20_SHARED_SPI) || defined(__DOXYGEN__) +#define L3GD20_SHARED_SPI FALSE +#endif + +/** + * @brief L3GD20 I2C interface switch. + * @details If set to @p TRUE the support for I2C is included. + * @note The default is @p FALSE. + */ +#if !defined(L3GD20_USE_I2C) || defined(__DOXYGEN__) +#define L3GD20_USE_I2C FALSE +#endif + +/** + * @brief L3GD20 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(L3GD20_SHARED_I2C) || defined(__DOXYGEN__) +#define L3GD20_SHARED_I2C FALSE +#endif + +/** + * @brief L3GD20 accelerometer subsystem advanced configurations + * switch. + * @details If set to @p TRUE more configurations are available. + * @note The default is @p FALSE. + */ +#if !defined(L3GD20_GYRO_USE_ADVANCED) || defined(__DOXYGEN__) +#define L3GD20_GYRO_USE_ADVANCED FALSE #endif /** @@ -302,32 +302,32 @@ /* Derived constants and error checks. */ /*===========================================================================*/ -#if !(L3GD20_USE_SPI ^ L3GD20_USE_I2C) -#error "L3GD20_USE_SPI and L3GD20_USE_I2C cannot be both true or both false" -#endif - -#if L3GD20_USE_SPI && !HAL_USE_SPI -#error "L3GD20_USE_SPI requires HAL_USE_SPI" -#endif - -#if L3GD20_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION -#error "L3GD20_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION" -#endif - -#if L3GD20_USE_I2C && !HAL_USE_I2C -#error "L3GD20_USE_I2C requires HAL_USE_I2C" -#endif - -#if L3GD20_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION -#error "L3GD20_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION" -#endif - -/** - * @todo Add support for L3GD20 over I2C. - */ -#if L3GD20_USE_I2C -#error "L3GD20 over I2C still not supported" -#endif +#if !(L3GD20_USE_SPI ^ L3GD20_USE_I2C) +#error "L3GD20_USE_SPI and L3GD20_USE_I2C cannot be both true or both false" +#endif + +#if L3GD20_USE_SPI && !HAL_USE_SPI +#error "L3GD20_USE_SPI requires HAL_USE_SPI" +#endif + +#if L3GD20_SHARED_SPI && !SPI_USE_MUTUAL_EXCLUSION +#error "L3GD20_SHARED_SPI requires SPI_USE_MUTUAL_EXCLUSION" +#endif + +#if L3GD20_USE_I2C && !HAL_USE_I2C +#error "L3GD20_USE_I2C requires HAL_USE_I2C" +#endif + +#if L3GD20_SHARED_I2C && !I2C_USE_MUTUAL_EXCLUSION +#error "L3GD20_SHARED_I2C requires I2C_USE_MUTUAL_EXCLUSION" +#endif + +/** + * @todo Add support for L3GD20 over I2C. + */ +#if L3GD20_USE_I2C +#error "L3GD20 over I2C still not supported" +#endif /*===========================================================================*/ /* Driver data structures and types. */ @@ -336,11 +336,11 @@ /** * @name L3GD20 data structures and types. * @{ - */ -/** - * @brief Structure representing a L3GD20 driver. - */ -typedef struct L3GD20Driver L3GD20Driver; + */ +/** + * @brief Structure representing a L3GD20 driver. + */ +typedef struct L3GD20Driver L3GD20Driver; /** * @brief L3GD20 full scale. @@ -369,7 +369,7 @@ typedef enum { L3GD20_BW1 = 0x40, /**< LPF1 bandwidth. Depends on ODR. */ L3GD20_BW2 = 0x80, /**< LPF1 bandwidth. Depends on ODR. */ L3GD20_BW3 = 0xC0 /**< LPF1 bandwidth. Depends on ODR. */ -} l3gd20_bw_t; +} l3gd20_bw_t; /** * @brief L3GD20 block data update. @@ -430,7 +430,7 @@ typedef enum { L3GD20_STOP = 1, /**< Stopped. */ L3GD20_READY = 2 /**< Ready. */ } l3gd20_state_t; - + /** * @brief L3GD20 configuration structure. */ @@ -463,7 +463,7 @@ typedef struct { /** * @brief L3GD20 gyroscope system initial bias. */ - float *gyrobias; + float *gyrobias; /** * @brief L3GD20 gyroscope system initial full scale value. */ @@ -500,20 +500,20 @@ typedef struct { l3gd20_lp2m_t gyrolp2mode; #endif } L3GD20Config; - -/** - * @brief @p L3GD20 specific methods. - */ -#define _l3gd20_methods_alone \ - /* Change full scale value of L3GD20.*/ \ - msg_t (*gyro_set_full_scale)(L3GD20Driver *devp, l3gd20_fs_t fs); + +/** + * @brief @p L3GD20 specific methods. + */ +#define _l3gd20_methods_alone \ + /* Change full scale value of L3GD20.*/ \ + msg_t (*gyro_set_full_scale)(L3GD20Driver *devp, l3gd20_fs_t fs); /** * @brief @p L3GD20 specific methods with inherited ones. */ #define _l3gd20_methods \ _base_object_methods \ - _l3gd20_methods_alone + _l3gd20_methods_alone /** * @extends BaseObjectVMT @@ -532,8 +532,8 @@ struct L3GD20VMT { /* Driver state.*/ \ l3gd20_state_t state; \ /* Current configuration data.*/ \ - const L3GD20Config *config; \ - /* Gyroscope subsystem axes number.*/ \ + const L3GD20Config *config; \ + /* Gyroscope subsystem axes number.*/ \ size_t gyroaxes; \ /* Gyroscope subsystem current sensitivity.*/ \ float gyrosensitivity[L3GD20_GYRO_NUMBER_OF_AXES]; \ @@ -547,8 +547,8 @@ struct L3GD20VMT { */ struct L3GD20Driver { /** @brief Virtual Methods Table. */ - const struct L3GD20VMT *vmt; - /** @brief Base gyroscope interface.*/ + const struct L3GD20VMT *vmt; + /** @brief Base gyroscope interface.*/ BaseGyroscope gyro_if; _l3gd20_data }; @@ -557,154 +557,154 @@ struct L3GD20Driver { /*===========================================================================*/ /* Driver macros. */ /*===========================================================================*/ - -/** - * @brief Return the number of axes of the BaseGyroscope. - * - * @param[in] devp pointer to @p L3GD20Driver. - * - * @return the number of axes. - * - * @api - */ -#define l3gd20GyroscopeGetAxesNumber(devp) \ - gyroscopeGetAxesNumber(&((devp)->gyro_if)) + +/** + * @brief Return the number of axes of the BaseGyroscope. + * + * @param[in] devp pointer to @p L3GD20Driver. + * + * @return the number of axes. + * + * @api + */ +#define l3gd20GyroscopeGetAxesNumber(devp) \ + gyroscopeGetAxesNumber(&((devp)->gyro_if)) -/** - * @brief Retrieves raw data from the BaseGyroscope. - * @note This data is retrieved from MEMS register without any algebraical - * manipulation. - * @note The axes array must be at least the same size of the - * BaseGyroscope axes number. - * - * @param[in] devp pointer to @p L3GD20Driver. - * @param[out] axes a buffer which would be filled with raw data. - * - * @return The operation status. - * @retval MSG_OK if the function succeeded. - * - * @api - */ -#define l3gd20GyroscopeReadRaw(devp, axes) \ +/** + * @brief Retrieves raw data from the BaseGyroscope. + * @note This data is retrieved from MEMS register without any algebraical + * manipulation. + * @note The axes array must be at least the same size of the + * BaseGyroscope axes number. + * + * @param[in] devp pointer to @p L3GD20Driver. + * @param[out] axes a buffer which would be filled with raw data. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * + * @api + */ +#define l3gd20GyroscopeReadRaw(devp, axes) \ gyroscopeReadRaw(&((devp)->gyro_if), axes) - -/** - * @brief Retrieves cooked data from the BaseGyroscope. - * @note This data is manipulated according to the formula - * cooked = (raw * sensitivity) - bias. - * @note Final data is expressed as DPS. - * @note The axes array must be at least the same size of the - * BaseGyroscope axes number. - * - * @param[in] devp pointer to @p L3GD20Driver. - * @param[out] axes a buffer which would be filled with cooked data. - * - * @return The operation status. - * @retval MSG_OK if the function succeeded. - * - * @api - */ -#define l3gd20GyroscopeReadCooked(devp, axes) \ - gyroscopeReadCooked(&((devp)->gyro_if), axes) - -/** - * @brief Samples bias values for the BaseGyroscope. - * @note The L3GD20 shall not be moved during the whole procedure. - * @note After this function internal bias is automatically updated. - * @note The behavior of this function depends on @P L3GD20_BIAS_ACQ_TIMES - * and @p L3GD20_BIAS_SETTLING_US. - * - * @param[in] devp pointer to @p L3GD20Driver. - * - * @return The operation status. - * @retval MSG_OK if the function succeeded. - * - * @api - */ -#define l3gd20GyroscopeSampleBias(devp) \ - gyroscopeSampleBias(&((devp)->gyro_if)) - -/** - * @brief Set bias values for the BaseGyroscope. - * @note Bias must be expressed as DPS. - * @note The bias buffer must be at least the same size of the BaseGyroscope - * axes number. - * - * @param[in] devp pointer to @p L3GD20Driver. - * @param[in] bp a buffer which contains biases. - * - * @return The operation status. - * @retval MSG_OK if the function succeeded. - * - * @api - */ -#define l3gd20GyroscopeSetBias(devp, bp) \ - gyroscopeSetBias(&((devp)->gyro_if), bp) - -/** - * @brief Reset bias values for the BaseGyroscope. - * @note Default biases value are obtained from device datasheet when - * available otherwise they are considered zero. - * - * @param[in] devp pointer to @p L3GD20Driver. - * - * @return The operation status. - * @retval MSG_OK if the function succeeded. - * - * @api - */ -#define l3gd20GyroscopeResetBias(devp) \ - gyroscopeResetBias(&((devp)->gyro_if)) - -/** - * @brief Set sensitivity values for the BaseGyroscope. - * @note Sensitivity must be expressed as DPS/LSB. - * @note The sensitivity buffer must be at least the same size of the - * BaseGyroscope axes number. - * - * @param[in] devp pointer to @p L3GD20Driver. - * @param[in] sp a buffer which contains sensitivities. - * - * @return The operation status. - * @retval MSG_OK if the function succeeded. - * - * @api - */ -#define l3gd20GyroscopeSetSensitivity(devp, sp) \ - gyroscopeSetSensitivity(&((devp)->gyro_if), sp) - -/** - * @brief Reset sensitivity values for the BaseGyroscope. - * @note Default sensitivities value are obtained from device datasheet. - * - * @param[in] devp pointer to @p L3GD20Driver. - * - * @return The operation status. - * @retval MSG_OK if the function succeeded. - * @retval MSG_RESET otherwise. - * - * @api - */ -#define l3gd20GyroscopeResetSensitivity(devp) \ - gyroscopeResetSensitivity(&((devp)->gyro_if)) - -/** - * @brief Changes the L3GD20Driver gyroscope fullscale value. - * @note This function also rescale sensitivities and biases based on - * previous and next fullscale value. - * @note A recalibration is highly suggested after calling this function. - * - * @param[in] devp pointer to @p L3GD20Driver. - * @param[in] fs new fullscale value. - * - * @return The operation status. - * @retval MSG_OK if the function succeeded. - * @retval MSG_RESET otherwise. - * - * @api - */ -#define l3gd20GyroscopeSetFullScale(devp, fs) \ - (devp)->vmt->acc_set_full_scale(devp, fs) + +/** + * @brief Retrieves cooked data from the BaseGyroscope. + * @note This data is manipulated according to the formula + * cooked = (raw * sensitivity) - bias. + * @note Final data is expressed as DPS. + * @note The axes array must be at least the same size of the + * BaseGyroscope axes number. + * + * @param[in] devp pointer to @p L3GD20Driver. + * @param[out] axes a buffer which would be filled with cooked data. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * + * @api + */ +#define l3gd20GyroscopeReadCooked(devp, axes) \ + gyroscopeReadCooked(&((devp)->gyro_if), axes) + +/** + * @brief Samples bias values for the BaseGyroscope. + * @note The L3GD20 shall not be moved during the whole procedure. + * @note After this function internal bias is automatically updated. + * @note The behavior of this function depends on @p L3GD20_BIAS_ACQ_TIMES + * and @p L3GD20_BIAS_SETTLING_US. + * + * @param[in] devp pointer to @p L3GD20Driver. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * + * @api + */ +#define l3gd20GyroscopeSampleBias(devp) \ + gyroscopeSampleBias(&((devp)->gyro_if)) + +/** + * @brief Set bias values for the BaseGyroscope. + * @note Bias must be expressed as DPS. + * @note The bias buffer must be at least the same size of the BaseGyroscope + * axes number. + * + * @param[in] devp pointer to @p L3GD20Driver. + * @param[in] bp a buffer which contains biases. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * + * @api + */ +#define l3gd20GyroscopeSetBias(devp, bp) \ + gyroscopeSetBias(&((devp)->gyro_if), bp) + +/** + * @brief Reset bias values for the BaseGyroscope. + * @note Default biases value are obtained from device datasheet when + * available otherwise they are considered zero. + * + * @param[in] devp pointer to @p L3GD20Driver. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * + * @api + */ +#define l3gd20GyroscopeResetBias(devp) \ + gyroscopeResetBias(&((devp)->gyro_if)) + +/** + * @brief Set sensitivity values for the BaseGyroscope. + * @note Sensitivity must be expressed as DPS/LSB. + * @note The sensitivity buffer must be at least the same size of the + * BaseGyroscope axes number. + * + * @param[in] devp pointer to @p L3GD20Driver. + * @param[in] sp a buffer which contains sensitivities. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * + * @api + */ +#define l3gd20GyroscopeSetSensitivity(devp, sp) \ + gyroscopeSetSensitivity(&((devp)->gyro_if), sp) + +/** + * @brief Reset sensitivity values for the BaseGyroscope. + * @note Default sensitivities value are obtained from device datasheet. + * + * @param[in] devp pointer to @p L3GD20Driver. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET otherwise. + * + * @api + */ +#define l3gd20GyroscopeResetSensitivity(devp) \ + gyroscopeResetSensitivity(&((devp)->gyro_if)) + +/** + * @brief Changes the L3GD20Driver gyroscope fullscale value. + * @note This function also rescale sensitivities and biases based on + * previous and next fullscale value. + * @note A recalibration is highly suggested after calling this function. + * + * @param[in] devp pointer to @p L3GD20Driver. + * @param[in] fs new fullscale value. + * + * @return The operation status. + * @retval MSG_OK if the function succeeded. + * @retval MSG_RESET otherwise. + * + * @api + */ +#define l3gd20GyroscopeSetFullScale(devp, fs) \ + (devp)->vmt->acc_set_full_scale(devp, fs) /*===========================================================================*/ /* External declarations. */ -- cgit v1.2.3