c

Dependencies:   LinkedList

Files at this revision

API Documentation at this revision

Comitter:
MbedPowa
Date:
Mon Jan 21 22:56:24 2019 +0000
Parent:
14:4760669f5f5e
Commit message:
Cool

Changed in this revision

LSM9DS1_Types.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LSM9DS1_Types.h	Mon Jan 21 22:56:24 2019 +0000
@@ -0,0 +1,251 @@
+/******************************************************************************
+LSM9DS1_Types.h
+SFE_LSM9DS1 Library - LSM9DS1 Types and Enumerations
+Jim Lindblom @ SparkFun Electronics
+Original Creation Date: April 21, 2015
+https://github.com/sparkfun/LSM9DS1_Breakout
+
+This file defines all types and enumerations used by the LSM9DS1 class.
+
+Development environment specifics:
+    IDE: Arduino 1.6.0
+    Hardware Platform: Arduino Uno
+    LSM9DS1 Breakout Version: 1.0
+
+This code is beerware; if you see me (or any other SparkFun employee) at the
+local, and you've found our code helpful, please buy us a round!
+
+Distributed as-is; no warranty is given.
+******************************************************************************/
+
+#ifndef __LSM9DS1_Types_H__
+#define __LSM9DS1_Types_H__
+
+#include "LSM9DS1_Registers.h"
+
+// The LSM9DS1 functions over both I2C or SPI. This library supports both.
+// But the interface mode used must be sent to the LSM9DS1 constructor. Use
+// one of these two as the first parameter of the constructor.
+enum interface_mode
+{
+    IMU_MODE_SPI,
+    IMU_MODE_I2C,
+};
+
+// accel_scale defines all possible FSR's of the accelerometer:
+enum accel_scale
+{
+    A_SCALE_2G, // 00:  2g
+    A_SCALE_16G,// 01:  16g
+    A_SCALE_4G, // 10:  4g
+    A_SCALE_8G  // 11:  8g
+};
+
+// gyro_scale defines the possible full-scale ranges of the gyroscope:
+enum gyro_scale
+{
+    G_SCALE_245DPS,     // 00:  245 degrees per second
+    G_SCALE_500DPS,     // 01:  500 dps
+    G_SCALE_2000DPS,    // 11:  2000 dps
+};
+
+// mag_scale defines all possible FSR's of the magnetometer:
+enum mag_scale
+{
+    M_SCALE_4GS,    // 00:  4Gs
+    M_SCALE_8GS,    // 01:  8Gs
+    M_SCALE_12GS,   // 10:  12Gs
+    M_SCALE_16GS,   // 11:  16Gs
+};
+
+// gyro_odr defines all possible data rate/bandwidth combos of the gyro:
+enum gyro_odr
+{
+    //! TODO 
+    G_ODR_PD,   // Power down (0)
+    G_ODR_149,  // 14.9 Hz (1)
+    G_ODR_595,  // 59.5 Hz (2)
+    G_ODR_119,  // 119 Hz (3)
+    G_ODR_238,  // 238 Hz (4)
+    G_ODR_476,  // 476 Hz (5)
+    G_ODR_952   // 952 Hz (6)
+};
+// accel_oder defines all possible output data rates of the accelerometer:
+enum accel_odr
+{
+    XL_POWER_DOWN,  // Power-down mode (0x0)
+    XL_ODR_10,      // 10 Hz (0x1)
+    XL_ODR_50,      // 50 Hz (0x02)
+    XL_ODR_119,     // 119 Hz (0x3)
+    XL_ODR_238,     // 238 Hz (0x4)
+    XL_ODR_476,     // 476 Hz (0x5)
+    XL_ODR_952      // 952 Hz (0x6)
+};
+
+// accel_abw defines all possible anti-aliasing filter rates of the accelerometer:
+enum accel_abw
+{
+    A_ABW_408,      // 408 Hz (0x0)
+    A_ABW_211,      // 211 Hz (0x1)
+    A_ABW_105,      // 105 Hz (0x2)
+    A_ABW_50,       //  50 Hz (0x3)
+};
+
+
+// mag_odr defines all possible output data rates of the magnetometer:
+enum mag_odr
+{
+    M_ODR_0625, // 0.625 Hz (0)
+    M_ODR_125,  // 1.25 Hz (1)
+    M_ODR_250,  // 2.5 Hz (2)
+    M_ODR_5,    // 5 Hz (3)
+    M_ODR_10,   // 10 Hz (4)
+    M_ODR_20,   // 20 Hz (5)
+    M_ODR_40,   // 40 Hz (6)
+    M_ODR_80    // 80 Hz (7)
+};
+
+enum interrupt_select
+{
+    XG_INT1 = INT1_CTRL,
+    XG_INT2 = INT2_CTRL
+};
+
+enum interrupt_generators
+{
+    INT_DRDY_XL = (1<<0),    // Accelerometer data ready (INT1 & INT2)
+    INT_DRDY_G = (1<<1),     // Gyroscope data ready (INT1 & INT2)
+    INT1_BOOT = (1<<2),  // Boot status (INT1)
+    INT2_DRDY_TEMP = (1<<2),// Temp data ready (INT2)
+    INT_FTH = (1<<3),        // FIFO threshold interrupt (INT1 & INT2)
+    INT_OVR = (1<<4),        // Overrun interrupt (INT1 & INT2)
+    INT_FSS5 = (1<<5),       // FSS5 interrupt (INT1 & INT2)
+    INT_IG_XL = (1<<6),  // Accel interrupt generator (INT1)
+    INT1_IG_G = (1<<7),  // Gyro interrupt enable (INT1)
+    INT2_INACT = (1<<7),     // Inactivity interrupt output (INT2)
+};  
+
+enum accel_interrupt_generator
+{
+    XLIE_XL = (1<<0),
+    XHIE_XL = (1<<1),
+    YLIE_XL = (1<<2),
+    YHIE_XL = (1<<3),
+    ZLIE_XL = (1<<4),
+    ZHIE_XL = (1<<5),
+    GEN_6D = (1<<6)
+};
+
+enum gyro_interrupt_generator
+{
+    XLIE_G = (1<<0),
+    XHIE_G = (1<<1),
+    YLIE_G = (1<<2),
+    YHIE_G = (1<<3),
+    ZLIE_G = (1<<4),
+    ZHIE_G = (1<<5)
+};
+
+enum mag_interrupt_generator
+{
+    ZIEN = (1<<5),
+    YIEN = (1<<6),
+    XIEN = (1<<7)
+};
+
+enum h_lactive
+{
+    INT_ACTIVE_HIGH,
+    INT_ACTIVE_LOW
+};
+
+enum pp_od
+{
+    INT_PUSH_PULL,
+    INT_OPEN_DRAIN
+};
+
+enum fifoMode_type
+{
+    FIFO_OFF = 0,
+    FIFO_THS = 1,
+    FIFO_CONT_TRIGGER = 3,
+    FIFO_OFF_TRIGGER = 4,
+    FIFO_CONT = 5
+};
+
+struct gyroSettings
+{
+    // Gyroscope settings:
+    uint8_t enabled;
+    uint16_t scale; // Changed this to 16-bit
+    uint8_t sampleRate;
+    // New gyro stuff:
+    uint8_t bandwidth;
+    uint8_t lowPowerEnable;
+    uint8_t HPFEnable;
+    uint8_t HPFCutoff;
+    uint8_t flipX;
+    uint8_t flipY;
+    uint8_t flipZ;
+    uint8_t orientation;
+    uint8_t enableX;
+    uint8_t enableY;
+    uint8_t enableZ;
+    uint8_t latchInterrupt;
+};
+
+struct deviceSettings
+{
+    uint8_t commInterface; // Can be I2C, SPI 4-wire or SPI 3-wire
+    uint8_t agAddress;  // I2C address or SPI CS pin
+    uint8_t mAddress;   // I2C address or SPI CS pin
+};
+
+struct accelSettings
+{
+    // Accelerometer settings:
+    uint8_t enabled;
+    uint8_t scale;
+    uint8_t sampleRate;
+    // New accel stuff:
+    uint8_t enableX;
+    uint8_t enableY;
+    uint8_t enableZ;
+    int8_t  bandwidth;
+    uint8_t highResEnable;
+    uint8_t highResBandwidth;
+};
+
+struct magSettings
+{
+    // Magnetometer settings:
+    uint8_t enabled;
+    uint8_t scale;
+    uint8_t sampleRate;
+    // New mag stuff:
+    uint8_t tempCompensationEnable;
+    uint8_t XYPerformance;
+    uint8_t ZPerformance;
+    uint8_t lowPowerEnable;
+    uint8_t operatingMode;
+};
+
+struct temperatureSettings
+{
+    // Temperature settings
+    uint8_t enabled;
+};
+
+struct IMUSettings
+{
+    deviceSettings device;
+    
+    gyroSettings gyro;
+    accelSettings accel;
+    magSettings mag;
+    
+    temperatureSettings temp;
+};
+
+#endif
\ No newline at end of file