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

View File

@ -42,7 +42,7 @@
/** /**
* @brief LPS25H driver version string. * @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. * @brief LPS25H driver version major number.
@ -57,7 +57,7 @@
/** /**
* @brief LPS25H driver version patch number. * @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_NUMBER_OF_AXES 1U
#define LPS25H_SENS 0.00024414f /**< hPa/LSB */ #define LPS25H_SENS 0.00024414f
/** @} */ /** @} */
/** /**
* @name LPS25H communication interfaces related bit masks * @name LPS25H communication interfaces related bit masks
* @{ * @{
*/ */
#define LPS25H_DI_MASK 0xFF /**< Data In mask */ #define LPS25H_DI_MASK 0xFF
#define LPS25H_DI(n) (1 << n) /**< Data In bit n */ #define LPS25H_DI(n) (1 << n)
#define LPS25H_AD_MASK 0x3F /**< Address Data mask */ #define LPS25H_AD_MASK 0x3F
#define LPS25H_AD(n) (1 << n) /**< Address Data bit n */ #define LPS25H_AD(n) (1 << n)
#define LPS25H_MS (1 << 6) /**< Multiple read write */ #define LPS25H_MS (1 << 6)
#define LPS25H_RW (1 << 7) /**< Read Write selector */ #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; } 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. * @brief @p LPS25HDriver specific data.
*/ */
#define _lps25h_data \ #define _lps25h_data \
_base_barometer_data \
/* Driver state.*/ \ /* Driver state.*/ \
lps25h_state_t state; \ lps25h_state_t state; \
/* Current configuration data.*/ \ /* Current configuration data.*/ \
@ -407,13 +423,18 @@ typedef struct LPS25HDriver LPS25HDriver;
*/ */
struct LPS25HDriver { struct LPS25HDriver {
/** @brief BaseSensor Virtual Methods Table. */ /** @brief BaseSensor Virtual Methods Table. */
const struct BaseSensorVMT *vmt_basesensor; const struct BaseSensorVMT *vmt_sensor;
/** @brief BaseBarometer Virtual Methods Table. */ _base_sensor_data
const struct BaseBarometerVMT *vmt_basebarometer; /** @brief LPS25H Barometer Virtual Methods Table. */
/** @brief LPS25H Virtual Methods Table. */ const struct LPS25HBarometerVMT *vmt_barometer;
const struct LPS25HVMT *vmt_lps25h; _base_barometer_data
_lps25h_data _lps25h_data
}; };
/**
* @brief Structure representing a LPS25H driver.
*/
typedef struct LPS25HDriver LPS25HDriver;
/** @} */ /** @} */
/*===========================================================================*/ /*===========================================================================*/