lora sensnode
Dependencies: libmDot mbed-rtos mbed
Fork of mDot_LoRa_Sensornode by
app/MPU9250Config.h@1:e67174cc4953, 2016-08-10 (annotated)
- Committer:
- socie123
- Date:
- Wed Aug 10 12:54:10 2016 +0000
- Revision:
- 1:e67174cc4953
- Parent:
- 0:f2815503561f
lora sensnode
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mitea1 | 0:f2815503561f | 1 | /** |
mitea1 | 0:f2815503561f | 2 | * @file MPU9250Config.h |
mitea1 | 0:f2815503561f | 3 | * |
mitea1 | 0:f2815503561f | 4 | * @author Adrian |
mitea1 | 0:f2815503561f | 5 | * @date 23.05.2016 |
mitea1 | 0:f2815503561f | 6 | * |
mitea1 | 0:f2815503561f | 7 | */ |
mitea1 | 0:f2815503561f | 8 | |
mitea1 | 0:f2815503561f | 9 | #include <stdint.h> |
mitea1 | 0:f2815503561f | 10 | |
mitea1 | 0:f2815503561f | 11 | #ifndef APP_MPU9250CONFIG_H_ |
mitea1 | 0:f2815503561f | 12 | #define APP_MPU9250CONFIG_H_ |
mitea1 | 0:f2815503561f | 13 | |
mitea1 | 0:f2815503561f | 14 | #define MPU9250_GYRO_FULL_SCALE_250DPS 0b00 |
mitea1 | 0:f2815503561f | 15 | #define MPU9250_GYRO_FULL_SCALE_500DPS 0b01 |
mitea1 | 0:f2815503561f | 16 | #define MPU9250_GYRO_FULL_SCALE_1000DPS 0b10 |
mitea1 | 0:f2815503561f | 17 | #define MPU9250_GYRO_FULL_SCALE_2000DPS 0b11 |
mitea1 | 0:f2815503561f | 18 | |
mitea1 | 0:f2815503561f | 19 | #define MPU9250_FULL_SCALE_2G 0b00 |
mitea1 | 0:f2815503561f | 20 | #define MPU9250_FULL_SCALE_4G 0b01 |
mitea1 | 0:f2815503561f | 21 | #define MPU9250_FULL_SCALE_8G 0b10 |
mitea1 | 0:f2815503561f | 22 | #define MPU9250_FULL_SCALE_16G 0b11 |
mitea1 | 0:f2815503561f | 23 | |
mitea1 | 0:f2815503561f | 24 | #define MPU9250_MAG_16_BIT 0b1 |
mitea1 | 0:f2815503561f | 25 | #define MPU9250_MAG_14_BIT 0b0 |
mitea1 | 0:f2815503561f | 26 | |
mitea1 | 0:f2815503561f | 27 | #define MPU9250_MAG_SINGLE_MEASUREMENT 0b0001 |
mitea1 | 0:f2815503561f | 28 | #define MPU9250_MAG_CONTINUOUS_MEASUREMENT_1 0b0010 |
mitea1 | 0:f2815503561f | 29 | #define MPU9250_MAG_CONTINUOUS_MEASUREMENT_2 0b0110 |
mitea1 | 0:f2815503561f | 30 | |
mitea1 | 0:f2815503561f | 31 | //INT_PIN_CFG register masks |
mitea1 | 0:f2815503561f | 32 | #define MPU9250_ACTL_MASK 0x80 |
mitea1 | 0:f2815503561f | 33 | #define MPU9250_OPEN_MASK 0x40 |
mitea1 | 0:f2815503561f | 34 | #define MPU9250_LATCH_INT_EN_MASK 0x20 |
mitea1 | 0:f2815503561f | 35 | #define MPU9250_INT_ANYRD_2CLEAR_MASK 0x10 |
mitea1 | 0:f2815503561f | 36 | #define MPU9250_ACTL_FSYNC_MASK 0x08 |
mitea1 | 0:f2815503561f | 37 | #define MPU9250_FSYNC_INT_MODE_EN_MASK 0x04 |
mitea1 | 0:f2815503561f | 38 | #define MPU9250_BYPASS_EN_MASK 0x02 |
mitea1 | 0:f2815503561f | 39 | |
mitea1 | 0:f2815503561f | 40 | //INT_ENABLE register masks |
mitea1 | 0:f2815503561f | 41 | #define MPU9250_WOM_EN_MASK 0x40 |
mitea1 | 0:f2815503561f | 42 | #define MPU9250_FIFO_OFLOW_EN_MASK 0x10 |
mitea1 | 0:f2815503561f | 43 | #define MPU9250_FSYNC_INT_EN_MASK 0x08 |
mitea1 | 0:f2815503561f | 44 | #define MPU9250_RAW_RDY_EN_MASK 0x01 |
mitea1 | 0:f2815503561f | 45 | |
mitea1 | 0:f2815503561f | 46 | #define MPU9250_WOM_THRESHOLD_1020_MG 0xFF |
mitea1 | 0:f2815503561f | 47 | #define MPU9250_WOM_THRESHOLD_500_MG 0x7D |
mitea1 | 0:f2815503561f | 48 | #define MPU9250_WOM_THRESHOLD_250_MG 0xFA |
mitea1 | 0:f2815503561f | 49 | |
mitea1 | 0:f2815503561f | 50 | /** |
mitea1 | 0:f2815503561f | 51 | * MPU9250 Modes. Modes define Sensor functionality |
mitea1 | 0:f2815503561f | 52 | */ |
mitea1 | 0:f2815503561f | 53 | enum MPU9250_MODE{ |
mitea1 | 0:f2815503561f | 54 | MPU9250_MODE_1,//!< MPU9250_MODE_1 |
mitea1 | 0:f2815503561f | 55 | MPU9250_MODE_2,//!< MPU9250_MODE_2 |
mitea1 | 0:f2815503561f | 56 | MPU9250_MODE_3,//!< MPU9250_MODE_3 |
mitea1 | 0:f2815503561f | 57 | MPU9250_MODE_4 //!< MPU9250_MODE_4 |
mitea1 | 0:f2815503561f | 58 | }; |
mitea1 | 0:f2815503561f | 59 | |
mitea1 | 0:f2815503561f | 60 | /** |
mitea1 | 0:f2815503561f | 61 | * @class MPU9250Config |
mitea1 | 0:f2815503561f | 62 | * @brief A configuration container for the MPU9250 Sensor. |
mitea1 | 0:f2815503561f | 63 | * All its configuration values are stored an held inside |
mitea1 | 0:f2815503561f | 64 | * this Class. Depending on the MPU9250_MODE it sets all the configuration values. |
mitea1 | 0:f2815503561f | 65 | */ |
mitea1 | 0:f2815503561f | 66 | class MPU9250Config { |
mitea1 | 0:f2815503561f | 67 | public: |
mitea1 | 0:f2815503561f | 68 | MPU9250Config(); |
mitea1 | 0:f2815503561f | 69 | virtual ~MPU9250Config(); |
mitea1 | 0:f2815503561f | 70 | |
mitea1 | 0:f2815503561f | 71 | /** |
mitea1 | 0:f2815503561f | 72 | * @brief Generates a configuration according to the chosen MPU9250_MODE |
mitea1 | 0:f2815503561f | 73 | * @param desiredMode the mode to build the configuration according to |
mitea1 | 0:f2815503561f | 74 | */ |
mitea1 | 0:f2815503561f | 75 | void build(MPU9250_MODE desiredMode); |
mitea1 | 0:f2815503561f | 76 | |
mitea1 | 0:f2815503561f | 77 | |
mitea1 | 0:f2815503561f | 78 | /** |
mitea1 | 0:f2815503561f | 79 | * @brief Gets the Accelerometer Scale from the actual configuration |
mitea1 | 0:f2815503561f | 80 | * @return accelerometer scale |
mitea1 | 0:f2815503561f | 81 | */ |
mitea1 | 0:f2815503561f | 82 | uint8_t getAccelerometerScale(); |
mitea1 | 0:f2815503561f | 83 | |
mitea1 | 0:f2815503561f | 84 | /** |
mitea1 | 0:f2815503561f | 85 | * @brief Gets the Gyroscope Scale from the actual configuration |
mitea1 | 0:f2815503561f | 86 | * @return gyroscope scale |
mitea1 | 0:f2815503561f | 87 | */ |
mitea1 | 0:f2815503561f | 88 | uint8_t getGyroscopeScale(); |
mitea1 | 0:f2815503561f | 89 | |
mitea1 | 0:f2815503561f | 90 | /** |
mitea1 | 0:f2815503561f | 91 | * @brief Gets the Magnetometer bit resolution from the actual configuration |
mitea1 | 0:f2815503561f | 92 | * @return magnetometer bit resolution |
mitea1 | 0:f2815503561f | 93 | */ |
mitea1 | 0:f2815503561f | 94 | uint8_t getMagnetometerBitResolution(); |
mitea1 | 0:f2815503561f | 95 | |
mitea1 | 0:f2815503561f | 96 | /** |
mitea1 | 0:f2815503561f | 97 | * @brief Gets the Magnetometer measure mode from the actual configuration |
mitea1 | 0:f2815503561f | 98 | * @return magnetometer bit resolution |
mitea1 | 0:f2815503561f | 99 | */ |
mitea1 | 0:f2815503561f | 100 | uint8_t getMagnetometerMeasureMode(); |
mitea1 | 0:f2815503561f | 101 | |
mitea1 | 0:f2815503561f | 102 | /** |
mitea1 | 0:f2815503561f | 103 | * @brief Gets the Acceleration Divider from the actual configuration |
mitea1 | 0:f2815503561f | 104 | * @return acceleration divider |
mitea1 | 0:f2815503561f | 105 | */ |
mitea1 | 0:f2815503561f | 106 | float getAccelerationDivider(); |
mitea1 | 0:f2815503561f | 107 | |
mitea1 | 0:f2815503561f | 108 | /** |
mitea1 | 0:f2815503561f | 109 | * @brief Gets the Gyroscope Divider from the actual configuration |
mitea1 | 0:f2815503561f | 110 | * @return gyroscope divider |
mitea1 | 0:f2815503561f | 111 | */ |
mitea1 | 0:f2815503561f | 112 | float getGyroDivider(); |
mitea1 | 0:f2815503561f | 113 | |
mitea1 | 0:f2815503561f | 114 | /** |
mitea1 | 0:f2815503561f | 115 | * @brief Gets the Tesla Divider from the actual configuration |
mitea1 | 0:f2815503561f | 116 | * @return |
mitea1 | 0:f2815503561f | 117 | */ |
mitea1 | 0:f2815503561f | 118 | float getTeslaDivider(); |
mitea1 | 0:f2815503561f | 119 | |
mitea1 | 0:f2815503561f | 120 | |
mitea1 | 0:f2815503561f | 121 | /** |
mitea1 | 0:f2815503561f | 122 | * @brief Gets the Interrupt Pin configuration from the actual configuration |
mitea1 | 0:f2815503561f | 123 | * @return interrupt pin configuration |
mitea1 | 0:f2815503561f | 124 | */ |
mitea1 | 0:f2815503561f | 125 | uint8_t getInterruptPinConfiguration(); |
mitea1 | 0:f2815503561f | 126 | |
mitea1 | 0:f2815503561f | 127 | /** |
mitea1 | 0:f2815503561f | 128 | * @brief Gets the Interrupt Enable configuration from the actual configuration |
mitea1 | 0:f2815503561f | 129 | * @return interrupt enable configuration |
mitea1 | 0:f2815503561f | 130 | */ |
mitea1 | 0:f2815503561f | 131 | uint8_t getInterruptEnableConfiguration(); |
mitea1 | 0:f2815503561f | 132 | |
mitea1 | 0:f2815503561f | 133 | /** |
mitea1 | 0:f2815503561f | 134 | * @brief Gets the wake on motion threshold value from the actual configuration |
mitea1 | 0:f2815503561f | 135 | * @return wake on motion threshold value |
mitea1 | 0:f2815503561f | 136 | */ |
mitea1 | 0:f2815503561f | 137 | uint8_t getWakeOnMotionThreshold(); |
mitea1 | 0:f2815503561f | 138 | |
mitea1 | 0:f2815503561f | 139 | private: |
mitea1 | 0:f2815503561f | 140 | uint8_t gyroscopeScale; |
mitea1 | 0:f2815503561f | 141 | uint8_t accelerometerScale; |
mitea1 | 0:f2815503561f | 142 | uint8_t magnetometerBitResolution; |
mitea1 | 0:f2815503561f | 143 | uint8_t magnetometerMeasureMode; |
mitea1 | 0:f2815503561f | 144 | |
mitea1 | 0:f2815503561f | 145 | uint8_t interruptPinConfiguration; |
mitea1 | 0:f2815503561f | 146 | uint8_t interruptEnableConfiguration; |
mitea1 | 0:f2815503561f | 147 | |
mitea1 | 0:f2815503561f | 148 | uint8_t wakeOnMotionThreshold; |
mitea1 | 0:f2815503561f | 149 | |
mitea1 | 0:f2815503561f | 150 | |
mitea1 | 0:f2815503561f | 151 | /** |
mitea1 | 0:f2815503561f | 152 | * @brief Sets the accelerometer scale of the actual configuration |
mitea1 | 0:f2815503561f | 153 | * @param accelerometerScale |
mitea1 | 0:f2815503561f | 154 | */ |
mitea1 | 0:f2815503561f | 155 | void setAccelerometerScale(uint8_t accelerometerScale); |
mitea1 | 0:f2815503561f | 156 | |
mitea1 | 0:f2815503561f | 157 | /** |
mitea1 | 0:f2815503561f | 158 | * @brief Sets the gyroscope scale of the actual configuration |
mitea1 | 0:f2815503561f | 159 | * @param gyroscopeScale |
mitea1 | 0:f2815503561f | 160 | */ |
mitea1 | 0:f2815503561f | 161 | void setGyroscopeScale(uint8_t gyroscopeScale); |
mitea1 | 0:f2815503561f | 162 | |
mitea1 | 0:f2815503561f | 163 | /** |
mitea1 | 0:f2815503561f | 164 | * @brief Sets the magnetometer bit resolution of the actual configuration |
mitea1 | 0:f2815503561f | 165 | * @param magnetometerBitResolution |
mitea1 | 0:f2815503561f | 166 | */ |
mitea1 | 0:f2815503561f | 167 | void setMagnetometerBitResolution(uint8_t magnetometerBitResolution); |
mitea1 | 0:f2815503561f | 168 | |
mitea1 | 0:f2815503561f | 169 | /** |
mitea1 | 0:f2815503561f | 170 | * @brief Sets the magnetometer measure mode of the actual configuration |
mitea1 | 0:f2815503561f | 171 | * @param magnetometerMeasureMode |
mitea1 | 0:f2815503561f | 172 | */ |
mitea1 | 0:f2815503561f | 173 | void setMagnetometerMeasureMode(uint8_t meagnetometerMeasureMode); |
mitea1 | 0:f2815503561f | 174 | |
mitea1 | 0:f2815503561f | 175 | |
mitea1 | 0:f2815503561f | 176 | /** |
mitea1 | 0:f2815503561f | 177 | * @brief Sets the interrupt pin configuration of the actual configuration |
mitea1 | 0:f2815503561f | 178 | * @param interruptPinConfiguration |
mitea1 | 0:f2815503561f | 179 | */ |
mitea1 | 0:f2815503561f | 180 | void setInterruptPinConfiguration(uint8_t interruptPinConfiguration); |
mitea1 | 0:f2815503561f | 181 | |
mitea1 | 0:f2815503561f | 182 | /** |
mitea1 | 0:f2815503561f | 183 | * @brief Sets the interrupt enable configuration of the actual configuration |
mitea1 | 0:f2815503561f | 184 | * @param interruptEnableConfiguration |
mitea1 | 0:f2815503561f | 185 | */ |
mitea1 | 0:f2815503561f | 186 | void setInterruptEnableConfiguration(uint8_t interruptEnableConfiguration); |
mitea1 | 0:f2815503561f | 187 | |
mitea1 | 0:f2815503561f | 188 | |
mitea1 | 0:f2815503561f | 189 | /** |
mitea1 | 0:f2815503561f | 190 | * @brief Sets the wake on motion threshold of the actual configuration |
mitea1 | 0:f2815503561f | 191 | * @param wakeOnMotionThreshold |
mitea1 | 0:f2815503561f | 192 | */ |
mitea1 | 0:f2815503561f | 193 | void setWakeOnMotionThreshold(uint8_t wakeOnMotionThreshold); |
mitea1 | 0:f2815503561f | 194 | }; |
mitea1 | 0:f2815503561f | 195 | |
mitea1 | 0:f2815503561f | 196 | #endif /* APP_MPU9250CONFIG_H_ */ |