I think there was a bug with debug mode

Dependents:   Generic_Platformer

Committer:
ashleymills
Date:
Thu Mar 06 18:07:43 2014 +0000
Revision:
19:4d6cd7140a71
Parent:
18:27d839e6dc0e
Child:
20:d55e9d7eb17e
Adding independent query methods;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ashleymills 15:7620a11149b8 1 #pragma once
ashleymills 15:7620a11149b8 2
ashleymills 14:0602b45ca70f 3 // Authors: Ashley Mills, Nicholas Herriot
nherriot 0:bcf2aa85d7f9 4 /* Copyright (c) 2013 Vodafone, MIT License
nherriot 0:bcf2aa85d7f9 5 *
nherriot 0:bcf2aa85d7f9 6 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
nherriot 0:bcf2aa85d7f9 7 * and associated documentation files (the "Software"), to deal in the Software without restriction,
nherriot 0:bcf2aa85d7f9 8 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
nherriot 0:bcf2aa85d7f9 9 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
nherriot 0:bcf2aa85d7f9 10 * furnished to do so, subject to the following conditions:
nherriot 0:bcf2aa85d7f9 11 *
nherriot 0:bcf2aa85d7f9 12 * The above copyright notice and this permission notice shall be included in all copies or
nherriot 0:bcf2aa85d7f9 13 * substantial portions of the Software.
nherriot 0:bcf2aa85d7f9 14 *
nherriot 0:bcf2aa85d7f9 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
nherriot 0:bcf2aa85d7f9 16 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
nherriot 0:bcf2aa85d7f9 17 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
nherriot 0:bcf2aa85d7f9 18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
nherriot 0:bcf2aa85d7f9 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
nherriot 0:bcf2aa85d7f9 20 */
nherriot 0:bcf2aa85d7f9 21
nherriot 0:bcf2aa85d7f9 22 // the SparkFun breakout board defaults to 1, set to 0 if SA0 jumper on the bottom of the board is set
nherriot 0:bcf2aa85d7f9 23 // see the Table 10. I2C Device Address Sequence in Freescale MMA8452Q pdf
nherriot 0:bcf2aa85d7f9 24
ashleymills 15:7620a11149b8 25 #include "mbed.h"
nherriot 0:bcf2aa85d7f9 26
ashleymills 18:27d839e6dc0e 27 #define MMA8452_DEBUG 1
ashleymills 18:27d839e6dc0e 28
nherriot 0:bcf2aa85d7f9 29 // More info on MCU Master address can be found on section 5.10.1 of http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA8452Q
nherriot 0:bcf2aa85d7f9 30 #define SA0 1
nherriot 0:bcf2aa85d7f9 31 #if SA0
ashleymills 11:dfd1e0afcb7b 32 #define MMA8452_ADDRESS 0x3A // 0x1D<<1 // SA0 is high, 0x1C if low -
nherriot 0:bcf2aa85d7f9 33 #else
ashleymills 11:dfd1e0afcb7b 34 #define MMA8452_ADDRESS 0x38 // 0x1C<<1
nherriot 0:bcf2aa85d7f9 35 #endif
nherriot 0:bcf2aa85d7f9 36
nherriot 0:bcf2aa85d7f9 37 // Register descriptions found in section 6 of pdf
ashleymills 12:172540ff6b8b 38 #define MMA8452_STATUS 0x00 // Type 'read' : Status of the data registers
ashleymills 12:172540ff6b8b 39 #define MMA8452_OUT_X_MSB 0x01 // Type 'read' : x axis - MSB of 2 byte sample
ashleymills 12:172540ff6b8b 40 #define MMA8452_OUT_X_LSB 0x02 // Type 'read' : x axis - LSB of 2 byte sample
ashleymills 12:172540ff6b8b 41 #define MMA8452_OUT_Y_MSB 0x03 // Type 'read' : y axis - MSB of 2 byte sample
ashleymills 12:172540ff6b8b 42 #define MMA8452_OUT_Y_LSB 0x04 // Type 'read' : y axis - LSB of 2 byte sample
ashleymills 12:172540ff6b8b 43 #define MMA8452_OUT_Z_MSB 0x05 // Type 'read' : z axis - MSB of 2 byte sample
ashleymills 12:172540ff6b8b 44 #define MMA8452_OUT_Z_LSB 0x06 // Type 'read' : z axis - LSB of 2 byte sample
nherriot 0:bcf2aa85d7f9 45
ashleymills 12:172540ff6b8b 46 // register definitions
ashleymills 12:172540ff6b8b 47 #define MMA8452_XYZ_DATA_CFG 0x0E
ashleymills 12:172540ff6b8b 48
ashleymills 12:172540ff6b8b 49 #define MMA8452_SYSMOD 0x0B // Type 'read' : This tells you if device is active, sleep or standy 0x00=STANDBY 0x01=WAKE 0x02=SLEEP
ashleymills 12:172540ff6b8b 50 #define MMA8452_WHO_AM_I 0x0D // Type 'read' : This should return the device id of 0x2A
nherriot 0:bcf2aa85d7f9 51
ashleymills 12:172540ff6b8b 52 #define MMA8452_PL_STATUS 0x10 // Type 'read' : This shows portrait landscape mode orientation
ashleymills 12:172540ff6b8b 53 #define MMA8452_PL_CFG 0x11 // Type 'read/write' : This allows portrait landscape configuration
ashleymills 12:172540ff6b8b 54 #define MMA8452_PL_COUNT 0x12 // Type 'read' : This is the portraint landscape debounce counter
ashleymills 12:172540ff6b8b 55 #define MMA8452_PL_BF_ZCOMP 0x13 // Type 'read' :
ashleymills 12:172540ff6b8b 56 #define MMA8452_PL_THS_REG 0x14 // Type 'read' :
nherriot 0:bcf2aa85d7f9 57
ashleymills 12:172540ff6b8b 58 #define MMA8452_FF_MT_CFG 0X15 // Type 'read/write' : Freefaul motion functional block configuration
ashleymills 12:172540ff6b8b 59 #define MMA8452_FF_MT_SRC 0X16 // Type 'read' : Freefaul motion event source register
ashleymills 12:172540ff6b8b 60 #define MMA8452_FF_MT_THS 0X17 // Type 'read' : Freefaul motion threshold register
ashleymills 12:172540ff6b8b 61 #define MMA8452_FF_COUNT 0X18 // Type 'read' : Freefaul motion debouce counter
nherriot 0:bcf2aa85d7f9 62
ashleymills 12:172540ff6b8b 63 #define MMA8452_ASLP_COUNT 0x29 // Type 'read/write' : Counter settings for auto sleep
ashleymills 12:172540ff6b8b 64 #define MMA8452_CTRL_REG_1 0x2A // Type 'read/write' :
ashleymills 12:172540ff6b8b 65 #define MMA8452_CTRL_REG_2 0x2B // Type 'read/write' :
ashleymills 12:172540ff6b8b 66 #define MMA8452_CTRL_REG_3 0x2C // Type 'read/write' :
ashleymills 12:172540ff6b8b 67 #define MMA8452_CTRL_REG_4 0x2D // Type 'read/write' :
ashleymills 12:172540ff6b8b 68 #define MMA8452_CTRL_REG_5 0x2E // Type 'read/write' :
nherriot 0:bcf2aa85d7f9 69
nherriot 3:ffb0b1650ca2 70 // Defined in table 13 of the Freescale PDF
ashleymills 12:172540ff6b8b 71 /// xxx these all need to have better names
nherriot 3:ffb0b1650ca2 72 #define STANDBY 0x00 // State value returned after a SYSMOD request, it can be in state STANDBY, WAKE or SLEEP
nherriot 3:ffb0b1650ca2 73 #define WAKE 0x01 // State value returned after a SYSMOD request, it can be in state STANDBY, WAKE or SLEEP
nherriot 3:ffb0b1650ca2 74 #define SLEEP 0x02 // State value returned after a SYSMOD request, it can be in state STANDBY, WAKE or SLEEP
nherriot 3:ffb0b1650ca2 75 #define ACTIVE 0x01 // Stage value returned and set in Control Register 1, it can be STANDBY=00, or ACTIVE=01
nherriot 0:bcf2aa85d7f9 76
nherriot 0:bcf2aa85d7f9 77 #define TILT_STATUS 0x03 // Tilt Status (Read only)
nherriot 0:bcf2aa85d7f9 78 #define SRST_STATUS 0x04 // Sample Rate Status Register (Read only)
nherriot 0:bcf2aa85d7f9 79 #define SPCNT_STATUS 0x05 // Sleep Count Register (Read/Write)
nherriot 0:bcf2aa85d7f9 80 #define INTSU_STATUS 0x06 // Interrupt Setup Register
nherriot 0:bcf2aa85d7f9 81 #define MODE_STATUS 0x07 // Mode Register (Read/Write)
nherriot 0:bcf2aa85d7f9 82 #define SR_STATUS 0x08 // Auto-Wake and Active Mode Portrait/Landscape Samples per Seconds Register (Read/Write)
nherriot 0:bcf2aa85d7f9 83 #define PDET_STATUS 0x09 // Tap/Pulse Detection Register (Read/Write)
nherriot 0:bcf2aa85d7f9 84 #define PD_STATUS 0xA // Tap/Pulse Debounce Count Register (Read/Write)
nherriot 0:bcf2aa85d7f9 85
ashleymills 12:172540ff6b8b 86 // masks for enabling/disabling standby
ashleymills 11:dfd1e0afcb7b 87 #define MMA8452_ACTIVE_MASK 0x01
ashleymills 11:dfd1e0afcb7b 88 #define MMA8452_STANDBY_MASK 0xFE
ashleymills 11:dfd1e0afcb7b 89
ashleymills 12:172540ff6b8b 90 // mask for dynamic range reading and writing
ashleymills 11:dfd1e0afcb7b 91 #define MMA8452_DYNAMIC_RANGE_MASK 0xFC
ashleymills 11:dfd1e0afcb7b 92
ashleymills 12:172540ff6b8b 93 // mask and shift for data rate reading and writing
ashleymills 11:dfd1e0afcb7b 94 #define MMA8452_DATA_RATE_MASK 0xC7
ashleymills 11:dfd1e0afcb7b 95 #define MMA8452_DATA_RATE_MASK_SHIFT 0x03
ashleymills 11:dfd1e0afcb7b 96
ashleymills 12:172540ff6b8b 97 // mask and shift for general reading and writing
ashleymills 11:dfd1e0afcb7b 98 #define MMA8452_WRITE_MASK 0xFE
ashleymills 11:dfd1e0afcb7b 99 #define MMA8452_READ_MASK 0x01
ashleymills 11:dfd1e0afcb7b 100
ashleymills 12:172540ff6b8b 101 // mask and shift for bit depth reading and writing
ashleymills 11:dfd1e0afcb7b 102 #define MMA8452_BIT_DEPTH_MASK 0xFD
ashleymills 11:dfd1e0afcb7b 103 #define MMA8452_BIT_DEPTH_MASK_SHIFT 0x01
ashleymills 12:172540ff6b8b 104
ashleymills 12:172540ff6b8b 105 // status masks and shifts
ashleymills 12:172540ff6b8b 106 #define MMA8452_STATUS_ZYXDR_MASK 0x08
ashleymills 16:d6dde2318edc 107 #define MMA8452_STATUS_ZDR_MASK 0x04
ashleymills 16:d6dde2318edc 108 #define MMA8452_STATUS_YDR_MASK 0x02
ashleymills 16:d6dde2318edc 109 #define MMA8452_STATUS_XDR_MASK 0x01
ashleymills 11:dfd1e0afcb7b 110
ashleymills 10:ca9ba7ad4e94 111 class MMA8452
nherriot 0:bcf2aa85d7f9 112 {
nherriot 0:bcf2aa85d7f9 113 public:
ashleymills 10:ca9ba7ad4e94 114
ashleymills 11:dfd1e0afcb7b 115 enum DynamicRange {
ashleymills 11:dfd1e0afcb7b 116 DYNAMIC_RANGE_2G=0x00,
ashleymills 11:dfd1e0afcb7b 117 DYNAMIC_RANGE_4G,
ashleymills 11:dfd1e0afcb7b 118 DYNAMIC_RANGE_8G,
ashleymills 11:dfd1e0afcb7b 119 DYNAMIC_RANGE_UNKNOWN
ashleymills 10:ca9ba7ad4e94 120 };
nherriot 0:bcf2aa85d7f9 121
ashleymills 10:ca9ba7ad4e94 122 enum BitDepth {
ashleymills 11:dfd1e0afcb7b 123 BIT_DEPTH_12=0x00,
ashleymills 12:172540ff6b8b 124 BIT_DEPTH_8, // 1 sets fast read mode, hence the inversion
ashleymills 12:172540ff6b8b 125 BIT_DEPTH_UNKNOWN
ashleymills 10:ca9ba7ad4e94 126 };
ashleymills 11:dfd1e0afcb7b 127
ashleymills 11:dfd1e0afcb7b 128 enum DataRateHz {
ashleymills 11:dfd1e0afcb7b 129 RATE_800=0x00,
ashleymills 11:dfd1e0afcb7b 130 RATE_400,
ashleymills 11:dfd1e0afcb7b 131 RATE_200,
ashleymills 11:dfd1e0afcb7b 132 RATE_100,
ashleymills 11:dfd1e0afcb7b 133 RATE_50,
ashleymills 11:dfd1e0afcb7b 134 RATE_12_5,
ashleymills 11:dfd1e0afcb7b 135 RATE_6_25,
ashleymills 11:dfd1e0afcb7b 136 RATE_1_563,
ashleymills 11:dfd1e0afcb7b 137 RATE_UNKNOWN
ashleymills 11:dfd1e0afcb7b 138 };
ashleymills 11:dfd1e0afcb7b 139
nherriot 0:bcf2aa85d7f9 140
ashleymills 15:7620a11149b8 141 /**
ashleymills 15:7620a11149b8 142 * Create an accelerometer object connected to the specified I2C pins.
nherriot 0:bcf2aa85d7f9 143 *
nherriot 0:bcf2aa85d7f9 144 * @param sda I2C data port
ashleymills 15:7620a11149b8 145 * @param scl I2C clock port
ashleymills 15:7620a11149b8 146 * @param frequency
nherriot 0:bcf2aa85d7f9 147 *
nherriot 0:bcf2aa85d7f9 148 */
ashleymills 10:ca9ba7ad4e94 149 MMA8452(PinName sda, PinName scl, int frequency);
nherriot 0:bcf2aa85d7f9 150
ashleymills 15:7620a11149b8 151 /// Destructor
ashleymills 10:ca9ba7ad4e94 152 ~MMA8452();
nherriot 3:ffb0b1650ca2 153
ashleymills 15:7620a11149b8 154 /**
ashleymills 15:7620a11149b8 155 * Puts the MMA8452 in active mode.
ashleymills 15:7620a11149b8 156 * @return 0 on success, 1 on failure.
ashleymills 15:7620a11149b8 157 */
nherriot 0:bcf2aa85d7f9 158 int activate();
nherriot 3:ffb0b1650ca2 159
ashleymills 15:7620a11149b8 160 /**
ashleymills 15:7620a11149b8 161 * Puts the MMA8452 in standby.
ashleymills 15:7620a11149b8 162 * @return 0 on success, 1 on failure.
ashleymills 15:7620a11149b8 163 */
ashleymills 15:7620a11149b8 164 int standby();
nherriot 0:bcf2aa85d7f9 165
nherriot 0:bcf2aa85d7f9 166 /** Initialization of device MMA8452 (required)
nherriot 0:bcf2aa85d7f9 167 */
nherriot 0:bcf2aa85d7f9 168 void init();
nherriot 0:bcf2aa85d7f9 169
ashleymills 15:7620a11149b8 170 /**
ashleymills 15:7620a11149b8 171 * Read the device ID from the accelerometer (should be 0x2a)
nherriot 1:ef026bf28798 172 *
ashleymills 15:7620a11149b8 173 * @param pointer to store the ID
ashleymills 15:7620a11149b8 174 * @return 0 on success, 1 on failure.
nherriot 1:ef026bf28798 175 */
ashleymills 11:dfd1e0afcb7b 176 int getDeviceID(char* dst);
nherriot 0:bcf2aa85d7f9 177
ashleymills 12:172540ff6b8b 178 int getStatus(char* dst);
nherriot 1:ef026bf28798 179
ashleymills 12:172540ff6b8b 180 /**
ashleymills 12:172540ff6b8b 181 * Read the x,y, and z registers of the MMA8452.
nherriot 1:ef026bf28798 182 *
ashleymills 12:172540ff6b8b 183 * @param dst The destination buffer. Note that this needs to be 3 bytes for
ashleymills 12:172540ff6b8b 184 * BIT_DEPTH_8 and 6 bytes for BIT_DEPTH_12. It is upto the caller to ensure this.
ashleymills 12:172540ff6b8b 185 * @return 0 for success, and 1 for failure
nherriot 1:ef026bf28798 186 */
ashleymills 15:7620a11149b8 187 int readXYZRaw(char *dst);
ashleymills 15:7620a11149b8 188
ashleymills 19:4d6cd7140a71 189 int readXRaw(char *dst);
ashleymills 19:4d6cd7140a71 190 int readYRaw(char *dst);
ashleymills 19:4d6cd7140a71 191 int readZRaw(char *dst);
ashleymills 19:4d6cd7140a71 192
ashleymills 15:7620a11149b8 193 /**
ashleymills 19:4d6cd7140a71 194 * Read the x, y, and z counts of the MMA7452 axes.
ashleymills 19:4d6cd7140a71 195 *
ashleymills 19:4d6cd7140a71 196 * Count resolution is either 8 bits or 12 bits, and the range is either +-2G, +-4G, or +-8G
ashleymills 19:4d6cd7140a71 197 * depending on settings.
ashleymills 19:4d6cd7140a71 198 *
ashleymills 19:4d6cd7140a71 199 * This function queries the MMA8452 and returns the signed counts for each axes.
ashleymills 19:4d6cd7140a71 200 *
ashleymills 19:4d6cd7140a71 201 * @param x Pointer to integer to store x count
ashleymills 19:4d6cd7140a71 202 * @param y Pointer to integer to store y count
ashleymills 19:4d6cd7140a71 203 * @param z Pointer to integer to store z count
ashleymills 19:4d6cd7140a71 204 * @return 0 on success, 1 on failure
ashleymills 15:7620a11149b8 205 */
ashleymills 13:4bd8b4cd479d 206 int readXYZCounts(int *x, int *y, int *z);
ashleymills 19:4d6cd7140a71 207 int readXCount(int *x);
ashleymills 19:4d6cd7140a71 208 int readYCount(int *y);
ashleymills 19:4d6cd7140a71 209 int readZCount(int *z);
ashleymills 19:4d6cd7140a71 210
ashleymills 13:4bd8b4cd479d 211 int readXYZGravity(double *x, double *y, double *z);
ashleymills 12:172540ff6b8b 212
ashleymills 19:4d6cd7140a71 213
ashleymills 19:4d6cd7140a71 214 /// Returns 1 if data has been internally sampled (is available) for the x-axis since last read, 0 otherwise.
ashleymills 13:4bd8b4cd479d 215 int isXReady();
ashleymills 19:4d6cd7140a71 216
ashleymills 19:4d6cd7140a71 217 /// Returns 1 if data has been internally sampled (is available) for the y-axis since last read, 0 otherwise.
ashleymills 13:4bd8b4cd479d 218 int isYReady();
ashleymills 19:4d6cd7140a71 219
ashleymills 19:4d6cd7140a71 220 /// Returns 1 if data has been internally sampled (is available) for the z-axis since last read, 0 otherwise.
ashleymills 13:4bd8b4cd479d 221 int isZReady();
ashleymills 19:4d6cd7140a71 222
ashleymills 19:4d6cd7140a71 223 /// Returns 1 if data has been internally sampled (is available) for all axes since last read, 0 otherwise.
ashleymills 12:172540ff6b8b 224 int isXYZReady();
nherriot 0:bcf2aa85d7f9 225
ashleymills 15:7620a11149b8 226 /**
ashleymills 15:7620a11149b8 227 * Read from specified MMA8452 register.
ashleymills 12:172540ff6b8b 228 *
ashleymills 12:172540ff6b8b 229 * @param addr The internal registeraddress of the MMA8452
ashleymills 12:172540ff6b8b 230 * @return The value of the register
ashleymills 12:172540ff6b8b 231 */
ashleymills 11:dfd1e0afcb7b 232 int readRegister(char addr, char *dst);
ashleymills 11:dfd1e0afcb7b 233
ashleymills 11:dfd1e0afcb7b 234 int readRegister(char addr, char *dst, int nbytes);
nherriot 0:bcf2aa85d7f9 235
ashleymills 12:172540ff6b8b 236 /**
ashleymills 12:172540ff6b8b 237 * Write to the specified MMA8452 register.
nherriot 0:bcf2aa85d7f9 238 *
ashleymills 12:172540ff6b8b 239 * @param addr The internal register address
ashleymills 12:172540ff6b8b 240 * @param data Data to write
nherriot 0:bcf2aa85d7f9 241 */
ashleymills 11:dfd1e0afcb7b 242 int writeRegister(char addr, char data);
ashleymills 12:172540ff6b8b 243
ashleymills 12:172540ff6b8b 244 /**
ashleymills 12:172540ff6b8b 245 * Write a data buffer to the specified MMA8452 register.
ashleymills 12:172540ff6b8b 246 *
ashleymills 12:172540ff6b8b 247 * @param addr The internal register address
ashleymills 12:172540ff6b8b 248 * @param data Data buffer to write
ashleymills 12:172540ff6b8b 249 * @param nbytes The length of the data buffer to write
ashleymills 12:172540ff6b8b 250 */
ashleymills 11:dfd1e0afcb7b 251 int writeRegister(char addr, char *data, int nbytes);
ashleymills 11:dfd1e0afcb7b 252
ashleymills 11:dfd1e0afcb7b 253 int logicalANDRegister(char addr, char mask);
ashleymills 11:dfd1e0afcb7b 254 int logicalORRegister(char addr, char mask);
ashleymills 11:dfd1e0afcb7b 255 int logicalXORRegister(char addr, char mask);
nherriot 0:bcf2aa85d7f9 256
ashleymills 11:dfd1e0afcb7b 257 int setDynamicRange(DynamicRange range, int toggleActivation=1);
ashleymills 11:dfd1e0afcb7b 258 int setBitDepth(BitDepth depth, int toggleActivation=1);
ashleymills 11:dfd1e0afcb7b 259 int setDataRate(DataRateHz dataRate, int toggleActivation=1);
ashleymills 15:7620a11149b8 260
ashleymills 11:dfd1e0afcb7b 261 DynamicRange getDynamicRange();
ashleymills 11:dfd1e0afcb7b 262 DataRateHz getDataRate();
ashleymills 12:172540ff6b8b 263 BitDepth getBitDepth();
ashleymills 11:dfd1e0afcb7b 264
ashleymills 17:6e4232c421c0 265 #ifdef MMA8452_DEBUG
ashleymills 11:dfd1e0afcb7b 266 void debugRegister(char reg);
ashleymills 17:6e4232c421c0 267 #endif
nherriot 0:bcf2aa85d7f9 268
nherriot 0:bcf2aa85d7f9 269 private:
ashleymills 10:ca9ba7ad4e94 270 int readRaw(char src, char *dst, int len);
ashleymills 11:dfd1e0afcb7b 271 int maskAndApplyRegister(char reg, char mask, char value, int toggleActivation);
ashleymills 13:4bd8b4cd479d 272
ashleymills 13:4bd8b4cd479d 273 int twelveBitToSigned(char *buf);
ashleymills 13:4bd8b4cd479d 274 int eightBitToSigned(char *buf);
ashleymills 13:4bd8b4cd479d 275 double convertCountToGravity(int count, int countsPerG);
ashleymills 16:d6dde2318edc 276 char getMaskedRegister(int reg, char mask);
ashleymills 8:89272163f395 277
ashleymills 11:dfd1e0afcb7b 278 I2C _i2c;
ashleymills 11:dfd1e0afcb7b 279 int _frequency;
ashleymills 6:f6bde04bf8be 280 int _readAddress;
ashleymills 6:f6bde04bf8be 281 int _writeAddress;
ashleymills 12:172540ff6b8b 282
ashleymills 12:172540ff6b8b 283 BitDepth _bitDepth;
ashleymills 13:4bd8b4cd479d 284 DynamicRange _dynamicRange;
nherriot 0:bcf2aa85d7f9 285
ashleymills 15:7620a11149b8 286 };