Removed spaces before newline
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@11745 110e8d01-0319-4d1e-a829-52ad28d1bb01
This commit is contained in:
parent
ac645ed676
commit
dc5651bf52
|
@ -15,7 +15,7 @@
|
|||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -122,20 +122,20 @@ static msg_t hts221Calibrate(HTS221Driver *devp) {
|
|||
/* Retrieving rH values from Calibration registers */
|
||||
msg = hts221I2CReadRegister(devp->config->i2cp,
|
||||
HTS221_AD_CALIB_0, calib, 16);
|
||||
|
||||
|
||||
#if HTS221_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
|
||||
|
||||
H0_rH_x2 = calib[0];
|
||||
H1_rH_x2 = calib[1];
|
||||
H0_T0_OUT = calib[6];
|
||||
H0_T0_OUT += calib[7] << 8;
|
||||
H1_T0_OUT = calib[10];
|
||||
H1_T0_OUT += calib[11] << 8;
|
||||
|
||||
|
||||
T0_degC_x8 = calib[2];
|
||||
|
||||
|
||||
/* Completing T0_degC_x8 value */
|
||||
msb = (calib[5] & HTS221_SEL(0x03, 0));
|
||||
if (msb & HTS221_SEL(0x01, 1)) {
|
||||
|
@ -155,20 +155,20 @@ static msg_t hts221Calibrate(HTS221Driver *devp) {
|
|||
T0_OUT += calib[13] << 8;
|
||||
T1_OUT = calib[14];
|
||||
T1_OUT += calib[15] << 8;
|
||||
|
||||
|
||||
devp->hygrofactorysensitivity = ((float)H1_rH_x2 - (float)H0_rH_x2) /
|
||||
(((float)H1_T0_OUT - (float)H0_T0_OUT) * 2.0f);
|
||||
|
||||
|
||||
|
||||
devp->hygrofactorybias = (devp->hygrofactorysensitivity * (float)H0_T0_OUT) -
|
||||
((float)H0_rH_x2 / 2.0f);
|
||||
|
||||
devp->thermofactorysensitivity = ((float)T1_degC_x8 - (float)T0_degC_x8) /
|
||||
(((float)T1_OUT - (float)T0_OUT) * 8.0f);
|
||||
|
||||
|
||||
devp->thermofactorybias = (devp->thermofactorysensitivity * (float)T0_OUT) -
|
||||
((float)T0_degC_x8 / 8.0f);
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -181,7 +181,7 @@ static msg_t hts221Calibrate(HTS221Driver *devp) {
|
|||
*/
|
||||
static size_t hygro_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return HTS221_HYGRO_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -203,30 +203,30 @@ static size_t hygro_get_axes_number(void *ip) {
|
|||
*/
|
||||
static msg_t hygro_read_raw(void *ip, int32_t axes[]) {
|
||||
HTS221Driver* devp;
|
||||
uint8_t buff[2];
|
||||
uint8_t buff[2];
|
||||
int16_t tmp;
|
||||
msg_t msg;
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseHygrometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"hygro_read_raw(), invalid state");
|
||||
"hygro_read_raw(), invalid state");
|
||||
|
||||
osalDbgAssert((devp->config->i2cp->state == I2C_READY),
|
||||
"hygro_read_raw(), channel not ready");
|
||||
|
||||
|
||||
#if HTS221_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
|
||||
msg = hts221I2CReadRegister(devp->config->i2cp, HTS221_AD_HUMIDITY_OUT_L,
|
||||
msg = hts221I2CReadRegister(devp->config->i2cp, HTS221_AD_HUMIDITY_OUT_L,
|
||||
buff, 2);
|
||||
|
||||
|
||||
#if HTS221_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
|
@ -261,17 +261,17 @@ static msg_t hygro_read_cooked(void *ip, float axes[]) {
|
|||
msg_t msg;
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseHygrometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"hygro_read_cooked(), invalid state");
|
||||
|
||||
msg = hygro_read_raw(ip, &raw);
|
||||
|
||||
*axes = (raw * devp->hygrosensitivity) - devp->hygrobias;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -293,12 +293,12 @@ static msg_t hygro_read_cooked(void *ip, float axes[]) {
|
|||
static msg_t hygro_set_bias(void *ip, float *bp) {
|
||||
HTS221Driver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseHygrometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"hygro_set_bias(), invalid state");
|
||||
|
||||
|
@ -319,15 +319,15 @@ static msg_t hygro_set_bias(void *ip, float *bp) {
|
|||
static msg_t hygro_reset_bias(void *ip) {
|
||||
HTS221Driver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseHygrometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"hygro_reset_bias(), invalid state");
|
||||
|
||||
|
||||
devp->hygrobias = devp->hygrofactorybias;
|
||||
return msg;
|
||||
}
|
||||
|
@ -347,12 +347,12 @@ static msg_t hygro_reset_bias(void *ip) {
|
|||
static msg_t hygro_set_sensitivity(void *ip, float *sp) {
|
||||
HTS221Driver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (sp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseHygrometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"hygro_set_sensitivity(), invalid state");
|
||||
|
||||
|
@ -372,12 +372,12 @@ static msg_t hygro_set_sensitivity(void *ip, float *sp) {
|
|||
static msg_t hygro_reset_sensitivity(void *ip) {
|
||||
HTS221Driver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseHygrometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"hygro_reset_sensitivity(), invalid state");
|
||||
|
||||
|
@ -394,7 +394,7 @@ static msg_t hygro_reset_sensitivity(void *ip) {
|
|||
*/
|
||||
static size_t thermo_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return HTS221_THERMO_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -419,27 +419,27 @@ static msg_t thermo_read_raw(void *ip, int32_t axes[]) {
|
|||
int16_t tmp;
|
||||
uint8_t buff[2];
|
||||
msg_t msg;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"thermo_read_raw(), invalid state");
|
||||
|
||||
"thermo_read_raw(), invalid state");
|
||||
|
||||
osalDbgAssert((devp->config->i2cp->state == I2C_READY),
|
||||
"thermo_read_raw(), channel not ready");
|
||||
|
||||
|
||||
#if HTS221_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
|
||||
msg = hts221I2CReadRegister(devp->config->i2cp, HTS221_AD_TEMP_OUT_L,
|
||||
msg = hts221I2CReadRegister(devp->config->i2cp, HTS221_AD_TEMP_OUT_L,
|
||||
buff, 2);
|
||||
|
||||
|
||||
#if HTS221_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
|
@ -477,7 +477,7 @@ static msg_t thermo_read_cooked(void *ip, float* axis) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"thermo_read_cooked(), invalid state");
|
||||
|
||||
|
@ -503,17 +503,17 @@ static msg_t thermo_read_cooked(void *ip, float* axis) {
|
|||
static msg_t thermo_set_bias(void *ip, float *bp) {
|
||||
HTS221Driver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"thermo_set_bias(), invalid state");
|
||||
|
||||
|
||||
devp->thermobias = *bp;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -529,18 +529,18 @@ static msg_t thermo_set_bias(void *ip, float *bp) {
|
|||
*/
|
||||
static msg_t thermo_reset_bias(void *ip) {
|
||||
HTS221Driver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"thermo_reset_bias(), invalid state");
|
||||
|
||||
devp->thermobias = devp->thermofactorybias;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -559,17 +559,17 @@ static msg_t thermo_reset_bias(void *ip) {
|
|||
static msg_t thermo_set_sensitivity(void *ip, float *sp) {
|
||||
HTS221Driver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (sp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"thermo_set_sensitivity(), invalid state");
|
||||
|
||||
|
||||
devp->thermosensitivity = *sp;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -584,18 +584,18 @@ static msg_t thermo_set_sensitivity(void *ip, float *sp) {
|
|||
*/
|
||||
static msg_t thermo_reset_sensitivity(void *ip) {
|
||||
HTS221Driver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(HTS221Driver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_READY),
|
||||
"thermo_reset_sensitivity(), invalid state");
|
||||
|
||||
devp->thermosensitivity = devp->thermofactorysensitivity;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -633,15 +633,15 @@ void hts221ObjectInit(HTS221Driver *devp) {
|
|||
devp->vmt = &vmt_device;
|
||||
devp->hygro_if.vmt = &vmt_hygrometer;
|
||||
devp->thermo_if.vmt = &vmt_thermometer;
|
||||
|
||||
|
||||
devp->config = NULL;
|
||||
|
||||
devp->hygroaxes = HTS221_HYGRO_NUMBER_OF_AXES;
|
||||
devp->thermoaxes = HTS221_THERMO_NUMBER_OF_AXES;
|
||||
|
||||
|
||||
devp->hygrobias = 0.0f;
|
||||
devp->thermobias = 0.0f;
|
||||
|
||||
|
||||
devp->state = HTS221_STOP;
|
||||
}
|
||||
|
||||
|
@ -658,8 +658,8 @@ void hts221Start(HTS221Driver *devp, const HTS221Config *config) {
|
|||
osalDbgCheck((devp != NULL) && (config != NULL));
|
||||
|
||||
osalDbgAssert((devp->state == HTS221_STOP) || (devp->state == HTS221_READY),
|
||||
"hts221Start(), invalid state");
|
||||
|
||||
"hts221Start(), invalid state");
|
||||
|
||||
devp->config = config;
|
||||
|
||||
#if HTS221_SHARED_I2C
|
||||
|
@ -688,7 +688,7 @@ void hts221Start(HTS221Driver *devp, const HTS221Config *config) {
|
|||
/* Taking hygrometer bias from user configurations */
|
||||
devp->hygrobias = *(devp->config->hygrobias);
|
||||
}
|
||||
|
||||
|
||||
if(devp->config->thermosensitivity == NULL) {
|
||||
devp->thermosensitivity = devp->thermofactorysensitivity;
|
||||
}
|
||||
|
@ -704,7 +704,7 @@ void hts221Start(HTS221Driver *devp, const HTS221Config *config) {
|
|||
/* Taking thermometer bias from user configurations */
|
||||
devp->thermobias = *(devp->config->thermobias);
|
||||
}
|
||||
|
||||
|
||||
/* Control register 1 configuration block.*/
|
||||
{
|
||||
cr[0] = HTS221_AD_CTRL_REG1;
|
||||
|
@ -717,9 +717,9 @@ void hts221Start(HTS221Driver *devp, const HTS221Config *config) {
|
|||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp, devp->config->i2ccfg);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
|
||||
|
||||
hts221I2CWriteRegister(devp->config->i2cp, cr, 1);
|
||||
|
||||
|
||||
#if HTS221_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
|
@ -737,19 +737,19 @@ void hts221Start(HTS221Driver *devp, const HTS221Config *config) {
|
|||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp, devp->config->i2ccfg);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
|
||||
|
||||
hts221I2CWriteRegister(devp->config->i2cp, cr, 1);
|
||||
|
||||
|
||||
#if HTS221_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
}
|
||||
}
|
||||
|
||||
/* This is the MEMS transient recovery time */
|
||||
osalThreadSleepMilliseconds(5);
|
||||
|
||||
devp->state = HTS221_READY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deactivates the HTS221 Complex Driver peripheral.
|
||||
|
@ -765,9 +765,9 @@ void hts221Stop(HTS221Driver *devp) {
|
|||
|
||||
osalDbgAssert((devp->state == HTS221_STOP) || (devp->state == HTS221_READY),
|
||||
"hts221Stop(), invalid state");
|
||||
|
||||
|
||||
if (devp->state == HTS221_READY) {
|
||||
|
||||
|
||||
#if HTS221_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp, devp->config->i2ccfg);
|
||||
|
@ -776,12 +776,12 @@ void hts221Stop(HTS221Driver *devp) {
|
|||
cr[0] = HTS221_AD_CTRL_REG1;
|
||||
cr[1] = 0;
|
||||
hts221I2CWriteRegister(devp->config->i2cp, cr, 1);
|
||||
|
||||
|
||||
i2cStop(devp->config->i2cp);
|
||||
#if HTS221_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
}
|
||||
#endif /* HTS221_SHARED_I2C */
|
||||
}
|
||||
devp->state = HTS221_STOP;
|
||||
}
|
||||
/** @} */
|
||||
|
|
|
@ -87,7 +87,7 @@
|
|||
#define HTS221_THERMO_SENS 0.0015625f
|
||||
#define HTS221_THERMO_BIAS 0.0f
|
||||
/** @} */
|
||||
|
||||
|
||||
/**
|
||||
* @name HTS221 communication interfaces related bit masks
|
||||
* @{
|
||||
|
@ -388,7 +388,7 @@ typedef struct {
|
|||
* @note No methods so far, just a common ancestor interface.
|
||||
*/
|
||||
#define _hts221_methods_alone
|
||||
|
||||
|
||||
/**
|
||||
* @brief @p HTS221 specific methods with inherited ones.
|
||||
*/
|
||||
|
|
|
@ -140,8 +140,8 @@ static msg_t gyro_read_raw(void *ip, int32_t axes[L3GD20_GYRO_NUMBER_OF_AXES]) {
|
|||
|
||||
#if L3GD20_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
#endif /* L3GD20_USE_SPI */
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
#endif /* L3GD20_USE_SPI */
|
||||
|
||||
for(i = 0; i < L3GD20_GYRO_NUMBER_OF_AXES; i++) {
|
||||
tmp = buff[2 * i] + (buff[2 * i + 1] << 8);
|
||||
|
@ -236,7 +236,7 @@ static msg_t gyro_sample_bias(void *ip) {
|
|||
/**
|
||||
* @brief Set bias values for the BaseGyroscope.
|
||||
* @note Bias must be expressed as DPS.
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* axes number.
|
||||
*
|
||||
* @param[in] ip pointer to @p BaseGyroscope interface.
|
||||
|
@ -313,7 +313,7 @@ static msg_t gyro_set_sensivity(void *ip, float *sp) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(L3GD20Driver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == L3GD20_READY),
|
||||
"gyro_set_sensivity(), invalid state");
|
||||
|
||||
|
@ -342,7 +342,7 @@ static msg_t gyro_reset_sensivity(void *ip) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(L3GD20Driver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == L3GD20_READY),
|
||||
"gyro_reset_sensivity(), invalid state");
|
||||
|
||||
|
@ -411,7 +411,7 @@ static msg_t gyro_set_full_scale(L3GD20Driver *devp, l3gd20_fs_t fs) {
|
|||
spiAcquireBus(devp->config->spip);
|
||||
spiStart(devp->config->spip,
|
||||
devp->config->spicfg);
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
|
||||
/* Updating register.*/
|
||||
l3gd20SPIReadRegister(devp->config->spip,
|
||||
|
@ -419,23 +419,23 @@ static msg_t gyro_set_full_scale(L3GD20Driver *devp, l3gd20_fs_t fs) {
|
|||
|
||||
#if L3GD20_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
#endif /* L3GD20_USE_SPI */
|
||||
cr &= ~(L3GD20_CTRL_REG4_FS_MASK);
|
||||
cr |= fs;
|
||||
|
||||
#if L3GD20_USE_SPI
|
||||
|
||||
#if L3GD20_USE_SPI
|
||||
#if L3GD20_SHARED_SPI
|
||||
spiAcquireBus(devp->config->spip);
|
||||
spiStart(devp->config->spip,
|
||||
devp->config->spicfg);
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
|
||||
l3gd20SPIWriteRegister(devp->config->spip,
|
||||
L3GD20_AD_CTRL_REG4, 1, &cr);
|
||||
#if L3GD20_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
#endif /* L3GD20_SHARED_SPI */
|
||||
#endif /* L3GD20_USE_SPI */
|
||||
|
||||
/* Scaling sensitivity and bias. Re-calibration is suggested anyway. */
|
||||
|
@ -539,7 +539,7 @@ void l3gd20Start(L3GD20Driver *devp, const L3GD20Config *config) {
|
|||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
#if L3GD20_USE_SPI
|
||||
#if L3GD20_SHARED_SPI
|
||||
|
@ -586,7 +586,7 @@ void l3gd20Start(L3GD20Driver *devp, const L3GD20Config *config) {
|
|||
else
|
||||
osalDbgAssert(FALSE, "l3gd20Start(), full scale issue");
|
||||
|
||||
/* Storing bias information.*/
|
||||
/* Storing bias information.*/
|
||||
if(devp->config->gyrobias != NULL) {
|
||||
for(i = 0; i < L3GD20_GYRO_NUMBER_OF_AXES; i++) {
|
||||
devp->gyrobias[i] = devp->config->gyrobias[i];
|
||||
|
|
|
@ -62,7 +62,7 @@
|
|||
|
||||
/**
|
||||
* @brief L3GD20 gyroscope system characteristics.
|
||||
* @note Sensitivity is expressed as DPS/LSB whereas DPS stand for Degree
|
||||
* @note Sensitivity is expressed as DPS/LSB whereas DPS stand for Degree
|
||||
* per second [°/s].
|
||||
* @note Bias is expressed as DPS.
|
||||
*
|
||||
|
@ -199,7 +199,7 @@
|
|||
* @name L3GD20_INT1_CFG register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define L3GD20_INT1_CFG_MASK 0xFF
|
||||
#define L3GD20_INT1_CFG_MASK 0xFF
|
||||
#define L3GD20_INT1_CFG_XLIE (1 << 0)
|
||||
#define L3GD20_INT1_CFG_XHIE (1 << 1)
|
||||
#define L3GD20_INT1_CFG_YLIE (1 << 2)
|
||||
|
@ -271,7 +271,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief L3GD20 accelerometer subsystem advanced configurations
|
||||
* @brief L3GD20 accelerometer subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -623,11 +623,11 @@ struct L3GD20Driver {
|
|||
*/
|
||||
#define l3gd20GyroscopeSampleBias(devp) \
|
||||
gyroscopeSampleBias(&((devp)->gyro_if))
|
||||
|
||||
|
||||
/**
|
||||
* @brief Set bias values for the BaseGyroscope.
|
||||
* @note Bias must be expressed as DPS.
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* axes number.
|
||||
*
|
||||
* @param[in] devp pointer to @p L3GD20Driver.
|
||||
|
|
|
@ -95,7 +95,7 @@ static void lis302dlSPIWriteRegister(SPIDriver *spip, uint8_t reg, size_t n,
|
|||
*/
|
||||
static size_t acc_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return LIS302DL_ACC_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS302DLDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -132,7 +132,7 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
#if LIS302DL_SHARED_SPI
|
||||
osalDbgAssert((devp->config->spip->state == SPI_READY),
|
||||
"acc_read_raw(), channel not ready");
|
||||
|
||||
|
||||
spiAcquireBus(devp->config->spip);
|
||||
spiStart(devp->config->spip,
|
||||
devp->config->spicfg);
|
||||
|
@ -146,7 +146,7 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
|
||||
#if LIS302DL_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* LIS302DL_SHARED_SPI */
|
||||
#endif /* LIS302DL_SHARED_SPI */
|
||||
#endif /* LIS302DL_USE_SPI */
|
||||
return msg;
|
||||
}
|
||||
|
@ -236,7 +236,7 @@ static msg_t acc_reset_bias(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS302DLDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -295,7 +295,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS302DLDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -309,7 +309,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
for(i = 0; i < LIS302DL_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accsensitivity[i] = LIS302DL_ACC_SENS_8G;
|
||||
else {
|
||||
osalDbgAssert(FALSE,
|
||||
osalDbgAssert(FALSE,
|
||||
"acc_reset_sensivity(), accelerometer full scale issue");
|
||||
return MSG_RESET;
|
||||
}
|
||||
|
@ -318,7 +318,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
|
||||
/**
|
||||
* @brief Changes the LIS302DLDriver accelerometer fullscale value.
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* previous and next fullscale value.
|
||||
* @note A recalibration is highly suggested after calling this function.
|
||||
*
|
||||
|
@ -368,7 +368,7 @@ static msg_t acc_set_full_scale(LIS302DLDriver *devp,
|
|||
|
||||
/* Getting data from register.*/
|
||||
lis302dlSPIReadRegister(devp->config->spip, LIS302DL_AD_CTRL_REG1, 1, &cr);
|
||||
|
||||
|
||||
#if LIS302DL_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* LIS302DL_SHARED_SPI */
|
||||
|
@ -386,7 +386,7 @@ static msg_t acc_set_full_scale(LIS302DLDriver *devp,
|
|||
|
||||
/* Getting data from register.*/
|
||||
lis302dlSPIWriteRegister(devp->config->spip, LIS302DL_AD_CTRL_REG1, 1, &cr);
|
||||
|
||||
|
||||
#if LIS302DL_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* LIS302DL_SHARED_SPI */
|
||||
|
@ -426,9 +426,9 @@ static const struct BaseAccelerometerVMT vmt_accelerometer = {
|
|||
void lis302dlObjectInit(LIS302DLDriver *devp) {
|
||||
devp->vmt = &vmt_device;
|
||||
devp->acc_if.vmt = &vmt_accelerometer;
|
||||
|
||||
|
||||
devp->config = NULL;
|
||||
|
||||
|
||||
devp->accaxes = LIS302DL_ACC_NUMBER_OF_AXES;
|
||||
|
||||
devp->state = LIS302DL_STOP;
|
||||
|
@ -448,18 +448,18 @@ void lis302dlStart(LIS302DLDriver *devp, const LIS302DLConfig *config) {
|
|||
osalDbgCheck((devp != NULL) && (config != NULL));
|
||||
|
||||
osalDbgAssert((devp->state == LIS302DL_STOP) || (devp->state == LIS302DL_READY),
|
||||
"lis302dlStart(), invalid state");
|
||||
"lis302dlStart(), invalid state");
|
||||
|
||||
devp->config = config;
|
||||
|
||||
/* Control register 1 configuration block.*/
|
||||
{
|
||||
cr[0] = LIS302DL_CTRL_REG1_XEN | LIS302DL_CTRL_REG1_YEN |
|
||||
cr[0] = LIS302DL_CTRL_REG1_XEN | LIS302DL_CTRL_REG1_YEN |
|
||||
LIS302DL_CTRL_REG1_ZEN | LIS302DL_CTRL_REG1_PD |
|
||||
devp->config->accoutputdatarate |
|
||||
devp->config->accfullscale;
|
||||
}
|
||||
|
||||
|
||||
/* Control register 2 configuration block.*/
|
||||
{
|
||||
#if LIS302DL_USE_ADVANCED || defined(__DOXYGEN__)
|
||||
|
@ -473,15 +473,15 @@ void lis302dlStart(LIS302DLDriver *devp, const LIS302DLConfig *config) {
|
|||
spiAcquireBus((devp)->config->spip);
|
||||
#endif /* LIS302DL_SHARED_SPI */
|
||||
spiStart((devp)->config->spip, (devp)->config->spicfg);
|
||||
|
||||
lis302dlSPIWriteRegister(devp->config->spip, LIS302DL_AD_CTRL_REG1,
|
||||
|
||||
lis302dlSPIWriteRegister(devp->config->spip, LIS302DL_AD_CTRL_REG1,
|
||||
2, cr);
|
||||
|
||||
|
||||
#if LIS302DL_SHARED_SPI
|
||||
spiReleaseBus((devp)->config->spip);
|
||||
#endif /* LIS302DL_SHARED_SPI */
|
||||
#endif /* LIS302DL_SHARED_SPI */
|
||||
#endif /* LIS302DL_USE_SPI */
|
||||
|
||||
|
||||
/* Storing sensitivity information according to full scale value */
|
||||
if(devp->config->accfullscale == LIS302DL_ACC_FS_2G) {
|
||||
devp->accfullscale = LIS302DL_ACC_2G;
|
||||
|
@ -509,7 +509,7 @@ void lis302dlStart(LIS302DLDriver *devp, const LIS302DLConfig *config) {
|
|||
if(devp->config->accbias != NULL)
|
||||
for(i = 0; i < LIS302DL_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = devp->config->accbias[i];
|
||||
else
|
||||
else
|
||||
for(i = 0; i < LIS302DL_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = LIS302DL_ACC_BIAS;
|
||||
|
||||
|
@ -517,7 +517,7 @@ void lis302dlStart(LIS302DLDriver *devp, const LIS302DLConfig *config) {
|
|||
osalThreadSleepMilliseconds(10);
|
||||
|
||||
devp->state = LIS302DL_READY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deactivates the LIS302DL Complex Driver peripheral.
|
||||
|
@ -530,7 +530,7 @@ void lis302dlStop(LIS302DLDriver *devp) {
|
|||
uint8_t cr1;
|
||||
osalDbgCheck(devp != NULL);
|
||||
|
||||
osalDbgAssert((devp->state == LIS302DL_STOP) ||
|
||||
osalDbgAssert((devp->state == LIS302DL_STOP) ||
|
||||
(devp->state == LIS302DL_READY),
|
||||
"lis302dlStop(), invalid state");
|
||||
|
||||
|
@ -547,8 +547,8 @@ void lis302dlStop(LIS302DLDriver *devp) {
|
|||
spiStop((devp)->config->spip);
|
||||
#if LIS302DL_SHARED_SPI
|
||||
spiReleaseBus((devp)->config->spip);
|
||||
#endif /* LIS302DL_SHARED_SPI */
|
||||
#endif /* LIS302DL_USE_SPI */
|
||||
#endif /* LIS302DL_SHARED_SPI */
|
||||
#endif /* LIS302DL_USE_SPI */
|
||||
}
|
||||
devp->state = LIS302DL_STOP;
|
||||
}
|
||||
|
|
|
@ -63,17 +63,17 @@
|
|||
|
||||
/**
|
||||
* @brief LIS302DL accelerometer subsystem characteristics.
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* 1 milli-G = 0.00980665 m/s^2.
|
||||
* @note Bias is expressed as milli-G.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#define LIS302DL_ACC_NUMBER_OF_AXES 3U
|
||||
|
||||
|
||||
#define LIS302DL_ACC_2G 2.0f
|
||||
#define LIS302DL_ACC_8G 8.0f
|
||||
|
||||
|
||||
#define LIS302DL_ACC_SENS_2G 18.0f
|
||||
#define LIS302DL_ACC_SENS_8G 72.0f
|
||||
|
||||
|
@ -126,13 +126,13 @@
|
|||
* @name LIS302DL_CTRL_REG1 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS302DL_CTRL_REG1_MASK 0xFF
|
||||
#define LIS302DL_CTRL_REG1_MASK 0xFF
|
||||
#define LIS302DL_CTRL_REG1_XEN (1 << 0)
|
||||
#define LIS302DL_CTRL_REG1_YEN (1 << 1)
|
||||
#define LIS302DL_CTRL_REG1_ZEN (1 << 2)
|
||||
#define LIS302DL_CTRL_REG1_STM (1 << 3)
|
||||
#define LIS302DL_CTRL_REG1_STP (1 << 4)
|
||||
#define LIS302DL_CTRL_REG1_FS_MASK 0x20
|
||||
#define LIS302DL_CTRL_REG1_FS_MASK 0x20
|
||||
#define LIS302DL_CTRL_REG1_FS (1 << 5)
|
||||
#define LIS302DL_CTRL_REG1_PD (1 << 6)
|
||||
#define LIS302DL_CTRL_REG1_DR (1 << 7)
|
||||
|
@ -141,8 +141,8 @@
|
|||
/**
|
||||
* @name LIS302DL_CTRL_REG2 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS302DL_CTRL_REG2_MASK 0xDF
|
||||
*/
|
||||
#define LIS302DL_CTRL_REG2_MASK 0xDF
|
||||
#define LIS302DL_CTRL_REG2_HPCF1 (1 << 0)
|
||||
#define LIS302DL_CTRL_REG2_HPCF2 (1 << 1)
|
||||
#define LIS302DL_CTRL_REG2_HPFFWU1 (1 << 2)
|
||||
|
@ -155,8 +155,8 @@
|
|||
/**
|
||||
* @name LIS302DL_CTRL_REG3 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS302DL_CTRL_REG3_MASK 0xFF
|
||||
*/
|
||||
#define LIS302DL_CTRL_REG3_MASK 0xFF
|
||||
#define LIS302DL_CTRL_REG3_I1CFG0 (1 << 0)
|
||||
#define LIS302DL_CTRL_REG3_I1CFG1 (1 << 1)
|
||||
#define LIS302DL_CTRL_REG3_I1CFG2 (1 << 2)
|
||||
|
@ -214,7 +214,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LIS302DL accelerometer subsystem advanced configurations
|
||||
* @brief LIS302DL accelerometer subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -359,8 +359,8 @@ typedef struct {
|
|||
#define _lis302dl_methods_alone \
|
||||
/* Change full scale value of LIS302DL .*/ \
|
||||
msg_t (*set_full_scale)(LIS302DLDriver *devp, lis302dl_acc_fs_t fs);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief @p LIS302DL specific methods with inherited ones.
|
||||
*/
|
||||
|
|
|
@ -97,7 +97,7 @@ static void lis3dshSPIWriteRegister(SPIDriver *spip, uint8_t reg, size_t n,
|
|||
*/
|
||||
static size_t acc_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return LIS3DSH_ACC_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -124,7 +124,7 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS3DSHDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -135,7 +135,7 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
#if LIS3DSH_SHARED_SPI
|
||||
osalDbgAssert((devp->config->spip->state == SPI_READY),
|
||||
"acc_read_raw(), channel not ready");
|
||||
|
||||
|
||||
spiAcquireBus(devp->config->spip);
|
||||
spiStart(devp->config->spip,
|
||||
devp->config->spicfg);
|
||||
|
@ -146,10 +146,9 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
|
||||
#if LIS3DSH_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
#endif /* LIS3DSH_USE_SPI */
|
||||
|
||||
|
||||
for(i = 0; i < LIS3DSH_ACC_NUMBER_OF_AXES; i++) {
|
||||
tmp = buff[2 * i] + (buff[2 * i + 1] << 8);
|
||||
axes[i] = (int32_t)tmp;
|
||||
|
@ -242,7 +241,7 @@ static msg_t acc_reset_bias(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS3DSHDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -301,7 +300,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS3DSHDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -324,7 +323,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
for(i = 0; i < LIS3DSH_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accsensitivity[i] = LIS3DSH_ACC_SENS_16G;
|
||||
else {
|
||||
osalDbgAssert(FALSE,
|
||||
osalDbgAssert(FALSE,
|
||||
"acc_reset_sensivity(), accelerometer full scale issue");
|
||||
return MSG_RESET;
|
||||
}
|
||||
|
@ -333,7 +332,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
|
||||
/**
|
||||
* @brief Changes the LIS3DSHDriver accelerometer fullscale value.
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* previous and next fullscale value.
|
||||
* @note A recalibration is highly suggested after calling this function.
|
||||
*
|
||||
|
@ -392,7 +391,7 @@ static msg_t acc_set_full_scale(LIS3DSHDriver *devp,
|
|||
|
||||
/* Getting data from register.*/
|
||||
lis3dshSPIReadRegister(devp->config->spip, LIS3DSH_AD_CTRL_REG5, 1, &cr);
|
||||
|
||||
|
||||
#if LIS3DSH_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
|
@ -410,7 +409,7 @@ static msg_t acc_set_full_scale(LIS3DSHDriver *devp,
|
|||
|
||||
/* Getting data from register.*/
|
||||
lis3dshSPIWriteRegister(devp->config->spip, LIS3DSH_AD_CTRL_REG5, 1, &cr);
|
||||
|
||||
|
||||
#if LIS3DSH_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
|
@ -450,9 +449,9 @@ static const struct BaseAccelerometerVMT vmt_accelerometer = {
|
|||
void lis3dshObjectInit(LIS3DSHDriver *devp) {
|
||||
devp->vmt = &vmt_device;
|
||||
devp->acc_if.vmt = &vmt_accelerometer;
|
||||
|
||||
|
||||
devp->config = NULL;
|
||||
|
||||
|
||||
devp->accaxes = LIS3DSH_ACC_NUMBER_OF_AXES;
|
||||
|
||||
devp->state = LIS3DSH_STOP;
|
||||
|
@ -473,10 +472,10 @@ void lis3dshStart(LIS3DSHDriver *devp, const LIS3DSHConfig *config) {
|
|||
|
||||
osalDbgAssert((devp->state == LIS3DSH_STOP) ||
|
||||
(devp->state == LIS3DSH_READY),
|
||||
"lis3dshStart(), invalid state");
|
||||
"lis3dshStart(), invalid state");
|
||||
|
||||
devp->config = config;
|
||||
|
||||
|
||||
/* Control register 4 configuration block.*/
|
||||
{
|
||||
cr = LIS3DSH_CTRL_REG4_XEN | LIS3DSH_CTRL_REG4_YEN | LIS3DSH_CTRL_REG4_ZEN |
|
||||
|
@ -493,7 +492,7 @@ void lis3dshStart(LIS3DSHDriver *devp, const LIS3DSHConfig *config) {
|
|||
spiStart(devp->config->spip, devp->config->spicfg);
|
||||
|
||||
lis3dshSPIWriteRegister(devp->config->spip, LIS3DSH_AD_CTRL_REG4, 1, &cr);
|
||||
|
||||
|
||||
#if LIS3DSH_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
|
@ -538,9 +537,9 @@ void lis3dshStart(LIS3DSHDriver *devp, const LIS3DSHConfig *config) {
|
|||
|
||||
#if LIS3DSH_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
#endif /* LIS3DSH_USE_SPI */
|
||||
|
||||
|
||||
/* Storing sensitivity information according to user setting */
|
||||
if(devp->config->accfullscale == LIS3DSH_ACC_FS_2G) {
|
||||
devp->accfullscale = LIS3DSH_ACC_2G;
|
||||
|
@ -595,15 +594,15 @@ void lis3dshStart(LIS3DSHDriver *devp, const LIS3DSHConfig *config) {
|
|||
if(devp->config->accbias != NULL)
|
||||
for(i = 0; i < LIS3DSH_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = devp->config->accbias[i];
|
||||
else
|
||||
else
|
||||
for(i = 0; i < LIS3DSH_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = LIS3DSH_ACC_BIAS;
|
||||
|
||||
|
||||
/* This is the Accelerometer transient recovery time */
|
||||
osalThreadSleepMilliseconds(10);
|
||||
|
||||
devp->state = LIS3DSH_READY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deactivates the LIS3DSH Complex Driver peripheral.
|
||||
|
@ -616,7 +615,7 @@ void lis3dshStop(LIS3DSHDriver *devp) {
|
|||
uint8_t cr4;
|
||||
osalDbgCheck(devp != NULL);
|
||||
|
||||
osalDbgAssert((devp->state == LIS3DSH_STOP) ||
|
||||
osalDbgAssert((devp->state == LIS3DSH_STOP) ||
|
||||
(devp->state == LIS3DSH_READY),
|
||||
"lis3dshStop(), invalid state");
|
||||
|
||||
|
@ -629,13 +628,13 @@ void lis3dshStop(LIS3DSHDriver *devp) {
|
|||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
/* Disabling all axes and enabling power down mode.*/
|
||||
cr4 = 0;
|
||||
lis3dshSPIWriteRegister(devp->config->spip, LIS3DSH_AD_CTRL_REG4,
|
||||
lis3dshSPIWriteRegister(devp->config->spip, LIS3DSH_AD_CTRL_REG4,
|
||||
1, &cr4);
|
||||
|
||||
|
||||
spiStop(devp->config->spip);
|
||||
#if LIS3DSH_SHARED_SPI
|
||||
spiReleaseBus(devp->config->spip);
|
||||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
#endif /* LIS3DSH_SHARED_SPI */
|
||||
#endif /* LIS3DSH_USE_SPI */
|
||||
}
|
||||
devp->state = LIS3DSH_STOP;
|
||||
|
|
|
@ -63,20 +63,20 @@
|
|||
|
||||
/**
|
||||
* @brief LIS3DSH accelerometer subsystem characteristics.
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* 1 milli-G = 0.00980665 m/s^2.
|
||||
* @note Bias is expressed as milli-G.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#define LIS3DSH_ACC_NUMBER_OF_AXES 3U
|
||||
|
||||
|
||||
#define LIS3DSH_ACC_2G 2.0f
|
||||
#define LIS3DSH_ACC_4G 4.0f
|
||||
#define LIS3DSH_ACC_6G 6.0f
|
||||
#define LIS3DSH_ACC_8G 8.0f
|
||||
#define LIS3DSH_ACC_16G 16.0f
|
||||
|
||||
|
||||
#define LIS3DSH_ACC_SENS_2G 0.06f
|
||||
#define LIS3DSH_ACC_SENS_4G 0.12f
|
||||
#define LIS3DSH_ACC_SENS_6G 0.18f
|
||||
|
@ -206,7 +206,7 @@
|
|||
* @name LIS3DSH_CTRL_REG1 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3DSH_CTRL_REG1_MASK 0xE9
|
||||
#define LIS3DSH_CTRL_REG1_MASK 0xE9
|
||||
#define LIS3DSH_CTRL_REG1_SM1_EN (1 << 0)
|
||||
#define LIS3DSH_CTRL_REG1_SM1_PIN (1 << 3)
|
||||
#define LIS3DSH_CTRL_REG1_HYST0_1 (1 << 5)
|
||||
|
@ -218,7 +218,7 @@
|
|||
* @name LIS3DSH_CTRL_REG2 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3DSH_CTRL_REG2_MASK 0xE9
|
||||
#define LIS3DSH_CTRL_REG2_MASK 0xE9
|
||||
#define LIS3DSH_CTRL_REG2_SM2_EN (1 << 0)
|
||||
#define LIS3DSH_CTRL_REG2_SM2_PIN (1 << 3)
|
||||
#define LIS3DSH_CTRL_REG2_HYST0_2 (1 << 5)
|
||||
|
@ -230,7 +230,7 @@
|
|||
* @name LIS3DSH_CTRL_REG3 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3DSH_CTRL_REG3_MASK 0xFF
|
||||
#define LIS3DSH_CTRL_REG3_MASK 0xFF
|
||||
#define LIS3DSH_CTRL_REG3_STRT (1 << 0)
|
||||
#define LIS3DSH_CTRL_REG3_VFILT (1 << 2)
|
||||
#define LIS3DSH_CTRL_REG3_INT1_EN (1 << 3)
|
||||
|
@ -244,7 +244,7 @@
|
|||
* @name LIS3DSH_CTRL_REG4 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3DSH_CTRL_REG4_MASK 0xFF
|
||||
#define LIS3DSH_CTRL_REG4_MASK 0xFF
|
||||
#define LIS3DSH_CTRL_REG4_XEN (1 << 0)
|
||||
#define LIS3DSH_CTRL_REG4_YEN (1 << 1)
|
||||
#define LIS3DSH_CTRL_REG4_ZEN (1 << 2)
|
||||
|
@ -258,12 +258,12 @@
|
|||
/**
|
||||
* @name LIS3DSH_CTRL_REG5 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3DSH_CTRL_REG5_MASK 0xFF
|
||||
*/
|
||||
#define LIS3DSH_CTRL_REG5_MASK 0xFF
|
||||
#define LIS3DSH_CTRL_REG5_SIM (1 << 0)
|
||||
#define LIS3DSH_CTRL_REG5_ST1 (1 << 1)
|
||||
#define LIS3DSH_CTRL_REG5_ST2 (1 << 2)
|
||||
#define LIS3DSH_CTRL_REG5_FS_MASK 0x38
|
||||
#define LIS3DSH_CTRL_REG5_FS_MASK 0x38
|
||||
#define LIS3DSH_CTRL_REG5_FS0 (1 << 3)
|
||||
#define LIS3DSH_CTRL_REG5_FS1 (1 << 4)
|
||||
#define LIS3DSH_CTRL_REG5_FS2 (1 << 5)
|
||||
|
@ -275,7 +275,7 @@
|
|||
* @name LIS3DSH_CTRL_REG6 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3DSH_CTRL_REG6_MASK 0xFF
|
||||
#define LIS3DSH_CTRL_REG6_MASK 0xFF
|
||||
#define LIS3DSH_CTRL_REG6_P2_BOOT (1 << 0)
|
||||
#define LIS3DSH_CTRL_REG6_P1_OVRUN (1 << 1)
|
||||
#define LIS3DSH_CTRL_REG6_P1_WTM (1 << 2)
|
||||
|
@ -333,7 +333,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LIS3DSH accelerometer subsystem advanced configurations
|
||||
* @brief LIS3DSH accelerometer subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -489,7 +489,7 @@ typedef struct {
|
|||
lis3dsh_acc_bw_t accantialiasing;
|
||||
/**
|
||||
* @brief LIS3DSH block data update.
|
||||
*/
|
||||
*/
|
||||
lis3dsh_acc_bdu_t accblockdataupdate;
|
||||
#endif
|
||||
} LIS3DSHConfig;
|
||||
|
@ -500,8 +500,8 @@ typedef struct {
|
|||
#define _lis3dsh_methods_alone \
|
||||
/* Change full scale value of LIS3DSH accelerometer subsystem.*/ \
|
||||
msg_t (*acc_set_full_scale)(LIS3DSHDriver *devp, lis3dsh_acc_fs_t fs);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief @p LIS3DSH specific methods with inherited ones.
|
||||
*/
|
||||
|
|
|
@ -128,7 +128,7 @@ static msg_t comp_read_raw(void *ip, int32_t axes[]) {
|
|||
msg_t msg;
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS3MDLDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -142,8 +142,8 @@ static msg_t comp_read_raw(void *ip, int32_t axes[]) {
|
|||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* LIS3MDL_SHARED_I2C */
|
||||
msg = lis3mdlI2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LIS3MDL_AD_OUT_X_L, buff,
|
||||
msg = lis3mdlI2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LIS3MDL_AD_OUT_X_L, buff,
|
||||
LIS3MDL_COMP_NUMBER_OF_AXES * 2);
|
||||
|
||||
#if LIS3MDL_SHARED_I2C
|
||||
|
@ -183,13 +183,13 @@ static msg_t comp_read_cooked(void *ip, float axes[]) {
|
|||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS3MDLDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LIS3MDL_READY),
|
||||
"comp_read_cooked(), invalid state");
|
||||
|
||||
|
||||
msg = comp_read_raw(ip, raw);
|
||||
for(i = 0; i < LIS3MDL_COMP_NUMBER_OF_AXES ; i++) {
|
||||
axes[i] = (raw[i] * devp->compsensitivity[i]) - devp->compbias[i];
|
||||
|
@ -213,9 +213,9 @@ static msg_t comp_set_bias(void *ip, float *bp) {
|
|||
LIS3MDLDriver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS3MDLDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -244,7 +244,7 @@ static msg_t comp_reset_bias(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS3MDLDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -272,7 +272,7 @@ static msg_t comp_set_sensivity(void *ip, float *sp) {
|
|||
LIS3MDLDriver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS3MDLDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -303,7 +303,7 @@ static msg_t comp_reset_sensivity(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LIS3MDLDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -347,7 +347,7 @@ static msg_t comp_set_full_scale(LIS3MDLDriver *devp,
|
|||
float newfs, scale;
|
||||
uint8_t i, buff[2];
|
||||
msg_t msg;
|
||||
|
||||
|
||||
osalDbgCheck(devp != NULL);
|
||||
|
||||
osalDbgAssert((devp->state == LIS3MDL_READY),
|
||||
|
@ -402,7 +402,7 @@ static msg_t comp_set_full_scale(LIS3MDLDriver *devp,
|
|||
i2cStart(devp->config->i2cp, devp->config->i2ccfg);
|
||||
#endif /* LIS3MDL_SHARED_I2C */
|
||||
|
||||
msg = lis3mdlI2CWriteRegister(devp->config->i2cp,
|
||||
msg = lis3mdlI2CWriteRegister(devp->config->i2cp,
|
||||
devp->config->slaveaddress,
|
||||
buff, 1);
|
||||
|
||||
|
@ -447,9 +447,9 @@ static const struct BaseCompassVMT vmt_compass = {
|
|||
void lis3mdlObjectInit(LIS3MDLDriver *devp) {
|
||||
devp->vmt = &vmt_device;
|
||||
devp->comp_if.vmt = &vmt_compass;
|
||||
|
||||
|
||||
devp->config = NULL;
|
||||
|
||||
|
||||
devp->compaxes = LIS3MDL_COMP_NUMBER_OF_AXES;
|
||||
|
||||
devp->state = LIS3MDL_STOP;
|
||||
|
@ -472,7 +472,7 @@ void lis3mdlStart(LIS3MDLDriver *devp, const LIS3MDLConfig *config) {
|
|||
"lis3mdlStart(), invalid state");
|
||||
|
||||
devp->config = config;
|
||||
|
||||
|
||||
/* Control register 1 configuration block.*/
|
||||
{
|
||||
cr[0] = LIS3MDL_AD_CTRL_REG1;
|
||||
|
@ -512,17 +512,17 @@ void lis3mdlStart(LIS3MDLDriver *devp, const LIS3MDLConfig *config) {
|
|||
cr[5] = devp->config->blockdataupdate;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if LIS3MDL_USE_I2C
|
||||
#if LIS3MDL_SHARED_I2C
|
||||
i2cAcquireBus((devp)->config->i2cp);
|
||||
#endif /* LIS3MDL_SHARED_I2C */
|
||||
i2cStart((devp)->config->i2cp,
|
||||
(devp)->config->i2ccfg);
|
||||
|
||||
|
||||
lis3mdlI2CWriteRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
cr, 5);
|
||||
|
||||
|
||||
#if LIS3MDL_SHARED_I2C
|
||||
i2cReleaseBus((devp)->config->i2cp);
|
||||
#endif /* LIS3MDL_SHARED_I2C */
|
||||
|
@ -579,15 +579,15 @@ void lis3mdlStart(LIS3MDLDriver *devp, const LIS3MDLConfig *config) {
|
|||
if(devp->config->compbias != NULL)
|
||||
for(i = 0; i < LIS3MDL_COMP_NUMBER_OF_AXES; i++)
|
||||
devp->compbias[i] = devp->config->compbias[i];
|
||||
else
|
||||
else
|
||||
for(i = 0; i < LIS3MDL_COMP_NUMBER_OF_AXES; i++)
|
||||
devp->compbias[i] = LIS3MDL_COMP_BIAS;
|
||||
|
||||
|
||||
/* This is the MEMS transient recovery time */
|
||||
osalThreadSleepMilliseconds(5);
|
||||
|
||||
devp->state = LIS3MDL_READY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deactivates the LIS3MDL Complex Driver peripheral.
|
||||
|
@ -602,7 +602,7 @@ void lis3mdlStop(LIS3MDLDriver *devp) {
|
|||
|
||||
osalDbgAssert((devp->state == LIS3MDL_STOP) || (devp->state == LIS3MDL_READY),
|
||||
"lis3mdlStop(), invalid state");
|
||||
|
||||
|
||||
if (devp->state == LIS3MDL_READY) {
|
||||
#if (LIS3MDL_USE_I2C)
|
||||
#if LIS3MDL_SHARED_I2C
|
||||
|
|
|
@ -68,12 +68,12 @@
|
|||
* @{
|
||||
*/
|
||||
#define LIS3MDL_COMP_NUMBER_OF_AXES 3U
|
||||
|
||||
|
||||
#define LIS3MDL_COMP_4GA 4.0f
|
||||
#define LIS3MDL_COMP_8GA 8.0f
|
||||
#define LIS3MDL_COMP_12GA 12.0f
|
||||
#define LIS3MDL_COMP_16GA 16.0f
|
||||
|
||||
|
||||
#define LIS3MDL_COMP_SENS_4GA 0.00014615f
|
||||
#define LIS3MDL_COMP_SENS_8GA 0.00029231f
|
||||
#define LIS3MDL_COMP_SENS_12GA 0.0004384f
|
||||
|
@ -92,7 +92,7 @@
|
|||
#define LIS3MDL_AD(n) (1 << n)
|
||||
#define LIS3MDL_MS (1 << 6)
|
||||
#define LIS3MDL_RW (1 << 7)
|
||||
|
||||
|
||||
#define LIS3MDL_SUB_MS (1 << 7)
|
||||
/** @} */
|
||||
|
||||
|
@ -125,7 +125,7 @@
|
|||
* @name LIS3MDL_CTRL_REG1 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3MDL_CTRL_REG1_MASK 0xFF
|
||||
#define LIS3MDL_CTRL_REG1_MASK 0xFF
|
||||
#define LIS3MDL_CTRL_REG1_ST (1 << 0)
|
||||
#define LIS3MDL_CTRL_REG1_FAST_ODR (1 << 1)
|
||||
#define LIS3MDL_CTRL_REG1_DO0 (1 << 2)
|
||||
|
@ -140,10 +140,10 @@
|
|||
* @name LIS3MDL_CTRL_REG2 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3MDL_CTRL_REG2_MASK 0x6C
|
||||
#define LIS3MDL_CTRL_REG2_MASK 0x6C
|
||||
#define LIS3MDL_CTRL_REG2_SOFT_RST (1 << 2)
|
||||
#define LIS3MDL_CTRL_REG2_REBOOT (1 << 3)
|
||||
#define LIS3MDL_CTRL_REG2_FS_MASK 0x60
|
||||
#define LIS3MDL_CTRL_REG2_FS_MASK 0x60
|
||||
#define LIS3MDL_CTRL_REG2_FS0 (1 << 5)
|
||||
#define LIS3MDL_CTRL_REG2_FS1 (1 << 6)
|
||||
/** @} */
|
||||
|
@ -152,7 +152,7 @@
|
|||
* @name LIS3MDL_CTRL_REG3 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3MDL_CTRL_REG3_MASK 0x27
|
||||
#define LIS3MDL_CTRL_REG3_MASK 0x27
|
||||
#define LIS3MDL_CTRL_REG3_MD0 (1 << 0)
|
||||
#define LIS3MDL_CTRL_REG3_MD1 (1 << 1)
|
||||
#define LIS3MDL_CTRL_REG3_SIM (1 << 2)
|
||||
|
@ -163,7 +163,7 @@
|
|||
* @name LIS3MDL_CTRL_REG4 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3MDL_CTRL_REG4_MASK 0x0E
|
||||
#define LIS3MDL_CTRL_REG4_MASK 0x0E
|
||||
#define LIS3MDL_CTRL_REG4_BLE (1 << 1)
|
||||
#define LIS3MDL_CTRL_REG4_OMZ0 (1 << 2)
|
||||
#define LIS3MDL_CTRL_REG4_OMZ1 (1 << 3)
|
||||
|
@ -173,7 +173,7 @@
|
|||
* @name LIS3MDL_CTRL_REG5 register bits definitions
|
||||
* @{
|
||||
*/
|
||||
#define LIS3MDL_CTRL_REG5_MASK 0xC0
|
||||
#define LIS3MDL_CTRL_REG5_MASK 0xC0
|
||||
#define LIS3MDL_CTRL_REG5_BDU (1 << 6)
|
||||
#define LIS3MDL_CTRL_REG5_FAST_READ (1 << 7)
|
||||
/** @} */
|
||||
|
@ -368,7 +368,7 @@ typedef enum {
|
|||
* @brief LIS3MDL endianness
|
||||
*/
|
||||
typedef enum {
|
||||
LIS3MDL_END_LITTLE = 0x00, /**< Little endian. */
|
||||
LIS3MDL_END_LITTLE = 0x00, /**< Little endian. */
|
||||
LIS3MDL_END_BIG = 0x02 /**< Big endian. */
|
||||
}lis3mdl_end_t;
|
||||
|
||||
|
@ -459,7 +459,7 @@ typedef struct {
|
|||
#define _lis3msl_methods_alone \
|
||||
/* Change full scale value of LIS3MDL compass subsystem.*/ \
|
||||
msg_t (*comp_set_full_scale)(LIS3MDLDriver *devp, lis3mdl_comp_fs_t fs);
|
||||
|
||||
|
||||
/**
|
||||
* @brief @p LIS3MDL specific methods with inherited ones.
|
||||
*/
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
*
|
||||
* @notapi
|
||||
*/
|
||||
static msg_t lps22hbI2CReadRegister(I2CDriver *i2cp, lps22hb_sad_t sad,
|
||||
static msg_t lps22hbI2CReadRegister(I2CDriver *i2cp, lps22hb_sad_t sad,
|
||||
uint8_t reg, uint8_t* rxbuf, size_t n) {
|
||||
|
||||
return i2cMasterTransmitTimeout(i2cp, sad, ®, 1, rxbuf, n,
|
||||
|
@ -119,18 +119,18 @@ static msg_t baro_read_raw(void *ip, int32_t axes[]) {
|
|||
LPS22HBDriver* devp;
|
||||
uint8_t buff[3];
|
||||
msg_t msg;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"baro_read_raw(), invalid state");
|
||||
|
||||
osalDbgAssert((devp->config->i2cp->state == I2C_READY),
|
||||
"baro_read_raw(), channel not ready");
|
||||
|
||||
|
||||
#if LPS22HB_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
|
@ -149,7 +149,7 @@ static msg_t baro_read_raw(void *ip, int32_t axes[]) {
|
|||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Retrieves cooked data from the BaseBarometer.
|
||||
* @note This data is manipulated according to the formula
|
||||
|
@ -176,14 +176,14 @@ static msg_t baro_read_cooked(void *ip, float axes[]) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"baro_read_cooked(), invalid state");
|
||||
|
||||
msg = baro_read_raw(ip, &raw);
|
||||
|
||||
*axes = (raw * devp->barosensitivity) - devp->barobias;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -205,12 +205,12 @@ static msg_t baro_read_cooked(void *ip, float axes[]) {
|
|||
static msg_t baro_set_bias(void *ip, float *bp) {
|
||||
LPS22HBDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"baro_set_bias(), invalid state");
|
||||
|
||||
|
@ -231,15 +231,15 @@ static msg_t baro_set_bias(void *ip, float *bp) {
|
|||
static msg_t baro_reset_bias(void *ip) {
|
||||
LPS22HBDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"baro_reset_bias(), invalid state");
|
||||
|
||||
|
||||
devp->barobias = LPS22HB_BARO_SENS;
|
||||
return msg;
|
||||
}
|
||||
|
@ -259,12 +259,12 @@ static msg_t baro_reset_bias(void *ip) {
|
|||
static msg_t baro_set_sensitivity(void *ip, float *sp) {
|
||||
LPS22HBDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (sp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"baro_set_sensitivity(), invalid state");
|
||||
|
||||
|
@ -284,12 +284,12 @@ static msg_t baro_set_sensitivity(void *ip, float *sp) {
|
|||
static msg_t baro_reset_sensitivity(void *ip) {
|
||||
LPS22HBDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"baro_reset_sensitivity(), invalid state");
|
||||
|
||||
|
@ -306,7 +306,7 @@ static msg_t baro_reset_sensitivity(void *ip) {
|
|||
*/
|
||||
static size_t thermo_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return LPS22HB_THERMO_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -331,18 +331,18 @@ static msg_t thermo_read_raw(void *ip, int32_t axes[]) {
|
|||
int16_t tmp;
|
||||
uint8_t buff[2];
|
||||
msg_t msg;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"thermo_read_raw(), invalid state");
|
||||
|
||||
"thermo_read_raw(), invalid state");
|
||||
|
||||
osalDbgAssert((devp->config->i2cp->state == I2C_READY),
|
||||
"thermo_read_raw(), channel not ready");
|
||||
|
||||
|
||||
#if LPS22HB_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
|
@ -351,7 +351,7 @@ static msg_t thermo_read_raw(void *ip, int32_t axes[]) {
|
|||
|
||||
msg = lps22hbI2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LPS22HB_AD_TEMP_OUT_L, buff, 2);
|
||||
|
||||
|
||||
#if LPS22HB_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LPS22HB_SHARED_I2C */
|
||||
|
@ -389,7 +389,7 @@ static msg_t thermo_read_cooked(void *ip, float* axis) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"thermo_read_cooked(), invalid state");
|
||||
|
||||
|
@ -415,17 +415,17 @@ static msg_t thermo_read_cooked(void *ip, float* axis) {
|
|||
static msg_t thermo_set_bias(void *ip, float *bp) {
|
||||
LPS22HBDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"thermo_set_bias(), invalid state");
|
||||
|
||||
|
||||
devp->thermobias = *bp;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -441,18 +441,18 @@ static msg_t thermo_set_bias(void *ip, float *bp) {
|
|||
*/
|
||||
static msg_t thermo_reset_bias(void *ip) {
|
||||
LPS22HBDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"thermo_reset_bias(), invalid state");
|
||||
|
||||
devp->thermobias = LPS22HB_THERMO_BIAS;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -471,17 +471,17 @@ static msg_t thermo_reset_bias(void *ip) {
|
|||
static msg_t thermo_set_sensitivity(void *ip, float *sp) {
|
||||
LPS22HBDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (sp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"thermo_set_sensitivity(), invalid state");
|
||||
|
||||
|
||||
devp->thermosensitivity = *sp;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -496,18 +496,18 @@ static msg_t thermo_set_sensitivity(void *ip, float *sp) {
|
|||
*/
|
||||
static msg_t thermo_reset_sensitivity(void *ip) {
|
||||
LPS22HBDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS22HBDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS22HB_READY),
|
||||
"thermo_reset_sensitivity(), invalid state");
|
||||
|
||||
devp->thermosensitivity = LPS22HB_THERMO_SENS;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -545,12 +545,12 @@ void lps22hbObjectInit(LPS22HBDriver *devp) {
|
|||
devp->vmt = &vmt_device;
|
||||
devp->baro_if.vmt = &vmt_barometer;
|
||||
devp->thermo_if.vmt = &vmt_thermometer;
|
||||
|
||||
|
||||
devp->config = NULL;
|
||||
|
||||
devp->baroaxes = LPS22HB_BARO_NUMBER_OF_AXES;
|
||||
devp->thermoaxes = LPS22HB_THERMO_NUMBER_OF_AXES;
|
||||
|
||||
|
||||
devp->state = LPS22HB_STOP;
|
||||
}
|
||||
|
||||
|
@ -570,7 +570,7 @@ void lps22hbStart(LPS22HBDriver *devp, const LPS22HBConfig *config) {
|
|||
"lps22hbStart(), invalid state");
|
||||
|
||||
devp->config = config;
|
||||
|
||||
|
||||
/* Enabling register auto-increment.*/
|
||||
/* Control register 1 configuration block.*/
|
||||
{
|
||||
|
@ -584,7 +584,7 @@ void lps22hbStart(LPS22HBDriver *devp, const LPS22HBConfig *config) {
|
|||
i2cStart(devp->config->i2cp, devp->config->i2ccfg);
|
||||
lps22hbI2CWriteRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
cr, 1);
|
||||
|
||||
|
||||
/* Control register 1 configuration block.*/
|
||||
{
|
||||
cr[0] = LPS22HB_AD_CTRL_REG1;
|
||||
|
@ -594,15 +594,15 @@ void lps22hbStart(LPS22HBDriver *devp, const LPS22HBConfig *config) {
|
|||
cr[1] |= devp->config->lowpass_filter;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if LPS22HB_SHARED_I2C
|
||||
i2cAcquireBus((devp)->config->i2cp);
|
||||
#endif /* LPS22HB_SHARED_I2C */
|
||||
i2cStart((devp)->config->i2cp,
|
||||
(devp)->config->i2ccfg);
|
||||
|
||||
|
||||
lps22hbI2CWriteRegister(devp->config->i2cp, devp->config->slaveaddress, cr, 1);
|
||||
|
||||
|
||||
#if LPS22HB_SHARED_I2C
|
||||
i2cReleaseBus((devp)->config->i2cp);
|
||||
#endif /* LPS22HB_SHARED_I2C */
|
||||
|
@ -643,7 +643,7 @@ void lps22hbStart(LPS22HBDriver *devp, const LPS22HBConfig *config) {
|
|||
osalThreadSleepMilliseconds(5);
|
||||
|
||||
devp->state = LPS22HB_READY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deactivates the LPS22HB Complex Driver peripheral.
|
||||
|
@ -671,7 +671,7 @@ void lps22hbStop(LPS22HBDriver *devp) {
|
|||
cr[1] = 0;
|
||||
lps22hbI2CWriteRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
cr, 1);
|
||||
|
||||
|
||||
i2cStop((devp)->config->i2cp);
|
||||
#if LPS22HB_SHARED_I2C
|
||||
i2cReleaseBus((devp)->config->i2cp);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -63,7 +63,7 @@
|
|||
|
||||
/**
|
||||
* @brief LPS22HB barometer subsystem characteristics.
|
||||
* @note Sensitivity is expressed as hPa/LSB whereas hPa stand for
|
||||
* @note Sensitivity is expressed as hPa/LSB whereas hPa stand for
|
||||
* hectopascal.
|
||||
* @note Bias is expressed as hPa.
|
||||
*
|
||||
|
@ -247,7 +247,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LPS22HB accelerometer subsystem advanced configurations
|
||||
* @brief LPS22HB accelerometer subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -307,7 +307,7 @@ typedef struct LPS22HBDriver LPS22HBDriver;
|
|||
typedef enum {
|
||||
LPS22HB_SAD_GND = 0x5C, /**< Slave Address when SA0 is to GND */
|
||||
LPS22HB_SAD_VCC = 0x5D /**< Slave Address when SA0 is to VCC */
|
||||
}lps22hb_sad_t;
|
||||
}lps22hb_sad_t;
|
||||
|
||||
/**
|
||||
* @brief LPS22HB output data rate and bandwidth.
|
||||
|
@ -468,7 +468,7 @@ struct LPS22HBDriver {
|
|||
/*===========================================================================*/
|
||||
/* Driver macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
|
||||
/**
|
||||
* @brief Return the number of axes of the BaseBarometer.
|
||||
*
|
||||
|
|
|
@ -60,12 +60,12 @@
|
|||
*
|
||||
* @notapi
|
||||
*/
|
||||
static msg_t lps25hI2CReadRegister(I2CDriver *i2cp, lps25h_sad_t sad,
|
||||
static msg_t lps25hI2CReadRegister(I2CDriver *i2cp, lps25h_sad_t sad,
|
||||
uint8_t reg, uint8_t* rxbuf, size_t n) {
|
||||
uint8_t txbuf = reg;
|
||||
uint8_t txbuf = reg;
|
||||
if(n > 1)
|
||||
txbuf |= LPS25H_SUB_MS;
|
||||
|
||||
|
||||
return i2cMasterTransmitTimeout(i2cp, sad, &txbuf, 1, rxbuf, n,
|
||||
TIME_INFINITE);
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ static msg_t lps25hI2CReadRegister(I2CDriver *i2cp, lps25h_sad_t sad,
|
|||
*
|
||||
* @notapi
|
||||
*/
|
||||
static msg_t lps25hI2CWriteRegister(I2CDriver *i2cp, lps25h_sad_t sad,
|
||||
static msg_t lps25hI2CWriteRegister(I2CDriver *i2cp, lps25h_sad_t sad,
|
||||
uint8_t* txbuf, size_t n) {
|
||||
if (n > 1)
|
||||
(*txbuf) |= LPS25H_SUB_MS;
|
||||
|
@ -126,18 +126,18 @@ static msg_t baro_read_raw(void *ip, int32_t axes[]) {
|
|||
LPS25HDriver* devp;
|
||||
uint8_t buff[3];
|
||||
msg_t msg;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"baro_read_raw(), invalid state");
|
||||
|
||||
osalDbgAssert((devp->config->i2cp->state == I2C_READY),
|
||||
"baro_read_raw(), channel not ready");
|
||||
|
||||
|
||||
#if LPS25H_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
|
@ -156,7 +156,7 @@ static msg_t baro_read_raw(void *ip, int32_t axes[]) {
|
|||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Retrieves cooked data from the BaseBarometer.
|
||||
* @note This data is manipulated according to the formula
|
||||
|
@ -183,14 +183,14 @@ static msg_t baro_read_cooked(void *ip, float axes[]) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"baro_read_cooked(), invalid state");
|
||||
|
||||
msg = baro_read_raw(ip, &raw);
|
||||
|
||||
*axes = (raw * devp->barosensitivity) - devp->barobias;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -212,12 +212,12 @@ static msg_t baro_read_cooked(void *ip, float axes[]) {
|
|||
static msg_t baro_set_bias(void *ip, float *bp) {
|
||||
LPS25HDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"baro_set_bias(), invalid state");
|
||||
|
||||
|
@ -238,15 +238,15 @@ static msg_t baro_set_bias(void *ip, float *bp) {
|
|||
static msg_t baro_reset_bias(void *ip) {
|
||||
LPS25HDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"baro_reset_bias(), invalid state");
|
||||
|
||||
|
||||
devp->barobias = LPS25H_BARO_SENS;
|
||||
return msg;
|
||||
}
|
||||
|
@ -266,12 +266,12 @@ static msg_t baro_reset_bias(void *ip) {
|
|||
static msg_t baro_set_sensitivity(void *ip, float *sp) {
|
||||
LPS25HDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (sp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"baro_set_sensitivity(), invalid state");
|
||||
|
||||
|
@ -291,12 +291,12 @@ static msg_t baro_set_sensitivity(void *ip, float *sp) {
|
|||
static msg_t baro_reset_sensitivity(void *ip) {
|
||||
LPS25HDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseBarometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"baro_reset_sensitivity(), invalid state");
|
||||
|
||||
|
@ -313,7 +313,7 @@ static msg_t baro_reset_sensitivity(void *ip) {
|
|||
*/
|
||||
static size_t thermo_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return LPS25H_THERMO_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -338,18 +338,18 @@ static msg_t thermo_read_raw(void *ip, int32_t axes[]) {
|
|||
int16_t tmp;
|
||||
uint8_t buff[2];
|
||||
msg_t msg;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"thermo_read_raw(), invalid state");
|
||||
|
||||
"thermo_read_raw(), invalid state");
|
||||
|
||||
osalDbgAssert((devp->config->i2cp->state == I2C_READY),
|
||||
"thermo_read_raw(), channel not ready");
|
||||
|
||||
|
||||
#if LPS25H_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
|
@ -358,7 +358,7 @@ static msg_t thermo_read_raw(void *ip, int32_t axes[]) {
|
|||
|
||||
msg = lps25hI2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LPS25H_AD_TEMP_OUT_L, buff, 2);
|
||||
|
||||
|
||||
#if LPS25H_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LPS25H_SHARED_I2C */
|
||||
|
@ -396,7 +396,7 @@ static msg_t thermo_read_cooked(void *ip, float* axis) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"thermo_read_cooked(), invalid state");
|
||||
|
||||
|
@ -422,17 +422,17 @@ static msg_t thermo_read_cooked(void *ip, float* axis) {
|
|||
static msg_t thermo_set_bias(void *ip, float *bp) {
|
||||
LPS25HDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"thermo_set_bias(), invalid state");
|
||||
|
||||
|
||||
devp->thermobias = *bp;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -448,18 +448,18 @@ static msg_t thermo_set_bias(void *ip, float *bp) {
|
|||
*/
|
||||
static msg_t thermo_reset_bias(void *ip) {
|
||||
LPS25HDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"thermo_reset_bias(), invalid state");
|
||||
|
||||
devp->thermobias = LPS25H_THERMO_BIAS;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -478,17 +478,17 @@ static msg_t thermo_reset_bias(void *ip) {
|
|||
static msg_t thermo_set_sensitivity(void *ip, float *sp) {
|
||||
LPS25HDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (sp != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"thermo_set_sensitivity(), invalid state");
|
||||
|
||||
|
||||
devp->thermosensitivity = *sp;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -503,18 +503,18 @@ static msg_t thermo_set_sensitivity(void *ip, float *sp) {
|
|||
*/
|
||||
static msg_t thermo_reset_sensitivity(void *ip) {
|
||||
LPS25HDriver* devp;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LPS25HDriver*, (BaseThermometer*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LPS25H_READY),
|
||||
"thermo_reset_sensitivity(), invalid state");
|
||||
|
||||
devp->thermosensitivity = LPS25H_THERMO_SENS;
|
||||
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
@ -552,12 +552,12 @@ void lps25hObjectInit(LPS25HDriver *devp) {
|
|||
devp->vmt = &vmt_device;
|
||||
devp->baro_if.vmt = &vmt_barometer;
|
||||
devp->thermo_if.vmt = &vmt_thermometer;
|
||||
|
||||
|
||||
devp->config = NULL;
|
||||
|
||||
devp->baroaxes = LPS25H_BARO_NUMBER_OF_AXES;
|
||||
devp->thermoaxes = LPS25H_THERMO_NUMBER_OF_AXES;
|
||||
|
||||
|
||||
devp->state = LPS25H_STOP;
|
||||
}
|
||||
|
||||
|
@ -577,7 +577,7 @@ void lps25hStart(LPS25HDriver *devp, const LPS25HConfig *config) {
|
|||
"lps25hStart(), invalid state");
|
||||
|
||||
devp->config = config;
|
||||
|
||||
|
||||
/* Control register 1 configuration block.*/
|
||||
{
|
||||
cr[0] = LPS25H_AD_CTRL_REG1;
|
||||
|
@ -586,15 +586,15 @@ void lps25hStart(LPS25HDriver *devp, const LPS25HConfig *config) {
|
|||
cr[1] |= devp->config->blockdataupdate;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if LPS25H_SHARED_I2C
|
||||
i2cAcquireBus((devp)->config->i2cp);
|
||||
#endif /* LPS25H_SHARED_I2C */
|
||||
i2cStart((devp)->config->i2cp,
|
||||
(devp)->config->i2ccfg);
|
||||
|
||||
|
||||
lps25hI2CWriteRegister(devp->config->i2cp, devp->config->slaveaddress, cr, 1);
|
||||
|
||||
|
||||
#if LPS25H_SHARED_I2C
|
||||
i2cReleaseBus((devp)->config->i2cp);
|
||||
#endif /* LPS25H_SHARED_I2C */
|
||||
|
@ -606,20 +606,20 @@ void lps25hStart(LPS25HDriver *devp, const LPS25HConfig *config) {
|
|||
#if LPS25H_USE_ADVANCED || defined(__DOXYGEN__)
|
||||
cr[1] = devp->config->baroresolution | devp->config->thermoresolution;
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
#if LPS25H_SHARED_I2C
|
||||
i2cAcquireBus((devp)->config->i2cp);
|
||||
i2cStart((devp)->config->i2cp,
|
||||
(devp)->config->i2ccfg);
|
||||
#endif /* LPS25H_SHARED_I2C */
|
||||
|
||||
|
||||
lps25hI2CWriteRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
cr, 1);
|
||||
|
||||
|
||||
#if LPS25H_SHARED_I2C
|
||||
i2cReleaseBus((devp)->config->i2cp);
|
||||
#endif /* LPS25H_SHARED_I2C */
|
||||
#endif /* LPS25H_SHARED_I2C */
|
||||
|
||||
if(devp->config->barosensitivity == NULL) {
|
||||
devp->barosensitivity = LPS25H_BARO_SENS;
|
||||
|
@ -657,7 +657,7 @@ void lps25hStart(LPS25HDriver *devp, const LPS25HConfig *config) {
|
|||
osalThreadSleepMilliseconds(5);
|
||||
|
||||
devp->state = LPS25H_READY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deactivates the LPS25H Complex Driver peripheral.
|
||||
|
@ -685,7 +685,7 @@ void lps25hStop(LPS25HDriver *devp) {
|
|||
cr[1] = 0;
|
||||
lps25hI2CWriteRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
cr, 1);
|
||||
|
||||
|
||||
i2cStop((devp)->config->i2cp);
|
||||
#if LPS25H_SHARED_I2C
|
||||
i2cReleaseBus((devp)->config->i2cp);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -63,14 +63,14 @@
|
|||
|
||||
/**
|
||||
* @brief LPS25H barometer subsystem characteristics.
|
||||
* @note Sensitivity is expressed as hPa/LSB whereas hPa stand for
|
||||
* @note Sensitivity is expressed as hPa/LSB whereas hPa stand for
|
||||
* hectopascal.
|
||||
* @note Bias is expressed as hPa.
|
||||
*
|
||||
* @{
|
||||
*/
|
||||
#define LPS25H_BARO_NUMBER_OF_AXES 1U
|
||||
|
||||
|
||||
#define LPS25H_BARO_SENS 0.00024414f
|
||||
#define LPS25H_BARO_BIAS 0.0f
|
||||
/** @} */
|
||||
|
@ -83,7 +83,7 @@
|
|||
* @{
|
||||
*/
|
||||
#define LPS25H_THERMO_NUMBER_OF_AXES 1U
|
||||
|
||||
|
||||
#define LPS25H_THERMO_SENS 0.00208333f
|
||||
#define LPS25H_THERMO_BIAS -42.5f
|
||||
/** @} */
|
||||
|
@ -98,7 +98,7 @@
|
|||
#define LPS25H_AD(n) (1 << n)
|
||||
#define LPS25H_MS (1 << 6)
|
||||
#define LPS25H_RW (1 << 7)
|
||||
|
||||
|
||||
#define LPS25H_SUB_MS (1 << 7)
|
||||
/** @} */
|
||||
|
||||
|
@ -249,7 +249,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LPS25H accelerometer subsystem advanced configurations
|
||||
* @brief LPS25H accelerometer subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -309,7 +309,7 @@ typedef struct LPS25HDriver LPS25HDriver;
|
|||
typedef enum {
|
||||
LPS25H_SAD_GND = 0x5C, /**< Slave Address when SA0 is to GND */
|
||||
LPS25H_SAD_VCC = 0x5D /**< Slave Address when SA0 is to VCC */
|
||||
}lps25h_sad_t;
|
||||
}lps25h_sad_t;
|
||||
|
||||
/**
|
||||
* @brief LPS25H output data rate and bandwidth.
|
||||
|
@ -484,7 +484,7 @@ struct LPS25HDriver {
|
|||
/*===========================================================================*/
|
||||
/* Driver macros. */
|
||||
/*===========================================================================*/
|
||||
|
||||
|
||||
/**
|
||||
* @brief Return the number of axes of the BaseBarometer.
|
||||
*
|
||||
|
|
|
@ -103,7 +103,7 @@ static msg_t lsm303dlhcI2CWriteRegister(I2CDriver *i2cp, lsm303dlhc_sad_t sad,
|
|||
*/
|
||||
static size_t acc_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return LSM303DLHC_ACC_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -130,7 +130,7 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
msg_t msg;
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM303DLHCDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -145,8 +145,8 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
devp->config->i2ccfg);
|
||||
#endif /* LSM303DLHC_SHARED_I2C */
|
||||
|
||||
msg = lsm303dlhcI2CReadRegister(devp->config->i2cp, LSM303DLHC_SAD_ACC,
|
||||
LSM303DLHC_AD_ACC_OUT_X_L, buff,
|
||||
msg = lsm303dlhcI2CReadRegister(devp->config->i2cp, LSM303DLHC_SAD_ACC,
|
||||
LSM303DLHC_AD_ACC_OUT_X_L, buff,
|
||||
LSM303DLHC_ACC_NUMBER_OF_AXES * 2);
|
||||
|
||||
#if LSM303DLHC_SHARED_I2C
|
||||
|
@ -246,7 +246,7 @@ static msg_t acc_reset_bias(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM303DLHCDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -305,7 +305,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM303DLHCDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -333,7 +333,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
|
||||
/**
|
||||
* @brief Changes the LSM303DLHCDriver accelerometer fullscale value.
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* previous and next fullscale value.
|
||||
* @note A recalibration is highly suggested after calling this function.
|
||||
*
|
||||
|
@ -463,7 +463,7 @@ static msg_t comp_read_raw(void *ip, int32_t axes[]) {
|
|||
msg_t msg;
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM303DLHCDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -477,8 +477,8 @@ static msg_t comp_read_raw(void *ip, int32_t axes[]) {
|
|||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* LSM303DLHC_SHARED_I2C */
|
||||
msg = lsm303dlhcI2CReadRegister(devp->config->i2cp, LSM303DLHC_SAD_COMP,
|
||||
LSM303DLHC_AD_COMP_OUT_X_L, buff,
|
||||
msg = lsm303dlhcI2CReadRegister(devp->config->i2cp, LSM303DLHC_SAD_COMP,
|
||||
LSM303DLHC_AD_COMP_OUT_X_L, buff,
|
||||
LSM303DLHC_COMP_NUMBER_OF_AXES * 2);
|
||||
|
||||
#if LSM303DLHC_SHARED_I2C
|
||||
|
@ -518,13 +518,13 @@ static msg_t comp_read_cooked(void *ip, float axes[]) {
|
|||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM303DLHCDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM303DLHC_READY),
|
||||
"comp_read_cooked(), invalid state");
|
||||
|
||||
|
||||
msg = comp_read_raw(ip, raw);
|
||||
for(i = 0; i < LSM303DLHC_COMP_NUMBER_OF_AXES ; i++) {
|
||||
axes[i] = (raw[i] * devp->compsensitivity[i]) - devp->compbias[i];
|
||||
|
@ -548,9 +548,9 @@ static msg_t comp_set_bias(void *ip, float *bp) {
|
|||
LSM303DLHCDriver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM303DLHCDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -579,7 +579,7 @@ static msg_t comp_reset_bias(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM303DLHCDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -607,7 +607,7 @@ static msg_t comp_set_sensivity(void *ip, float *sp) {
|
|||
LSM303DLHCDriver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM303DLHCDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -638,7 +638,7 @@ static msg_t comp_reset_sensivity(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM303DLHCDriver*, (BaseCompass*)ip);
|
||||
|
||||
|
@ -733,7 +733,7 @@ static msg_t comp_set_full_scale(LSM303DLHCDriver *devp,
|
|||
float newfs, scale;
|
||||
uint8_t i, buff[2];
|
||||
msg_t msg;
|
||||
|
||||
|
||||
osalDbgCheck(devp != NULL);
|
||||
|
||||
osalDbgAssert((devp->state == LSM303DLHC_READY),
|
||||
|
@ -797,7 +797,7 @@ static msg_t comp_set_full_scale(LSM303DLHCDriver *devp,
|
|||
i2cStart(devp->config->i2cp, devp->config->i2ccfg);
|
||||
#endif /* LSM303DLHC_SHARED_I2C */
|
||||
|
||||
msg = lsm303dlhcI2CWriteRegister(devp->config->i2cp, LSM303DLHC_SAD_COMP,
|
||||
msg = lsm303dlhcI2CWriteRegister(devp->config->i2cp, LSM303DLHC_SAD_COMP,
|
||||
buff, 1);
|
||||
|
||||
#if LSM303DLHC_SHARED_I2C
|
||||
|
@ -848,9 +848,9 @@ void lsm303dlhcObjectInit(LSM303DLHCDriver *devp) {
|
|||
devp->vmt = &vmt_device;
|
||||
devp->acc_if.vmt = &vmt_accelerometer;
|
||||
devp->comp_if.vmt = &vmt_compass;
|
||||
|
||||
|
||||
devp->config = NULL;
|
||||
|
||||
|
||||
devp->accaxes = LSM303DLHC_ACC_NUMBER_OF_AXES;
|
||||
devp->compaxes = LSM303DLHC_COMP_NUMBER_OF_AXES;
|
||||
|
||||
|
@ -909,14 +909,14 @@ void lsm303dlhcStart(LSM303DLHCDriver *devp, const LSM303DLHCConfig *config) {
|
|||
devp->config->acchighresmode;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#if LSM303DLHC_SHARED_I2C
|
||||
i2cAcquireBus((devp)->config->i2cp);
|
||||
#endif /* LSM303DLHC_SHARED_I2C */
|
||||
i2cStart((devp)->config->i2cp, (devp)->config->i2ccfg);
|
||||
|
||||
|
||||
lsm303dlhcI2CWriteRegister(devp->config->i2cp, LSM303DLHC_SAD_ACC, cr, 4);
|
||||
|
||||
|
||||
#if LSM303DLHC_SHARED_I2C
|
||||
i2cReleaseBus((devp)->config->i2cp);
|
||||
#endif /* LSM303DLHC_SHARED_I2C */
|
||||
|
@ -965,7 +965,7 @@ void lsm303dlhcStart(LSM303DLHCDriver *devp, const LSM303DLHCConfig *config) {
|
|||
if(devp->config->accbias != NULL)
|
||||
for(i = 0; i < LSM303DLHC_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = devp->config->accbias[i];
|
||||
else
|
||||
else
|
||||
for(i = 0; i < LSM303DLHC_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = LSM303DLHC_ACC_BIAS;
|
||||
|
||||
|
@ -995,7 +995,7 @@ void lsm303dlhcStart(LSM303DLHCDriver *devp, const LSM303DLHCConfig *config) {
|
|||
i2cAcquireBus((devp)->config->i2cp);
|
||||
i2cStart((devp)->config->i2cp, (devp)->config->i2ccfg);
|
||||
#endif /* LSM303DLHC_SHARED_I2C */
|
||||
|
||||
|
||||
lsm303dlhcI2CWriteRegister(devp->config->i2cp, LSM303DLHC_SAD_COMP,
|
||||
cr, 3);
|
||||
|
||||
|
@ -1122,10 +1122,10 @@ void lsm303dlhcStart(LSM303DLHCDriver *devp, const LSM303DLHCConfig *config) {
|
|||
if(devp->config->compbias != NULL)
|
||||
for(i = 0; i < LSM303DLHC_COMP_NUMBER_OF_AXES; i++)
|
||||
devp->compbias[i] = devp->config->compbias[i];
|
||||
else
|
||||
else
|
||||
for(i = 0; i < LSM303DLHC_COMP_NUMBER_OF_AXES; i++)
|
||||
devp->compbias[i] = LSM303DLHC_COMP_BIAS;
|
||||
|
||||
|
||||
/* This is the MEMS transient recovery time */
|
||||
osalThreadSleepMilliseconds(5);
|
||||
|
||||
|
@ -1143,7 +1143,7 @@ void lsm303dlhcStop(LSM303DLHCDriver *devp) {
|
|||
uint8_t cr[2];
|
||||
osalDbgCheck(devp != NULL);
|
||||
|
||||
osalDbgAssert((devp->state == LSM303DLHC_STOP) ||
|
||||
osalDbgAssert((devp->state == LSM303DLHC_STOP) ||
|
||||
(devp->state == LSM303DLHC_READY),
|
||||
"lsm303dlhcStop(), invalid state");
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@
|
|||
|
||||
/**
|
||||
* @brief LSM303DLHC accelerometer subsystem characteristics.
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* 1 milli-G = 0.00980665 m/s^2.
|
||||
* @note Bias is expressed as milli-G.
|
||||
*
|
||||
|
@ -343,7 +343,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LSM303DLHC accelerometer subsystem advanced configurations
|
||||
* @brief LSM303DLHC accelerometer subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -353,7 +353,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LSM303DLHC compass subsystem advanced configurations
|
||||
* @brief LSM303DLHC compass subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -654,7 +654,7 @@ struct LSM303DLHCVMT {
|
|||
float compbias[LSM303DLHC_COMP_NUMBER_OF_AXES]; \
|
||||
/* Compass subsystem current full scale value.*/ \
|
||||
float compfullscale;
|
||||
|
||||
|
||||
/**
|
||||
* @brief LSM303DLHC 6-axis accelerometer/compass class.
|
||||
*/
|
||||
|
@ -946,7 +946,7 @@ struct LSM303DLHCDriver {
|
|||
*/
|
||||
#define lsm303dlhcCompassSetFullScale(devp, fs) \
|
||||
(devp)->vmt->comp_set_full_scale(devp, fs)
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
|
|
@ -4,7 +4,7 @@ LSM303DLHCSRC := $(CHIBIOS)/os/ex/ST/lsm303dlhc.c
|
|||
# Required include directories
|
||||
LSM303DLHCINC := $(CHIBIOS)/os/hal/lib/peripherals/sensors \
|
||||
$(CHIBIOS)/os/ex/ST
|
||||
|
||||
|
||||
# Shared variables
|
||||
ALLCSRC += $(LSM303DLHCSRC)
|
||||
ALLINC += $(LSM303DLHCINC)
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -94,7 +94,7 @@ msg_t lsm6ds0I2CReadRegister(I2CDriver *i2cp, lsm6ds0_sad_t sad, uint8_t reg,
|
|||
*/
|
||||
static size_t acc_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return LSM6DS0_ACC_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
msg_t msg;
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -137,8 +137,8 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
devp->config->i2ccfg);
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
|
||||
msg = lsm6ds0I2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LSM6DS0_AD_OUT_X_L_XL, buff,
|
||||
msg = lsm6ds0I2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LSM6DS0_AD_OUT_X_L_XL, buff,
|
||||
LSM6DS0_ACC_NUMBER_OF_AXES * 2);
|
||||
|
||||
#if LSM6DS0_SHARED_I2C
|
||||
|
@ -238,7 +238,7 @@ static msg_t acc_reset_bias(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -297,7 +297,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -325,7 +325,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
|
||||
/**
|
||||
* @brief Changes the LSM6DS0Driver accelerometer fullscale value.
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* previous and next fullscale value.
|
||||
* @note A recalibration is highly suggested after calling this function.
|
||||
*
|
||||
|
@ -427,7 +427,7 @@ static msg_t acc_set_full_scale(LSM6DS0Driver *devp,
|
|||
*/
|
||||
static size_t gyro_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return LSM6DS0_GYRO_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -452,32 +452,32 @@ static msg_t gyro_read_raw(void *ip, int32_t axes[LSM6DS0_GYRO_NUMBER_OF_AXES])
|
|||
int16_t tmp;
|
||||
uint8_t i, buff [2 * LSM6DS0_GYRO_NUMBER_OF_AXES];
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DS0_READY),
|
||||
"gyro_read_raw(), invalid state");
|
||||
#if LSM6DS0_USE_I2C
|
||||
osalDbgAssert((devp->config->i2cp->state == I2C_READY),
|
||||
"gyro_read_raw(), channel not ready");
|
||||
|
||||
|
||||
#if LSM6DS0_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
|
||||
msg = lsm6ds0I2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LSM6DS0_AD_OUT_X_L_G, buff,
|
||||
msg = lsm6ds0I2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LSM6DS0_AD_OUT_X_L_G, buff,
|
||||
LSM6DS0_GYRO_NUMBER_OF_AXES * 2);
|
||||
|
||||
#if LSM6DS0_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
#endif /* LSM6DS0_USE_I2C */
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
#endif /* LSM6DS0_USE_I2C */
|
||||
|
||||
for(i = 0; i < LSM6DS0_GYRO_NUMBER_OF_AXES; i++) {
|
||||
tmp = buff[2 * i] + (buff[2 * i + 1] << 8);
|
||||
|
@ -485,7 +485,7 @@ static msg_t gyro_read_raw(void *ip, int32_t axes[LSM6DS0_GYRO_NUMBER_OF_AXES])
|
|||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Retrieves cooked data from the BaseGyroscope.
|
||||
* @note This data is manipulated according to the formula
|
||||
|
@ -513,7 +513,7 @@ static msg_t gyro_read_cooked(void *ip, float axes[]) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DS0_READY),
|
||||
"gyro_read_cooked(), invalid state");
|
||||
|
||||
|
@ -547,7 +547,7 @@ static msg_t gyro_sample_bias(void *ip) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DS0_READY),
|
||||
"gyro_sample_bias(), invalid state");
|
||||
#if LSM6DS0_USE_I2C
|
||||
|
@ -575,7 +575,7 @@ static msg_t gyro_sample_bias(void *ip) {
|
|||
/**
|
||||
* @brief Set bias values for the BaseGyroscope.
|
||||
* @note Bias must be expressed as DPS.
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* axes number.
|
||||
*
|
||||
* @param[in] ip pointer to @p BaseGyroscope interface.
|
||||
|
@ -588,15 +588,15 @@ static msg_t gyro_set_bias(void *ip, float *bp) {
|
|||
LSM6DS0Driver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DS0_READY),
|
||||
"gyro_set_bias(), invalid state");
|
||||
|
||||
|
||||
for(i = 0; i < LSM6DS0_GYRO_NUMBER_OF_AXES; i++) {
|
||||
devp->gyrobias[i] = bp[i];
|
||||
}
|
||||
|
@ -619,10 +619,10 @@ static msg_t gyro_reset_bias(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DS0_READY),
|
||||
"gyro_reset_bias(), invalid state");
|
||||
|
||||
|
@ -647,15 +647,15 @@ static msg_t gyro_set_sensivity(void *ip, float *sp) {
|
|||
LSM6DS0Driver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (sp !=NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DS0_READY),
|
||||
"gyro_set_sensivity(), invalid state");
|
||||
|
||||
|
||||
for(i = 0; i < LSM6DS0_GYRO_NUMBER_OF_AXES; i++) {
|
||||
devp->gyrosensitivity[i] = sp[i];
|
||||
}
|
||||
|
@ -676,12 +676,12 @@ static msg_t gyro_reset_sensivity(void *ip) {
|
|||
LSM6DS0Driver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DS0Driver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DS0_READY),
|
||||
"gyro_reset_sensivity(), invalid state");
|
||||
|
||||
|
@ -750,7 +750,7 @@ static msg_t gyro_set_full_scale(LSM6DS0Driver *devp, lsm6ds0_gyro_fs_t fs) {
|
|||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
|
||||
/* Updating register.*/
|
||||
msg = lsm6ds0I2CReadRegister(devp->config->i2cp,
|
||||
|
@ -759,26 +759,26 @@ static msg_t gyro_set_full_scale(LSM6DS0Driver *devp, lsm6ds0_gyro_fs_t fs) {
|
|||
|
||||
#if LSM6DS0_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
#endif /* LSM6DS0_USE_I2C */
|
||||
|
||||
buff[1] &= ~(LSM6DS0_CTRL_REG1_G_FS_MASK);
|
||||
buff[1] |= fs;
|
||||
buff[0] = LSM6DS0_AD_CTRL_REG1_G;
|
||||
|
||||
#if LSM6DS0_USE_I2C
|
||||
|
||||
#if LSM6DS0_USE_I2C
|
||||
#if LSM6DS0_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
|
||||
lsm6ds0I2CWriteRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
buff, 1);
|
||||
|
||||
|
||||
#if LSM6DS0_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
#endif /* LSM6DS0_USE_I2C */
|
||||
|
||||
/* Scaling sensitivity and bias. Re-calibration is suggested anyway. */
|
||||
|
@ -823,9 +823,9 @@ void lsm6ds0ObjectInit(LSM6DS0Driver *devp) {
|
|||
devp->vmt = &vmt_device;
|
||||
devp->acc_if.vmt = &vmt_accelerometer;
|
||||
devp->gyro_if.vmt = &vmt_gyroscope;
|
||||
|
||||
|
||||
devp->config = NULL;
|
||||
|
||||
|
||||
devp->accaxes = LSM6DS0_ACC_NUMBER_OF_AXES;
|
||||
devp->gyroaxes = LSM6DS0_GYRO_NUMBER_OF_AXES;
|
||||
|
||||
|
@ -845,14 +845,14 @@ void lsm6ds0Start(LSM6DS0Driver *devp, const LSM6DS0Config *config) {
|
|||
uint8_t cr[5];
|
||||
osalDbgCheck((devp != NULL) && (config != NULL));
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DS0_STOP) ||
|
||||
osalDbgAssert((devp->state == LSM6DS0_STOP) ||
|
||||
(devp->state == LSM6DS0_READY),
|
||||
"lsm6ds0Start(), invalid state");
|
||||
"lsm6ds0Start(), invalid state");
|
||||
|
||||
devp->config = config;
|
||||
|
||||
/* Configuring common registers.*/
|
||||
|
||||
|
||||
/* Control register 8 configuration block.*/
|
||||
{
|
||||
cr[0] = LSM6DS0_AD_CTRL_REG8;
|
||||
|
@ -892,7 +892,7 @@ void lsm6ds0Start(LSM6DS0Driver *devp, const LSM6DS0Config *config) {
|
|||
cr[2] = devp->config->accoutdatarate |
|
||||
devp->config->accfullscale;
|
||||
}
|
||||
|
||||
|
||||
#if LSM6DS0_USE_I2C
|
||||
#if LSM6DS0_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
|
@ -951,10 +951,10 @@ void lsm6ds0Start(LSM6DS0Driver *devp, const LSM6DS0Config *config) {
|
|||
if(devp->config->accbias != NULL)
|
||||
for(i = 0; i < LSM6DS0_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = devp->config->accbias[i];
|
||||
else
|
||||
else
|
||||
for(i = 0; i < LSM6DS0_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = LSM6DS0_ACC_BIAS;
|
||||
|
||||
|
||||
/* Configuring Gyroscope subsystem.*/
|
||||
/* Multiple write starting address.*/
|
||||
cr[0] = LSM6DS0_AD_CTRL_REG1_G;
|
||||
|
@ -1055,15 +1055,15 @@ void lsm6ds0Start(LSM6DS0Driver *devp, const LSM6DS0Config *config) {
|
|||
if(devp->config->gyrobias != NULL)
|
||||
for(i = 0; i < LSM6DS0_GYRO_NUMBER_OF_AXES; i++)
|
||||
devp->gyrobias[i] = devp->config->gyrobias[i];
|
||||
else
|
||||
else
|
||||
for(i = 0; i < LSM6DS0_GYRO_NUMBER_OF_AXES; i++)
|
||||
devp->gyrobias[i] = LSM6DS0_GYRO_BIAS;
|
||||
|
||||
|
||||
/* This is the MEMS transient recovery time */
|
||||
osalThreadSleepMilliseconds(5);
|
||||
|
||||
devp->state = LSM6DS0_READY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deactivates the LSM6DS0 Complex Driver peripheral.
|
||||
|
@ -1086,7 +1086,7 @@ void lsm6ds0Stop(LSM6DS0Driver *devp) {
|
|||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp, devp->config->i2ccfg);
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
|
||||
|
||||
/* Disabling accelerometer.*/
|
||||
cr[0] = LSM6DS0_AD_CTRL_REG6_XL;
|
||||
cr[1] = 0;
|
||||
|
@ -1104,7 +1104,7 @@ void lsm6ds0Stop(LSM6DS0Driver *devp) {
|
|||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LSM6DS0_SHARED_I2C */
|
||||
#endif /* LSM6DS0_USE_I2C */
|
||||
}
|
||||
}
|
||||
devp->state = LSM6DS0_STOP;
|
||||
}
|
||||
/** @} */
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -63,7 +63,7 @@
|
|||
|
||||
/**
|
||||
* @brief LSM6DS0 accelerometer subsystem characteristics.
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* 1 milli-G = 0.00980665 m/s^2.
|
||||
* @note Bias is expressed as milli-G.
|
||||
*
|
||||
|
@ -86,7 +86,7 @@
|
|||
|
||||
/**
|
||||
* @brief L3GD20 gyroscope system characteristics.
|
||||
* @note Sensitivity is expressed as DPS/LSB whereas DPS stand for Degree
|
||||
* @note Sensitivity is expressed as DPS/LSB whereas DPS stand for Degree
|
||||
* per second [°/s].
|
||||
* @note Bias is expressed as DPS.
|
||||
*
|
||||
|
@ -355,7 +355,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LSM6DS0 accelerometer subsystem advanced configurations
|
||||
* @brief LSM6DS0 accelerometer subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -365,7 +365,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LSM6DS0 gyroscope subsystem advanced configurations
|
||||
* @brief LSM6DS0 gyroscope subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -540,15 +540,15 @@ typedef enum {
|
|||
*/
|
||||
typedef enum {
|
||||
LSM6DS0_GYRO_HPCF_0 = 0x00, /**< Refer to table 48 of RM */
|
||||
LSM6DS0_GYRO_HPCF_1 = 0x01,
|
||||
LSM6DS0_GYRO_HPCF_2 = 0x02,
|
||||
LSM6DS0_GYRO_HPCF_3 = 0x03,
|
||||
LSM6DS0_GYRO_HPCF_4 = 0x04,
|
||||
LSM6DS0_GYRO_HPCF_5 = 0x05,
|
||||
LSM6DS0_GYRO_HPCF_6 = 0x06,
|
||||
LSM6DS0_GYRO_HPCF_7 = 0x07,
|
||||
LSM6DS0_GYRO_HPCF_8 = 0x08,
|
||||
LSM6DS0_GYRO_HPCF_9 = 0x09
|
||||
LSM6DS0_GYRO_HPCF_1 = 0x01,
|
||||
LSM6DS0_GYRO_HPCF_2 = 0x02,
|
||||
LSM6DS0_GYRO_HPCF_3 = 0x03,
|
||||
LSM6DS0_GYRO_HPCF_4 = 0x04,
|
||||
LSM6DS0_GYRO_HPCF_5 = 0x05,
|
||||
LSM6DS0_GYRO_HPCF_6 = 0x06,
|
||||
LSM6DS0_GYRO_HPCF_7 = 0x07,
|
||||
LSM6DS0_GYRO_HPCF_8 = 0x08,
|
||||
LSM6DS0_GYRO_HPCF_9 = 0x09
|
||||
} lsm6ds0_gyro_hpcf_t;
|
||||
|
||||
/**
|
||||
|
@ -681,8 +681,8 @@ typedef struct {
|
|||
/* Change full scale value of LSM6DS0 accelerometer subsystem .*/ \
|
||||
msg_t (*acc_set_full_scale)(LSM6DS0Driver *devp, lsm6ds0_acc_fs_t fs); \
|
||||
/* Change full scale value of LSM6DS0 gyroscope subsystem .*/ \
|
||||
msg_t (*gyro_set_full_scale)(LSM6DS0Driver *devp, lsm6ds0_gyro_fs_t fs);
|
||||
|
||||
msg_t (*gyro_set_full_scale)(LSM6DS0Driver *devp, lsm6ds0_gyro_fs_t fs);
|
||||
|
||||
/**
|
||||
* @brief @p LSM6DS0 specific methods with inherited ones.
|
||||
*/
|
||||
|
@ -724,7 +724,7 @@ struct LSM6DS0VMT {
|
|||
float gyrobias[LSM6DS0_GYRO_NUMBER_OF_AXES]; \
|
||||
/* Gyroscope subsystem current full scale value.*/ \
|
||||
float gyrofullscale;
|
||||
|
||||
|
||||
/**
|
||||
* @brief LSM6DS0 6-axis accelerometer/gyroscope class.
|
||||
*/
|
||||
|
@ -879,7 +879,7 @@ struct LSM6DS0Driver {
|
|||
*/
|
||||
#define lsm6ds0AccelerometerSetFullScale(devp, fs) \
|
||||
(devp)->vmt->acc_set_full_scale(devp, fs)
|
||||
|
||||
|
||||
/**
|
||||
* @brief Return the number of axes of the BaseGyroscope.
|
||||
*
|
||||
|
@ -891,7 +891,7 @@ struct LSM6DS0Driver {
|
|||
*/
|
||||
#define lsm6ds0GyroscopeGetAxesNumber(devp) \
|
||||
gyroscopeGetAxesNumber(&((devp)->gyro_if))
|
||||
|
||||
|
||||
/**
|
||||
* @brief Retrieves raw data from the BaseGyroscope.
|
||||
* @note This data is retrieved from MEMS register without any algebraical
|
||||
|
@ -954,11 +954,11 @@ struct LSM6DS0Driver {
|
|||
*/
|
||||
#define lsm6ds0GyroscopeSampleBias(devp) \
|
||||
gyroscopeSampleBias(&((devp)->gyro_if))
|
||||
|
||||
|
||||
/**
|
||||
* @brief Set bias values for the BaseGyroscope.
|
||||
* @note Bias must be expressed as DPS.
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* axes number.
|
||||
*
|
||||
* @param[in] devp pointer to @p LSM6DS0Driver.
|
||||
|
@ -1036,7 +1036,7 @@ struct LSM6DS0Driver {
|
|||
*/
|
||||
#define lsm6ds0GyroscopeSetFullScale(devp, fs) \
|
||||
(devp)->vmt->acc_set_full_scale(devp, fs)
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -94,7 +94,7 @@ msg_t lsm6dslI2CReadRegister(I2CDriver *i2cp, lsm6dsl_sad_t sad, uint8_t reg,
|
|||
*/
|
||||
static size_t acc_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return LSM6DSL_ACC_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -121,7 +121,7 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
msg_t msg;
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -137,8 +137,8 @@ static msg_t acc_read_raw(void *ip, int32_t axes[]) {
|
|||
devp->config->i2ccfg);
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
|
||||
msg = lsm6dslI2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LSM6DSL_AD_OUTX_L_XL, buff,
|
||||
msg = lsm6dslI2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LSM6DSL_AD_OUTX_L_XL, buff,
|
||||
LSM6DSL_ACC_NUMBER_OF_AXES * 2);
|
||||
|
||||
#if LSM6DSL_SHARED_I2C
|
||||
|
@ -238,7 +238,7 @@ static msg_t acc_reset_bias(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -297,7 +297,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseAccelerometer*)ip);
|
||||
|
||||
|
@ -325,7 +325,7 @@ static msg_t acc_reset_sensivity(void *ip) {
|
|||
|
||||
/**
|
||||
* @brief Changes the LSM6DSLDriver accelerometer fullscale value.
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* @note This function also rescale sensitivities and biases based on
|
||||
* previous and next fullscale value.
|
||||
* @note A recalibration is highly suggested after calling this function.
|
||||
*
|
||||
|
@ -427,7 +427,7 @@ static msg_t acc_set_full_scale(LSM6DSLDriver *devp,
|
|||
*/
|
||||
static size_t gyro_get_axes_number(void *ip) {
|
||||
(void)ip;
|
||||
|
||||
|
||||
return LSM6DSL_GYRO_NUMBER_OF_AXES;
|
||||
}
|
||||
|
||||
|
@ -452,32 +452,32 @@ static msg_t gyro_read_raw(void *ip, int32_t axes[LSM6DSL_GYRO_NUMBER_OF_AXES])
|
|||
int16_t tmp;
|
||||
uint8_t i, buff [2 * LSM6DSL_GYRO_NUMBER_OF_AXES];
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (axes != NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DSL_READY),
|
||||
"gyro_read_raw(), invalid state");
|
||||
#if LSM6DSL_USE_I2C
|
||||
osalDbgAssert((devp->config->i2cp->state == I2C_READY),
|
||||
"gyro_read_raw(), channel not ready");
|
||||
|
||||
|
||||
#if LSM6DSL_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
|
||||
msg = lsm6dslI2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
msg = lsm6dslI2CReadRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
LSM6DSL_AD_OUTX_L_G, buff,
|
||||
LSM6DSL_GYRO_NUMBER_OF_AXES * 2);
|
||||
|
||||
#if LSM6DSL_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
#endif /* LSM6DSL_USE_I2C */
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
#endif /* LSM6DSL_USE_I2C */
|
||||
|
||||
for(i = 0; i < LSM6DSL_GYRO_NUMBER_OF_AXES; i++) {
|
||||
tmp = buff[2 * i] + (buff[2 * i + 1] << 8);
|
||||
|
@ -485,7 +485,7 @@ static msg_t gyro_read_raw(void *ip, int32_t axes[LSM6DSL_GYRO_NUMBER_OF_AXES])
|
|||
}
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Retrieves cooked data from the BaseGyroscope.
|
||||
* @note This data is manipulated according to the formula
|
||||
|
@ -513,7 +513,7 @@ static msg_t gyro_read_cooked(void *ip, float axes[]) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DSL_READY),
|
||||
"gyro_read_cooked(), invalid state");
|
||||
|
||||
|
@ -547,7 +547,7 @@ static msg_t gyro_sample_bias(void *ip) {
|
|||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DSL_READY),
|
||||
"gyro_sample_bias(), invalid state");
|
||||
#if LSM6DSL_USE_I2C
|
||||
|
@ -575,7 +575,7 @@ static msg_t gyro_sample_bias(void *ip) {
|
|||
/**
|
||||
* @brief Set bias values for the BaseGyroscope.
|
||||
* @note Bias must be expressed as DPS.
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* axes number.
|
||||
*
|
||||
* @param[in] ip pointer to @p BaseGyroscope interface.
|
||||
|
@ -588,15 +588,15 @@ static msg_t gyro_set_bias(void *ip, float *bp) {
|
|||
LSM6DSLDriver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (bp != NULL));
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DSL_READY),
|
||||
"gyro_set_bias(), invalid state");
|
||||
|
||||
|
||||
for(i = 0; i < LSM6DSL_GYRO_NUMBER_OF_AXES; i++) {
|
||||
devp->gyrobias[i] = bp[i];
|
||||
}
|
||||
|
@ -619,10 +619,10 @@ static msg_t gyro_reset_bias(void *ip) {
|
|||
msg_t msg = MSG_OK;
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DSL_READY),
|
||||
"gyro_reset_bias(), invalid state");
|
||||
|
||||
|
@ -647,15 +647,15 @@ static msg_t gyro_set_sensivity(void *ip, float *sp) {
|
|||
LSM6DSLDriver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck((ip != NULL) && (sp !=NULL));
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DSL_READY),
|
||||
"gyro_set_sensivity(), invalid state");
|
||||
|
||||
|
||||
for(i = 0; i < LSM6DSL_GYRO_NUMBER_OF_AXES; i++) {
|
||||
devp->gyrosensitivity[i] = sp[i];
|
||||
}
|
||||
|
@ -676,12 +676,12 @@ static msg_t gyro_reset_sensivity(void *ip) {
|
|||
LSM6DSLDriver* devp;
|
||||
uint32_t i;
|
||||
msg_t msg = MSG_OK;
|
||||
|
||||
|
||||
osalDbgCheck(ip != NULL);
|
||||
|
||||
/* Getting parent instance pointer.*/
|
||||
devp = objGetInstance(LSM6DSLDriver*, (BaseGyroscope*)ip);
|
||||
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DSL_READY),
|
||||
"gyro_reset_sensivity(), invalid state");
|
||||
if(devp->config->gyrofullscale == LSM6DSL_GYRO_FS_125DPS)
|
||||
|
@ -761,7 +761,7 @@ static msg_t gyro_set_full_scale(LSM6DSLDriver *devp, lsm6dsl_gyro_fs_t fs) {
|
|||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
|
||||
/* Updating register.*/
|
||||
msg = lsm6dslI2CReadRegister(devp->config->i2cp,
|
||||
|
@ -770,26 +770,26 @@ static msg_t gyro_set_full_scale(LSM6DSLDriver *devp, lsm6dsl_gyro_fs_t fs) {
|
|||
|
||||
#if LSM6DSL_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
#endif /* LSM6DSL_USE_I2C */
|
||||
|
||||
buff[1] &= ~(LSMDSL_CTRL2_G_FS_MASK);
|
||||
buff[1] |= fs;
|
||||
buff[0] = LSM6DSL_AD_CTRL2_G;
|
||||
|
||||
#if LSM6DSL_USE_I2C
|
||||
|
||||
#if LSM6DSL_USE_I2C
|
||||
#if LSM6DSL_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp,
|
||||
devp->config->i2ccfg);
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
|
||||
lsm6dslI2CWriteRegister(devp->config->i2cp, devp->config->slaveaddress,
|
||||
buff, 1);
|
||||
|
||||
|
||||
#if LSM6DSL_SHARED_I2C
|
||||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
#endif /* LSM6DSL_USE_I2C */
|
||||
|
||||
/* Scaling sensitivity and bias. Re-calibration is suggested anyway. */
|
||||
|
@ -834,9 +834,9 @@ void lsm6dslObjectInit(LSM6DSLDriver *devp) {
|
|||
devp->vmt = &vmt_device;
|
||||
devp->acc_if.vmt = &vmt_accelerometer;
|
||||
devp->gyro_if.vmt = &vmt_gyroscope;
|
||||
|
||||
|
||||
devp->config = NULL;
|
||||
|
||||
|
||||
devp->accaxes = LSM6DSL_ACC_NUMBER_OF_AXES;
|
||||
devp->gyroaxes = LSM6DSL_GYRO_NUMBER_OF_AXES;
|
||||
|
||||
|
@ -856,9 +856,9 @@ void lsm6dslStart(LSM6DSLDriver *devp, const LSM6DSLConfig *config) {
|
|||
uint8_t cr[11];
|
||||
osalDbgCheck((devp != NULL) && (config != NULL));
|
||||
|
||||
osalDbgAssert((devp->state == LSM6DSL_STOP) ||
|
||||
osalDbgAssert((devp->state == LSM6DSL_STOP) ||
|
||||
(devp->state == LSM6DSL_READY),
|
||||
"lsm6dslStart(), invalid state");
|
||||
"lsm6dslStart(), invalid state");
|
||||
|
||||
devp->config = config;
|
||||
|
||||
|
@ -953,7 +953,7 @@ void lsm6dslStart(LSM6DSLDriver *devp, const LSM6DSLConfig *config) {
|
|||
{
|
||||
cr[10] = 0;
|
||||
}
|
||||
|
||||
|
||||
#if LSM6DSL_USE_I2C
|
||||
#if LSM6DSL_SHARED_I2C
|
||||
i2cAcquireBus(devp->config->i2cp);
|
||||
|
@ -1012,7 +1012,7 @@ void lsm6dslStart(LSM6DSLDriver *devp, const LSM6DSLConfig *config) {
|
|||
if(devp->config->accbias != NULL)
|
||||
for(i = 0; i < LSM6DSL_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = devp->config->accbias[i];
|
||||
else
|
||||
else
|
||||
for(i = 0; i < LSM6DSL_ACC_NUMBER_OF_AXES; i++)
|
||||
devp->accbias[i] = LSM6DSL_ACC_BIAS;
|
||||
|
||||
|
@ -1068,15 +1068,15 @@ void lsm6dslStart(LSM6DSLDriver *devp, const LSM6DSLConfig *config) {
|
|||
if(devp->config->gyrobias != NULL)
|
||||
for(i = 0; i < LSM6DSL_GYRO_NUMBER_OF_AXES; i++)
|
||||
devp->gyrobias[i] = devp->config->gyrobias[i];
|
||||
else
|
||||
else
|
||||
for(i = 0; i < LSM6DSL_GYRO_NUMBER_OF_AXES; i++)
|
||||
devp->gyrobias[i] = LSM6DSL_GYRO_BIAS;
|
||||
|
||||
|
||||
/* This is the MEMS transient recovery time */
|
||||
osalThreadSleepMilliseconds(5);
|
||||
|
||||
devp->state = LSM6DSL_READY;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deactivates the LSM6DSL Complex Driver peripheral.
|
||||
|
@ -1099,7 +1099,7 @@ void lsm6dslStop(LSM6DSLDriver *devp) {
|
|||
i2cAcquireBus(devp->config->i2cp);
|
||||
i2cStart(devp->config->i2cp, devp->config->i2ccfg);
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
|
||||
|
||||
|
||||
cr[0] = LSM6DSL_AD_CTRL1_XL;
|
||||
/* Disabling accelerometer.*/
|
||||
|
@ -1114,7 +1114,7 @@ void lsm6dslStop(LSM6DSLDriver *devp) {
|
|||
i2cReleaseBus(devp->config->i2cp);
|
||||
#endif /* LSM6DSL_SHARED_I2C */
|
||||
#endif /* LSM6DSL_USE_I2C */
|
||||
}
|
||||
}
|
||||
devp->state = LSM6DSL_STOP;
|
||||
}
|
||||
/** @} */
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -63,7 +63,7 @@
|
|||
|
||||
/**
|
||||
* @brief LSM6DSL accelerometer subsystem characteristics.
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* @note Sensitivity is expressed as milli-G/LSB whereas
|
||||
* 1 milli-G = 0.00980665 m/s^2.
|
||||
* @note Bias is expressed as milli-G.
|
||||
*
|
||||
|
@ -86,7 +86,7 @@
|
|||
|
||||
/**
|
||||
* @brief L3GD20 gyroscope system characteristics.
|
||||
* @note Sensitivity is expressed as DPS/LSB whereas DPS stand for Degree
|
||||
* @note Sensitivity is expressed as DPS/LSB whereas DPS stand for Degree
|
||||
* per second [°/s].
|
||||
* @note Bias is expressed as DPS.
|
||||
*
|
||||
|
@ -408,7 +408,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LSM6DSL accelerometer subsystem advanced configurations
|
||||
* @brief LSM6DSL accelerometer subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -418,7 +418,7 @@
|
|||
#endif
|
||||
|
||||
/**
|
||||
* @brief LSM6DSL gyroscope subsystem advanced configurations
|
||||
* @brief LSM6DSL gyroscope subsystem advanced configurations
|
||||
* switch.
|
||||
* @details If set to @p TRUE more configurations are available.
|
||||
* @note The default is @p FALSE.
|
||||
|
@ -522,7 +522,7 @@ typedef enum {
|
|||
LSM6DSL_ACC_ODR_833Hz = 0x70, /**< ODR 833 Hz */
|
||||
LSM6DSL_ACC_ODR_1P66Hz = 0x80, /**< ODR 1.66 kHz */
|
||||
LSM6DSL_ACC_ODR_3P33Hz = 0x90, /**< ODR 3.33 kHz */
|
||||
LSM6DSL_ACC_ODR_6P66Hz = 0xA0 /**< ODR 6.66 kHz */
|
||||
LSM6DSL_ACC_ODR_6P66Hz = 0xA0 /**< ODR 6.66 kHz */
|
||||
} lsm6dsl_acc_odr_t;
|
||||
|
||||
/**
|
||||
|
@ -558,7 +558,7 @@ typedef enum {
|
|||
LSM6DSL_GYRO_ODR_833Hz = 0x70, /**< ODR 833 Hz */
|
||||
LSM6DSL_GYRO_ODR_1P66Hz = 0x80, /**< ODR 1.66 kHz */
|
||||
LSM6DSL_GYRO_ODR_3P33Hz = 0x90, /**< ODR 3.33 kHz */
|
||||
LSM6DSL_GYRO_ODR_6P66Hz = 0xA0 /**< ODR 6.66 kHz */
|
||||
LSM6DSL_GYRO_ODR_6P66Hz = 0xA0 /**< ODR 6.66 kHz */
|
||||
} lsm6dsl_gyro_odr_t;
|
||||
|
||||
/**
|
||||
|
@ -575,7 +575,7 @@ typedef enum {
|
|||
typedef enum {
|
||||
LSM6DSL_GYRO_LPF_DISABLED = -1, /**< Low pass filter disabled. */
|
||||
LSM6DSL_GYRO_LPF_FTYPE0 = 0x00, /**< Refer to table 68 of Datasheet. */
|
||||
LSM6DSL_GYRO_LPF_FTYPE1 = 0x01, /**< Refer to table 68 of Datasheet. */
|
||||
LSM6DSL_GYRO_LPF_FTYPE1 = 0x01, /**< Refer to table 68 of Datasheet. */
|
||||
LSM6DSL_GYRO_LPF_FTYPE2 = 0x10, /**< Refer to table 68 of Datasheet. */
|
||||
LSM6DSL_GYRO_LPF_FTYPE3 = 0x11 /**< Refer to table 68 of Datasheet. */
|
||||
} lsm6dsl_gyro_lpf_t;
|
||||
|
@ -702,8 +702,8 @@ typedef struct {
|
|||
/* Change full scale value of LSM6DSL accelerometer subsystem .*/ \
|
||||
msg_t (*acc_set_full_scale)(LSM6DSLDriver *devp, lsm6dsl_acc_fs_t fs); \
|
||||
/* Change full scale value of LSM6DSL gyroscope subsystem .*/ \
|
||||
msg_t (*gyro_set_full_scale)(LSM6DSLDriver *devp, lsm6dsl_gyro_fs_t fs);
|
||||
|
||||
msg_t (*gyro_set_full_scale)(LSM6DSLDriver *devp, lsm6dsl_gyro_fs_t fs);
|
||||
|
||||
/**
|
||||
* @brief @p LSM6DSL specific methods with inherited ones.
|
||||
*/
|
||||
|
@ -745,7 +745,7 @@ struct LSM6DSLVMT {
|
|||
float gyrobias[LSM6DSL_GYRO_NUMBER_OF_AXES]; \
|
||||
/* Gyroscope subsystem current full scale value.*/ \
|
||||
float gyrofullscale;
|
||||
|
||||
|
||||
/**
|
||||
* @brief LSM6DSL 6-axis accelerometer/gyroscope class.
|
||||
*/
|
||||
|
@ -900,7 +900,7 @@ struct LSM6DSLDriver {
|
|||
*/
|
||||
#define lsm6dslAccelerometerSetFullScale(devp, fs) \
|
||||
(devp)->vmt->acc_set_full_scale(devp, fs)
|
||||
|
||||
|
||||
/**
|
||||
* @brief Return the number of axes of the BaseGyroscope.
|
||||
*
|
||||
|
@ -912,7 +912,7 @@ struct LSM6DSLDriver {
|
|||
*/
|
||||
#define lsm6dslGyroscopeGetAxesNumber(devp) \
|
||||
gyroscopeGetAxesNumber(&((devp)->gyro_if))
|
||||
|
||||
|
||||
/**
|
||||
* @brief Retrieves raw data from the BaseGyroscope.
|
||||
* @note This data is retrieved from MEMS register without any algebraical
|
||||
|
@ -975,11 +975,11 @@ struct LSM6DSLDriver {
|
|||
*/
|
||||
#define lsm6dslGyroscopeSampleBias(devp) \
|
||||
gyroscopeSampleBias(&((devp)->gyro_if))
|
||||
|
||||
|
||||
/**
|
||||
* @brief Set bias values for the BaseGyroscope.
|
||||
* @note Bias must be expressed as DPS.
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* @note The bias buffer must be at least the same size of the BaseGyroscope
|
||||
* axes number.
|
||||
*
|
||||
* @param[in] devp pointer to @p LSM6DSLDriver.
|
||||
|
@ -1057,7 +1057,7 @@ struct LSM6DSLDriver {
|
|||
*/
|
||||
#define lsm6dslGyroscopeSetFullScale(devp, fs) \
|
||||
(devp)->vmt->acc_set_full_scale(devp, fs)
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* External declarations. */
|
||||
/*===========================================================================*/
|
||||
|
|
Loading…
Reference in New Issue