Merge pull request #13914 from akshaim/Kconfig_fxos8700
drivers/fxos8700 : Expose Configurations to Kconfig
This commit is contained in:
commit
c8fa7f045b
@ -75,7 +75,7 @@ extern "C" {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @name FXOS8700 configuration
|
* @name FXOS8700 configuration
|
||||||
* Note that another fxos8700 operation option, FXOS8700_USE_ACC_RAW_VALUES,
|
* Note that another fxos8700 operation option, CONFIG_FXOS8700_USE_ACC_RAW_VALUES,
|
||||||
* need to be set according to the application purposes
|
* need to be set according to the application purposes
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -20,6 +20,7 @@ endmenu # Network Device Drivers
|
|||||||
|
|
||||||
menu "Sensor Device Drivers"
|
menu "Sensor Device Drivers"
|
||||||
rsource "ads101x/Kconfig"
|
rsource "ads101x/Kconfig"
|
||||||
|
rsource "fxos8700/Kconfig"
|
||||||
rsource "hdc1000/Kconfig"
|
rsource "hdc1000/Kconfig"
|
||||||
rsource "mag3110/Kconfig"
|
rsource "mag3110/Kconfig"
|
||||||
rsource "mma8x5x/Kconfig"
|
rsource "mma8x5x/Kconfig"
|
||||||
|
|||||||
21
drivers/fxos8700/Kconfig
Normal file
21
drivers/fxos8700/Kconfig
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Copyright (c) 2020 Freie Universitaet Berlin
|
||||||
|
#
|
||||||
|
# This file is subject to the terms and conditions of the GNU Lesser
|
||||||
|
# General Public License v2.1. See the file LICENSE in the top level
|
||||||
|
# directory for more details.
|
||||||
|
#
|
||||||
|
menuconfig KCONFIG_MODULE_FXOS8700
|
||||||
|
bool "Configure FXOS8700 driver"
|
||||||
|
depends on MODULE_FXOS8700
|
||||||
|
help
|
||||||
|
Configure the FXOS8700 driver using Kconfig.
|
||||||
|
|
||||||
|
if KCONFIG_MODULE_FXOS8700
|
||||||
|
|
||||||
|
config FXOS8700_USE_ACC_RAW_VALUES
|
||||||
|
bool "Enable raw ADC readings"
|
||||||
|
help
|
||||||
|
Enable this to return raw ADC readings.
|
||||||
|
By default measurements are converted to mg.
|
||||||
|
|
||||||
|
endif # KCONFIG_MODULE_FXOS8700
|
||||||
@ -18,6 +18,7 @@
|
|||||||
#include "periph/i2c.h"
|
#include "periph/i2c.h"
|
||||||
#include "xtimer.h"
|
#include "xtimer.h"
|
||||||
#include "fxos8700.h"
|
#include "fxos8700.h"
|
||||||
|
#include "kernel_defines.h"
|
||||||
|
|
||||||
#define ENABLE_DEBUG (0)
|
#define ENABLE_DEBUG (0)
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
@ -161,34 +162,35 @@ int fxos8700_read(const fxos8700_t* dev, fxos8700_measurement_t* acc,
|
|||||||
|
|
||||||
/* Read accelerometer */
|
/* Read accelerometer */
|
||||||
if (acc) {
|
if (acc) {
|
||||||
#if FXOS8700_USE_ACC_RAW_VALUES
|
if (IS_ACTIVE(CONFIG_FXOS8700_USE_ACC_RAW_VALUES)) {
|
||||||
acc->x = (int16_t) ((data[0] << 8) | data[1]) >> 2;
|
acc->x = (int16_t) ((data[0] << 8) | data[1]) >> 2;
|
||||||
acc->y = (int16_t) ((data[2] << 8) | data[3]) >> 2;
|
acc->y = (int16_t) ((data[2] << 8) | data[3]) >> 2;
|
||||||
acc->z = (int16_t) ((data[4] << 8) | data[5]) >> 2;
|
acc->z = (int16_t) ((data[4] << 8) | data[5]) >> 2;
|
||||||
#else
|
|
||||||
int32_t acc_raw_x = (int16_t) ((data[0] << 8) | data[1]) >> 2;
|
|
||||||
int32_t acc_raw_y = (int16_t) ((data[2] << 8) | data[3]) >> 2;
|
|
||||||
int32_t acc_raw_z = (int16_t) ((data[4] << 8) | data[5]) >> 2;
|
|
||||||
switch(dev->p.acc_range) {
|
|
||||||
case FXOS8700_REG_XYZ_DATA_CFG_FS__2G:
|
|
||||||
acc->x = (int16_t) ((acc_raw_x * 244) / 100);
|
|
||||||
acc->y = (int16_t) ((acc_raw_y * 244) / 100);
|
|
||||||
acc->z = (int16_t) ((acc_raw_z * 244) / 100);
|
|
||||||
break;
|
|
||||||
case FXOS8700_REG_XYZ_DATA_CFG_FS__4G:
|
|
||||||
acc->x = (int16_t) ((acc_raw_x * 488) / 1000);
|
|
||||||
acc->y = (int16_t) ((acc_raw_y * 488) / 1000);
|
|
||||||
acc->z = (int16_t) ((acc_raw_z * 488) / 1000);
|
|
||||||
break;
|
|
||||||
case FXOS8700_REG_XYZ_DATA_CFG_FS__8G:
|
|
||||||
acc->x = (int16_t) ((acc_raw_x * 976) / 1000);
|
|
||||||
acc->y = (int16_t) ((acc_raw_y * 976) / 1000);
|
|
||||||
acc->z = (int16_t) ((acc_raw_z * 976) / 1000);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return FXOS8700_NODEV;
|
|
||||||
}
|
}
|
||||||
#endif
|
else {
|
||||||
|
int32_t acc_raw_x = (int16_t) ((data[0] << 8) | data[1]) >> 2;
|
||||||
|
int32_t acc_raw_y = (int16_t) ((data[2] << 8) | data[3]) >> 2;
|
||||||
|
int32_t acc_raw_z = (int16_t) ((data[4] << 8) | data[5]) >> 2;
|
||||||
|
switch(dev->p.acc_range) {
|
||||||
|
case FXOS8700_REG_XYZ_DATA_CFG_FS__2G:
|
||||||
|
acc->x = (int16_t) ((acc_raw_x * 244) / 100);
|
||||||
|
acc->y = (int16_t) ((acc_raw_y * 244) / 100);
|
||||||
|
acc->z = (int16_t) ((acc_raw_z * 244) / 100);
|
||||||
|
break;
|
||||||
|
case FXOS8700_REG_XYZ_DATA_CFG_FS__4G:
|
||||||
|
acc->x = (int16_t) ((acc_raw_x * 488) / 1000);
|
||||||
|
acc->y = (int16_t) ((acc_raw_y * 488) / 1000);
|
||||||
|
acc->z = (int16_t) ((acc_raw_z * 488) / 1000);
|
||||||
|
break;
|
||||||
|
case FXOS8700_REG_XYZ_DATA_CFG_FS__8G:
|
||||||
|
acc->x = (int16_t) ((acc_raw_x * 976) / 1000);
|
||||||
|
acc->y = (int16_t) ((acc_raw_y * 976) / 1000);
|
||||||
|
acc->z = (int16_t) ((acc_raw_z * 976) / 1000);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return FXOS8700_NODEV;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* Read magnetometer */
|
/* Read magnetometer */
|
||||||
if (mag) {
|
if (mag) {
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "saul.h"
|
#include "saul.h"
|
||||||
#include "fxos8700.h"
|
#include "fxos8700.h"
|
||||||
|
#include "kernel_defines.h"
|
||||||
|
|
||||||
static int read_mag(const void *dev, phydat_t *res)
|
static int read_mag(const void *dev, phydat_t *res)
|
||||||
{
|
{
|
||||||
@ -42,17 +43,19 @@ static int read_acc(const void *dev, phydat_t *res)
|
|||||||
/* Read failure */
|
/* Read failure */
|
||||||
return -ECANCELED;
|
return -ECANCELED;
|
||||||
}
|
}
|
||||||
#if FXOS8700_USE_ACC_RAW_VALUES
|
if (IS_ACTIVE(CONFIG_FXOS8700_USE_ACC_RAW_VALUES)) {
|
||||||
res->unit = UNIT_NONE;
|
res->unit = UNIT_NONE;
|
||||||
res->scale = 0;
|
res->scale = 0;
|
||||||
#else
|
}
|
||||||
res->unit = UNIT_G;
|
else {
|
||||||
if (((fxos8700_t *)dev)->p.acc_range == FXOS8700_REG_XYZ_DATA_CFG_FS__2G) {
|
res->unit = UNIT_G;
|
||||||
res->scale = -4;
|
if (((fxos8700_t *)dev)->p.acc_range == FXOS8700_REG_XYZ_DATA_CFG_FS__2G) {
|
||||||
} else {
|
res->scale = -4;
|
||||||
res->scale = -3;
|
}
|
||||||
|
else {
|
||||||
|
res->scale = -3;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -44,11 +44,11 @@ extern "C" {
|
|||||||
/**
|
/**
|
||||||
* @brief Default raw value mode for accelerator
|
* @brief Default raw value mode for accelerator
|
||||||
*
|
*
|
||||||
* If set to 0, measurements will be converted to mg.
|
* Set this to 1 to return raw ADC readings. Otherwise measurements
|
||||||
* If set to 1, raw adc readings will be returned.
|
* will be converted to mg.
|
||||||
*/
|
*/
|
||||||
#ifndef FXOS8700_USE_ACC_RAW_VALUES
|
#ifdef DOXYGEN
|
||||||
#define FXOS8700_USE_ACC_RAW_VALUES (0)
|
#define CONFIG_FXOS8700_USE_ACC_RAW_VALUES
|
||||||
#endif
|
#endif
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user