aboutsummaryrefslogtreecommitdiffstats
path: root/os/ex
diff options
context:
space:
mode:
authorRocco Marco Guglielmi <roccomarco.guglielmi@gmail.com>2018-02-05 10:28:48 +0000
committerRocco Marco Guglielmi <roccomarco.guglielmi@gmail.com>2018-02-05 10:28:48 +0000
commit3b82008db36f7e98edf091800d89e1f17e61febb (patch)
tree99b7a2eb87b744bec0fb8e5570131416df84efc2 /os/ex
parent46133587396a2c6c47f09bbcdd229ae10090f5de (diff)
downloadChibiOS-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/ex')
-rw-r--r--os/ex/ST/lsm303dlhc.c28
-rw-r--r--os/ex/ST/lsm303dlhc.h79
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. */