ChibiOS  0.0.0
Collaboration diagram for LIS302DL:

Detailed Description

Macros

#define lis302dlAccelerometerGetAxesNumber(devp)   accelerometerGetAxesNumber(&((devp)->acc_if))
 Return the number of axes of the BaseAccelerometer. More...
 
#define lis302dlAccelerometerReadRaw(devp, axes)   accelerometerReadRaw(&((devp)->acc_if), axes)
 Retrieves raw data from the BaseAccelerometer. More...
 
#define lis302dlAccelerometerReadCooked(devp, axes)   accelerometerReadCooked(&((devp)->acc_if), axes)
 Retrieves cooked data from the BaseAccelerometer. More...
 
#define lis302dlAccelerometerSetBias(devp, bp)   accelerometerSetBias(&((devp)->acc_if), bp)
 Set bias values for the BaseAccelerometer. More...
 
#define lis302dlAccelerometerResetBias(devp)   accelerometerResetBias(&((devp)->acc_if))
 Reset bias values for the BaseAccelerometer. More...
 
#define lis302dlAccelerometerSetSensitivity(devp, sp)   accelerometerSetSensitivity(&((devp)->acc_if), sp)
 Set sensitivity values for the BaseAccelerometer. More...
 
#define lis302dlAccelerometerResetSensitivity(devp)   accelerometerResetSensitivity(&((devp)->acc_if))
 Reset sensitivity values for the BaseAccelerometer. More...
 
#define lis302dlAccelerometerSetFullScale(devp, fs)   (devp)->vmt->acc_set_full_scale(devp, fs)
 Changes the LIS302DLDriver accelerometer fullscale value. More...
 

Version identification

#define EX_LIS302DL_VERSION   "1.1.0"
 LIS302DL driver version string. More...
 
#define EX_LIS302DL_MAJOR   1
 LIS302DL driver version major number. More...
 
#define EX_LIS302DL_MINOR   1
 LIS302DL driver version minor number. More...
 
#define EX_LIS302DL_PATCH   0
 LIS302DL driver version patch number. More...
 
#define LIS302DL_ACC_NUMBER_OF_AXES   3U
 LIS302DL accelerometer subsystem characteristics. More...
 

LIS302DL communication interfaces related bit masks

#define LIS302DL_DI_MASK   0xFF
 
#define LIS302DL_DI(n)   (1 << n)
 
#define LIS302DL_AD_MASK   0x3F
 
#define LIS302DL_AD(n)   (1 << n)
 
#define LIS302DL_MS   (1 << 6)
 
#define LIS302DL_RW   (1 << 7)
 

LIS302DL register addresses

#define LIS302DL_AD_WHO_AM_I   0x0F
 
#define LIS302DL_AD_CTRL_REG1   0x20
 
#define LIS302DL_AD_CTRL_REG2   0x21
 
#define LIS302DL_AD_CTRL_REG3   0x22
 
#define LIS302DL_AD_HP_FILER_RESET   0x23
 
#define LIS302DL_AD_STATUS_REG   0x27
 
#define LIS302DL_AD_OUT_X   0x29
 
#define LIS302DL_AD_OUT_Y   0x2B
 
#define LIS302DL_AD_OUT_Z   0x2D
 
#define LIS302DL_AD_FF_WU_CFG_1   0x30
 
#define LIS302DL_AD_FF_WU_SRC_1   0x31
 
#define LIS302DL_AD_FF_WU_THS_1   0x32
 
#define LIS302DL_AD_FF_WU_DURATION_1   0x33
 
#define LIS302DL_AD_FF_WU_CFG_2   0x34
 
#define LIS302DL_AD_FF_WU_SRC_2   0x35
 
#define LIS302DL_AD_FF_WU_THS_2   0x36
 
#define LIS302DL_AD_FF_WU_DURATION_2   0x37
 
#define LIS302DL_AD_CLICK_CFG   0x38
 
#define LIS302DL_AD_CLICK_SRC   0x39
 
#define LIS302DL_AD_CLICK_THSY_X   0x3B
 
#define LIS302DL_AD_CLICK_THSZ   0x3C
 
#define LIS302DL_AD_CLICK_TIME_LIMIT   0x3D
 
#define LIS302DL_AD_CLICK_LATENCY   0x3E
 
#define LIS302DL_AD_CLICK_WINDOW   0x3F
 

LIS302DL_CTRL_REG1 register bits definitions

#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   (1 << 5)
 
#define LIS302DL_CTRL_REG1_PD   (1 << 6)
 
