ECE 4180 Project
Dependencies: Camera_LS_Y201 SDFileSystem mbed
Fork of 4180_Final_Project by
HMC6352.h@1:dcd6c9be9e4b, 2015-04-30 (annotated)
- Committer:
- lzzcd001
- Date:
- Thu Apr 30 19:01:22 2015 +0000
- Revision:
- 1:dcd6c9be9e4b
ECE 4180 Project
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lzzcd001 | 1:dcd6c9be9e4b | 1 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 2 | * @author Aaron Berk |
lzzcd001 | 1:dcd6c9be9e4b | 3 | * |
lzzcd001 | 1:dcd6c9be9e4b | 4 | * @section LICENSE |
lzzcd001 | 1:dcd6c9be9e4b | 5 | * |
lzzcd001 | 1:dcd6c9be9e4b | 6 | * Copyright (c) 2010 ARM Limited |
lzzcd001 | 1:dcd6c9be9e4b | 7 | * |
lzzcd001 | 1:dcd6c9be9e4b | 8 | * Permission is hereby granted, free of charge, to any person obtaining a copy |
lzzcd001 | 1:dcd6c9be9e4b | 9 | * of this software and associated documentation files (the "Software"), to deal |
lzzcd001 | 1:dcd6c9be9e4b | 10 | * in the Software without restriction, including without limitation the rights |
lzzcd001 | 1:dcd6c9be9e4b | 11 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
lzzcd001 | 1:dcd6c9be9e4b | 12 | * copies of the Software, and to permit persons to whom the Software is |
lzzcd001 | 1:dcd6c9be9e4b | 13 | * furnished to do so, subject to the following conditions: |
lzzcd001 | 1:dcd6c9be9e4b | 14 | * |
lzzcd001 | 1:dcd6c9be9e4b | 15 | * The above copyright notice and this permission notice shall be included in |
lzzcd001 | 1:dcd6c9be9e4b | 16 | * all copies or substantial portions of the Software. |
lzzcd001 | 1:dcd6c9be9e4b | 17 | * |
lzzcd001 | 1:dcd6c9be9e4b | 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
lzzcd001 | 1:dcd6c9be9e4b | 19 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
lzzcd001 | 1:dcd6c9be9e4b | 20 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
lzzcd001 | 1:dcd6c9be9e4b | 21 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
lzzcd001 | 1:dcd6c9be9e4b | 22 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
lzzcd001 | 1:dcd6c9be9e4b | 23 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
lzzcd001 | 1:dcd6c9be9e4b | 24 | * THE SOFTWARE. |
lzzcd001 | 1:dcd6c9be9e4b | 25 | * |
lzzcd001 | 1:dcd6c9be9e4b | 26 | * @section DESCRIPTION |
lzzcd001 | 1:dcd6c9be9e4b | 27 | * |
lzzcd001 | 1:dcd6c9be9e4b | 28 | * Honeywell HMC6352 digital compass. |
lzzcd001 | 1:dcd6c9be9e4b | 29 | * |
lzzcd001 | 1:dcd6c9be9e4b | 30 | * Datasheet: |
lzzcd001 | 1:dcd6c9be9e4b | 31 | * |
lzzcd001 | 1:dcd6c9be9e4b | 32 | * http://www.ssec.honeywell.com/magnetic/datasheets/HMC6352.pdf |
lzzcd001 | 1:dcd6c9be9e4b | 33 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 34 | |
lzzcd001 | 1:dcd6c9be9e4b | 35 | #ifndef HMC6352_H |
lzzcd001 | 1:dcd6c9be9e4b | 36 | #define HMC6352_H |
lzzcd001 | 1:dcd6c9be9e4b | 37 | |
lzzcd001 | 1:dcd6c9be9e4b | 38 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 39 | * Includes |
lzzcd001 | 1:dcd6c9be9e4b | 40 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 41 | #include "mbed.h" |
lzzcd001 | 1:dcd6c9be9e4b | 42 | |
lzzcd001 | 1:dcd6c9be9e4b | 43 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 44 | * Defines |
lzzcd001 | 1:dcd6c9be9e4b | 45 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 46 | #define HMC6352_I2C_ADDRESS 0x21 //7-bit address. 0x43 write, 0x42 read. |
lzzcd001 | 1:dcd6c9be9e4b | 47 | |
lzzcd001 | 1:dcd6c9be9e4b | 48 | //Commands. |
lzzcd001 | 1:dcd6c9be9e4b | 49 | #define HMC6352_EEPROM_WRITE 0x77 |
lzzcd001 | 1:dcd6c9be9e4b | 50 | #define HMC6352_EEPROM_READ 0x72 |
lzzcd001 | 1:dcd6c9be9e4b | 51 | #define HMC6352_RAM_WRITE 0x47 |
lzzcd001 | 1:dcd6c9be9e4b | 52 | #define HMC6352_RAM_READ 0x67 |
lzzcd001 | 1:dcd6c9be9e4b | 53 | #define HMC6352_ENTER_SLEEP 0x53 |
lzzcd001 | 1:dcd6c9be9e4b | 54 | #define HMC6352_EXIT_SLEEP 0x57 |
lzzcd001 | 1:dcd6c9be9e4b | 55 | #define HMC6352_SET_RESET 0x4F |
lzzcd001 | 1:dcd6c9be9e4b | 56 | #define HMC6352_ENTER_CALIB 0x43 |
lzzcd001 | 1:dcd6c9be9e4b | 57 | #define HMC6352_EXIT_CALIB 0x45 |
lzzcd001 | 1:dcd6c9be9e4b | 58 | #define HMC6352_SAVE_OPMODE 0x4C |
lzzcd001 | 1:dcd6c9be9e4b | 59 | #define HMC6352_GET_DATA 0x41 |
lzzcd001 | 1:dcd6c9be9e4b | 60 | |
lzzcd001 | 1:dcd6c9be9e4b | 61 | //EEPROM locations. |
lzzcd001 | 1:dcd6c9be9e4b | 62 | #define HMC6352_SLAVE_ADDR 0x00 |
lzzcd001 | 1:dcd6c9be9e4b | 63 | #define HMC6352_MX_OFF_MSB 0x01 |
lzzcd001 | 1:dcd6c9be9e4b | 64 | #define HMC6352_MX_OFF_LSB 0x02 |
lzzcd001 | 1:dcd6c9be9e4b | 65 | #define HMC6352_MY_OFF_MSB 0x03 |
lzzcd001 | 1:dcd6c9be9e4b | 66 | #define HMC6352_MY_OFF_LSB 0x04 |
lzzcd001 | 1:dcd6c9be9e4b | 67 | #define HMC6352_TIME_DELAY 0x05 |
lzzcd001 | 1:dcd6c9be9e4b | 68 | #define HMC6352_SUMMED 0x06 |
lzzcd001 | 1:dcd6c9be9e4b | 69 | #define HMC6352_SOFT_VER 0x07 |
lzzcd001 | 1:dcd6c9be9e4b | 70 | #define HMC6352_OPMODE 0x08 |
lzzcd001 | 1:dcd6c9be9e4b | 71 | |
lzzcd001 | 1:dcd6c9be9e4b | 72 | //RAM registers. |
lzzcd001 | 1:dcd6c9be9e4b | 73 | #define HMC6352_RAM_OPMODE 0x74 |
lzzcd001 | 1:dcd6c9be9e4b | 74 | #define HMC6352_RAM_OUTPUT 0x4E |
lzzcd001 | 1:dcd6c9be9e4b | 75 | |
lzzcd001 | 1:dcd6c9be9e4b | 76 | #define HMC6352_MX_OFFSET 0x00 |
lzzcd001 | 1:dcd6c9be9e4b | 77 | #define HMC6352_MY_OFFSET 0x01 |
lzzcd001 | 1:dcd6c9be9e4b | 78 | |
lzzcd001 | 1:dcd6c9be9e4b | 79 | #define HMC6352_HEADING_MODE 0x00 |
lzzcd001 | 1:dcd6c9be9e4b | 80 | #define HMC6352_RAWMAGX_MODE 0x01 |
lzzcd001 | 1:dcd6c9be9e4b | 81 | #define HMC6352_RAWMAGY_MODE 0x02 |
lzzcd001 | 1:dcd6c9be9e4b | 82 | #define HMC6352_MAGX_MODE 0x03 |
lzzcd001 | 1:dcd6c9be9e4b | 83 | #define HMC6352_MAGY_MODE 0x04 |
lzzcd001 | 1:dcd6c9be9e4b | 84 | |
lzzcd001 | 1:dcd6c9be9e4b | 85 | //Operational mode register masks. |
lzzcd001 | 1:dcd6c9be9e4b | 86 | #define HMC6352_CM_MR_1HZ 0x00 |
lzzcd001 | 1:dcd6c9be9e4b | 87 | #define HMC6352_CM_MR_5HZ 0x20 |
lzzcd001 | 1:dcd6c9be9e4b | 88 | #define HMC6352_CM_MR_10HZ 0x40 |
lzzcd001 | 1:dcd6c9be9e4b | 89 | #define HMC6352_CM_MR_20HZ 0x60 |
lzzcd001 | 1:dcd6c9be9e4b | 90 | |
lzzcd001 | 1:dcd6c9be9e4b | 91 | #define HMC6352_PERIODIC_SR 0x10 |
lzzcd001 | 1:dcd6c9be9e4b | 92 | |
lzzcd001 | 1:dcd6c9be9e4b | 93 | #define HMC6352_STANDBY 0x00 |
lzzcd001 | 1:dcd6c9be9e4b | 94 | #define HMC6352_QUERY 0x01 |
lzzcd001 | 1:dcd6c9be9e4b | 95 | #define HMC6352_CONTINUOUS 0x02 |
lzzcd001 | 1:dcd6c9be9e4b | 96 | |
lzzcd001 | 1:dcd6c9be9e4b | 97 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 98 | * Honeywell HMC6352 digital compass. |
lzzcd001 | 1:dcd6c9be9e4b | 99 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 100 | class HMC6352 { |
lzzcd001 | 1:dcd6c9be9e4b | 101 | |
lzzcd001 | 1:dcd6c9be9e4b | 102 | public: |
lzzcd001 | 1:dcd6c9be9e4b | 103 | |
lzzcd001 | 1:dcd6c9be9e4b | 104 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 105 | * Constructor. |
lzzcd001 | 1:dcd6c9be9e4b | 106 | * |
lzzcd001 | 1:dcd6c9be9e4b | 107 | * @param sda mbed pin to use for SDA line of I2C interface. |
lzzcd001 | 1:dcd6c9be9e4b | 108 | * @param scl mbed pin to use for SCL line of I2C interface. |
lzzcd001 | 1:dcd6c9be9e4b | 109 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 110 | HMC6352(PinName sda, PinName scl); |
lzzcd001 | 1:dcd6c9be9e4b | 111 | |
lzzcd001 | 1:dcd6c9be9e4b | 112 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 113 | * Sample the device and return the result. |
lzzcd001 | 1:dcd6c9be9e4b | 114 | * |
lzzcd001 | 1:dcd6c9be9e4b | 115 | * @return In heading output mode, the current heading as a number between |
lzzcd001 | 1:dcd6c9be9e4b | 116 | * 0-3599, representing 0-359.9 degrees. |
lzzcd001 | 1:dcd6c9be9e4b | 117 | * In raw magnetometer X output mode, the raw output of the X-axis |
lzzcd001 | 1:dcd6c9be9e4b | 118 | * magnetometer. |
lzzcd001 | 1:dcd6c9be9e4b | 119 | * In raw magnetometer Y mode, the raw output of the Y-axis |
lzzcd001 | 1:dcd6c9be9e4b | 120 | * magnetometer. |
lzzcd001 | 1:dcd6c9be9e4b | 121 | * In magnetometer X mode, the corrected output of the X-axis |
lzzcd001 | 1:dcd6c9be9e4b | 122 | * magnetometer. |
lzzcd001 | 1:dcd6c9be9e4b | 123 | * In magnetometer Y mode, the corrected output of the Y-axis |
lzzcd001 | 1:dcd6c9be9e4b | 124 | * magnetometer. |
lzzcd001 | 1:dcd6c9be9e4b | 125 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 126 | int sample(void); |
lzzcd001 | 1:dcd6c9be9e4b | 127 | |
lzzcd001 | 1:dcd6c9be9e4b | 128 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 129 | * Enter into or exit from sleep mode. |
lzzcd001 | 1:dcd6c9be9e4b | 130 | * |
lzzcd001 | 1:dcd6c9be9e4b | 131 | * @param enterOrExit 0x57 -> Exit sleep mode |
lzzcd001 | 1:dcd6c9be9e4b | 132 | * 0x53 -> Enter |
lzzcd001 | 1:dcd6c9be9e4b | 133 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 134 | void setSleepMode(int enterOrExit); |
lzzcd001 | 1:dcd6c9be9e4b | 135 | |
lzzcd001 | 1:dcd6c9be9e4b | 136 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 137 | * Update bridge offsets. |
lzzcd001 | 1:dcd6c9be9e4b | 138 | * |
lzzcd001 | 1:dcd6c9be9e4b | 139 | * Performs a set/reset immediately. |
lzzcd001 | 1:dcd6c9be9e4b | 140 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 141 | void setReset(void); |
lzzcd001 | 1:dcd6c9be9e4b | 142 | |
lzzcd001 | 1:dcd6c9be9e4b | 143 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 144 | * Enter into or exit from calibration mode. |
lzzcd001 | 1:dcd6c9be9e4b | 145 | * |
lzzcd001 | 1:dcd6c9be9e4b | 146 | * @param enterOrExit 0x45 -> Exit |
lzzcd001 | 1:dcd6c9be9e4b | 147 | * 0x43 -> Enter |
lzzcd001 | 1:dcd6c9be9e4b | 148 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 149 | void setCalibrationMode(int enterOrExit); |
lzzcd001 | 1:dcd6c9be9e4b | 150 | |
lzzcd001 | 1:dcd6c9be9e4b | 151 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 152 | * Save the current operation mode byte to EEPROM. |
lzzcd001 | 1:dcd6c9be9e4b | 153 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 154 | void saveOpMode(void); |
lzzcd001 | 1:dcd6c9be9e4b | 155 | |
lzzcd001 | 1:dcd6c9be9e4b | 156 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 157 | * Read the memory location on the device which contains the slave address. |
lzzcd001 | 1:dcd6c9be9e4b | 158 | * |
lzzcd001 | 1:dcd6c9be9e4b | 159 | * @return The slave address of the device. |
lzzcd001 | 1:dcd6c9be9e4b | 160 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 161 | int getSlaveAddress(void); |
lzzcd001 | 1:dcd6c9be9e4b | 162 | |
lzzcd001 | 1:dcd6c9be9e4b | 163 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 164 | * Read the current offset for X or Y axis magnetometer. |
lzzcd001 | 1:dcd6c9be9e4b | 165 | * |
lzzcd001 | 1:dcd6c9be9e4b | 166 | * @param axis 0x00 -> X-axis |
lzzcd001 | 1:dcd6c9be9e4b | 167 | * 0x01 -> Y-axis |
lzzcd001 | 1:dcd6c9be9e4b | 168 | * @return The current offset for the axis as a 16-bit number. |
lzzcd001 | 1:dcd6c9be9e4b | 169 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 170 | int getOffset(int axis); |
lzzcd001 | 1:dcd6c9be9e4b | 171 | |
lzzcd001 | 1:dcd6c9be9e4b | 172 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 173 | * Set the offset for X or Y axis magnetometer. |
lzzcd001 | 1:dcd6c9be9e4b | 174 | * |
lzzcd001 | 1:dcd6c9be9e4b | 175 | * @param axis 0x00 -> X-axis |
lzzcd001 | 1:dcd6c9be9e4b | 176 | * 0x01 -> Y-axis |
lzzcd001 | 1:dcd6c9be9e4b | 177 | * @param offset The offset to set for the axis (set to a 16-bit number). |
lzzcd001 | 1:dcd6c9be9e4b | 178 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 179 | void setOffset(int axis, int offset); |
lzzcd001 | 1:dcd6c9be9e4b | 180 | |
lzzcd001 | 1:dcd6c9be9e4b | 181 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 182 | * Get the current time delay. |
lzzcd001 | 1:dcd6c9be9e4b | 183 | * |
lzzcd001 | 1:dcd6c9be9e4b | 184 | * @return The time delay in milliseconds. |
lzzcd001 | 1:dcd6c9be9e4b | 185 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 186 | int getTimeDelay(void); |
lzzcd001 | 1:dcd6c9be9e4b | 187 | |
lzzcd001 | 1:dcd6c9be9e4b | 188 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 189 | * Set the time delay of the device. |
lzzcd001 | 1:dcd6c9be9e4b | 190 | * |
lzzcd001 | 1:dcd6c9be9e4b | 191 | * @param delay The time delay to set in milliseconds (between 0-255); |
lzzcd001 | 1:dcd6c9be9e4b | 192 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 193 | void setTimeDelay(int delay); |
lzzcd001 | 1:dcd6c9be9e4b | 194 | |
lzzcd001 | 1:dcd6c9be9e4b | 195 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 196 | * Get the number of measurements being summed each sample. |
lzzcd001 | 1:dcd6c9be9e4b | 197 | * |
lzzcd001 | 1:dcd6c9be9e4b | 198 | * @return The number of summed measurement. |
lzzcd001 | 1:dcd6c9be9e4b | 199 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 200 | int getSumNumber(void); |
lzzcd001 | 1:dcd6c9be9e4b | 201 | |
lzzcd001 | 1:dcd6c9be9e4b | 202 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 203 | * Set the number of measurements being summed each sample. |
lzzcd001 | 1:dcd6c9be9e4b | 204 | * |
lzzcd001 | 1:dcd6c9be9e4b | 205 | * @param sum The number of measurements to be summed (between 0-16); |
lzzcd001 | 1:dcd6c9be9e4b | 206 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 207 | void setSumNumber(int sum); |
lzzcd001 | 1:dcd6c9be9e4b | 208 | |
lzzcd001 | 1:dcd6c9be9e4b | 209 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 210 | * Get the software version on the device. |
lzzcd001 | 1:dcd6c9be9e4b | 211 | * |
lzzcd001 | 1:dcd6c9be9e4b | 212 | * @return The software version number. |
lzzcd001 | 1:dcd6c9be9e4b | 213 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 214 | int getSoftwareVersion(void); |
lzzcd001 | 1:dcd6c9be9e4b | 215 | |
lzzcd001 | 1:dcd6c9be9e4b | 216 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 217 | * Get the current operation mode. |
lzzcd001 | 1:dcd6c9be9e4b | 218 | * |
lzzcd001 | 1:dcd6c9be9e4b | 219 | * @return 0x00 -> Standby mode |
lzzcd001 | 1:dcd6c9be9e4b | 220 | * 0x01 -> Query mode |
lzzcd001 | 1:dcd6c9be9e4b | 221 | * 0x02 -> Continuous mode |
lzzcd001 | 1:dcd6c9be9e4b | 222 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 223 | int getOpMode(void); |
lzzcd001 | 1:dcd6c9be9e4b | 224 | |
lzzcd001 | 1:dcd6c9be9e4b | 225 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 226 | * Set the operation mode. |
lzzcd001 | 1:dcd6c9be9e4b | 227 | * |
lzzcd001 | 1:dcd6c9be9e4b | 228 | * @param mode 0x00 -> Standby mode |
lzzcd001 | 1:dcd6c9be9e4b | 229 | * 0x01 -> Query mode |
lzzcd001 | 1:dcd6c9be9e4b | 230 | * 0x02 -> Continuous mode |
lzzcd001 | 1:dcd6c9be9e4b | 231 | * @param periodicSetReset 0x00 -> No periodic set/reset |
lzzcd001 | 1:dcd6c9be9e4b | 232 | * 0x01 -> Periodic set/reset |
lzzcd001 | 1:dcd6c9be9e4b | 233 | * @measurementRate Measurement rate in Hz for continuous rate. |
lzzcd001 | 1:dcd6c9be9e4b | 234 | * Possible rates: {1, 5, 10, 20}Hz. |
lzzcd001 | 1:dcd6c9be9e4b | 235 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 236 | void setOpMode(int mode, int periodicSetReset, int measurementRate = 0); |
lzzcd001 | 1:dcd6c9be9e4b | 237 | |
lzzcd001 | 1:dcd6c9be9e4b | 238 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 239 | * Get the current output mode of the device. |
lzzcd001 | 1:dcd6c9be9e4b | 240 | * |
lzzcd001 | 1:dcd6c9be9e4b | 241 | * @return The current output mode. |
lzzcd001 | 1:dcd6c9be9e4b | 242 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 243 | int getOutputMode(void); |
lzzcd001 | 1:dcd6c9be9e4b | 244 | |
lzzcd001 | 1:dcd6c9be9e4b | 245 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 246 | * Set the output mode of the device. |
lzzcd001 | 1:dcd6c9be9e4b | 247 | * |
lzzcd001 | 1:dcd6c9be9e4b | 248 | * @param mode 0x00 -> Heading mode |
lzzcd001 | 1:dcd6c9be9e4b | 249 | * 0x01 -> Raw magnetometer X mode |
lzzcd001 | 1:dcd6c9be9e4b | 250 | * 0x02 -> Raw magnetometer Y mode |
lzzcd001 | 1:dcd6c9be9e4b | 251 | * 0x03 -> Magnetometer X mode |
lzzcd001 | 1:dcd6c9be9e4b | 252 | * 0x04 -> Magnetometer Y mode |
lzzcd001 | 1:dcd6c9be9e4b | 253 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 254 | void setOutputMode(int mode); |
lzzcd001 | 1:dcd6c9be9e4b | 255 | |
lzzcd001 | 1:dcd6c9be9e4b | 256 | private: |
lzzcd001 | 1:dcd6c9be9e4b | 257 | |
lzzcd001 | 1:dcd6c9be9e4b | 258 | I2C* i2c_; |
lzzcd001 | 1:dcd6c9be9e4b | 259 | int operationMode_; |
lzzcd001 | 1:dcd6c9be9e4b | 260 | |
lzzcd001 | 1:dcd6c9be9e4b | 261 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 262 | * Write to EEPROM or RAM on the device. |
lzzcd001 | 1:dcd6c9be9e4b | 263 | * |
lzzcd001 | 1:dcd6c9be9e4b | 264 | * @param EepromOrRam 0x77 -> Writing to EEPROM |
lzzcd001 | 1:dcd6c9be9e4b | 265 | * 0x47 -> Writing to RAM |
lzzcd001 | 1:dcd6c9be9e4b | 266 | * @param address Address to write to. |
lzzcd001 | 1:dcd6c9be9e4b | 267 | * @param data Data to write. |
lzzcd001 | 1:dcd6c9be9e4b | 268 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 269 | void write(int EepromOrRam, int address, int data); |
lzzcd001 | 1:dcd6c9be9e4b | 270 | |
lzzcd001 | 1:dcd6c9be9e4b | 271 | /** |
lzzcd001 | 1:dcd6c9be9e4b | 272 | * Read EEPROM or RAM on the device. |
lzzcd001 | 1:dcd6c9be9e4b | 273 | * |
lzzcd001 | 1:dcd6c9be9e4b | 274 | * @param EepromOrRam 0x72 -> Reading from EEPROM |
lzzcd001 | 1:dcd6c9be9e4b | 275 | * 0x67 -> Reading from RAM |
lzzcd001 | 1:dcd6c9be9e4b | 276 | * @param address Address to read from. |
lzzcd001 | 1:dcd6c9be9e4b | 277 | * @return The contents of the memory address. |
lzzcd001 | 1:dcd6c9be9e4b | 278 | */ |
lzzcd001 | 1:dcd6c9be9e4b | 279 | int read(int EepromOrRam, int address); |
lzzcd001 | 1:dcd6c9be9e4b | 280 | |
lzzcd001 | 1:dcd6c9be9e4b | 281 | }; |
lzzcd001 | 1:dcd6c9be9e4b | 282 | |
lzzcd001 | 1:dcd6c9be9e4b | 283 | #endif /* HMC6352_H */ |