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
This commit is contained in:
parent
4613358739
commit
3b82008db3
|
@ -604,27 +604,17 @@ static msg_t comp_set_full_scale(void *ip, lsm303dlhc_comp_fs_t fs) {
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct BaseSensorVMT vmt_basesensor = {
|
static const struct BaseSensorVMT vmt_sensor = {
|
||||||
sens_get_axes_number, sens_read_raw, sens_read_cooked
|
sens_get_axes_number, sens_read_raw, sens_read_cooked
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct BaseCompassVMT vmt_basecompass = {
|
static const struct LSM303DLHCAcceleromerVMT vmt_accelerometer = {
|
||||||
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 = {
|
|
||||||
acc_get_axes_number, acc_read_raw, acc_read_cooked,
|
acc_get_axes_number, acc_read_raw, acc_read_cooked,
|
||||||
acc_set_bias, acc_reset_bias, acc_set_sensivity, acc_reset_sensivity,
|
acc_set_bias, acc_reset_bias, acc_set_sensivity, acc_reset_sensivity,
|
||||||
acc_set_full_scale
|
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_get_axes_number, comp_read_raw, comp_read_cooked,
|
||||||
comp_set_bias, comp_reset_bias, comp_set_sensivity, comp_reset_sensivity,
|
comp_set_bias, comp_reset_bias, comp_set_sensivity, comp_reset_sensivity,
|
||||||
comp_set_full_scale
|
comp_set_full_scale
|
||||||
|
@ -643,11 +633,10 @@ static const struct LSM303DLHCCOMPVMT vmt_lsm303dlhccomp = {
|
||||||
*/
|
*/
|
||||||
void lsm303dlhcObjectInit(LSM303DLHCDriver *devp) {
|
void lsm303dlhcObjectInit(LSM303DLHCDriver *devp) {
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
devp->vmt_basesensor = &vmt_basesensor;
|
devp->vmt_sensor = &vmt_sensor;
|
||||||
devp->vmt_baseaccelerometer = &vmt_baseaccelerometer;
|
devp->vmt_accelerometer = &vmt_accelerometer;
|
||||||
devp->vmt_basecompass = &vmt_basecompass;
|
devp->vmt_compass = &vmt_compass;
|
||||||
devp->vmt_lsm303dlhcacc = &vmt_lsm303dlhcacc;
|
|
||||||
devp->vmt_lsm303dlhccomp = &vmt_lsm303dlhccomp;
|
|
||||||
devp->config = NULL;
|
devp->config = NULL;
|
||||||
for(i = 0; i < LSM303DLHC_ACC_NUMBER_OF_AXES; i++)
|
for(i = 0; i < LSM303DLHC_ACC_NUMBER_OF_AXES; i++)
|
||||||
devp->accbias[i] = 0.0f;
|
devp->accbias[i] = 0.0f;
|
||||||
|
@ -670,7 +659,8 @@ void lsm303dlhcStart(LSM303DLHCDriver *devp, const LSM303DLHCConfig *config) {
|
||||||
osalDbgCheck((devp != NULL) && (config != NULL));
|
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");
|
"lsm303dlhcStart(), invalid state");
|
||||||
|
|
||||||
devp->config = config;
|
devp->config = config;
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
/**
|
/**
|
||||||
* @brief LSM303DLHC driver version string.
|
* @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.
|
* @brief LSM303DLHC driver version major number.
|
||||||
|
@ -58,7 +58,7 @@
|
||||||
/**
|
/**
|
||||||
* @brief LSM303DLHC driver version patch number.
|
* @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
|
* @name LSM303DLHC communication interfaces related bit masks
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define LSM303DLHC_DI_MASK 0xFF /**< Data In mask */
|
#define LSM303DLHC_DI_MASK 0xFF
|
||||||
#define LSM303DLHC_DI(n) (1 << n) /**< Data In bit n */
|
#define LSM303DLHC_DI(n) (1 << n)
|
||||||
#define LSM303DLHC_AD_MASK 0x7F /**< Address Data mask */
|
#define LSM303DLHC_AD_MASK 0x7F
|
||||||
#define LSM303DLHC_AD(n) (1 << n) /**< Address Data bit n */
|
#define LSM303DLHC_AD(n) (1 << n)
|
||||||
#define LSM303DLHC_MS (1 << 7) /**< Multiple read write */
|
#define LSM303DLHC_MS (1 << 7)
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -571,31 +571,40 @@ typedef struct {
|
||||||
} LSM303DLHCConfig;
|
} 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.
|
* @brief @p LSM303DLHC accelerometer subsystem specific methods.
|
||||||
*/
|
*/
|
||||||
#define _lsm303dlhc_acc_methods \
|
#define _lsm303dlhc_accelerometer_methods \
|
||||||
_base_accelerometer_methods
|
_base_accelerometer_methods \
|
||||||
|
_lsm303dlhc_accelerometer_methods_alone
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief @p LSM303DLHC compass subsystem specific methods.
|
* @brief @p LSM303DLHC compass subsystem specific methods.
|
||||||
*/
|
*/
|
||||||
#define _lsm303dlhc_comp_methods \
|
#define _lsm303dlhc_compass_methods_alone \
|
||||||
_base_compass_methods
|
/* 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_compass_methods \
|
||||||
|
_base_compass_methods \
|
||||||
|
_lsm303dlhc_compass_methods_alone
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @extends BaseAccelerometerVMT
|
* @extends BaseAccelerometerVMT
|
||||||
*
|
*
|
||||||
* @brief @p LSM303DLHC accelerometer virtual methods table.
|
* @brief @p LSM303DLHC accelerometer virtual methods table.
|
||||||
*/
|
*/
|
||||||
struct LSM303DLHCACCVMT {
|
struct LSM303DLHCAcceleromerVMT {
|
||||||
_lsm303dlhc_acc_methods \
|
_lsm303dlhc_accelerometer_methods
|
||||||
/* Change full scale value of LSM303DLHC accelerometer subsystem .*/ \
|
|
||||||
msg_t (*set_full_scale)(void *instance, lsm303dlhc_acc_fs_t fs); \
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -603,18 +612,14 @@ struct LSM303DLHCACCVMT {
|
||||||
*
|
*
|
||||||
* @brief @p LSM303DLHC compass virtual methods table.
|
* @brief @p LSM303DLHC compass virtual methods table.
|
||||||
*/
|
*/
|
||||||
struct LSM303DLHCCOMPVMT {
|
struct LSM303DLHCCompassVMT {
|
||||||
_lsm303dlhc_comp_methods \
|
_lsm303dlhc_compass_methods
|
||||||
/* Change full scale value of LSM303DLHC compass subsystem .*/ \
|
|
||||||
msg_t (*set_full_scale)(void *instance, lsm303dlhc_comp_fs_t fs); \
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief @p LSM303DLHCDriver specific data.
|
* @brief @p LSM303DLHCDriver specific data.
|
||||||
*/
|
*/
|
||||||
#define _lsm303dlhc_data \
|
#define _lsm303dlhc_data \
|
||||||
_base_accelerometer_data \
|
|
||||||
_base_compass_data \
|
|
||||||
/* Driver state.*/ \
|
/* Driver state.*/ \
|
||||||
lsm303dlhc_state_t state; \
|
lsm303dlhc_state_t state; \
|
||||||
/* Current configuration data.*/ \
|
/* Current configuration data.*/ \
|
||||||
|
@ -637,17 +642,21 @@ struct LSM303DLHCCOMPVMT {
|
||||||
*/
|
*/
|
||||||
struct LSM303DLHCDriver {
|
struct LSM303DLHCDriver {
|
||||||
/** @brief BaseSensor Virtual Methods Table. */
|
/** @brief BaseSensor Virtual Methods Table. */
|
||||||
const struct BaseSensorVMT *vmt_basesensor;
|
const struct BaseSensorVMT *vmt_sensor;
|
||||||
/** @brief BaseAccelerometer Virtual Methods Table. */
|
_base_sensor_data
|
||||||
const struct BaseAccelerometerVMT *vmt_baseaccelerometer;
|
|
||||||
/** @brief BaseCompass Virtual Methods Table. */
|
|
||||||
const struct BaseCompassVMT *vmt_basecompass;
|
|
||||||
/** @brief LSM303DLHC Accelerometer Virtual Methods Table. */
|
/** @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. */
|
/** @brief LSM303DLHC Compass Virtual Methods Table. */
|
||||||
const struct LSM303DLHCCOMPVMT *vmt_lsm303dlhccomp;
|
const struct LSM303DLHCCompassVMT *vmt_compass;
|
||||||
|
_base_compass_data
|
||||||
_lsm303dlhc_data
|
_lsm303dlhc_data
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Structure representing a LSM303DLHC driver.
|
||||||
|
*/
|
||||||
|
typedef struct LSM303DLHCDriver LSM303DLHCDriver;
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
@ -666,7 +675,7 @@ struct LSM303DLHCDriver {
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
#define accelerometerSetFullScale(ip, fs) \
|
#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.
|
* @brief Change compass fullscale value.
|
||||||
|
@ -680,7 +689,7 @@ struct LSM303DLHCDriver {
|
||||||
* @api
|
* @api
|
||||||
*/
|
*/
|
||||||
#define compassSetFullScale(ip, fs) \
|
#define compassSetFullScale(ip, fs) \
|
||||||
(ip)->vmt_lsm303dlhccomp->set_full_scale(ip, fs)
|
(ip)->vmt_compass->set_full_scale(ip, fs)
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* External declarations. */
|
/* External declarations. */
|
||||||
|
|
Loading…
Reference in New Issue