#define LIS302DL_CTRL_REG1_DR   (1 << 7)
 

LIS302DL_CTRL_REG2 register bits definitions

#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)
 
#define LIS302DL_CTRL_REG2_HPFFWU2   (1 << 3)
 
#define LIS302DL_CTRL_REG2_FDS   (1 << 4)
 
#define LIS302DL_CTRL_REG2_BOOT   (1 << 6)
 
#define LIS302DL_CTRL_REG2_SIM   (1 << 7)
 

LIS302DL_CTRL_REG3 register bits definitions

#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)
 
#define LIS302DL_CTRL_REG3_I2CFG0   (1 << 3)
 
#define LIS302DL_CTRL_REG3_I2CFG1   (1 << 4)
 
#define LIS302DL_CTRL_REG3_I2CFG2   (1 << 5)
 
#define LIS302DL_CTRL_REG3_PP_OD   (1 << 6)
 
#define LIS302DL_CTRL_REG3_IHL   (1 << 7)
 

Configuration options

#define LIS302DL_USE_SPI   TRUE
 LIS302DL SPI interface switch. More...
 
#define LIS302DL_SHARED_SPI   FALSE
 LIS302DL shared SPI switch. More...
 
#define LIS302DL_USE_I2C   FALSE
 LIS302DL I2C interface switch. More...
 
#define LIS302DL_SHARED_I2C   FALSE
 LIS302DL shared I2C switch. More...
 
#define LIS302DL_ACC_USE_ADVANCED   FALSE
 LIS302DL accelerometer subsystem advanced configurations switch. More...
 

LIS302DL data structures and types

Todo:
Add support for LIS302DL over I2C.
typedef struct LIS302DLDriver LIS302DLDriver
 Structure representing a LIS302DL driver. More...
 
#define _lis302dl_methods_alone
 LIS302DL specific methods. More...
 
#define _lis302dl_methods
 LIS302DL specific methods with inherited ones. More...
 
#define _lis302dl_data
 LIS302DLDriver specific data. More...
 

Data Structures

struct  LIS302DLConfig
 LIS302DL configuration structure. More...
 
struct  LIS302DLVMT
 LIS302DL accelerometer virtual methods table. More...
 
struct  LIS302DLDriver
 LIS302DL 3-axis accelerometer class. More...
 

Functions

static void lis302dlSPIReadRegister (SPIDriver *spip, uint8_t reg, size_t n, uint8_t *b)
 Reads a generic register value using SPI. More...
 
static void lis302dlSPIWriteRegister (SPIDriver *spip, uint8_t reg, size_t n, uint8_t *b)
 Writes a value into a generic register using SPI. More...
 
static size_t acc_get_axes_number (void *ip)
 Return the number of axes of the BaseAccelerometer. More...
 
static msg_t acc_read_raw (void *ip, int32_t axes[])
 Retrieves raw data from the BaseAccelerometer. More...
 
static msg_t acc_read_cooked (void *ip, float axes[])
 Retrieves cooked data from the BaseAccelerometer. More...
 
static msg_t acc_set_bias (void *ip, float *bp)
 Set bias values for the BaseAccelerometer. More...
 
static msg_t acc_reset_bias (void *ip)
 Reset bias values for the BaseAccelerometer. More...
 
static msg_t acc_set_sensivity (void *ip, float *sp)
 Set sensitivity values for the BaseAccelerometer. More...
 
static msg_t acc_reset_sensivity (void *ip)
 Reset sensitivity values for the BaseAccelerometer. More...
 
static msg_t acc_set_full_scale (LIS302DLDriver *devp, lis302dl_acc_fs_t fs)
 Changes the LIS302DLDriver accelerometer fullscale value. More...
 
void lis302dlObjectInit (LIS302DLDriver *devp)
 Initializes an instance. More...
 
void lis302dlStart (LIS302DLDriver *devp, const LIS302DLConfig *config)
 Configures and activates LIS302DL Complex Driver peripheral. More...
 
void lis302dlStop (LIS302DLDriver *devp)
 Deactivates the LIS302DL Complex Driver peripheral. More...
 

Macro Definition Documentation

#define EX_LIS302DL_VERSION   "1.1.0"

LIS302DL driver version string.

Definition at line 46 of file lis302dl.h.

#define EX_LIS302DL_MAJOR   1

LIS302DL driver version major number.

Definition at line 51 of file lis302dl.h.

#define EX_LIS302DL_MINOR   1

LIS302DL driver version minor number.

