diff options
| author | Rocco Marco Guglielmi <roccomarco.guglielmi@gmail.com> | 2018-02-05 10:28:48 +0000 | 
|---|---|---|
| committer | Rocco Marco Guglielmi <roccomarco.guglielmi@gmail.com> | 2018-02-05 10:28:48 +0000 | 
| commit | 3b82008db36f7e98edf091800d89e1f17e61febb (patch) | |
| tree | 99b7a2eb87b744bec0fb8e5570131416df84efc2 /os | |
| parent | 46133587396a2c6c47f09bbcdd229ae10090f5de (diff) | |
| download | ChibiOS-3b82008db36f7e98edf091800d89e1f17e61febb.tar.gz ChibiOS-3b82008db36f7e98edf091800d89e1f17e61febb.tar.bz2 ChibiOS-3b82008db36f7e98edf091800d89e1f17e61febb.zip  | |
Updated LSM303DLHC driver to v 1.0.4 (Fixing Bug #915).
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11439 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os')
| -rw-r--r-- | os/ex/ST/lsm303dlhc.c | 28 | ||||
| -rw-r--r-- | os/ex/ST/lsm303dlhc.h | 79 | 
2 files changed, 53 insertions, 54 deletions
diff --git a/os/ex/ST/lsm303dlhc.c b/os/ex/ST/lsm303dlhc.c index 207977321..111cdb7e5 100644 --- a/os/ex/ST/lsm303dlhc.c +++ b/os/ex/ST/lsm303dlhc.c @@ -604,27 +604,17 @@ static msg_t comp_set_full_scale(void *ip, lsm303dlhc_comp_fs_t fs) {    return msg;
  }
 -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 BaseCompassVMT vmt_basecompass = {
 -  comp_get_axes_number, comp_read_raw, comp_read_cooked,
 -  comp_set_bias, comp_reset_bias, comp_set_sensivity, comp_reset_sensivity
 -};
 -
 -static const struct BaseAccelerometerVMT vmt_baseaccelerometer = {
 -  acc_get_axes_number, acc_read_raw, acc_read_cooked,
 -  acc_set_bias, acc_reset_bias, acc_set_sensivity, acc_reset_sensivity
 -};
 -
 -static const struct LSM303DLHCACCVMT vmt_lsm303dlhcacc = {
 +static const struct LSM303DLHCAcceleromerVMT vmt_accelerometer = {
    acc_get_axes_number, acc_read_raw, acc_read_cooked,
    acc_set_bias, acc_reset_bias, acc_set_sensivity, acc_reset_sensivity,
    acc_set_full_scale
  };
 -static const struct LSM303DLHCCOMPVMT vmt_lsm303dlhccomp = {
 +static const struct LSM303DLHCCompassVMT vmt_compass = {
    comp_get_axes_number, comp_read_raw, comp_read_cooked,
    comp_set_bias, comp_reset_bias, comp_set_sensivity, comp_reset_sensivity,
    comp_set_full_scale
 @@ -643,11 +633,10 @@ static const struct LSM303DLHCCOMPVMT vmt_lsm303dlhccomp = {   */
  void lsm303dlhcObjectInit(LSM303DLHCDriver *devp) {
    uint32_t i;
 -  devp->vmt_basesensor = &vmt_basesensor;
 -  devp->vmt_baseaccelerometer = &vmt_baseaccelerometer;
 -  devp->vmt_basecompass = &vmt_basecompass;
 -  devp->vmt_lsm303dlhcacc = &vmt_lsm303dlhcacc;
 -  devp->vmt_lsm303dlhccomp = &vmt_lsm303dlhccomp;
 +  devp->vmt_sensor = &vmt_sensor;
 +  devp->vmt_accelerometer = &vmt_accelerometer;
 +  devp->vmt_compass = &vmt_compass;
 +
    devp->config = NULL;
    for(i = 0; i < LSM303DLHC_ACC_NUMBER_OF_AXES; i++)
      devp->accbias[i] = 0.0f;
 @@ -670,7 +659,8 @@ void lsm303dlhcStart(LSM303DLHCDriver *devp, const LSM303DLHCConfig *config) {    osalDbgCheck((devp != NULL) && (config != NULL));
 -  osalDbgAssert((devp->state == LSM303DLHC_STOP) || (devp->state == LSM303DLHC_READY),
 +  osalDbgAssert((devp->state == LSM303DLHC_STOP) || 
 +                (devp->state == LSM303DLHC_READY),
                "lsm303dlhcStart(), invalid state");
    devp->config = config;
 diff --git a/os/ex/ST/lsm303dlhc.h b/os/ex/ST/lsm303dlhc.h index 284e5b7ac..7f34a8683 100644 --- a/os/ex/ST/lsm303dlhc.h +++ b/os/ex/ST/lsm303dlhc.h @@ -43,22 +43,22 @@  /**
   * @brief   LSM303DLHC driver version string.
   */
 -#define EX_LSM303DLHC_VERSION       "1.0.3"
 +#define EX_LSM303DLHC_VERSION               "1.0.4"
  /**
   * @brief   LSM303DLHC driver version major number.
   */
 -#define EX_LSM303DLHC_MAJOR         1
 +#define EX_LSM303DLHC_MAJOR                 1
  /**
   * @brief   LSM303DLHC driver version minor number.
   */
 -#define EX_LSM303DLHC_MINOR         0
 +#define EX_LSM303DLHC_MINOR                 0
  /**
   * @brief   LSM303DLHC driver version patch number.
   */
 -#define EX_LSM303DLHC_PATCH         3
 +#define EX_LSM303DLHC_PATCH                 4
  /** @} */
  /**
 @@ -115,11 +115,11 @@   * @name   LSM303DLHC communication interfaces related bit masks
   * @{
   */
 -#define LSM303DLHC_DI_MASK          0xFF        /**< Data In mask           */
 -#define LSM303DLHC_DI(n)            (1 << n)    /**< Data In bit n          */
 -#define LSM303DLHC_AD_MASK          0x7F        /**< Address Data mask      */
 -#define LSM303DLHC_AD(n)            (1 << n)    /**< Address Data bit n     */
 -#define LSM303DLHC_MS               (1 << 7)    /**< Multiple read write    */
 +#define LSM303DLHC_DI_MASK                  0xFF
 +#define LSM303DLHC_DI(n)                    (1 << n)
 +#define LSM303DLHC_AD_MASK                  0x7F
 +#define LSM303DLHC_AD(n)                    (1 << n)
 +#define LSM303DLHC_MS                       (1 << 7)
  /** @} */
  /**
 @@ -571,31 +571,40 @@ typedef struct {  } LSM303DLHCConfig;
  /**
 - * @brief Structure representing a LSM303DLHC driver.
 + * @brief   @p LSM303DLHC accelerometer subsystem specific methods.
   */
 -typedef struct LSM303DLHCDriver LSM303DLHCDriver;
 -
 +#define _lsm303dlhc_accelerometer_methods_alone                             \
 +  /* Change full scale value of LSM303DLHC accelerometer subsystem .*/      \
 +  msg_t (*set_full_scale)(void *instance, lsm303dlhc_acc_fs_t fs);
 +                 
  /**
   * @brief @p LSM303DLHC accelerometer subsystem specific methods.
   */
 -#define _lsm303dlhc_acc_methods                                             \
 -  _base_accelerometer_methods
 +#define _lsm303dlhc_accelerometer_methods                                   \
 +  _base_accelerometer_methods                                               \
 +  _lsm303dlhc_accelerometer_methods_alone
  /**
 + * @brief   @p LSM303DLHC compass subsystem specific methods.
 + */
 +#define _lsm303dlhc_compass_methods_alone                                   \
 +  /* Change full scale value of LSM303DLHC compass subsystem .*/            \
 +  msg_t (*set_full_scale)(void *instance, lsm303dlhc_comp_fs_t fs);
 + 
 +/**
   * @brief @p LSM303DLHC compass subsystem specific methods.
   */
 -#define _lsm303dlhc_comp_methods                                            \
 -  _base_compass_methods
 +#define _lsm303dlhc_compass_methods                                         \
 +  _base_compass_methods                                                     \
 +  _lsm303dlhc_compass_methods_alone
  /**
   * @extends BaseAccelerometerVMT
   *
   * @brief @p LSM303DLHC accelerometer virtual methods table.
   */
 -struct LSM303DLHCACCVMT {
 -  _lsm303dlhc_acc_methods                                                   \
 -  /* Change full scale value of LSM303DLHC accelerometer subsystem .*/      \
 -  msg_t (*set_full_scale)(void *instance, lsm303dlhc_acc_fs_t fs);          \
 +struct LSM303DLHCAcceleromerVMT {
 +  _lsm303dlhc_accelerometer_methods
  };
  /**
 @@ -603,18 +612,14 @@ struct LSM303DLHCACCVMT {   *
   * @brief @p LSM303DLHC compass virtual methods table.
   */
 -struct LSM303DLHCCOMPVMT {
 -  _lsm303dlhc_comp_methods                                                  \
 -  /* Change full scale value of LSM303DLHC compass subsystem .*/            \
 -  msg_t (*set_full_scale)(void *instance, lsm303dlhc_comp_fs_t fs);         \
 +struct LSM303DLHCCompassVMT {
 +  _lsm303dlhc_compass_methods
  };
  /**
   * @brief @p LSM303DLHCDriver specific data.
   */
  #define _lsm303dlhc_data                                                    \
 -  _base_accelerometer_data                                                  \
 -  _base_compass_data                                                        \
    /* Driver state.*/                                                        \
    lsm303dlhc_state_t        state;                                          \
    /* Current configuration data.*/                                          \
 @@ -637,17 +642,21 @@ struct LSM303DLHCCOMPVMT {   */
  struct LSM303DLHCDriver {
    /** @brief BaseSensor Virtual Methods Table. */
 -  const struct BaseSensorVMT *vmt_basesensor;
 -  /** @brief BaseAccelerometer Virtual Methods Table. */
 -  const struct BaseAccelerometerVMT *vmt_baseaccelerometer;
 -  /** @brief BaseCompass Virtual Methods Table. */
 -  const struct BaseCompassVMT *vmt_basecompass;
 +  const struct BaseSensorVMT *vmt_sensor;
 +  _base_sensor_data
    /** @brief LSM303DLHC Accelerometer Virtual Methods Table. */
 -  const struct LSM303DLHCACCVMT *vmt_lsm303dlhcacc;
 +  const struct LSM303DLHCAcceleromerVMT *vmt_accelerometer;
 +  _base_accelerometer_data
    /** @brief LSM303DLHC Compass Virtual Methods Table. */
 -  const struct LSM303DLHCCOMPVMT *vmt_lsm303dlhccomp;
 +  const struct LSM303DLHCCompassVMT *vmt_compass;
 +  _base_compass_data
    _lsm303dlhc_data
  };
 +
 +/**
 + * @brief Structure representing a LSM303DLHC driver.
 + */
 +typedef struct LSM303DLHCDriver LSM303DLHCDriver;
  /** @} */
  /*===========================================================================*/
 @@ -666,7 +675,7 @@ struct LSM303DLHCDriver {   * @api
   */
  #define accelerometerSetFullScale(ip, fs)                                   \
 -        (ip)->vmt_lsm303dlhcacc->set_full_scale(ip, fs)
 +        (ip)->vmt_accelerometer->set_full_scale(ip, fs)
  /**
   * @brief   Change compass fullscale value.
 @@ -680,7 +689,7 @@ struct LSM303DLHCDriver {   * @api
   */
  #define compassSetFullScale(ip, fs)                                         \
 -        (ip)->vmt_lsm303dlhccomp->set_full_scale(ip, fs)
 +        (ip)->vmt_compass->set_full_scale(ip, fs)
  /*===========================================================================*/
  /* External declarations.                                                    */
  | 
