alarm system

Dependencies:   mbed xbee_lib

Fork of rtos_mutex by mbed official

Committer:
sreddy47
Date:
Fri Apr 29 06:59:56 2016 +0000
Revision:
5:802a7c5a4b27
alarm;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sreddy47 5:802a7c5a4b27 1 /******************************************************************************
sreddy47 5:802a7c5a4b27 2 LSM9DS1_Types.h
sreddy47 5:802a7c5a4b27 3 SFE_LSM9DS1 Library - LSM9DS1 Types and Enumerations
sreddy47 5:802a7c5a4b27 4 Jim Lindblom @ SparkFun Electronics
sreddy47 5:802a7c5a4b27 5 Original Creation Date: April 21, 2015
sreddy47 5:802a7c5a4b27 6 https://github.com/sparkfun/LSM9DS1_Breakout
sreddy47 5:802a7c5a4b27 7
sreddy47 5:802a7c5a4b27 8 This file defines all types and enumerations used by the LSM9DS1 class.
sreddy47 5:802a7c5a4b27 9
sreddy47 5:802a7c5a4b27 10 Development environment specifics:
sreddy47 5:802a7c5a4b27 11 IDE: Arduino 1.6.0
sreddy47 5:802a7c5a4b27 12 Hardware Platform: Arduino Uno
sreddy47 5:802a7c5a4b27 13 LSM9DS1 Breakout Version: 1.0
sreddy47 5:802a7c5a4b27 14
sreddy47 5:802a7c5a4b27 15 This code is beerware; if you see me (or any other SparkFun employee) at the
sreddy47 5:802a7c5a4b27 16 local, and you've found our code helpful, please buy us a round!
sreddy47 5:802a7c5a4b27 17
sreddy47 5:802a7c5a4b27 18 Distributed as-is; no warranty is given.
sreddy47 5:802a7c5a4b27 19 ******************************************************************************/
sreddy47 5:802a7c5a4b27 20
sreddy47 5:802a7c5a4b27 21 #ifndef __LSM9DS1_Types_H__
sreddy47 5:802a7c5a4b27 22 #define __LSM9DS1_Types_H__
sreddy47 5:802a7c5a4b27 23
sreddy47 5:802a7c5a4b27 24 #include "LSM9DS1_Registers.h"
sreddy47 5:802a7c5a4b27 25
sreddy47 5:802a7c5a4b27 26 // The LSM9DS1 functions over both I2C or SPI. This library supports both.
sreddy47 5:802a7c5a4b27 27 // But the interface mode used must be sent to the LSM9DS1 constructor. Use
sreddy47 5:802a7c5a4b27 28 // one of these two as the first parameter of the constructor.
sreddy47 5:802a7c5a4b27 29 enum interface_mode
sreddy47 5:802a7c5a4b27 30 {
sreddy47 5:802a7c5a4b27 31 IMU_MODE_SPI,
sreddy47 5:802a7c5a4b27 32 IMU_MODE_I2C,
sreddy47 5:802a7c5a4b27 33 };
sreddy47 5:802a7c5a4b27 34
sreddy47 5:802a7c5a4b27 35 // accel_scale defines all possible FSR's of the accelerometer:
sreddy47 5:802a7c5a4b27 36 enum accel_scale
sreddy47 5:802a7c5a4b27 37 {
sreddy47 5:802a7c5a4b27 38 A_SCALE_2G, // 00: 2g
sreddy47 5:802a7c5a4b27 39 A_SCALE_16G,// 01: 16g
sreddy47 5:802a7c5a4b27 40 A_SCALE_4G, // 10: 4g
sreddy47 5:802a7c5a4b27 41 A_SCALE_8G // 11: 8g
sreddy47 5:802a7c5a4b27 42 };
sreddy47 5:802a7c5a4b27 43
sreddy47 5:802a7c5a4b27 44 // gyro_scale defines the possible full-scale ranges of the gyroscope:
sreddy47 5:802a7c5a4b27 45 enum gyro_scale
sreddy47 5:802a7c5a4b27 46 {
sreddy47 5:802a7c5a4b27 47 G_SCALE_245DPS, // 00: 245 degrees per second
sreddy47 5:802a7c5a4b27 48 G_SCALE_500DPS, // 01: 500 dps
sreddy47 5:802a7c5a4b27 49 G_SCALE_2000DPS, // 11: 2000 dps
sreddy47 5:802a7c5a4b27 50 };
sreddy47 5:802a7c5a4b27 51
sreddy47 5:802a7c5a4b27 52 // mag_scale defines all possible FSR's of the magnetometer:
sreddy47 5:802a7c5a4b27 53 enum mag_scale
sreddy47 5:802a7c5a4b27 54 {
sreddy47 5:802a7c5a4b27 55 M_SCALE_4GS, // 00: 4Gs
sreddy47 5:802a7c5a4b27 56 M_SCALE_8GS, // 01: 8Gs
sreddy47 5:802a7c5a4b27 57 M_SCALE_12GS, // 10: 12Gs
sreddy47 5:802a7c5a4b27 58 M_SCALE_16GS, // 11: 16Gs
sreddy47 5:802a7c5a4b27 59 };
sreddy47 5:802a7c5a4b27 60
sreddy47 5:802a7c5a4b27 61 // gyro_odr defines all possible data rate/bandwidth combos of the gyro:
sreddy47 5:802a7c5a4b27 62 enum gyro_odr
sreddy47 5:802a7c5a4b27 63 {
sreddy47 5:802a7c5a4b27 64 //! TODO
sreddy47 5:802a7c5a4b27 65 G_ODR_PD, // Power down (0)
sreddy47 5:802a7c5a4b27 66 G_ODR_149, // 14.9 Hz (1)
sreddy47 5:802a7c5a4b27 67 G_ODR_595, // 59.5 Hz (2)
sreddy47 5:802a7c5a4b27 68 G_ODR_119, // 119 Hz (3)
sreddy47 5:802a7c5a4b27 69 G_ODR_238, // 238 Hz (4)
sreddy47 5:802a7c5a4b27 70 G_ODR_476, // 476 Hz (5)
sreddy47 5:802a7c5a4b27 71 G_ODR_952 // 952 Hz (6)
sreddy47 5:802a7c5a4b27 72 };
sreddy47 5:802a7c5a4b27 73 // accel_oder defines all possible output data rates of the accelerometer:
sreddy47 5:802a7c5a4b27 74 enum accel_odr
sreddy47 5:802a7c5a4b27 75 {
sreddy47 5:802a7c5a4b27 76 XL_POWER_DOWN, // Power-down mode (0x0)
sreddy47 5:802a7c5a4b27 77 XL_ODR_10, // 10 Hz (0x1)
sreddy47 5:802a7c5a4b27 78 XL_ODR_50, // 50 Hz (0x02)
sreddy47 5:802a7c5a4b27 79 XL_ODR_119, // 119 Hz (0x3)
sreddy47 5:802a7c5a4b27 80 XL_ODR_238, // 238 Hz (0x4)
sreddy47 5:802a7c5a4b27 81 XL_ODR_476, // 476 Hz (0x5)
sreddy47 5:802a7c5a4b27 82 XL_ODR_952 // 952 Hz (0x6)
sreddy47 5:802a7c5a4b27 83 };
sreddy47 5:802a7c5a4b27 84
sreddy47 5:802a7c5a4b27 85 // accel_abw defines all possible anti-aliasing filter rates of the accelerometer:
sreddy47 5:802a7c5a4b27 86 enum accel_abw
sreddy47 5:802a7c5a4b27 87 {
sreddy47 5:802a7c5a4b27 88 A_ABW_408, // 408 Hz (0x0)
sreddy47 5:802a7c5a4b27 89 A_ABW_211, // 211 Hz (0x1)
sreddy47 5:802a7c5a4b27 90 A_ABW_105, // 105 Hz (0x2)
sreddy47 5:802a7c5a4b27 91 A_ABW_50, // 50 Hz (0x3)
sreddy47 5:802a7c5a4b27 92 };
sreddy47 5:802a7c5a4b27 93
sreddy47 5:802a7c5a4b27 94
sreddy47 5:802a7c5a4b27 95 // mag_odr defines all possible output data rates of the magnetometer:
sreddy47 5:802a7c5a4b27 96 enum mag_odr
sreddy47 5:802a7c5a4b27 97 {
sreddy47 5:802a7c5a4b27 98 M_ODR_0625, // 0.625 Hz (0)
sreddy47 5:802a7c5a4b27 99 M_ODR_125, // 1.25 Hz (1)
sreddy47 5:802a7c5a4b27 100 M_ODR_250, // 2.5 Hz (2)
sreddy47 5:802a7c5a4b27 101 M_ODR_5, // 5 Hz (3)
sreddy47 5:802a7c5a4b27 102 M_ODR_10, // 10 Hz (4)
sreddy47 5:802a7c5a4b27 103 M_ODR_20, // 20 Hz (5)
sreddy47 5:802a7c5a4b27 104 M_ODR_40, // 40 Hz (6)
sreddy47 5:802a7c5a4b27 105 M_ODR_80 // 80 Hz (7)
sreddy47 5:802a7c5a4b27 106 };
sreddy47 5:802a7c5a4b27 107
sreddy47 5:802a7c5a4b27 108 enum interrupt_select
sreddy47 5:802a7c5a4b27 109 {
sreddy47 5:802a7c5a4b27 110 XG_INT1 = INT1_CTRL,
sreddy47 5:802a7c5a4b27 111 XG_INT2 = INT2_CTRL
sreddy47 5:802a7c5a4b27 112 };
sreddy47 5:802a7c5a4b27 113
sreddy47 5:802a7c5a4b27 114 enum interrupt_generators
sreddy47 5:802a7c5a4b27 115 {
sreddy47 5:802a7c5a4b27 116 INT_DRDY_XL = (1<<0), // Accelerometer data ready (INT1 & INT2)
sreddy47 5:802a7c5a4b27 117 INT_DRDY_G = (1<<1), // Gyroscope data ready (INT1 & INT2)
sreddy47 5:802a7c5a4b27 118 INT1_BOOT = (1<<2), // Boot status (INT1)
sreddy47 5:802a7c5a4b27 119 INT2_DRDY_TEMP = (1<<2),// Temp data ready (INT2)
sreddy47 5:802a7c5a4b27 120 INT_FTH = (1<<3), // FIFO threshold interrupt (INT1 & INT2)
sreddy47 5:802a7c5a4b27 121 INT_OVR = (1<<4), // Overrun interrupt (INT1 & INT2)
sreddy47 5:802a7c5a4b27 122 INT_FSS5 = (1<<5), // FSS5 interrupt (INT1 & INT2)
sreddy47 5:802a7c5a4b27 123 INT_IG_XL = (1<<6), // Accel interrupt generator (INT1)
sreddy47 5:802a7c5a4b27 124 INT1_IG_G = (1<<7), // Gyro interrupt enable (INT1)
sreddy47 5:802a7c5a4b27 125 INT2_INACT = (1<<7), // Inactivity interrupt output (INT2)
sreddy47 5:802a7c5a4b27 126 };
sreddy47 5:802a7c5a4b27 127
sreddy47 5:802a7c5a4b27 128 enum accel_interrupt_generator
sreddy47 5:802a7c5a4b27 129 {
sreddy47 5:802a7c5a4b27 130 XLIE_XL = (1<<0),
sreddy47 5:802a7c5a4b27 131 XHIE_XL = (1<<1),
sreddy47 5:802a7c5a4b27 132 YLIE_XL = (1<<2),
sreddy47 5:802a7c5a4b27 133 YHIE_XL = (1<<3),
sreddy47 5:802a7c5a4b27 134 ZLIE_XL = (1<<4),
sreddy47 5:802a7c5a4b27 135 ZHIE_XL = (1<<5),
sreddy47 5:802a7c5a4b27 136 GEN_6D = (1<<6)
sreddy47 5:802a7c5a4b27 137 };
sreddy47 5:802a7c5a4b27 138
sreddy47 5:802a7c5a4b27 139 enum gyro_interrupt_generator
sreddy47 5:802a7c5a4b27 140 {
sreddy47 5:802a7c5a4b27 141 XLIE_G = (1<<0),
sreddy47 5:802a7c5a4b27 142 XHIE_G = (1<<1),
sreddy47 5:802a7c5a4b27 143 YLIE_G = (1<<2),
sreddy47 5:802a7c5a4b27 144 YHIE_G = (1<<3),
sreddy47 5:802a7c5a4b27 145 ZLIE_G = (1<<4),
sreddy47 5:802a7c5a4b27 146 ZHIE_G = (1<<5)
sreddy47 5:802a7c5a4b27 147 };
sreddy47 5:802a7c5a4b27 148
sreddy47 5:802a7c5a4b27 149 enum mag_interrupt_generator
sreddy47 5:802a7c5a4b27 150 {
sreddy47 5:802a7c5a4b27 151 ZIEN = (1<<5),
sreddy47 5:802a7c5a4b27 152 YIEN = (1<<6),
sreddy47 5:802a7c5a4b27 153 XIEN = (1<<7)
sreddy47 5:802a7c5a4b27 154 };
sreddy47 5:802a7c5a4b27 155
sreddy47 5:802a7c5a4b27 156 enum h_lactive
sreddy47 5:802a7c5a4b27 157 {
sreddy47 5:802a7c5a4b27 158 INT_ACTIVE_HIGH,
sreddy47 5:802a7c5a4b27 159 INT_ACTIVE_LOW
sreddy47 5:802a7c5a4b27 160 };
sreddy47 5:802a7c5a4b27 161
sreddy47 5:802a7c5a4b27 162 enum pp_od
sreddy47 5:802a7c5a4b27 163 {
sreddy47 5:802a7c5a4b27 164 INT_PUSH_PULL,
sreddy47 5:802a7c5a4b27 165 INT_OPEN_DRAIN
sreddy47 5:802a7c5a4b27 166 };
sreddy47 5:802a7c5a4b27 167
sreddy47 5:802a7c5a4b27 168 enum fifoMode_type
sreddy47 5:802a7c5a4b27 169 {
sreddy47 5:802a7c5a4b27 170 FIFO_OFF = 0,
sreddy47 5:802a7c5a4b27 171 FIFO_THS = 1,
sreddy47 5:802a7c5a4b27 172 FIFO_CONT_TRIGGER = 3,
sreddy47 5:802a7c5a4b27 173 FIFO_OFF_TRIGGER = 4,
sreddy47 5:802a7c5a4b27 174 FIFO_CONT = 5
sreddy47 5:802a7c5a4b27 175 };
sreddy47 5:802a7c5a4b27 176
sreddy47 5:802a7c5a4b27 177 struct gyroSettings
sreddy47 5:802a7c5a4b27 178 {
sreddy47 5:802a7c5a4b27 179 // Gyroscope settings:
sreddy47 5:802a7c5a4b27 180 uint8_t enabled;
sreddy47 5:802a7c5a4b27 181 uint16_t scale; // Changed this to 16-bit
sreddy47 5:802a7c5a4b27 182 uint8_t sampleRate;
sreddy47 5:802a7c5a4b27 183 // New gyro stuff:
sreddy47 5:802a7c5a4b27 184 uint8_t bandwidth;
sreddy47 5:802a7c5a4b27 185 uint8_t lowPowerEnable;
sreddy47 5:802a7c5a4b27 186 uint8_t HPFEnable;
sreddy47 5:802a7c5a4b27 187 uint8_t HPFCutoff;
sreddy47 5:802a7c5a4b27 188 uint8_t flipX;
sreddy47 5:802a7c5a4b27 189 uint8_t flipY;
sreddy47 5:802a7c5a4b27 190 uint8_t flipZ;
sreddy47 5:802a7c5a4b27 191 uint8_t orientation;
sreddy47 5:802a7c5a4b27 192 uint8_t enableX;
sreddy47 5:802a7c5a4b27 193 uint8_t enableY;
sreddy47 5:802a7c5a4b27 194 uint8_t enableZ;
sreddy47 5:802a7c5a4b27 195 uint8_t latchInterrupt;
sreddy47 5:802a7c5a4b27 196 };
sreddy47 5:802a7c5a4b27 197
sreddy47 5:802a7c5a4b27 198 struct deviceSettings
sreddy47 5:802a7c5a4b27 199 {
sreddy47 5:802a7c5a4b27 200 uint8_t commInterface; // Can be I2C, SPI 4-wire or SPI 3-wire
sreddy47 5:802a7c5a4b27 201 uint8_t agAddress; // I2C address or SPI CS pin
sreddy47 5:802a7c5a4b27 202 uint8_t mAddress; // I2C address or SPI CS pin
sreddy47 5:802a7c5a4b27 203 };
sreddy47 5:802a7c5a4b27 204
sreddy47 5:802a7c5a4b27 205 struct accelSettings
sreddy47 5:802a7c5a4b27 206 {
sreddy47 5:802a7c5a4b27 207 // Accelerometer settings:
sreddy47 5:802a7c5a4b27 208 uint8_t enabled;
sreddy47 5:802a7c5a4b27 209 uint8_t scale;
sreddy47 5:802a7c5a4b27 210 uint8_t sampleRate;
sreddy47 5:802a7c5a4b27 211 // New accel stuff:
sreddy47 5:802a7c5a4b27 212 uint8_t enableX;
sreddy47 5:802a7c5a4b27 213 uint8_t enableY;
sreddy47 5:802a7c5a4b27 214 uint8_t enableZ;
sreddy47 5:802a7c5a4b27 215 int8_t bandwidth;
sreddy47 5:802a7c5a4b27 216 uint8_t highResEnable;
sreddy47 5:802a7c5a4b27 217 uint8_t highResBandwidth;
sreddy47 5:802a7c5a4b27 218 };
sreddy47 5:802a7c5a4b27 219
sreddy47 5:802a7c5a4b27 220 struct magSettings
sreddy47 5:802a7c5a4b27 221 {
sreddy47 5:802a7c5a4b27 222 // Magnetometer settings:
sreddy47 5:802a7c5a4b27 223 uint8_t enabled;
sreddy47 5:802a7c5a4b27 224 uint8_t scale;
sreddy47 5:802a7c5a4b27 225 uint8_t sampleRate;
sreddy47 5:802a7c5a4b27 226 // New mag stuff:
sreddy47 5:802a7c5a4b27 227 uint8_t tempCompensationEnable;
sreddy47 5:802a7c5a4b27 228 uint8_t XYPerformance;
sreddy47 5:802a7c5a4b27 229 uint8_t ZPerformance;
sreddy47 5:802a7c5a4b27 230 uint8_t lowPowerEnable;
sreddy47 5:802a7c5a4b27 231 uint8_t operatingMode;
sreddy47 5:802a7c5a4b27 232 };
sreddy47 5:802a7c5a4b27 233
sreddy47 5:802a7c5a4b27 234 struct temperatureSettings
sreddy47 5:802a7c5a4b27 235 {
sreddy47 5:802a7c5a4b27 236 // Temperature settings
sreddy47 5:802a7c5a4b27 237 uint8_t enabled;
sreddy47 5:802a7c5a4b27 238 };
sreddy47 5:802a7c5a4b27 239
sreddy47 5:802a7c5a4b27 240 struct IMUSettings
sreddy47 5:802a7c5a4b27 241 {
sreddy47 5:802a7c5a4b27 242 deviceSettings device;
sreddy47 5:802a7c5a4b27 243
sreddy47 5:802a7c5a4b27 244 gyroSettings gyro;
sreddy47 5:802a7c5a4b27 245 accelSettings accel;
sreddy47 5:802a7c5a4b27 246 magSettings mag;
sreddy47 5:802a7c5a4b27 247
sreddy47 5:802a7c5a4b27 248 temperatureSettings temp;
sreddy47 5:802a7c5a4b27 249 };
sreddy47 5:802a7c5a4b27 250
sreddy47 5:802a7c5a4b27 251 #endif