Definition at line 56 of file lis302dl.h.

#define EX_LIS302DL_PATCH   0

LIS302DL driver version patch number.

Definition at line 61 of file lis302dl.h.

#define LIS302DL_ACC_NUMBER_OF_AXES   3U

LIS302DL accelerometer subsystem characteristics.

Note
Sensitivity is expressed as milli-G/LSB whereas 1 milli-G = 0.00980665 m/s^2.
Bias is expressed as milli-G.

Definition at line 72 of file lis302dl.h.

Referenced by acc_get_axes_number(), acc_read_cooked(), acc_read_raw(), acc_reset_bias(), acc_reset_sensivity(), acc_set_bias(), acc_set_full_scale(), acc_set_sensivity(), lis302dlObjectInit(), and lis302dlStart().

#define LIS302DL_USE_SPI   TRUE

LIS302DL SPI interface switch.

If set to TRUE the support for SPI is included.

Note
The default is TRUE.

Definition at line 184 of file lis302dl.h.

#define LIS302DL_SHARED_SPI   FALSE

LIS302DL shared SPI switch.

If set to TRUE the device acquires SPI bus ownership on each transaction.

Note
The default is FALSE. Requires SPI_USE_MUTUAL_EXCLUSION.

Definition at line 194 of file lis302dl.h.

#define LIS302DL_USE_I2C   FALSE

LIS302DL I2C interface switch.

If set to TRUE the support for I2C is included.

Note
The default is FALSE.

Definition at line 203 of file lis302dl.h.

#define LIS302DL_SHARED_I2C   FALSE

LIS302DL shared I2C switch.

If set to TRUE the device acquires I2C bus ownership on each transaction.

Note
The default is FALSE. Requires I2C_USE_MUTUAL_EXCLUSION.

Definition at line 213 of file lis302dl.h.

#define LIS302DL_ACC_USE_ADVANCED   FALSE

LIS302DL accelerometer subsystem advanced configurations switch.

If set to TRUE more configurations are available.

Note
The default is FALSE.

Definition at line 223 of file lis302dl.h.

#define _lis302dl_methods_alone
Value:
/* Change full scale value of LIS302DL .*/ \
msg_t (*set_full_scale)(LIS302DLDriver *devp, lis302dl_acc_fs_t fs);
LIS302DL 3-axis accelerometer class.
Definition: lis302dl.h:400
lis302dl_acc_fs_t
LIS302DL full scale.
Definition: lis302dl.h:274
int32_t msg_t
Definition: chtypes.h:51

LIS302DL specific methods.

Definition at line 359 of file lis302dl.h.

#define _lis302dl_methods
Value:
#define _lis302dl_methods_alone
LIS302DL specific methods.
Definition: lis302dl.h:359

LIS302DL specific methods with inherited ones.

Definition at line 367 of file lis302dl.h.

#define _lis302dl_data
Value:
/* Driver state.*/ \
/* Current configuration data.*/ \
const LIS302DLConfig *config; \
/* Accelerometer subsystem axes number.*/ \
size_t accaxes; \
/* Current sensitivity.*/ \
float accsensitivity[LIS302DL_ACC_NUMBER_OF_AXES]; \
/* Bias data.*/ \
int32_t accbias[LIS302DL_ACC_NUMBER_OF_AXES]; \
/* Current full scale value.*/ \
float accfullscale;
lis302dl_state_t
Driver state machine possible states.
Definition: lis302dl.h:301
#define LIS302DL_ACC_NUMBER_OF_AXES
LIS302DL accelerometer subsystem characteristics.
Definition: lis302dl.h:72
LIS302DL configuration structure.
Definition: lis302dl.h:310

LIS302DLDriver specific data.

Definition at line 383 of file lis302dl.h.

#define lis302dlAccelerometerGetAxesNumber (   devp)    accelerometerGetAxesNumber(&((devp)->acc_if))

Return the number of axes of the BaseAccelerometer.

Parameters
[in]devppointer to LIS302DLDriver.
Returns
the number of axes.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 422 of file lis302dl.h.

#define lis302dlAccelerometerReadRaw (   devp,
  axes 
)    accelerometerReadRaw(&((devp)->acc_if), axes)

Retrieves raw data from the BaseAccelerometer.

Note
This data is retrieved from MEMS register without any algebraical manipulation.
The axes array must be at least the same size of the BaseAccelerometer axes number.
Parameters
[in]devppointer to LIS302DLDriver.
[out]axesa buffer which would be filled with raw data.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
MSG_RESETif one or more I2C errors occurred, the errors can be retrieved using i2cGetErrors().
MSG_TIMEOUTif a timeout occurred before operation end.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 443 of file lis302dl.h.

