Updated LPS25H driver to v 1.0.4 (Fixing Bug #915).

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11446 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
Rocco Marco Guglielmi 2018-02-05 11:24:13 +00:00
parent 11eb30f8fe
commit 8c23b103dd
2 changed files with 79 additions and 57 deletions

View File

@ -83,7 +83,8 @@ msg_t lps25hI2CReadRegister(I2CDriver *i2cp, lps25h_sad_t sad, uint8_t reg,
* @notapi
* @return the operation status.
*/
msg_t lps25hI2CWriteRegister(I2CDriver *i2cp, lps25h_sad_t sad, uint8_t* txbuf, size_t n) {
msg_t lps25hI2CWriteRegister(I2CDriver *i2cp, lps25h_sad_t sad, uint8_t* txbuf,
size_t n) {
if (n > 1)
(*txbuf) |= LPS25H_SUB_MS;
return i2cMasterTransmitTimeout(i2cp, sad, txbuf, n + 1, NULL, 0,
@ -196,11 +197,11 @@ static msg_t reset_sensivity(void *ip) {
return MSG_OK;
}
static const struct BaseSensorVMT vmt_basesensor = {
static const struct BaseSensorVMT vmt_sensor = {
get_axes_number, read_raw, read_cooked
};
static const struct BaseBarometerVMT vmt_basebarometer = {
static const struct LPS25HBarometerVMT vmt_barometer = {
get_axes_number, read_raw, read_cooked,
set_bias, reset_bias, set_sensivity, reset_sensivity
};
@ -218,8 +219,8 @@ static const struct BaseBarometerVMT vmt_basebarometer = {
*/
void lps25hObjectInit(LPS25HDriver *devp) {
devp->vmt_basesensor = &vmt_basesensor;
devp->vmt_basebarometer = &vmt_basebarometer;
devp->vmt_sensor = &vmt_sensor;
devp->vmt_barometer = &vmt_barometer;
devp->config = NULL;
devp->bias = 0;
devp->state = LPS25H_STOP;

View File

@ -42,7 +42,7 @@
/**
* @brief LPS25H driver version string.
*/
#define EX_LPS25H_VERSION "1.0.3"
#define EX_LPS25H_VERSION "1.0.4"
/**
* @brief LPS25H driver version major number.
@ -57,7 +57,7 @@
/**
* @brief LPS25H driver version patch number.
*/
#define EX_LPS25H_PATCH 3
#define EX_LPS25H_PATCH 4
/** @} */
/**
@ -67,21 +67,21 @@
*/
#define LPS25H_NUMBER_OF_AXES 1U
#define LPS25H_SENS 0.00024414f /**< hPa/LSB */
#define LPS25H_SENS 0.00024414f
/** @} */
/**
* @name LPS25H communication interfaces related bit masks
* @{
*/
#define LPS25H_DI_MASK 0xFF /**< Data In mask */
#define LPS25H_DI(n) (1 << n) /**< Data In bit n */
#define LPS25H_AD_MASK 0x3F /**< Address Data mask */
#define LPS25H_AD(n) (1 << n) /**< Address Data bit n */
#define LPS25H_MS (1 << 6) /**< Multiple read write */
#define LPS25H_RW (1 << 7) /**< Read Write selector */
#define LPS25H_DI_MASK 0xFF
#define LPS25H_DI(n) (1 << n)
#define LPS25H_AD_MASK 0x3F
#define LPS25H_AD(n) (1 << n)
#define LPS25H_MS (1 << 6)
#define LPS25H_RW (1 << 7)
#define LPS25H_SUB_MS (1 << 7) /**< Multiple read write in I2C mode */
#define LPS25H_SUB_MS (1 << 7)
/** @} */
/**
@ -380,15 +380,31 @@ typedef struct {
} LPS25HConfig;
/**
* @brief Structure representing a LPS25H driver.
* @brief @p LPS25H barometer subsystem specific methods.
* @note No methods so far, just a common ancestor interface.
*/
typedef struct LPS25HDriver LPS25HDriver;
#define _lps25h_barometer_methods_alone
/**
* @brief @p LPS25H barometer subsystem specific methods.
*/
#define _lps25h_barometer_methods \
_base_barometer_methods \
_lps25h_barometer_methods_alone
/**
* @extends BaseBarometerVMT
*
* @brief @p LPS25H barometer virtual methods table.
*/
struct LPS25HBarometerVMT {
_lps25h_barometer_methods
};
/**
* @brief @p LPS25HDriver specific data.
*/
#define _lps25h_data \
_base_barometer_data \
/* Driver state.*/ \
lps25h_state_t state; \
/* Current configuration data.*/ \
@ -407,13 +423,18 @@ typedef struct LPS25HDriver LPS25HDriver;
*/
struct LPS25HDriver {
/** @brief BaseSensor Virtual Methods Table. */
const struct BaseSensorVMT *vmt_basesensor;
/** @brief BaseBarometer Virtual Methods Table. */
const struct BaseBarometerVMT *vmt_basebarometer;
/** @brief LPS25H Virtual Methods Table. */
const struct LPS25HVMT *vmt_lps25h;
const struct BaseSensorVMT *vmt_sensor;
_base_sensor_data
/** @brief LPS25H Barometer Virtual Methods Table. */
const struct LPS25HBarometerVMT *vmt_barometer;
_base_barometer_data
_lps25h_data
};
/**
* @brief Structure representing a LPS25H driver.
*/
typedef struct LPS25HDriver LPS25HDriver;
/** @} */
/*===========================================================================*/