upm
1.7.1
Sensor/Actuator repository for libmraa (v2.0.0)
|
Go to the source code of this file.
Data Structures | |
struct | _lsm303agr_context |
Functions | |
lsm303agr_context | lsm303agr_init (int bus, int acc_addr, int mag_addr) |
void | lsm303agr_close (lsm303agr_context dev) |
upm_result_t | lsm303agr_update (const lsm303agr_context dev) |
void | lsm303agr_get_magnetometer (const lsm303agr_context dev, float *x, float *y, float *z) |
void | lsm303agr_get_accelerometer (const lsm303agr_context dev, float *x, float *y, float *z) |
float | lsm303agr_get_temperature (const lsm303agr_context dev) |
upm_result_t | lsm303agr_set_full_scale (const lsm303agr_context dev, LSM303AGR_A_FS_T fs) |
upm_result_t | lsm303agr_devinit (const lsm303agr_context dev, LSM303AGR_POWER_MODE_T mode) |
upm_result_t | lsm303agr_set_power_mode (const lsm303agr_context dev, LSM303AGR_POWER_MODE_T mode) |
upm_result_t | lsm303agr_set_acc_odr (const lsm303agr_context dev, LSM303AGR_A_ODR_T odr) |
upm_result_t | lsm303agr_set_mag_odr (const lsm303agr_context dev, LSM303AGR_CFG_A_M_ODR_T odr) |
uint8_t | lsm303agr_get_acc_int1_config (const lsm303agr_context dev) |
uint8_t | lsm303agr_get_acc_int2_config (const lsm303agr_context dev) |
upm_result_t | lsm303agr_set_acc_int1_config (const lsm303agr_context dev, uint8_t bits) |
upm_result_t | lsm303agr_set_acc_int2_config (const lsm303agr_context dev, uint8_t bits) |
uint8_t | lsm303agr_get_mag_int_config (const lsm303agr_context dev) |
upm_result_t | lsm303agr_set_mag_int_config (const lsm303agr_context dev, uint8_t bits) |
uint8_t | lsm303agr_get_acc_int1_src (const lsm303agr_context dev) |
uint8_t | lsm303agr_get_acc_int2_src (const lsm303agr_context dev) |
uint8_t | lsm303agr_get_mag_int_src (const lsm303agr_context dev) |
upm_result_t | lsm303agr_install_isr (const lsm303agr_context dev, LSM303AGR_INTERRUPT_PINS_T intr, int gpio, mraa_gpio_edge_t level, void(*isr)(void *), void *arg) |
void | lsm303agr_uninstall_isr (const lsm303agr_context dev, LSM303AGR_INTERRUPT_PINS_T intr) |
uint8_t | lsm303agr_read_reg (const lsm303agr_context dev, uint8_t reg) |
int | lsm303agr_read_regs (const lsm303agr_context dev, uint8_t reg, uint8_t *buffer, int len) |
upm_result_t | lsm303agr_write_reg (const lsm303agr_context dev, uint8_t reg, uint8_t val) |
Typedefs | |
typedef struct _lsm303agr_context * | lsm303agr_context |
lsm303agr_context lsm303agr_init | ( | int | bus, |
int | acc_addr, | ||
int | mag_addr | ||
) |
LSM303AGR initialization
This driver can only support I2C. SPI requires support for 3-wire SPI which we cannot currently handle. Only the basic capabilities of the device are supported, however there is a full register map defined (lsm303agr_defs.h), and with access to the bus read/write functions, any desired additional functionality can be implemented.
bus | I2C bus to use |
acc_addr | The I2C address of the accelerometer. Use -1 if you do not wish to use the accelerometer. |
mag_addr | The I2C address of the magnetometer. Use -1 if you do not wish to use the magnetometer. |
void lsm303agr_close | ( | lsm303agr_context | dev | ) |
LSM303AGR Destructor
dev | The device context |
upm_result_t lsm303agr_update | ( | const lsm303agr_context | dev | ) |
Update the internal stored values from sensor data
dev | The device context |
void lsm303agr_get_magnetometer | ( | const lsm303agr_context | dev, |
float * | x, | ||
float * | y, | ||
float * | z | ||
) |
Return magnetometer data in micro-Teslas (uT). update() must have been called prior to calling this function.
dev | The device context |
x | Pointer to a floating point value that will have the current x component placed into it |
y | Pointer to a floating point value that will have the current y component placed into it |
z | Pointer to a floating point value that will have the current z component placed into it |
void lsm303agr_get_accelerometer | ( | const lsm303agr_context | dev, |
float * | x, | ||
float * | y, | ||
float * | z | ||
) |
Return accelerometer data in gravities. update() must have been called prior to calling this function.
dev | The device context |
x | Pointer to a floating point value that will have the current x component placed into it |
y | Pointer to a floating point value that will have the current y component placed into it |
z | Pointer to a floating point value that will have the current z component placed into it |
float lsm303agr_get_temperature | ( | const lsm303agr_context | dev | ) |
Return temperature data in degrees Celsius.. update() must have been called prior to calling this function.
dev | The device context |
upm_result_t lsm303agr_set_full_scale | ( | const lsm303agr_context | dev, |
LSM303AGR_A_FS_T | fs | ||
) |
Set the full scale (sensitivity) value for the accelerometer. This device supports 2G, 4G, 8G, and 16G full scale modes.
dev | The device context |
fs | One of the LSM303AGR_A_FS_T values |
upm_result_t lsm303agr_devinit | ( | const lsm303agr_context | dev, |
LSM303AGR_POWER_MODE_T | mode | ||
) |
Initialize the device and start operation. This function is called from the constructor so it will not typically need to be called by a user unless the device is reset. It will initialize the accelerometer and magnetometer (if enabled) to certain default running modes.
For the accelerometer, the full scale will be set to 2G, mode continuous, all axes enabled, BDU enabled, temperature measurement enabled, and an output data rate (ODR) of 100Hz with the power mode set at high resolution.
For the magnetometer, temperature compensation will be enabled, mode continuous, and an output data rate of 10Hz with the power mode set at high resolution.
dev | The device context |
mode | One of the LSM303AGR_POWER_MODE_T values. This parameter is passed to a call to lsm303agr_set_power_mode() and will set the appropriate mode for both the accelerometer and magnetometer. The default set by the constructor is LSM303AGR_POWER_HIGH_RESOLUTION. |
upm_result_t lsm303agr_set_power_mode | ( | const lsm303agr_context | dev, |
LSM303AGR_POWER_MODE_T | mode | ||
) |
Set an operating power mode. There are 3 modes available: low power, normal, and high resolution.
dev | The device context |
mode | One of the LSM303AGR_POWER_MODE_T values. The default set at initialization time is LSM303AGR_POWER_HIGH_RESOLUTION. |
upm_result_t lsm303agr_set_acc_odr | ( | const lsm303agr_context | dev, |
LSM303AGR_A_ODR_T | odr | ||
) |
Set the accelerometer (acc) output data rate (odr)
dev | The device context |
odr | One of the LSM303AGR_A_ODR_T values. The default set at initialization time is LSM303AGR_A_ODR_100HZ. |
upm_result_t lsm303agr_set_mag_odr | ( | const lsm303agr_context | dev, |
LSM303AGR_CFG_A_M_ODR_T | odr | ||
) |
Set the magnetometer (mag) output data rate (odr)
dev | The device context |
odr | One of the LSM303AGR_CFG_A_M_ODR_T values. The default set at initialization time is LSM303AGR_CFG_A_M_ODR_10HZ. |
uint8_t lsm303agr_get_acc_int1_config | ( | const lsm303agr_context | dev | ) |
Return the accelerometer (acc) interrupt 1 config register. This register allows you to enable various interrupt conditions. See the datasheet for details.
dev | The device context |
uint8_t lsm303agr_get_acc_int2_config | ( | const lsm303agr_context | dev | ) |
Return the accelerometer (acc) interrupt 2 config register. This register allows you to enable various interrupt conditions. See the datasheet for details.
dev | The device context |
upm_result_t lsm303agr_set_acc_int1_config | ( | const lsm303agr_context | dev, |
uint8_t | bits | ||
) |
Set the accelerometer (acc) interrupt 1 config register. See the datasheet for details.
dev | The device context |
bits | A bitmask of LSM303AGR_INT_CFG_A_BITS_T bits |
upm_result_t lsm303agr_set_acc_int2_config | ( | const lsm303agr_context | dev, |
uint8_t | bits | ||
) |
Set the accelerometer (acc) interrupt 2 config register. See the datasheet for details.
dev | The device context |
bits | A bitmask of LSM303AGR_INT_CFG_A_BITS_T bits |
uint8_t lsm303agr_get_mag_int_config | ( | const lsm303agr_context | dev | ) |
Return the magnetometer (mag) interrupt config register. See the datasheet for details.
dev | The device context |
upm_result_t lsm303agr_set_mag_int_config | ( | const lsm303agr_context | dev, |
uint8_t | bits | ||
) |
Set the magnetometer (mag) interrupt config register. See the datasheet for details.
dev | The device context |
bits | A bitmask of LSM303AGR_INT_CTRL_REG_M_BITS_T bits |
uint8_t lsm303agr_get_acc_int1_src | ( | const lsm303agr_context | dev | ) |
Return the accelerometer (acc) interrupt 1 source register. This register indicates which interrupts have been triggered. See the datasheet for details.
dev | The device context |
uint8_t lsm303agr_get_acc_int2_src | ( | const lsm303agr_context | dev | ) |
Return the accelerometer (acc) interrupt 2 source register. This register indicates which interrupts have been triggered. See the datasheet for details.
dev | The device context |
uint8_t lsm303agr_get_mag_int_src | ( | const lsm303agr_context | dev | ) |
Return the magnetometer (mag) interrupt source register. This register indicates which interrupts have been triggered. See the datasheet for details.
dev | The device context |
upm_result_t lsm303agr_install_isr | ( | const lsm303agr_context | dev, |
LSM303AGR_INTERRUPT_PINS_T | intr, | ||
int | gpio, | ||
mraa_gpio_edge_t | level, | ||
void(*)(void *) | isr, | ||
void * | arg | ||
) |
Install an interrupt handler
dev | The device context |
intr | One of the LSM303AGR_INTERRUPT_PINS_T values specifying which interrupt pin you are installing |
gpio | GPIO pin to use as interrupt pin |
level | The interrupt trigger level (one of the mraa_gpio_edge_t values). Make sure that you have configured the interrupt pin properly for whatever level you choose. |
isr | The interrupt handler, accepting a void * argument |
arg | The argument to pass the the interrupt handler |
void lsm303agr_uninstall_isr | ( | const lsm303agr_context | dev, |
LSM303AGR_INTERRUPT_PINS_T | intr | ||
) |
Uninstall a previously installed interrupt handler
dev | The device context |
intr | One of the LSM303AGR_INTERRUPT_PINS_T values specifying which interrupt pin you are removing |
uint8_t lsm303agr_read_reg | ( | const lsm303agr_context | dev, |
uint8_t | reg | ||
) |
Read a register.
dev | The device context |
reg | The register to read |
int lsm303agr_read_regs | ( | const lsm303agr_context | dev, |
uint8_t | reg, | ||
uint8_t * | buffer, | ||
int | len | ||
) |
Read contiguous registers into a buffer
dev | The device context |
buffer | The buffer to store the results |
len | The number of registers to read |
upm_result_t lsm303agr_write_reg | ( | const lsm303agr_context | dev, |
uint8_t | reg, | ||
uint8_t | val | ||
) |
Write to a register
dev | The device context |
reg | The register to write to |
val | The value to write |
typedef struct _lsm303agr_context * lsm303agr_context |
Device context