#define lis302dlAccelerometerReadCooked (   devp,
  axes 
)    accelerometerReadCooked(&((devp)->acc_if), axes)

Retrieves cooked data from the BaseAccelerometer.

Note
This data is manipulated according to the formula cooked = (raw * sensitivity) - bias.
Final data is expressed as milli-G.
The axes array must be at least the same size of the BaseAccelerometer axes number.
Parameters
[in]devppointer to LIS302DLDriver.
[out]axesa buffer which would be filled with cooked data.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
MSG_RESETif one or more I2C errors occurred, the errors can be retrieved using i2cGetErrors().
MSG_TIMEOUTif a timeout occurred before operation end.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 465 of file lis302dl.h.

#define lis302dlAccelerometerSetBias (   devp,
  bp 
)    accelerometerSetBias(&((devp)->acc_if), bp)

Set bias values for the BaseAccelerometer.

Note
Bias must be expressed as milli-G.
The bias buffer must be at least the same size of the BaseAccelerometer axes number.
Parameters
[in]devppointer to LIS302DLDriver.
[in]bpa buffer which contains biases.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 482 of file lis302dl.h.

#define lis302dlAccelerometerResetBias (   devp)    accelerometerResetBias(&((devp)->acc_if))

Reset bias values for the BaseAccelerometer.

Note
Default biases value are obtained from device datasheet when available otherwise they are considered zero.
Parameters
[in]devppointer to LIS302DLDriver.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 497 of file lis302dl.h.

#define lis302dlAccelerometerSetSensitivity (   devp,
  sp 
)    accelerometerSetSensitivity(&((devp)->acc_if), sp)

Set sensitivity values for the BaseAccelerometer.

Note
Sensitivity must be expressed as milli-G/LSB.
The sensitivity buffer must be at least the same size of the BaseAccelerometer axes number.
Parameters
[in]devppointer to LIS302DLDriver.
[in]spa buffer which contains sensitivities.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 514 of file lis302dl.h.

#define lis302dlAccelerometerResetSensitivity (   devp)    accelerometerResetSensitivity(&((devp)->acc_if))

Reset sensitivity values for the BaseAccelerometer.

Note
Default sensitivities value are obtained from device datasheet.
Parameters
[in]devppointer to LIS302DLDriver.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
MSG_RESETotherwise.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 529 of file lis302dl.h.

#define lis302dlAccelerometerSetFullScale (   devp,
  fs 
)    (devp)->vmt->acc_set_full_scale(devp, fs)

Changes the LIS302DLDriver accelerometer fullscale value.

Note
This function also rescale sensitivities and biases based on previous and next fullscale value.
A recalibration is highly suggested after calling this function.
Parameters
[in]devppointer to LIS302DLDriver.
[in]fsnew fullscale value.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
MSG_RESETotherwise.
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 547 of file lis302dl.h.

Typedef Documentation

Structure representing a LIS302DL driver.

Definition at line 269 of file lis302dl.h.

Enumeration Type Documentation

LIS302DL full scale.

Enumerator
LIS302DL_ACC_FS_2G 

Full scale ±2g.

LIS302DL_ACC_FS_8G 

Full scale ±8g.

Definition at line 274 of file lis302dl.h.

LIS302DL output data rate and bandwidth.

Enumerator
LIS302DL_ACC_ODR_100HZ 

ODR 100 Hz.

LIS302DL_ACC_ODR_400HZ 

ODR 400 Hz.

Definition at line 282 of file lis302dl.h.

LIS302DL high pass filtering.

Enumerator
LIS302DL_ACC_HP_DISABLED 

HP bypassed.

LIS302DL_ACC_HP_0 

HP cutoff 2Hz (ODR 100Hz) or 8Hz

LIS302DL_ACC_HP_1 

HP cutoff 1Hz or 4Hz

LIS302DL_ACC_HP_2 

HP cutoff 0.5Hz or 2Hz

LIS302DL_ACC_HP_3 

HP cutoff 0.25Hz or 1Hz

Definition at line 290 of file lis302dl.h.

Driver state machine possible states.

Enumerator
LIS302DL_UNINIT 

Not initialized.

LIS302DL_STOP 

Stopped.

LIS302DL_READY 

Ready.

Definition at line 301 of file lis302dl.h.

Function Documentation

