summaryrefslogtreecommitdiff
path: root/peripheral/libupm/src/lsm303d/lsm303d.h
diff options
context:
space:
mode:
Diffstat (limited to 'peripheral/libupm/src/lsm303d/lsm303d.h')
-rw-r--r--peripheral/libupm/src/lsm303d/lsm303d.h226
1 files changed, 0 insertions, 226 deletions
diff --git a/peripheral/libupm/src/lsm303d/lsm303d.h b/peripheral/libupm/src/lsm303d/lsm303d.h
deleted file mode 100644
index 79d3204..0000000
--- a/peripheral/libupm/src/lsm303d/lsm303d.h
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Author: Brendan Le Foll<brendan.le.foll@intel.com>
- * Copyright (c) 2014 Intel Corporation.
- *
- * Code based on LSM303DLH sample by Jim Lindblom SparkFun Electronics
- * and the CompensatedCompass.ino by Frankie Chu from SeedStudio
- *
- * Further modifications to port to the LSM303d by <bruce.j.beare@intel.com>
- *
- * 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.
- */
-#pragma once
-
-#include <string.h>
-#include <mraa/i2c.hpp>
-#include <math.h>
-
-namespace upm {
-/**
- * @brief LSM303d Accelerometer/Compass library
- * @defgroup lsm303d libupm-lsm303d
- * @ingroup seeed adafruit i2c accelerometer compass
- */
-
-/**
- * @library lsm303d
- * @sensor lsm303d
- * @comname LSM303d Accelerometer & Compass
- * @altname Grove 6-Axis Accelerometer & Compass
- * @type accelerometer compass
- * @man seeed adafruit
- * @web http://www.seeedstudio.com/wiki/Grove_-_6-Axis_Accelerometer%26Compass
- * @con i2c
- *
- * @brief API for the LSM303d Accelerometer & Compass
- *
- * This module defines the LSM303d 3-axis magnetometer/3-axis accelerometer.
- * This module was tested with the Seeed Studio* Grove 6-Axis Accelerometer & Compass
- * version 2.0 module used over I2C. The magnometer and acceleromter are accessed
- * at two seperate I2C addresses.
- *
- * @image html lsm303d.jpeg
- * @snippet lsm303d.cxx Interesting
- */
-class LSM303d {
- public:
-
- /* Address definitions for the grove 6DOF v2.0 */
- typedef enum {
- LSM303d_ADDR = 0x1E
- } GROVE_6DOF_ADDRS_T;
-
- typedef enum {
- LM303D_SCALE_2G = 2,
- LM303D_SCALE_4G = 4,
- LM303D_SCALE_6G = 6,
- LM303D_SCALE_8G = 8,
- LM303D_SCALE_16G = 16
- } LSM303D_SCALE_T;
-
- typedef enum {
- X = 0,
- Y = 1,
- Z = 2
- } XYZ_T;
-
- /**
- * Instantiates an LSM303d object
- *
- * @param i2c bus
- * @param addr Magnetometer
- * @param addr Accelerometer
- */
- LSM303d (int bus,
- int addr=LSM303d_ADDR,
- int accScale=LM303D_SCALE_4G);
-
- /**
- * LSM303d object destructor
- * where is no more need for this here - I2c connection will be stopped
- * automatically when m_i2c variable will go out of scope
- * ~LSM303d ();
- **/
-
- /**
- * Gets the current heading; headings <0 indicate an error has occurred
- *
- * @return float
- */
- float getHeading();
-
- /**
- * Gets the coordinates in the XYZ order
- */
- mraa::Result getCoordinates();
-
- /**
- * Gets accelerometer values
- * Should be called before other "get" functions for acceleration
- */
- mraa::Result getAcceleration();
-
- /**
- * Gets raw coordinate data; it is updated when getCoordinates() is called
- */
- int16_t* getRawCoorData();
-
- /**
- * Gets the X component of the coordinates data
- */
- int16_t getCoorX();
-
- /**
- * Gets the Y component of the coordinates data
- */
- int16_t getCoorY();
-
- /**
- * Gets the Z component of the coordinates data
- */
- int16_t getCoorZ();
-
- /**
- * Gets raw accelerometer data; it is updated when getAcceleration() is called
- */
- int16_t* getRawAccelData();
-
- /**
- * Gets the X component of the acceleration data
- */
- int16_t getAccelX();
-
- /**
- * Gets the Y component of the acceleration data
- */
- int16_t getAccelY();
-
- /**
- * Gets the Z component of the acceleration data
- */
- int16_t getAccelZ();
-
- private:
-
- /* LSM303d Register definitions */
- typedef enum {
- STATUS_M = 0x7,
- OUT_X_L_M = 0x8,
- OUT_X_H_M = 0x9,
- OUT_Y_L_M = 0xA,
- OUT_Y_H_M = 0xB,
- OUT_Z_L_M = 0xC,
- OUT_Z_H_M = 0xD,
-
- CTRL_REG0 = 0x1f,
- CTRL_REG1 = 0x20,
- CTRL_REG2 = 0x21,
- CTRL_REG3 = 0x22,
- CTRL_REG4 = 0x23,
- CTRL_REG5 = 0x24,
- CTRL_REG6 = 0x25,
- CTRL_REG7 = 0x26,
-
- STATUS_REGA = 0x27,
-
- OUT_X_L_A = 0x28,
- OUT_X_H_A = 0x29,
- OUT_Y_L_A = 0x2A,
- OUT_Y_H_A = 0x2B,
- OUT_Z_L_A = 0x2C,
- OUT_Z_H_A = 0x2D,
-
- FIFO_CTRL = 0x2E,
- FIFO_SRC = 0x2F,
-
- IG_CFG1 = 0x30,
- IG_SRC1 = 0x31,
- IG_THS1 = 0x32,
- IG_DUR1 = 0x33,
-
- IG_CFG2 = 0x34,
- IG_SRC2 = 0x35,
- IG_THS2 = 0x36,
- IG_DUR2 = 0x37,
-
- CLICK_CFG = 0x38,
- CLICK_SRC = 0x39,
- CLICK_THS = 0x3A,
-
- TIME_LIMIT = 0x3B,
- TIME_LATEN = 0x3C,
- TIME_WINDO = 0x3D,
-
- ACT_THS = 0x3E,
- ACT_DUR = 0x3F,
- } LSM303d_REGS_T;
-
- int writeThenRead(uint8_t reg);
- mraa::Result setRegisterSafe(uint8_t slave, uint8_t sregister, uint8_t data);
-
- mraa::I2c m_i2c;
- int m_addr;
-
- uint8_t buf[6];
- int16_t coor[3];
- int16_t accel[3];
-};
-
-}