upm  1.5.0
Sensor/Actuator repository for libmraa (v1.8.0)
Data Structures | Functions | Typedefs
Include dependency graph for lis2ds12.h:

API Description

/*
* Author: Jon Trulson <jtrulson@ics.com>
* Copyright (c) 2017 Intel Corporation.
*
* The MIT License
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include "upm_utilities.h"
#include "lis2ds12.h"
bool shouldRun = true;
void sig_handler(int signo)
{
if (signo == SIGINT)
shouldRun = false;
}
int main(int argc, char **argv)
{
signal(SIGINT, sig_handler);
#if defined(CONFIG_BOARD_ARDUINO_101_SSS)
// ARDUINO_101_SSS (ARC core) must use I2C
// Instantiate a LIS2DS12 instance using default i2c bus and address
lis2ds12_context sensor = lis2ds12_init(LIS2DS12_DEFAULT_I2C_BUS,
LIS2DS12_DEFAULT_I2C_ADDR, -1);
#elif defined(CONFIG_BOARD_ARDUINO_101)
// ARDUINO_101 (Quark core) must use SPI
// Instantiate a LIS2DS12 instance using default SPI bus and pin 10 as CS
lis2ds12_context sensor = lis2ds12_init(LIS2DS12_DEFAULT_SPI_BUS,
-1, 10);
#else
// everything else use I2C by default
// Instantiate a LIS2DS12 instance using default i2c bus and address
lis2ds12_context sensor = lis2ds12_init(LIS2DS12_DEFAULT_I2C_BUS,
LIS2DS12_DEFAULT_I2C_ADDR, -1);
#endif
if (!sensor)
{
printf("lis2ds12_init() failed.\n");
return 1;
}
// now output data every 250 milliseconds
while (shouldRun)
{
float x, y, z;
if (lis2ds12_update(sensor))
{
printf("lis2ds12_update() failed\n");
lis2ds12_close(sensor);
return 1;
}
lis2ds12_get_accelerometer(sensor, &x, &y, &z);
printf("Acceleration x: %f y: %f z: %f g\n",
x, y, z);
printf("Compensation Temperature: %f C\n\n",
upm_delay_ms(250);
}
printf("Exiting...\n");
lis2ds12_close(sensor);
return 0;
}

Go to the source code of this file.

Data Structures

struct  _lis2ds12_context
 

Functions

lis2ds12_context lis2ds12_init (int bus, int addr, int cs)
 
void lis2ds12_close (lis2ds12_context dev)
 
upm_result_t lis2ds12_update (const lis2ds12_context dev)
 
uint8_t lis2ds12_get_chip_id (const lis2ds12_context dev)
 
upm_result_t lis2ds12_devinit (const lis2ds12_context dev, LIS2DS12_ODR_T odr, LIS2DS12_FS_T fs)
 
upm_result_t lis2ds12_set_odr (const lis2ds12_context dev, LIS2DS12_ODR_T odr)
 
upm_result_t lis2ds12_set_full_scale (const lis2ds12_context dev, LIS2DS12_FS_T fs)
 
void lis2ds12_get_accelerometer (const lis2ds12_context dev, float *x, float *y, float *z)
 
float lis2ds12_get_temperature (const lis2ds12_context dev)
 
upm_result_t lis2ds12_reset (const lis2ds12_context dev)
 
upm_result_t lis2ds12_enable_hp_filtering (const lis2ds12_context dev, bool filter)
 
upm_result_t lis2ds12_enable_interrupt_latching (const lis2ds12_context dev, bool latch)
 
upm_result_t lis2ds12_set_interrupt_active_high (const lis2ds12_context dev, bool high)
 
upm_result_t lis2ds12_set_interrupt_push_pull (const lis2ds12_context dev, bool pp)
 
upm_result_t lis2ds12_set_int1_config (const lis2ds12_context dev, uint8_t cfg)
 
upm_result_t lis2ds12_set_int2_config (const lis2ds12_context dev, uint8_t cfg)
 
uint8_t lis2ds12_get_status (const lis2ds12_context dev)
 
upm_result_t lis2ds12_install_isr (const lis2ds12_context dev, LIS2DS12_INTERRUPT_PINS_T intr, int gpio, mraa_gpio_edge_t level, void(*isr)(void *), void *arg)
 
void lis2ds12_uninstall_isr (const lis2ds12_context dev, LIS2DS12_INTERRUPT_PINS_T intr)
 
uint8_t lis2ds12_read_reg (const lis2ds12_context dev, uint8_t reg)
 
int lis2ds12_read_regs (const lis2ds12_context dev, uint8_t reg, uint8_t *buffer, int len)
 
upm_result_t lis2ds12_write_reg (const lis2ds12_context dev, uint8_t reg, uint8_t val)
 

Typedefs

typedef struct _lis2ds12_contextlis2ds12_context
 

Function Documentation

lis2ds12_context lis2ds12_init ( int  bus,
int  addr,
int  cs 
)

LIS2DS12 initialization.

This device can support both I2C and SPI. For SPI, set the addr to -1, and specify a positive integer representing the Chip Select (CS) pin for the cs argument. If you are using a hardware CS pin (like Intel Edison with Arduino breakout), then you can connect the proper pin to the hardware CS pin on your MCU and supply -1 for cs.

Parameters
busI2C or SPI bus to use
addrThe address for this device, or -1 for SPI
csThe gpio pin to use for the SPI Chip Select. Use -1 for I2C or for SPI with a hardware controlled pin.
Returns
The device context, or NULL on error

Here is the call graph for this function:

void lis2ds12_close ( lis2ds12_context  dev)

LIS2DS12 Destructor

Parameters
devThe device context

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_update ( const lis2ds12_context  dev)

Update the internal stored values from sensor data

Parameters
devThe device context
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

uint8_t lis2ds12_get_chip_id ( const lis2ds12_context  dev)

Return the chip ID

Parameters
devThe device context
Returns
The chip ID (LIS2DS12_CHIPID)

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_devinit ( const lis2ds12_context  dev,
LIS2DS12_ODR_T  odr,
LIS2DS12_FS_T  fs 
)

Initialize the device and start operation. This function is called from lis2ds12_init(), so it will not need to be called by a user unless the device is reset.

Parameters
devThe device context
odrOne of the LIS2DS12_ODR_T values
fsOne of the LIS2DS12_FS_T values
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_set_odr ( const lis2ds12_context  dev,
LIS2DS12_ODR_T  odr 
)

Set the output data rate (ODR) of the device

Parameters
devThe device context
odrOne of the LIS2DS12_ODR_T values
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_set_full_scale ( const lis2ds12_context  dev,
LIS2DS12_FS_T  fs 
)

Set the full scale (FS) of the device. This device supports a full scale of 2, 4, 8, and 16G.

Parameters
devThe device context
fsOne of the LIS2DS12_FS_T values
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

void lis2ds12_get_accelerometer ( const lis2ds12_context  dev,
float *  x,
float *  y,
float *  z 
)

Return accelerometer data gravities (g). lis2ds12_update() must have been called prior to calling this method.

Parameters
devThe device context
xPointer to a floating point value that will have the current x component placed into it
yPointer to a floating point value that will have the current y component placed into it
zPointer to a floating point value that will have the current z component placed into it

Here is the caller graph for this function:

float lis2ds12_get_temperature ( const lis2ds12_context  dev)

Return the current measured temperature. Note, this is not ambient temperature. lis2ds12_update() must have been called prior to calling this method.

Parameters
devThe device context
Returns
The temperature in degrees Celsius

Here is the caller graph for this function:

upm_result_t lis2ds12_reset ( const lis2ds12_context  dev)

Reset the device as if during a power on reset. All configured values are lost when this happens. You should call lis2ds12_devinit() afterwards, or at least perform the same initialization lis2ds12_devinit() does before continuing.

Parameters
devThe device context
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_enable_hp_filtering ( const lis2ds12_context  dev,
bool  filter 
)

Enable high pass filtering of the accelerometer axis data. lis2ds12_devinit() disables this by default. See the datasheet for details.

Parameters
devThe device context
filtertrue to enable filtering, false to disable
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_enable_interrupt_latching ( const lis2ds12_context  dev,
bool  latch 
)

Enable or disable interrupt latching. If latching is disabled, pulsed is enabled. See the datasheet for details.

Parameters
devThe device context
latchtrue to enable latching, false to disable
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_set_interrupt_active_high ( const lis2ds12_context  dev,
bool  high 
)

Indicate whether the interrupt should be active high (default) or active low. See the datasheet for details.

Parameters
devThe device context
hightrue for active high, false for active low
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_set_interrupt_push_pull ( const lis2ds12_context  dev,
bool  pp 
)

Indicate whether interrupts are push-pull (default) or open drain. See the datasheet for details.

Parameters
devThe device context
pptrue for push-pull, false for open-drain
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_set_int1_config ( const lis2ds12_context  dev,
uint8_t  cfg 
)

Set interrupt 1 configuration. See the datasheet for details.

Parameters
devThe device context
cfgA bitmask of values from LIS2DS12_CTRL4_BITS_T
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_set_int2_config ( const lis2ds12_context  dev,
uint8_t  cfg 
)

Set interrupt 2 configuration. See the datasheet for details.

Parameters
devThe device context
cfgA bitmask of values from LIS2DS12_CTRL5_BITS_T
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

uint8_t lis2ds12_get_status ( const lis2ds12_context  dev)

Return the contents of the status register

Parameters
devThe device context
Returns
A bitmask of values from LIS2DS12_STATUS_BITS_T

Here is the call graph for this function:

Here is the caller graph for this function:

upm_result_t lis2ds12_install_isr ( const lis2ds12_context  dev,
LIS2DS12_INTERRUPT_PINS_T  intr,
int  gpio,
mraa_gpio_edge_t  level,
void(*)(void *)  isr,
void *  arg 
)

Install an interrupt handler

Parameters
devThe device context
intrOne of the LIS2DS12_INTERRUPT_PINS_T values specifying which interrupt pin you are installing
gpioGPIO pin to use as interrupt pin
levelThe interrupt trigger level (one of mraa_gpio_edge_t values). Make sure that you have configured the interrupt pin properly for whatever level you choose.
isrThe interrupt handler, accepting a void * argument
argThe argument to pass the the interrupt handler
Returns
UPM result

Here is the call graph for this function:

Here is the caller graph for this function:

void lis2ds12_uninstall_isr ( const lis2ds12_context  dev,
LIS2DS12_INTERRUPT_PINS_T  intr 
)

Uninstall a previously installed interrupt handler

Parameters
devThe device context
intrOne of the LIS2DS12_INTERRUPT_PINS_T values specifying which interrupt pin you are removing

Here is the caller graph for this function:

uint8_t lis2ds12_read_reg ( const lis2ds12_context  dev,
uint8_t  reg 
)

Read a register

Parameters
devThe device context
regThe register to read
Returns
The value of the register

Here is the caller graph for this function:

int lis2ds12_read_regs ( const lis2ds12_context  dev,
uint8_t  reg,
uint8_t *  buffer,
int  len 
)

Read contiguous registers into a buffer

Parameters
devThe device context
regThe register to start the read from
bufferThe buffer to store the results
lenThe number of registers to read
Returns
The number of bytes read, or -1 on error

Here is the caller graph for this function:

upm_result_t lis2ds12_write_reg ( const lis2ds12_context  dev,
uint8_t  reg,
uint8_t  val 
)

Write to a register

Parameters
devThe device context
regThe register to write to
valThe value to write
Returns
UPM result

Here is the caller graph for this function:

Typedef Documentation

Device context