static void lis302dlSPIReadRegister ( SPIDriver spip,
uint8_t  reg,
size_t  n,
uint8_t *  b 
)
static

Reads a generic register value using SPI.

Precondition
The SPI interface must be initialized and the driver started.
Parameters
[in]spippointer to the SPI interface
[in]regstarting register address
[in]nnumber of adjacent registers to write
[in]bpointer to a buffer.

Definition at line 59 of file lis302dl.c.

References spiReceive(), spiSelect(), spiSend(), and spiUnselect().

Referenced by acc_read_raw(), and acc_set_full_scale().

Here is the call graph for this function:

static void lis302dlSPIWriteRegister ( SPIDriver spip,
uint8_t  reg,
size_t  n,
uint8_t *  b 
)
static

Writes a value into a generic register using SPI.

Precondition
The SPI interface must be initialized and the driver started.
Parameters
[in]spippointer to the SPI interface
[in]regstarting register address
[in]nnumber of adjacent registers to write
[in]bpointer to a buffer of values.

Definition at line 78 of file lis302dl.c.

References spiSelect(), spiSend(), and spiUnselect().

Referenced by acc_set_full_scale(), lis302dlStart(), and lis302dlStop().

Here is the call graph for this function:

static size_t acc_get_axes_number ( void *  ip)
static

Return the number of axes of the BaseAccelerometer.

Parameters
[in]ippointer to BaseAccelerometer interface.
Returns
the number of axes.

Definition at line 96 of file lis302dl.c.

References LIS302DL_ACC_NUMBER_OF_AXES.

Referenced by acc_set_full_scale().

static msg_t acc_read_raw ( void *  ip,
int32_t  axes[] 
)
static

Retrieves raw data from the BaseAccelerometer.

Note
This data is retrieved from MEMS register without any algebraical manipulation.
The axes array must be at least the same size of the BaseAccelerometer axes number.
Parameters
[in]ippointer to BaseAccelerometer interface.
[out]axesa buffer which would be filled with raw data.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
MSG_RESETif one or more I2C errors occurred, the errors can be retrieved using i2cGetErrors().
MSG_TIMEOUTif a timeout occurred before operation end.

Definition at line 118 of file lis302dl.c.

References LIS302DL_ACC_NUMBER_OF_AXES, LIS302DL_READY, lis302dlSPIReadRegister(), MSG_OK, objGetInstance, osalDbgAssert, osalDbgCheck, SPI_READY, spiAcquireBus(), spiReleaseBus(), and spiStart().

Referenced by acc_read_cooked(), and acc_set_full_scale().

Here is the call graph for this function:

static msg_t acc_read_cooked ( void *  ip,
float  axes[] 
)
static

Retrieves cooked data from the BaseAccelerometer.

Note
This data is manipulated according to the formula cooked = (raw * sensitivity) - bias.
Final data is expressed as milli-G.
The axes array must be at least the same size of the BaseAccelerometer axes number.
Parameters
[in]ippointer to BaseAccelerometer interface.
[out]axesa buffer which would be filled with cooked data.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
MSG_RESETif one or more I2C errors occurred, the errors can be retrieved using i2cGetErrors().
MSG_TIMEOUTif a timeout occurred before operation end.

Definition at line 171 of file lis302dl.c.

References acc_read_raw(), LIS302DL_ACC_NUMBER_OF_AXES, LIS302DL_READY, objGetInstance, osalDbgAssert, and osalDbgCheck.

Referenced by acc_set_full_scale().

Here is the call graph for this function:

static msg_t acc_set_bias ( void *  ip,
float *  bp 
)
static

Set bias values for the BaseAccelerometer.

Note
Bias must be expressed as milli-G.
The bias buffer must be at least the same size of the BaseAccelerometer axes number.
Parameters
[in]ippointer to BaseAccelerometer interface.
[in]bpa buffer which contains biases.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.

Definition at line 204 of file lis302dl.c.

References LIS302DL_ACC_NUMBER_OF_AXES, LIS302DL_READY, MSG_OK, objGetInstance, osalDbgAssert, and osalDbgCheck.

Referenced by acc_set_full_scale().

static msg_t acc_reset_bias ( void *  ip)
static

Reset bias values for the BaseAccelerometer.

Note
Default biases value are obtained from device datasheet when available otherwise they are considered zero.
Parameters
[in]ippointer to BaseAccelerometer interface.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.

Definition at line 233 of file lis302dl.c.

References LIS302DL_ACC_NUMBER_OF_AXES, LIS302DL_READY, MSG_OK, objGetInstance, osalDbgAssert, and osalDbgCheck.

Referenced by acc_set_full_scale().

static msg_t acc_set_sensivity ( void *  ip,
float *  sp 
)
static

Set sensitivity values for the BaseAccelerometer.

Note
Sensitivity must be expressed as milli-G/LSB.
The sensitivity buffer must be at least the same size of the BaseAccelerometer axes number.
Parameters
[in]ippointer to BaseAccelerometer interface.
[in]spa buffer which contains sensitivities.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.

Definition at line 263 of file lis302dl.c.

References LIS302DL_ACC_NUMBER_OF_AXES, LIS302DL_READY, MSG_OK, objGetInstance, osalDbgAssert, and osalDbgCheck.

Referenced by acc_set_full_scale().

static msg_t acc_reset_sensivity ( void *  ip)
static

Reset sensitivity values for the BaseAccelerometer.

Note
Default sensitivities value are obtained from device datasheet.
Parameters
[in]ippointer to BaseAccelerometer interface.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
MSG_RESETotherwise.

Definition at line 292 of file lis302dl.c.

References FALSE, LIS302DL_ACC_FS_2G, LIS302DL_ACC_FS_8G, LIS302DL_ACC_NUMBER_OF_AXES, LIS302DL_READY, MSG_OK, MSG_RESET, objGetInstance, osalDbgAssert, and osalDbgCheck.

Referenced by acc_set_full_scale().

static msg_t acc_set_full_scale ( LIS302DLDriver devp,
lis302dl_acc_fs_t  fs 
)
static

Changes the LIS302DLDriver accelerometer fullscale value.

Note
This function also rescale sensitivities and biases based on previous and next fullscale value.
A recalibration is highly suggested after calling this function.
Parameters
[in]devppointer to LIS302DLDriver interface.
[in]fsnew fullscale value.
Returns
The operation status.
Return values
MSG_OKif the function succeeded.
MSG_RESETotherwise.

Definition at line 332 of file lis302dl.c.

References acc_get_axes_number(), acc_read_cooked(), acc_read_raw(), acc_reset_bias(), acc_reset_sensivity(), acc_set_bias(), acc_set_sensivity(), LIS302DL_ACC_FS_2G, LIS302DL_ACC_FS_8G, LIS302DL_ACC_NUMBER_OF_AXES, LIS302DL_READY, lis302dlSPIReadRegister(), lis302dlSPIWriteRegister(), MSG_RESET, osalDbgAssert, osalDbgCheck, SPI_READY, spiAcquireBus(), spiReleaseBus(), and spiStart().

Here is the call graph for this function:

void lis302dlObjectInit ( LIS302DLDriver devp)

Initializes an instance.

Parameters
[out]devppointer to the LIS302DLDriver object
Function Class:Initializer, this function just initializes an object and can be invoked before the kernel is initialized.

Definition at line 425 of file lis302dl.c.

References LIS302DLDriver::acc_if, LIS302DL_ACC_NUMBER_OF_AXES, LIS302DL_STOP, BaseAccelerometer::vmt, and LIS302DLDriver::vmt.

void lis302dlStart ( LIS302DLDriver devp,
const LIS302DLConfig config 
)

Configures and activates LIS302DL Complex Driver peripheral.

Parameters
[in]devppointer to the LIS302DLDriver object
[in]configpointer to the LIS302DLConfig object
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 444 of file lis302dl.c.

References SPIDriver::config, FALSE, LIS302DL_ACC_FS_2G, LIS302DL_ACC_FS_8G, LIS302DL_ACC_NUMBER_OF_AXES, LIS302DL_READY, LIS302DL_STOP, lis302dlSPIWriteRegister(), osalDbgAssert, osalDbgCheck, osalThreadSleepMilliseconds, spiAcquireBus(), LIS302DLConfig::spip, spiReleaseBus(), and spiStart().

Here is the call graph for this function:

void lis302dlStop ( LIS302DLDriver devp)

Deactivates the LIS302DL Complex Driver peripheral.

Parameters
[in]devppointer to the LIS302DLDriver object
Function Class:Normal API, this function can be invoked by regular system threads but not from within a lock zone.

Definition at line 528 of file lis302dl.c.

References LIS302DL_READY, LIS302DL_STOP, lis302dlSPIWriteRegister(), osalDbgAssert, osalDbgCheck, spiAcquireBus(), spiReleaseBus(), spiStart(), and spiStop().

Here is the call graph for this function: